// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct X12ProfileSummary {
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub interchange_qualifier: std::option::Option<crate::model::X12InterchangeQualifier>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub interchange_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub profile_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub profile_type: std::option::Option<crate::model::ProfileType>,
    /// Store the application ids provided by your partner, with the ability to select one as the default. These values can be used to configure the GS-02, GS-03 of the outbound transaction settings.
    #[doc(hidden)]
    pub application_identifiers: std::option::Option<std::vec::Vec<crate::model::X12ApplicationId>>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub created_at: std::option::Option<aws_smithy_types::DateTime>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub updated_at: std::option::Option<aws_smithy_types::DateTime>,
}
impl X12ProfileSummary {
    #[allow(missing_docs)] // documentation missing in model
    pub fn interchange_qualifier(
        &self,
    ) -> std::option::Option<&crate::model::X12InterchangeQualifier> {
        self.interchange_qualifier.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn interchange_id(&self) -> std::option::Option<&str> {
        self.interchange_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn profile_id(&self) -> std::option::Option<&str> {
        self.profile_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn profile_type(&self) -> std::option::Option<&crate::model::ProfileType> {
        self.profile_type.as_ref()
    }
    /// Store the application ids provided by your partner, with the ability to select one as the default. These values can be used to configure the GS-02, GS-03 of the outbound transaction settings.
    pub fn application_identifiers(
        &self,
    ) -> std::option::Option<&[crate::model::X12ApplicationId]> {
        self.application_identifiers.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn created_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.created_at.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn updated_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.updated_at.as_ref()
    }
}
/// See [`X12ProfileSummary`](crate::model::X12ProfileSummary).
pub mod x12_profile_summary {

    /// A builder for [`X12ProfileSummary`](crate::model::X12ProfileSummary).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) interchange_qualifier:
            std::option::Option<crate::model::X12InterchangeQualifier>,
        pub(crate) interchange_id: std::option::Option<std::string::String>,
        pub(crate) profile_id: std::option::Option<std::string::String>,
        pub(crate) profile_type: std::option::Option<crate::model::ProfileType>,
        pub(crate) application_identifiers:
            std::option::Option<std::vec::Vec<crate::model::X12ApplicationId>>,
        pub(crate) created_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) updated_at: std::option::Option<aws_smithy_types::DateTime>,
    }
    impl Builder {
        #[allow(missing_docs)] // documentation missing in model
        pub fn interchange_qualifier(
            mut self,
            input: crate::model::X12InterchangeQualifier,
        ) -> Self {
            self.interchange_qualifier = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_interchange_qualifier(
            mut self,
            input: std::option::Option<crate::model::X12InterchangeQualifier>,
        ) -> Self {
            self.interchange_qualifier = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn interchange_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.interchange_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_interchange_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.interchange_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.profile_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_profile_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.profile_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn profile_type(mut self, input: crate::model::ProfileType) -> Self {
            self.profile_type = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_profile_type(
            mut self,
            input: std::option::Option<crate::model::ProfileType>,
        ) -> Self {
            self.profile_type = input;
            self
        }
        /// Appends an item to `application_identifiers`.
        ///
        /// To override the contents of this collection use [`set_application_identifiers`](Self::set_application_identifiers).
        ///
        /// Store the application ids provided by your partner, with the ability to select one as the default. These values can be used to configure the GS-02, GS-03 of the outbound transaction settings.
        pub fn application_identifiers(mut self, input: crate::model::X12ApplicationId) -> Self {
            let mut v = self.application_identifiers.unwrap_or_default();
            v.push(input);
            self.application_identifiers = Some(v);
            self
        }
        /// Store the application ids provided by your partner, with the ability to select one as the default. These values can be used to configure the GS-02, GS-03 of the outbound transaction settings.
        pub fn set_application_identifiers(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::X12ApplicationId>>,
        ) -> Self {
            self.application_identifiers = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn created_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.created_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_created_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.created_at = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn updated_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.updated_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_updated_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.updated_at = input;
            self
        }
        /// Consumes the builder and constructs a [`X12ProfileSummary`](crate::model::X12ProfileSummary).
        pub fn build(self) -> crate::model::X12ProfileSummary {
            crate::model::X12ProfileSummary {
                interchange_qualifier: self.interchange_qualifier,
                interchange_id: self.interchange_id,
                profile_id: self.profile_id,
                profile_type: self.profile_type,
                application_identifiers: self.application_identifiers,
                created_at: self.created_at,
                updated_at: self.updated_at,
            }
        }
    }
}
impl X12ProfileSummary {
    /// Creates a new builder-style object to manufacture [`X12ProfileSummary`](crate::model::X12ProfileSummary).
    pub fn builder() -> crate::model::x12_profile_summary::Builder {
        crate::model::x12_profile_summary::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct X12ApplicationId {
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub value: std::option::Option<std::string::String>,
    /// The default value used for the outbound transaction settings that do not have a value. Changing the default will update the runtime behavior of the generate-edi operation for the transaction settings that did not specify a value.
    #[doc(hidden)]
    pub is_default: std::option::Option<bool>,
}
impl X12ApplicationId {
    #[allow(missing_docs)] // documentation missing in model
    pub fn value(&self) -> std::option::Option<&str> {
        self.value.as_deref()
    }
    /// The default value used for the outbound transaction settings that do not have a value. Changing the default will update the runtime behavior of the generate-edi operation for the transaction settings that did not specify a value.
    pub fn is_default(&self) -> std::option::Option<bool> {
        self.is_default
    }
}
/// See [`X12ApplicationId`](crate::model::X12ApplicationId).
pub mod x12_application_id {

    /// A builder for [`X12ApplicationId`](crate::model::X12ApplicationId).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) value: std::option::Option<std::string::String>,
        pub(crate) is_default: std::option::Option<bool>,
    }
    impl Builder {
        #[allow(missing_docs)] // documentation missing in model
        pub fn value(mut self, input: impl Into<std::string::String>) -> Self {
            self.value = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_value(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.value = input;
            self
        }
        /// The default value used for the outbound transaction settings that do not have a value. Changing the default will update the runtime behavior of the generate-edi operation for the transaction settings that did not specify a value.
        pub fn is_default(mut self, input: bool) -> Self {
            self.is_default = Some(input);
            self
        }
        /// The default value used for the outbound transaction settings that do not have a value. Changing the default will update the runtime behavior of the generate-edi operation for the transaction settings that did not specify a value.
        pub fn set_is_default(mut self, input: std::option::Option<bool>) -> Self {
            self.is_default = input;
            self
        }
        /// Consumes the builder and constructs a [`X12ApplicationId`](crate::model::X12ApplicationId).
        pub fn build(self) -> crate::model::X12ApplicationId {
            crate::model::X12ApplicationId {
                value: self.value,
                is_default: self.is_default,
            }
        }
    }
}
impl X12ApplicationId {
    /// Creates a new builder-style object to manufacture [`X12ApplicationId`](crate::model::X12ApplicationId).
    pub fn builder() -> crate::model::x12_application_id::Builder {
        crate::model::x12_application_id::Builder::default()
    }
}

/// When writing a match expression against `ProfileType`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let profiletype = unimplemented!();
/// match profiletype {
///     ProfileType::Local => { /* ... */ },
///     ProfileType::Partner => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `profiletype` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `ProfileType::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `ProfileType::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `ProfileType::NewFeature` is defined.
/// Specifically, when `profiletype` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `ProfileType::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum ProfileType {
    #[allow(missing_docs)] // documentation missing in model
    Local,
    #[allow(missing_docs)] // documentation missing in model
    Partner,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for ProfileType {
    fn from(s: &str) -> Self {
        match s {
            "local" => ProfileType::Local,
            "partner" => ProfileType::Partner,
            other => ProfileType::Unknown(crate::types::UnknownVariantValue(other.to_owned())),
        }
    }
}
impl std::str::FromStr for ProfileType {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(ProfileType::from(s))
    }
}
impl ProfileType {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            ProfileType::Local => "local",
            ProfileType::Partner => "partner",
            ProfileType::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` representations of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &["local", "partner"]
    }
}
impl AsRef<str> for ProfileType {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

/// When writing a match expression against `X12InterchangeQualifier`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let x12interchangequalifier = unimplemented!();
/// match x12interchangequalifier {
///     X12InterchangeQualifier::Code01 => { /* ... */ },
///     X12InterchangeQualifier::Code02 => { /* ... */ },
///     X12InterchangeQualifier::Code03 => { /* ... */ },
///     X12InterchangeQualifier::Code04 => { /* ... */ },
///     X12InterchangeQualifier::Code07 => { /* ... */ },
///     X12InterchangeQualifier::Code08 => { /* ... */ },
///     X12InterchangeQualifier::Code09 => { /* ... */ },
///     X12InterchangeQualifier::Code10 => { /* ... */ },
///     X12InterchangeQualifier::Code11 => { /* ... */ },
///     X12InterchangeQualifier::Code12 => { /* ... */ },
///     X12InterchangeQualifier::Code13 => { /* ... */ },
///     X12InterchangeQualifier::Code14 => { /* ... */ },
///     X12InterchangeQualifier::Code15 => { /* ... */ },
///     X12InterchangeQualifier::Code16 => { /* ... */ },
///     X12InterchangeQualifier::Code17 => { /* ... */ },
///     X12InterchangeQualifier::Code18 => { /* ... */ },
///     X12InterchangeQualifier::Code19 => { /* ... */ },
///     X12InterchangeQualifier::Code20 => { /* ... */ },
///     X12InterchangeQualifier::Code21 => { /* ... */ },
///     X12InterchangeQualifier::Code22 => { /* ... */ },
///     X12InterchangeQualifier::Code23 => { /* ... */ },
///     X12InterchangeQualifier::Code24 => { /* ... */ },
///     X12InterchangeQualifier::Code25 => { /* ... */ },
///     X12InterchangeQualifier::Code26 => { /* ... */ },
///     X12InterchangeQualifier::Code27 => { /* ... */ },
///     X12InterchangeQualifier::Code28 => { /* ... */ },
///     X12InterchangeQualifier::Code29 => { /* ... */ },
///     X12InterchangeQualifier::Code30 => { /* ... */ },
///     X12InterchangeQualifier::Code31 => { /* ... */ },
///     X12InterchangeQualifier::Code32 => { /* ... */ },
///     X12InterchangeQualifier::Code33 => { /* ... */ },
///     X12InterchangeQualifier::Code34 => { /* ... */ },
///     X12InterchangeQualifier::Code35 => { /* ... */ },
///     X12InterchangeQualifier::Code36 => { /* ... */ },
///     X12InterchangeQualifier::Code37 => { /* ... */ },
///     X12InterchangeQualifier::Code38 => { /* ... */ },
///     X12InterchangeQualifier::CodeAm => { /* ... */ },
///     X12InterchangeQualifier::CodeNr => { /* ... */ },
///     X12InterchangeQualifier::CodeSa => { /* ... */ },
///     X12InterchangeQualifier::CodeSn => { /* ... */ },
///     X12InterchangeQualifier::CodeZz => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `x12interchangequalifier` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `X12InterchangeQualifier::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `X12InterchangeQualifier::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `X12InterchangeQualifier::NewFeature` is defined.
/// Specifically, when `x12interchangequalifier` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `X12InterchangeQualifier::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum X12InterchangeQualifier {
    #[allow(missing_docs)] // documentation missing in model
    Code01,
    #[allow(missing_docs)] // documentation missing in model
    Code02,
    #[allow(missing_docs)] // documentation missing in model
    Code03,
    #[allow(missing_docs)] // documentation missing in model
    Code04,
    #[allow(missing_docs)] // documentation missing in model
    Code07,
    #[allow(missing_docs)] // documentation missing in model
    Code08,
    #[allow(missing_docs)] // documentation missing in model
    Code09,
    #[allow(missing_docs)] // documentation missing in model
    Code10,
    #[allow(missing_docs)] // documentation missing in model
    Code11,
    #[allow(missing_docs)] // documentation missing in model
    Code12,
    #[allow(missing_docs)] // documentation missing in model
    Code13,
    #[allow(missing_docs)] // documentation missing in model
    Code14,
    #[allow(missing_docs)] // documentation missing in model
    Code15,
    #[allow(missing_docs)] // documentation missing in model
    Code16,
    #[allow(missing_docs)] // documentation missing in model
    Code17,
    #[allow(missing_docs)] // documentation missing in model
    Code18,
    #[allow(missing_docs)] // documentation missing in model
    Code19,
    #[allow(missing_docs)] // documentation missing in model
    Code20,
    #[allow(missing_docs)] // documentation missing in model
    Code21,
    #[allow(missing_docs)] // documentation missing in model
    Code22,
    #[allow(missing_docs)] // documentation missing in model
    Code23,
    #[allow(missing_docs)] // documentation missing in model
    Code24,
    #[allow(missing_docs)] // documentation missing in model
    Code25,
    #[allow(missing_docs)] // documentation missing in model
    Code26,
    #[allow(missing_docs)] // documentation missing in model
    Code27,
    #[allow(missing_docs)] // documentation missing in model
    Code28,
    #[allow(missing_docs)] // documentation missing in model
    Code29,
    #[allow(missing_docs)] // documentation missing in model
    Code30,
    #[allow(missing_docs)] // documentation missing in model
    Code31,
    #[allow(missing_docs)] // documentation missing in model
    Code32,
    #[allow(missing_docs)] // documentation missing in model
    Code33,
    #[allow(missing_docs)] // documentation missing in model
    Code34,
    #[allow(missing_docs)] // documentation missing in model
    Code35,
    #[allow(missing_docs)] // documentation missing in model
    Code36,
    #[allow(missing_docs)] // documentation missing in model
    Code37,
    #[allow(missing_docs)] // documentation missing in model
    Code38,
    #[allow(missing_docs)] // documentation missing in model
    CodeAm,
    #[allow(missing_docs)] // documentation missing in model
    CodeNr,
    #[allow(missing_docs)] // documentation missing in model
    CodeSa,
    #[allow(missing_docs)] // documentation missing in model
    CodeSn,
    #[allow(missing_docs)] // documentation missing in model
    CodeZz,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for X12InterchangeQualifier {
    fn from(s: &str) -> Self {
        match s {
            "01" => X12InterchangeQualifier::Code01,
            "02" => X12InterchangeQualifier::Code02,
            "03" => X12InterchangeQualifier::Code03,
            "04" => X12InterchangeQualifier::Code04,
            "07" => X12InterchangeQualifier::Code07,
            "08" => X12InterchangeQualifier::Code08,
            "09" => X12InterchangeQualifier::Code09,
            "10" => X12InterchangeQualifier::Code10,
            "11" => X12InterchangeQualifier::Code11,
            "12" => X12InterchangeQualifier::Code12,
            "13" => X12InterchangeQualifier::Code13,
            "14" => X12InterchangeQualifier::Code14,
            "15" => X12InterchangeQualifier::Code15,
            "16" => X12InterchangeQualifier::Code16,
            "17" => X12InterchangeQualifier::Code17,
            "18" => X12InterchangeQualifier::Code18,
            "19" => X12InterchangeQualifier::Code19,
            "20" => X12InterchangeQualifier::Code20,
            "21" => X12InterchangeQualifier::Code21,
            "22" => X12InterchangeQualifier::Code22,
            "23" => X12InterchangeQualifier::Code23,
            "24" => X12InterchangeQualifier::Code24,
            "25" => X12InterchangeQualifier::Code25,
            "26" => X12InterchangeQualifier::Code26,
            "27" => X12InterchangeQualifier::Code27,
            "28" => X12InterchangeQualifier::Code28,
            "29" => X12InterchangeQualifier::Code29,
            "30" => X12InterchangeQualifier::Code30,
            "31" => X12InterchangeQualifier::Code31,
            "32" => X12InterchangeQualifier::Code32,
            "33" => X12InterchangeQualifier::Code33,
            "34" => X12InterchangeQualifier::Code34,
            "35" => X12InterchangeQualifier::Code35,
            "36" => X12InterchangeQualifier::Code36,
            "37" => X12InterchangeQualifier::Code37,
            "38" => X12InterchangeQualifier::Code38,
            "AM" => X12InterchangeQualifier::CodeAm,
            "NR" => X12InterchangeQualifier::CodeNr,
            "SA" => X12InterchangeQualifier::CodeSa,
            "SN" => X12InterchangeQualifier::CodeSn,
            "ZZ" => X12InterchangeQualifier::CodeZz,
            other => X12InterchangeQualifier::Unknown(crate::types::UnknownVariantValue(
                other.to_owned(),
            )),
        }
    }
}
impl std::str::FromStr for X12InterchangeQualifier {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(X12InterchangeQualifier::from(s))
    }
}
impl X12InterchangeQualifier {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            X12InterchangeQualifier::Code01 => "01",
            X12InterchangeQualifier::Code02 => "02",
            X12InterchangeQualifier::Code03 => "03",
            X12InterchangeQualifier::Code04 => "04",
            X12InterchangeQualifier::Code07 => "07",
            X12InterchangeQualifier::Code08 => "08",
            X12InterchangeQualifier::Code09 => "09",
            X12InterchangeQualifier::Code10 => "10",
            X12InterchangeQualifier::Code11 => "11",
            X12InterchangeQualifier::Code12 => "12",
            X12InterchangeQualifier::Code13 => "13",
            X12InterchangeQualifier::Code14 => "14",
            X12InterchangeQualifier::Code15 => "15",
            X12InterchangeQualifier::Code16 => "16",
            X12InterchangeQualifier::Code17 => "17",
            X12InterchangeQualifier::Code18 => "18",
            X12InterchangeQualifier::Code19 => "19",
            X12InterchangeQualifier::Code20 => "20",
            X12InterchangeQualifier::Code21 => "21",
            X12InterchangeQualifier::Code22 => "22",
            X12InterchangeQualifier::Code23 => "23",
            X12InterchangeQualifier::Code24 => "24",
            X12InterchangeQualifier::Code25 => "25",
            X12InterchangeQualifier::Code26 => "26",
            X12InterchangeQualifier::Code27 => "27",
            X12InterchangeQualifier::Code28 => "28",
            X12InterchangeQualifier::Code29 => "29",
            X12InterchangeQualifier::Code30 => "30",
            X12InterchangeQualifier::Code31 => "31",
            X12InterchangeQualifier::Code32 => "32",
            X12InterchangeQualifier::Code33 => "33",
            X12InterchangeQualifier::Code34 => "34",
            X12InterchangeQualifier::Code35 => "35",
            X12InterchangeQualifier::Code36 => "36",
            X12InterchangeQualifier::Code37 => "37",
            X12InterchangeQualifier::Code38 => "38",
            X12InterchangeQualifier::CodeAm => "AM",
            X12InterchangeQualifier::CodeNr => "NR",
            X12InterchangeQualifier::CodeSa => "SA",
            X12InterchangeQualifier::CodeSn => "SN",
            X12InterchangeQualifier::CodeZz => "ZZ",
            X12InterchangeQualifier::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` representations of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &[
            "01", "02", "03", "04", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16",
            "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
            "31", "32", "33", "34", "35", "36", "37", "38", "AM", "NR", "SA", "SN", "ZZ",
        ]
    }
}
impl AsRef<str> for X12InterchangeQualifier {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct X12PartnershipSummary {
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub created_at: std::option::Option<aws_smithy_types::DateTime>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub updated_at: std::option::Option<aws_smithy_types::DateTime>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub partnership_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub local_profile_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub partner_profile_id: std::option::Option<std::string::String>,
}
impl X12PartnershipSummary {
    #[allow(missing_docs)] // documentation missing in model
    pub fn created_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.created_at.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn updated_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.updated_at.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn partnership_id(&self) -> std::option::Option<&str> {
        self.partnership_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn local_profile_id(&self) -> std::option::Option<&str> {
        self.local_profile_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn partner_profile_id(&self) -> std::option::Option<&str> {
        self.partner_profile_id.as_deref()
    }
}
/// See [`X12PartnershipSummary`](crate::model::X12PartnershipSummary).
pub mod x12_partnership_summary {

    /// A builder for [`X12PartnershipSummary`](crate::model::X12PartnershipSummary).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) created_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) updated_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) partnership_id: std::option::Option<std::string::String>,
        pub(crate) local_profile_id: std::option::Option<std::string::String>,
        pub(crate) partner_profile_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        #[allow(missing_docs)] // documentation missing in model
        pub fn created_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.created_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_created_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.created_at = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn updated_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.updated_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_updated_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.updated_at = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn partnership_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.partnership_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_partnership_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.partnership_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn local_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.local_profile_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_local_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.local_profile_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn partner_profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.partner_profile_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_partner_profile_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.partner_profile_id = input;
            self
        }
        /// Consumes the builder and constructs a [`X12PartnershipSummary`](crate::model::X12PartnershipSummary).
        pub fn build(self) -> crate::model::X12PartnershipSummary {
            crate::model::X12PartnershipSummary {
                created_at: self.created_at,
                updated_at: self.updated_at,
                partnership_id: self.partnership_id,
                local_profile_id: self.local_profile_id,
                partner_profile_id: self.partner_profile_id,
            }
        }
    }
}
impl X12PartnershipSummary {
    /// Creates a new builder-style object to manufacture [`X12PartnershipSummary`](crate::model::X12PartnershipSummary).
    pub fn builder() -> crate::model::x12_partnership_summary::Builder {
        crate::model::x12_partnership_summary::Builder::default()
    }
}

/// When writing a match expression against `Timezone`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let timezone = unimplemented!();
/// match timezone {
///     Timezone::AmericaAdak => { /* ... */ },
///     Timezone::AmericaAnchorage => { /* ... */ },
///     Timezone::AmericaBoise => { /* ... */ },
///     Timezone::AmericaChicago => { /* ... */ },
///     Timezone::AmericaDenver => { /* ... */ },
///     Timezone::AmericaDetroit => { /* ... */ },
///     Timezone::AmericaIndianaIndianapolis => { /* ... */ },
///     Timezone::AmericaIndianaKnox => { /* ... */ },
///     Timezone::AmericaIndianaMarengo => { /* ... */ },
///     Timezone::AmericaIndianaPetersburg => { /* ... */ },
///     Timezone::AmericaIndianaTellCity => { /* ... */ },
///     Timezone::AmericaIndianaVevay => { /* ... */ },
///     Timezone::AmericaIndianaVincennes => { /* ... */ },
///     Timezone::AmericaIndianaWinamac => { /* ... */ },
///     Timezone::AmericaJuneau => { /* ... */ },
///     Timezone::AmericaKentuckyLouisville => { /* ... */ },
///     Timezone::AmericaKentuckyMonticello => { /* ... */ },
///     Timezone::AmericaLosAngeles => { /* ... */ },
///     Timezone::AmericaMenominee => { /* ... */ },
///     Timezone::AmericaMetlakatla => { /* ... */ },
///     Timezone::AmericaNewYork => { /* ... */ },
///     Timezone::AmericaNome => { /* ... */ },
///     Timezone::AmericaNorthDakotaBeulah => { /* ... */ },
///     Timezone::AmericaNorthDakotaCenter => { /* ... */ },
///     Timezone::AmericaNorthDakotaNewSalem => { /* ... */ },
///     Timezone::AmericaPhoenix => { /* ... */ },
///     Timezone::AmericaSitka => { /* ... */ },
///     Timezone::AmericaYakutat => { /* ... */ },
///     Timezone::PacificHonolulu => { /* ... */ },
///     Timezone::Utc => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `timezone` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `Timezone::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `Timezone::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `Timezone::NewFeature` is defined.
/// Specifically, when `timezone` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `Timezone::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum Timezone {
    #[allow(missing_docs)] // documentation missing in model
    AmericaAdak,
    #[allow(missing_docs)] // documentation missing in model
    AmericaAnchorage,
    #[allow(missing_docs)] // documentation missing in model
    AmericaBoise,
    #[allow(missing_docs)] // documentation missing in model
    AmericaChicago,
    #[allow(missing_docs)] // documentation missing in model
    AmericaDenver,
    #[allow(missing_docs)] // documentation missing in model
    AmericaDetroit,
    #[allow(missing_docs)] // documentation missing in model
    AmericaIndianaIndianapolis,
    #[allow(missing_docs)] // documentation missing in model
    AmericaIndianaKnox,
    #[allow(missing_docs)] // documentation missing in model
    AmericaIndianaMarengo,
    #[allow(missing_docs)] // documentation missing in model
    AmericaIndianaPetersburg,
    #[allow(missing_docs)] // documentation missing in model
    AmericaIndianaTellCity,
    #[allow(missing_docs)] // documentation missing in model
    AmericaIndianaVevay,
    #[allow(missing_docs)] // documentation missing in model
    AmericaIndianaVincennes,
    #[allow(missing_docs)] // documentation missing in model
    AmericaIndianaWinamac,
    #[allow(missing_docs)] // documentation missing in model
    AmericaJuneau,
    #[allow(missing_docs)] // documentation missing in model
    AmericaKentuckyLouisville,
    #[allow(missing_docs)] // documentation missing in model
    AmericaKentuckyMonticello,
    #[allow(missing_docs)] // documentation missing in model
    AmericaLosAngeles,
    #[allow(missing_docs)] // documentation missing in model
    AmericaMenominee,
    #[allow(missing_docs)] // documentation missing in model
    AmericaMetlakatla,
    #[allow(missing_docs)] // documentation missing in model
    AmericaNewYork,
    #[allow(missing_docs)] // documentation missing in model
    AmericaNome,
    #[allow(missing_docs)] // documentation missing in model
    AmericaNorthDakotaBeulah,
    #[allow(missing_docs)] // documentation missing in model
    AmericaNorthDakotaCenter,
    #[allow(missing_docs)] // documentation missing in model
    AmericaNorthDakotaNewSalem,
    #[allow(missing_docs)] // documentation missing in model
    AmericaPhoenix,
    #[allow(missing_docs)] // documentation missing in model
    AmericaSitka,
    #[allow(missing_docs)] // documentation missing in model
    AmericaYakutat,
    #[allow(missing_docs)] // documentation missing in model
    PacificHonolulu,
    #[allow(missing_docs)] // documentation missing in model
    Utc,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for Timezone {
    fn from(s: &str) -> Self {
        match s {
            "America/Adak" => Timezone::AmericaAdak,
            "America/Anchorage" => Timezone::AmericaAnchorage,
            "America/Boise" => Timezone::AmericaBoise,
            "America/Chicago" => Timezone::AmericaChicago,
            "America/Denver" => Timezone::AmericaDenver,
            "America/Detroit" => Timezone::AmericaDetroit,
            "America/Indiana/Indianapolis" => Timezone::AmericaIndianaIndianapolis,
            "America/Indiana/Knox" => Timezone::AmericaIndianaKnox,
            "America/Indiana/Marengo" => Timezone::AmericaIndianaMarengo,
            "America/Indiana/Petersburg" => Timezone::AmericaIndianaPetersburg,
            "America/Indiana/Tell_City" => Timezone::AmericaIndianaTellCity,
            "America/Indiana/Vevay" => Timezone::AmericaIndianaVevay,
            "America/Indiana/Vincennes" => Timezone::AmericaIndianaVincennes,
            "America/Indiana/Winamac" => Timezone::AmericaIndianaWinamac,
            "America/Juneau" => Timezone::AmericaJuneau,
            "America/Kentucky/Louisville" => Timezone::AmericaKentuckyLouisville,
            "America/Kentucky/Monticello" => Timezone::AmericaKentuckyMonticello,
            "America/Los_Angeles" => Timezone::AmericaLosAngeles,
            "America/Menominee" => Timezone::AmericaMenominee,
            "America/Metlakatla" => Timezone::AmericaMetlakatla,
            "America/New_York" => Timezone::AmericaNewYork,
            "America/Nome" => Timezone::AmericaNome,
            "America/North_Dakota/Beulah" => Timezone::AmericaNorthDakotaBeulah,
            "America/North_Dakota/Center" => Timezone::AmericaNorthDakotaCenter,
            "America/North_Dakota/New_Salem" => Timezone::AmericaNorthDakotaNewSalem,
            "America/Phoenix" => Timezone::AmericaPhoenix,
            "America/Sitka" => Timezone::AmericaSitka,
            "America/Yakutat" => Timezone::AmericaYakutat,
            "Pacific/Honolulu" => Timezone::PacificHonolulu,
            "UTC" => Timezone::Utc,
            other => Timezone::Unknown(crate::types::UnknownVariantValue(other.to_owned())),
        }
    }
}
impl std::str::FromStr for Timezone {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(Timezone::from(s))
    }
}
impl Timezone {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            Timezone::AmericaAdak => "America/Adak",
            Timezone::AmericaAnchorage => "America/Anchorage",
            Timezone::AmericaBoise => "America/Boise",
            Timezone::AmericaChicago => "America/Chicago",
            Timezone::AmericaDenver => "America/Denver",
            Timezone::AmericaDetroit => "America/Detroit",
            Timezone::AmericaIndianaIndianapolis => "America/Indiana/Indianapolis",
            Timezone::AmericaIndianaKnox => "America/Indiana/Knox",
            Timezone::AmericaIndianaMarengo => "America/Indiana/Marengo",
            Timezone::AmericaIndianaPetersburg => "America/Indiana/Petersburg",
            Timezone::AmericaIndianaTellCity => "America/Indiana/Tell_City",
            Timezone::AmericaIndianaVevay => "America/Indiana/Vevay",
            Timezone::AmericaIndianaVincennes => "America/Indiana/Vincennes",
            Timezone::AmericaIndianaWinamac => "America/Indiana/Winamac",
            Timezone::AmericaJuneau => "America/Juneau",
            Timezone::AmericaKentuckyLouisville => "America/Kentucky/Louisville",
            Timezone::AmericaKentuckyMonticello => "America/Kentucky/Monticello",
            Timezone::AmericaLosAngeles => "America/Los_Angeles",
            Timezone::AmericaMenominee => "America/Menominee",
            Timezone::AmericaMetlakatla => "America/Metlakatla",
            Timezone::AmericaNewYork => "America/New_York",
            Timezone::AmericaNome => "America/Nome",
            Timezone::AmericaNorthDakotaBeulah => "America/North_Dakota/Beulah",
            Timezone::AmericaNorthDakotaCenter => "America/North_Dakota/Center",
            Timezone::AmericaNorthDakotaNewSalem => "America/North_Dakota/New_Salem",
            Timezone::AmericaPhoenix => "America/Phoenix",
            Timezone::AmericaSitka => "America/Sitka",
            Timezone::AmericaYakutat => "America/Yakutat",
            Timezone::PacificHonolulu => "Pacific/Honolulu",
            Timezone::Utc => "UTC",
            Timezone::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` representations of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &[
            "America/Adak",
            "America/Anchorage",
            "America/Boise",
            "America/Chicago",
            "America/Denver",
            "America/Detroit",
            "America/Indiana/Indianapolis",
            "America/Indiana/Knox",
            "America/Indiana/Marengo",
            "America/Indiana/Petersburg",
            "America/Indiana/Tell_City",
            "America/Indiana/Vevay",
            "America/Indiana/Vincennes",
            "America/Indiana/Winamac",
            "America/Juneau",
            "America/Kentucky/Louisville",
            "America/Kentucky/Monticello",
            "America/Los_Angeles",
            "America/Menominee",
            "America/Metlakatla",
            "America/New_York",
            "America/Nome",
            "America/North_Dakota/Beulah",
            "America/North_Dakota/Center",
            "America/North_Dakota/New_Salem",
            "America/Phoenix",
            "America/Sitka",
            "America/Yakutat",
            "Pacific/Honolulu",
            "UTC",
        ]
    }
}
impl AsRef<str> for Timezone {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

/// When writing a match expression against `X12UsageIndicator`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let x12usageindicator = unimplemented!();
/// match x12usageindicator {
///     X12UsageIndicator::Information => { /* ... */ },
///     X12UsageIndicator::Production => { /* ... */ },
///     X12UsageIndicator::Test => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `x12usageindicator` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `X12UsageIndicator::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `X12UsageIndicator::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `X12UsageIndicator::NewFeature` is defined.
/// Specifically, when `x12usageindicator` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `X12UsageIndicator::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum X12UsageIndicator {
    #[allow(missing_docs)] // documentation missing in model
    Information,
    #[allow(missing_docs)] // documentation missing in model
    Production,
    #[allow(missing_docs)] // documentation missing in model
    Test,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for X12UsageIndicator {
    fn from(s: &str) -> Self {
        match s {
            "I" => X12UsageIndicator::Information,
            "P" => X12UsageIndicator::Production,
            "T" => X12UsageIndicator::Test,
            other => {
                X12UsageIndicator::Unknown(crate::types::UnknownVariantValue(other.to_owned()))
            }
        }
    }
}
impl std::str::FromStr for X12UsageIndicator {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(X12UsageIndicator::from(s))
    }
}
impl X12UsageIndicator {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            X12UsageIndicator::Information => "I",
            X12UsageIndicator::Production => "P",
            X12UsageIndicator::Test => "T",
            X12UsageIndicator::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` representations of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &["I", "P", "T"]
    }
}
impl AsRef<str> for X12UsageIndicator {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct OutboundX12TransactionSettingsSummary {
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub release: std::option::Option<crate::model::X12Release>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub transaction_set_identifier: std::option::Option<crate::model::X12TransactionSetCode>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub guide_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub local_application_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub partner_application_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub bucket_connection:
        std::option::Option<crate::model::X12OutboundTransactionBucketConnection>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub created_at: std::option::Option<aws_smithy_types::DateTime>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub updated_at: std::option::Option<aws_smithy_types::DateTime>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub outbound_x12_transaction_settings_id: std::option::Option<std::string::String>,
}
impl OutboundX12TransactionSettingsSummary {
    #[allow(missing_docs)] // documentation missing in model
    pub fn release(&self) -> std::option::Option<&crate::model::X12Release> {
        self.release.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn transaction_set_identifier(
        &self,
    ) -> std::option::Option<&crate::model::X12TransactionSetCode> {
        self.transaction_set_identifier.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn guide_id(&self) -> std::option::Option<&str> {
        self.guide_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn local_application_id(&self) -> std::option::Option<&str> {
        self.local_application_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn partner_application_id(&self) -> std::option::Option<&str> {
        self.partner_application_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn bucket_connection(
        &self,
    ) -> std::option::Option<&crate::model::X12OutboundTransactionBucketConnection> {
        self.bucket_connection.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn created_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.created_at.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn updated_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.updated_at.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn outbound_x12_transaction_settings_id(&self) -> std::option::Option<&str> {
        self.outbound_x12_transaction_settings_id.as_deref()
    }
}
/// See [`OutboundX12TransactionSettingsSummary`](crate::model::OutboundX12TransactionSettingsSummary).
pub mod outbound_x12_transaction_settings_summary {

    /// A builder for [`OutboundX12TransactionSettingsSummary`](crate::model::OutboundX12TransactionSettingsSummary).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) release: std::option::Option<crate::model::X12Release>,
        pub(crate) transaction_set_identifier:
            std::option::Option<crate::model::X12TransactionSetCode>,
        pub(crate) guide_id: std::option::Option<std::string::String>,
        pub(crate) local_application_id: std::option::Option<std::string::String>,
        pub(crate) partner_application_id: std::option::Option<std::string::String>,
        pub(crate) bucket_connection:
            std::option::Option<crate::model::X12OutboundTransactionBucketConnection>,
        pub(crate) created_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) updated_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) outbound_x12_transaction_settings_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        #[allow(missing_docs)] // documentation missing in model
        pub fn release(mut self, input: crate::model::X12Release) -> Self {
            self.release = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_release(mut self, input: std::option::Option<crate::model::X12Release>) -> Self {
            self.release = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn transaction_set_identifier(
            mut self,
            input: crate::model::X12TransactionSetCode,
        ) -> Self {
            self.transaction_set_identifier = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_transaction_set_identifier(
            mut self,
            input: std::option::Option<crate::model::X12TransactionSetCode>,
        ) -> Self {
            self.transaction_set_identifier = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn guide_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.guide_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_guide_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.guide_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn local_application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.local_application_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_local_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.local_application_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn partner_application_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.partner_application_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_partner_application_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.partner_application_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn bucket_connection(
            mut self,
            input: crate::model::X12OutboundTransactionBucketConnection,
        ) -> Self {
            self.bucket_connection = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_bucket_connection(
            mut self,
            input: std::option::Option<crate::model::X12OutboundTransactionBucketConnection>,
        ) -> Self {
            self.bucket_connection = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn created_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.created_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_created_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.created_at = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn updated_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.updated_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_updated_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.updated_at = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn outbound_x12_transaction_settings_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.outbound_x12_transaction_settings_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_outbound_x12_transaction_settings_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.outbound_x12_transaction_settings_id = input;
            self
        }
        /// Consumes the builder and constructs a [`OutboundX12TransactionSettingsSummary`](crate::model::OutboundX12TransactionSettingsSummary).
        pub fn build(self) -> crate::model::OutboundX12TransactionSettingsSummary {
            crate::model::OutboundX12TransactionSettingsSummary {
                release: self.release,
                transaction_set_identifier: self.transaction_set_identifier,
                guide_id: self.guide_id,
                local_application_id: self.local_application_id,
                partner_application_id: self.partner_application_id,
                bucket_connection: self.bucket_connection,
                created_at: self.created_at,
                updated_at: self.updated_at,
                outbound_x12_transaction_settings_id: self.outbound_x12_transaction_settings_id,
            }
        }
    }
}
impl OutboundX12TransactionSettingsSummary {
    /// Creates a new builder-style object to manufacture [`OutboundX12TransactionSettingsSummary`](crate::model::OutboundX12TransactionSettingsSummary).
    pub fn builder() -> crate::model::outbound_x12_transaction_settings_summary::Builder {
        crate::model::outbound_x12_transaction_settings_summary::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct X12OutboundTransactionBucketConnection {
    /// ------------------------------------------- Connections ------------------------------------------- Autogenerated identifier for a bucket connection
    #[doc(hidden)]
    pub bucket_connection_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub subdirectory: std::option::Option<std::string::String>,
}
impl X12OutboundTransactionBucketConnection {
    /// ------------------------------------------- Connections ------------------------------------------- Autogenerated identifier for a bucket connection
    pub fn bucket_connection_id(&self) -> std::option::Option<&str> {
        self.bucket_connection_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn subdirectory(&self) -> std::option::Option<&str> {
        self.subdirectory.as_deref()
    }
}
/// See [`X12OutboundTransactionBucketConnection`](crate::model::X12OutboundTransactionBucketConnection).
pub mod x12_outbound_transaction_bucket_connection {

    /// A builder for [`X12OutboundTransactionBucketConnection`](crate::model::X12OutboundTransactionBucketConnection).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) bucket_connection_id: std::option::Option<std::string::String>,
        pub(crate) subdirectory: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// ------------------------------------------- Connections ------------------------------------------- Autogenerated identifier for a bucket connection
        pub fn bucket_connection_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.bucket_connection_id = Some(input.into());
            self
        }
        /// ------------------------------------------- Connections ------------------------------------------- Autogenerated identifier for a bucket connection
        pub fn set_bucket_connection_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.bucket_connection_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn subdirectory(mut self, input: impl Into<std::string::String>) -> Self {
            self.subdirectory = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_subdirectory(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.subdirectory = input;
            self
        }
        /// Consumes the builder and constructs a [`X12OutboundTransactionBucketConnection`](crate::model::X12OutboundTransactionBucketConnection).
        pub fn build(self) -> crate::model::X12OutboundTransactionBucketConnection {
            crate::model::X12OutboundTransactionBucketConnection {
                bucket_connection_id: self.bucket_connection_id,
                subdirectory: self.subdirectory,
            }
        }
    }
}
impl X12OutboundTransactionBucketConnection {
    /// Creates a new builder-style object to manufacture [`X12OutboundTransactionBucketConnection`](crate::model::X12OutboundTransactionBucketConnection).
    pub fn builder() -> crate::model::x12_outbound_transaction_bucket_connection::Builder {
        crate::model::x12_outbound_transaction_bucket_connection::Builder::default()
    }
}

/// When writing a match expression against `X12TransactionSetCode`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let x12transactionsetcode = unimplemented!();
/// match x12transactionsetcode {
///     X12TransactionSetCode::Code100 => { /* ... */ },
///     X12TransactionSetCode::Code101 => { /* ... */ },
///     X12TransactionSetCode::Code102 => { /* ... */ },
///     X12TransactionSetCode::Code103 => { /* ... */ },
///     X12TransactionSetCode::Code104 => { /* ... */ },
///     X12TransactionSetCode::Code105 => { /* ... */ },
///     X12TransactionSetCode::Code106 => { /* ... */ },
///     X12TransactionSetCode::Code107 => { /* ... */ },
///     X12TransactionSetCode::Code108 => { /* ... */ },
///     X12TransactionSetCode::Code109 => { /* ... */ },
///     X12TransactionSetCode::Code110 => { /* ... */ },
///     X12TransactionSetCode::Code111 => { /* ... */ },
///     X12TransactionSetCode::Code112 => { /* ... */ },
///     X12TransactionSetCode::Code113 => { /* ... */ },
///     X12TransactionSetCode::Code120 => { /* ... */ },
///     X12TransactionSetCode::Code121 => { /* ... */ },
///     X12TransactionSetCode::Code124 => { /* ... */ },
///     X12TransactionSetCode::Code125 => { /* ... */ },
///     X12TransactionSetCode::Code126 => { /* ... */ },
///     X12TransactionSetCode::Code127 => { /* ... */ },
///     X12TransactionSetCode::Code128 => { /* ... */ },
///     X12TransactionSetCode::Code129 => { /* ... */ },
///     X12TransactionSetCode::Code130 => { /* ... */ },
///     X12TransactionSetCode::Code131 => { /* ... */ },
///     X12TransactionSetCode::Code132 => { /* ... */ },
///     X12TransactionSetCode::Code133 => { /* ... */ },
///     X12TransactionSetCode::Code135 => { /* ... */ },
///     X12TransactionSetCode::Code138 => { /* ... */ },
///     X12TransactionSetCode::Code139 => { /* ... */ },
///     X12TransactionSetCode::Code140 => { /* ... */ },
///     X12TransactionSetCode::Code141 => { /* ... */ },
///     X12TransactionSetCode::Code142 => { /* ... */ },
///     X12TransactionSetCode::Code143 => { /* ... */ },
///     X12TransactionSetCode::Code144 => { /* ... */ },
///     X12TransactionSetCode::Code146 => { /* ... */ },
///     X12TransactionSetCode::Code147 => { /* ... */ },
///     X12TransactionSetCode::Code148 => { /* ... */ },
///     X12TransactionSetCode::Code149 => { /* ... */ },
///     X12TransactionSetCode::Code150 => { /* ... */ },
///     X12TransactionSetCode::Code151 => { /* ... */ },
///     X12TransactionSetCode::Code152 => { /* ... */ },
///     X12TransactionSetCode::Code153 => { /* ... */ },
///     X12TransactionSetCode::Code154 => { /* ... */ },
///     X12TransactionSetCode::Code155 => { /* ... */ },
///     X12TransactionSetCode::Code157 => { /* ... */ },
///     X12TransactionSetCode::Code158 => { /* ... */ },
///     X12TransactionSetCode::Code159 => { /* ... */ },
///     X12TransactionSetCode::Code160 => { /* ... */ },
///     X12TransactionSetCode::Code161 => { /* ... */ },
///     X12TransactionSetCode::Code163 => { /* ... */ },
///     X12TransactionSetCode::Code170 => { /* ... */ },
///     X12TransactionSetCode::Code175 => { /* ... */ },
///     X12TransactionSetCode::Code176 => { /* ... */ },
///     X12TransactionSetCode::Code179 => { /* ... */ },
///     X12TransactionSetCode::Code180 => { /* ... */ },
///     X12TransactionSetCode::Code185 => { /* ... */ },
///     X12TransactionSetCode::Code186 => { /* ... */ },
///     X12TransactionSetCode::Code187 => { /* ... */ },
///     X12TransactionSetCode::Code188 => { /* ... */ },
///     X12TransactionSetCode::Code189 => { /* ... */ },
///     X12TransactionSetCode::Code190 => { /* ... */ },
///     X12TransactionSetCode::Code191 => { /* ... */ },
///     X12TransactionSetCode::Code194 => { /* ... */ },
///     X12TransactionSetCode::Code195 => { /* ... */ },
///     X12TransactionSetCode::Code196 => { /* ... */ },
///     X12TransactionSetCode::Code197 => { /* ... */ },
///     X12TransactionSetCode::Code198 => { /* ... */ },
///     X12TransactionSetCode::Code199 => { /* ... */ },
///     X12TransactionSetCode::Code200 => { /* ... */ },
///     X12TransactionSetCode::Code201 => { /* ... */ },
///     X12TransactionSetCode::Code202 => { /* ... */ },
///     X12TransactionSetCode::Code203 => { /* ... */ },
///     X12TransactionSetCode::Code204 => { /* ... */ },
///     X12TransactionSetCode::Code205 => { /* ... */ },
///     X12TransactionSetCode::Code206 => { /* ... */ },
///     X12TransactionSetCode::Code210 => { /* ... */ },
///     X12TransactionSetCode::Code211 => { /* ... */ },
///     X12TransactionSetCode::Code212 => { /* ... */ },
///     X12TransactionSetCode::Code213 => { /* ... */ },
///     X12TransactionSetCode::Code214 => { /* ... */ },
///     X12TransactionSetCode::Code215 => { /* ... */ },
///     X12TransactionSetCode::Code216 => { /* ... */ },
///     X12TransactionSetCode::Code217 => { /* ... */ },
///     X12TransactionSetCode::Code219 => { /* ... */ },
///     X12TransactionSetCode::Code220 => { /* ... */ },
///     X12TransactionSetCode::Code222 => { /* ... */ },
///     X12TransactionSetCode::Code223 => { /* ... */ },
///     X12TransactionSetCode::Code224 => { /* ... */ },
///     X12TransactionSetCode::Code225 => { /* ... */ },
///     X12TransactionSetCode::Code227 => { /* ... */ },
///     X12TransactionSetCode::Code228 => { /* ... */ },
///     X12TransactionSetCode::Code240 => { /* ... */ },
///     X12TransactionSetCode::Code242 => { /* ... */ },
///     X12TransactionSetCode::Code244 => { /* ... */ },
///     X12TransactionSetCode::Code245 => { /* ... */ },
///     X12TransactionSetCode::Code248 => { /* ... */ },
///     X12TransactionSetCode::Code249 => { /* ... */ },
///     X12TransactionSetCode::Code250 => { /* ... */ },
///     X12TransactionSetCode::Code251 => { /* ... */ },
///     X12TransactionSetCode::Code252 => { /* ... */ },
///     X12TransactionSetCode::Code255 => { /* ... */ },
///     X12TransactionSetCode::Code256 => { /* ... */ },
///     X12TransactionSetCode::Code259 => { /* ... */ },
///     X12TransactionSetCode::Code260 => { /* ... */ },
///     X12TransactionSetCode::Code261 => { /* ... */ },
///     X12TransactionSetCode::Code262 => { /* ... */ },
///     X12TransactionSetCode::Code263 => { /* ... */ },
///     X12TransactionSetCode::Code264 => { /* ... */ },
///     X12TransactionSetCode::Code265 => { /* ... */ },
///     X12TransactionSetCode::Code266 => { /* ... */ },
///     X12TransactionSetCode::Code267 => { /* ... */ },
///     X12TransactionSetCode::Code268 => { /* ... */ },
///     X12TransactionSetCode::Code269 => { /* ... */ },
///     X12TransactionSetCode::Code270 => { /* ... */ },
///     X12TransactionSetCode::Code271 => { /* ... */ },
///     X12TransactionSetCode::Code272 => { /* ... */ },
///     X12TransactionSetCode::Code273 => { /* ... */ },
///     X12TransactionSetCode::Code274 => { /* ... */ },
///     X12TransactionSetCode::Code275 => { /* ... */ },
///     X12TransactionSetCode::Code276 => { /* ... */ },
///     X12TransactionSetCode::Code277 => { /* ... */ },
///     X12TransactionSetCode::Code278 => { /* ... */ },
///     X12TransactionSetCode::Code280 => { /* ... */ },
///     X12TransactionSetCode::Code283 => { /* ... */ },
///     X12TransactionSetCode::Code284 => { /* ... */ },
///     X12TransactionSetCode::Code285 => { /* ... */ },
///     X12TransactionSetCode::Code286 => { /* ... */ },
///     X12TransactionSetCode::Code288 => { /* ... */ },
///     X12TransactionSetCode::Code290 => { /* ... */ },
///     X12TransactionSetCode::Code300 => { /* ... */ },
///     X12TransactionSetCode::Code301 => { /* ... */ },
///     X12TransactionSetCode::Code303 => { /* ... */ },
///     X12TransactionSetCode::Code304 => { /* ... */ },
///     X12TransactionSetCode::Code309 => { /* ... */ },
///     X12TransactionSetCode::Code310 => { /* ... */ },
///     X12TransactionSetCode::Code311 => { /* ... */ },
///     X12TransactionSetCode::Code312 => { /* ... */ },
///     X12TransactionSetCode::Code313 => { /* ... */ },
///     X12TransactionSetCode::Code315 => { /* ... */ },
///     X12TransactionSetCode::Code317 => { /* ... */ },
///     X12TransactionSetCode::Code319 => { /* ... */ },
///     X12TransactionSetCode::Code322 => { /* ... */ },
///     X12TransactionSetCode::Code323 => { /* ... */ },
///     X12TransactionSetCode::Code324 => { /* ... */ },
///     X12TransactionSetCode::Code325 => { /* ... */ },
///     X12TransactionSetCode::Code326 => { /* ... */ },
///     X12TransactionSetCode::Code350 => { /* ... */ },
///     X12TransactionSetCode::Code352 => { /* ... */ },
///     X12TransactionSetCode::Code353 => { /* ... */ },
///     X12TransactionSetCode::Code354 => { /* ... */ },
///     X12TransactionSetCode::Code355 => { /* ... */ },
///     X12TransactionSetCode::Code356 => { /* ... */ },
///     X12TransactionSetCode::Code357 => { /* ... */ },
///     X12TransactionSetCode::Code358 => { /* ... */ },
///     X12TransactionSetCode::Code359 => { /* ... */ },
///     X12TransactionSetCode::Code361 => { /* ... */ },
///     X12TransactionSetCode::Code362 => { /* ... */ },
///     X12TransactionSetCode::Code404 => { /* ... */ },
///     X12TransactionSetCode::Code410 => { /* ... */ },
///     X12TransactionSetCode::Code412 => { /* ... */ },
///     X12TransactionSetCode::Code414 => { /* ... */ },
///     X12TransactionSetCode::Code417 => { /* ... */ },
///     X12TransactionSetCode::Code418 => { /* ... */ },
///     X12TransactionSetCode::Code419 => { /* ... */ },
///     X12TransactionSetCode::Code420 => { /* ... */ },
///     X12TransactionSetCode::Code421 => { /* ... */ },
///     X12TransactionSetCode::Code422 => { /* ... */ },
///     X12TransactionSetCode::Code423 => { /* ... */ },
///     X12TransactionSetCode::Code424 => { /* ... */ },
///     X12TransactionSetCode::Code425 => { /* ... */ },
///     X12TransactionSetCode::Code426 => { /* ... */ },
///     X12TransactionSetCode::Code429 => { /* ... */ },
///     X12TransactionSetCode::Code431 => { /* ... */ },
///     X12TransactionSetCode::Code432 => { /* ... */ },
///     X12TransactionSetCode::Code433 => { /* ... */ },
///     X12TransactionSetCode::Code434 => { /* ... */ },
///     X12TransactionSetCode::Code435 => { /* ... */ },
///     X12TransactionSetCode::Code436 => { /* ... */ },
///     X12TransactionSetCode::Code437 => { /* ... */ },
///     X12TransactionSetCode::Code440 => { /* ... */ },
///     X12TransactionSetCode::Code451 => { /* ... */ },
///     X12TransactionSetCode::Code452 => { /* ... */ },
///     X12TransactionSetCode::Code453 => { /* ... */ },
///     X12TransactionSetCode::Code455 => { /* ... */ },
///     X12TransactionSetCode::Code456 => { /* ... */ },
///     X12TransactionSetCode::Code460 => { /* ... */ },
///     X12TransactionSetCode::Code463 => { /* ... */ },
///     X12TransactionSetCode::Code466 => { /* ... */ },
///     X12TransactionSetCode::Code468 => { /* ... */ },
///     X12TransactionSetCode::Code470 => { /* ... */ },
///     X12TransactionSetCode::Code475 => { /* ... */ },
///     X12TransactionSetCode::Code485 => { /* ... */ },
///     X12TransactionSetCode::Code486 => { /* ... */ },
///     X12TransactionSetCode::Code490 => { /* ... */ },
///     X12TransactionSetCode::Code492 => { /* ... */ },
///     X12TransactionSetCode::Code494 => { /* ... */ },
///     X12TransactionSetCode::Code500 => { /* ... */ },
///     X12TransactionSetCode::Code501 => { /* ... */ },
///     X12TransactionSetCode::Code503 => { /* ... */ },
///     X12TransactionSetCode::Code504 => { /* ... */ },
///     X12TransactionSetCode::Code511 => { /* ... */ },
///     X12TransactionSetCode::Code517 => { /* ... */ },
///     X12TransactionSetCode::Code521 => { /* ... */ },
///     X12TransactionSetCode::Code527 => { /* ... */ },
///     X12TransactionSetCode::Code536 => { /* ... */ },
///     X12TransactionSetCode::Code540 => { /* ... */ },
///     X12TransactionSetCode::Code561 => { /* ... */ },
///     X12TransactionSetCode::Code567 => { /* ... */ },
///     X12TransactionSetCode::Code568 => { /* ... */ },
///     X12TransactionSetCode::Code601 => { /* ... */ },
///     X12TransactionSetCode::Code603 => { /* ... */ },
///     X12TransactionSetCode::Code620 => { /* ... */ },
///     X12TransactionSetCode::Code625 => { /* ... */ },
///     X12TransactionSetCode::Code650 => { /* ... */ },
///     X12TransactionSetCode::Code715 => { /* ... */ },
///     X12TransactionSetCode::Code753 => { /* ... */ },
///     X12TransactionSetCode::Code754 => { /* ... */ },
///     X12TransactionSetCode::Code805 => { /* ... */ },
///     X12TransactionSetCode::Code806 => { /* ... */ },
///     X12TransactionSetCode::Code810 => { /* ... */ },
///     X12TransactionSetCode::Code811 => { /* ... */ },
///     X12TransactionSetCode::Code812 => { /* ... */ },
///     X12TransactionSetCode::Code813 => { /* ... */ },
///     X12TransactionSetCode::Code814 => { /* ... */ },
///     X12TransactionSetCode::Code815 => { /* ... */ },
///     X12TransactionSetCode::Code816 => { /* ... */ },
///     X12TransactionSetCode::Code818 => { /* ... */ },
///     X12TransactionSetCode::Code819 => { /* ... */ },
///     X12TransactionSetCode::Code820 => { /* ... */ },
///     X12TransactionSetCode::Code821 => { /* ... */ },
///     X12TransactionSetCode::Code822 => { /* ... */ },
///     X12TransactionSetCode::Code823 => { /* ... */ },
///     X12TransactionSetCode::Code824 => { /* ... */ },
///     X12TransactionSetCode::Code826 => { /* ... */ },
///     X12TransactionSetCode::Code827 => { /* ... */ },
///     X12TransactionSetCode::Code828 => { /* ... */ },
///     X12TransactionSetCode::Code829 => { /* ... */ },
///     X12TransactionSetCode::Code830 => { /* ... */ },
///     X12TransactionSetCode::Code831 => { /* ... */ },
///     X12TransactionSetCode::Code832 => { /* ... */ },
///     X12TransactionSetCode::Code833 => { /* ... */ },
///     X12TransactionSetCode::Code834 => { /* ... */ },
///     X12TransactionSetCode::Code835 => { /* ... */ },
///     X12TransactionSetCode::Code836 => { /* ... */ },
///     X12TransactionSetCode::Code837 => { /* ... */ },
///     X12TransactionSetCode::Code838 => { /* ... */ },
///     X12TransactionSetCode::Code839 => { /* ... */ },
///     X12TransactionSetCode::Code840 => { /* ... */ },
///     X12TransactionSetCode::Code841 => { /* ... */ },
///     X12TransactionSetCode::Code842 => { /* ... */ },
///     X12TransactionSetCode::Code843 => { /* ... */ },
///     X12TransactionSetCode::Code844 => { /* ... */ },
///     X12TransactionSetCode::Code845 => { /* ... */ },
///     X12TransactionSetCode::Code846 => { /* ... */ },
///     X12TransactionSetCode::Code847 => { /* ... */ },
///     X12TransactionSetCode::Code848 => { /* ... */ },
///     X12TransactionSetCode::Code849 => { /* ... */ },
///     X12TransactionSetCode::Code850 => { /* ... */ },
///     X12TransactionSetCode::Code851 => { /* ... */ },
///     X12TransactionSetCode::Code852 => { /* ... */ },
///     X12TransactionSetCode::Code853 => { /* ... */ },
///     X12TransactionSetCode::Code854 => { /* ... */ },
///     X12TransactionSetCode::Code855 => { /* ... */ },
///     X12TransactionSetCode::Code856 => { /* ... */ },
///     X12TransactionSetCode::Code857 => { /* ... */ },
///     X12TransactionSetCode::Code858 => { /* ... */ },
///     X12TransactionSetCode::Code859 => { /* ... */ },
///     X12TransactionSetCode::Code860 => { /* ... */ },
///     X12TransactionSetCode::Code861 => { /* ... */ },
///     X12TransactionSetCode::Code862 => { /* ... */ },
///     X12TransactionSetCode::Code863 => { /* ... */ },
///     X12TransactionSetCode::Code864 => { /* ... */ },
///     X12TransactionSetCode::Code865 => { /* ... */ },
///     X12TransactionSetCode::Code866 => { /* ... */ },
///     X12TransactionSetCode::Code867 => { /* ... */ },
///     X12TransactionSetCode::Code868 => { /* ... */ },
///     X12TransactionSetCode::Code869 => { /* ... */ },
///     X12TransactionSetCode::Code870 => { /* ... */ },
///     X12TransactionSetCode::Code871 => { /* ... */ },
///     X12TransactionSetCode::Code872 => { /* ... */ },
///     X12TransactionSetCode::Code873 => { /* ... */ },
///     X12TransactionSetCode::Code874 => { /* ... */ },
///     X12TransactionSetCode::Code875 => { /* ... */ },
///     X12TransactionSetCode::Code876 => { /* ... */ },
///     X12TransactionSetCode::Code877 => { /* ... */ },
///     X12TransactionSetCode::Code878 => { /* ... */ },
///     X12TransactionSetCode::Code879 => { /* ... */ },
///     X12TransactionSetCode::Code880 => { /* ... */ },
///     X12TransactionSetCode::Code881 => { /* ... */ },
///     X12TransactionSetCode::Code882 => { /* ... */ },
///     X12TransactionSetCode::Code883 => { /* ... */ },
///     X12TransactionSetCode::Code884 => { /* ... */ },
///     X12TransactionSetCode::Code885 => { /* ... */ },
///     X12TransactionSetCode::Code886 => { /* ... */ },
///     X12TransactionSetCode::Code887 => { /* ... */ },
///     X12TransactionSetCode::Code888 => { /* ... */ },
///     X12TransactionSetCode::Code889 => { /* ... */ },
///     X12TransactionSetCode::Code890 => { /* ... */ },
///     X12TransactionSetCode::Code891 => { /* ... */ },
///     X12TransactionSetCode::Code892 => { /* ... */ },
///     X12TransactionSetCode::Code893 => { /* ... */ },
///     X12TransactionSetCode::Code894 => { /* ... */ },
///     X12TransactionSetCode::Code895 => { /* ... */ },
///     X12TransactionSetCode::Code896 => { /* ... */ },
///     X12TransactionSetCode::Code897 => { /* ... */ },
///     X12TransactionSetCode::Code920 => { /* ... */ },
///     X12TransactionSetCode::Code924 => { /* ... */ },
///     X12TransactionSetCode::Code925 => { /* ... */ },
///     X12TransactionSetCode::Code926 => { /* ... */ },
///     X12TransactionSetCode::Code928 => { /* ... */ },
///     X12TransactionSetCode::Code940 => { /* ... */ },
///     X12TransactionSetCode::Code943 => { /* ... */ },
///     X12TransactionSetCode::Code944 => { /* ... */ },
///     X12TransactionSetCode::Code945 => { /* ... */ },
///     X12TransactionSetCode::Code947 => { /* ... */ },
///     X12TransactionSetCode::Code980 => { /* ... */ },
///     X12TransactionSetCode::Code990 => { /* ... */ },
///     X12TransactionSetCode::Code993 => { /* ... */ },
///     X12TransactionSetCode::Code996 => { /* ... */ },
///     X12TransactionSetCode::Code997 => { /* ... */ },
///     X12TransactionSetCode::Code998 => { /* ... */ },
///     X12TransactionSetCode::Code999 => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `x12transactionsetcode` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `X12TransactionSetCode::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `X12TransactionSetCode::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `X12TransactionSetCode::NewFeature` is defined.
/// Specifically, when `x12transactionsetcode` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `X12TransactionSetCode::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum X12TransactionSetCode {
    #[allow(missing_docs)] // documentation missing in model
    Code100,
    #[allow(missing_docs)] // documentation missing in model
    Code101,
    #[allow(missing_docs)] // documentation missing in model
    Code102,
    #[allow(missing_docs)] // documentation missing in model
    Code103,
    #[allow(missing_docs)] // documentation missing in model
    Code104,
    #[allow(missing_docs)] // documentation missing in model
    Code105,
    #[allow(missing_docs)] // documentation missing in model
    Code106,
    #[allow(missing_docs)] // documentation missing in model
    Code107,
    #[allow(missing_docs)] // documentation missing in model
    Code108,
    #[allow(missing_docs)] // documentation missing in model
    Code109,
    #[allow(missing_docs)] // documentation missing in model
    Code110,
    #[allow(missing_docs)] // documentation missing in model
    Code111,
    #[allow(missing_docs)] // documentation missing in model
    Code112,
    #[allow(missing_docs)] // documentation missing in model
    Code113,
    #[allow(missing_docs)] // documentation missing in model
    Code120,
    #[allow(missing_docs)] // documentation missing in model
    Code121,
    #[allow(missing_docs)] // documentation missing in model
    Code124,
    #[allow(missing_docs)] // documentation missing in model
    Code125,
    #[allow(missing_docs)] // documentation missing in model
    Code126,
    #[allow(missing_docs)] // documentation missing in model
    Code127,
    #[allow(missing_docs)] // documentation missing in model
    Code128,
    #[allow(missing_docs)] // documentation missing in model
    Code129,
    #[allow(missing_docs)] // documentation missing in model
    Code130,
    #[allow(missing_docs)] // documentation missing in model
    Code131,
    #[allow(missing_docs)] // documentation missing in model
    Code132,
    #[allow(missing_docs)] // documentation missing in model
    Code133,
    #[allow(missing_docs)] // documentation missing in model
    Code135,
    #[allow(missing_docs)] // documentation missing in model
    Code138,
    #[allow(missing_docs)] // documentation missing in model
    Code139,
    #[allow(missing_docs)] // documentation missing in model
    Code140,
    #[allow(missing_docs)] // documentation missing in model
    Code141,
    #[allow(missing_docs)] // documentation missing in model
    Code142,
    #[allow(missing_docs)] // documentation missing in model
    Code143,
    #[allow(missing_docs)] // documentation missing in model
    Code144,
    #[allow(missing_docs)] // documentation missing in model
    Code146,
    #[allow(missing_docs)] // documentation missing in model
    Code147,
    #[allow(missing_docs)] // documentation missing in model
    Code148,
    #[allow(missing_docs)] // documentation missing in model
    Code149,
    #[allow(missing_docs)] // documentation missing in model
    Code150,
    #[allow(missing_docs)] // documentation missing in model
    Code151,
    #[allow(missing_docs)] // documentation missing in model
    Code152,
    #[allow(missing_docs)] // documentation missing in model
    Code153,
    #[allow(missing_docs)] // documentation missing in model
    Code154,
    #[allow(missing_docs)] // documentation missing in model
    Code155,
    #[allow(missing_docs)] // documentation missing in model
    Code157,
    #[allow(missing_docs)] // documentation missing in model
    Code158,
    #[allow(missing_docs)] // documentation missing in model
    Code159,
    #[allow(missing_docs)] // documentation missing in model
    Code160,
    #[allow(missing_docs)] // documentation missing in model
    Code161,
    #[allow(missing_docs)] // documentation missing in model
    Code163,
    #[allow(missing_docs)] // documentation missing in model
    Code170,
    #[allow(missing_docs)] // documentation missing in model
    Code175,
    #[allow(missing_docs)] // documentation missing in model
    Code176,
    #[allow(missing_docs)] // documentation missing in model
    Code179,
    #[allow(missing_docs)] // documentation missing in model
    Code180,
    #[allow(missing_docs)] // documentation missing in model
    Code185,
    #[allow(missing_docs)] // documentation missing in model
    Code186,
    #[allow(missing_docs)] // documentation missing in model
    Code187,
    #[allow(missing_docs)] // documentation missing in model
    Code188,
    #[allow(missing_docs)] // documentation missing in model
    Code189,
    #[allow(missing_docs)] // documentation missing in model
    Code190,
    #[allow(missing_docs)] // documentation missing in model
    Code191,
    #[allow(missing_docs)] // documentation missing in model
    Code194,
    #[allow(missing_docs)] // documentation missing in model
    Code195,
    #[allow(missing_docs)] // documentation missing in model
    Code196,
    #[allow(missing_docs)] // documentation missing in model
    Code197,
    #[allow(missing_docs)] // documentation missing in model
    Code198,
    #[allow(missing_docs)] // documentation missing in model
    Code199,
    #[allow(missing_docs)] // documentation missing in model
    Code200,
    #[allow(missing_docs)] // documentation missing in model
    Code201,
    #[allow(missing_docs)] // documentation missing in model
    Code202,
    #[allow(missing_docs)] // documentation missing in model
    Code203,
    #[allow(missing_docs)] // documentation missing in model
    Code204,
    #[allow(missing_docs)] // documentation missing in model
    Code205,
    #[allow(missing_docs)] // documentation missing in model
    Code206,
    #[allow(missing_docs)] // documentation missing in model
    Code210,
    #[allow(missing_docs)] // documentation missing in model
    Code211,
    #[allow(missing_docs)] // documentation missing in model
    Code212,
    #[allow(missing_docs)] // documentation missing in model
    Code213,
    #[allow(missing_docs)] // documentation missing in model
    Code214,
    #[allow(missing_docs)] // documentation missing in model
    Code215,
    #[allow(missing_docs)] // documentation missing in model
    Code216,
    #[allow(missing_docs)] // documentation missing in model
    Code217,
    #[allow(missing_docs)] // documentation missing in model
    Code219,
    #[allow(missing_docs)] // documentation missing in model
    Code220,
    #[allow(missing_docs)] // documentation missing in model
    Code222,
    #[allow(missing_docs)] // documentation missing in model
    Code223,
    #[allow(missing_docs)] // documentation missing in model
    Code224,
    #[allow(missing_docs)] // documentation missing in model
    Code225,
    #[allow(missing_docs)] // documentation missing in model
    Code227,
    #[allow(missing_docs)] // documentation missing in model
    Code228,
    #[allow(missing_docs)] // documentation missing in model
    Code240,
    #[allow(missing_docs)] // documentation missing in model
    Code242,
    #[allow(missing_docs)] // documentation missing in model
    Code244,
    #[allow(missing_docs)] // documentation missing in model
    Code245,
    #[allow(missing_docs)] // documentation missing in model
    Code248,
    #[allow(missing_docs)] // documentation missing in model
    Code249,
    #[allow(missing_docs)] // documentation missing in model
    Code250,
    #[allow(missing_docs)] // documentation missing in model
    Code251,
    #[allow(missing_docs)] // documentation missing in model
    Code252,
    #[allow(missing_docs)] // documentation missing in model
    Code255,
    #[allow(missing_docs)] // documentation missing in model
    Code256,
    #[allow(missing_docs)] // documentation missing in model
    Code259,
    #[allow(missing_docs)] // documentation missing in model
    Code260,
    #[allow(missing_docs)] // documentation missing in model
    Code261,
    #[allow(missing_docs)] // documentation missing in model
    Code262,
    #[allow(missing_docs)] // documentation missing in model
    Code263,
    #[allow(missing_docs)] // documentation missing in model
    Code264,
    #[allow(missing_docs)] // documentation missing in model
    Code265,
    #[allow(missing_docs)] // documentation missing in model
    Code266,
    #[allow(missing_docs)] // documentation missing in model
    Code267,
    #[allow(missing_docs)] // documentation missing in model
    Code268,
    #[allow(missing_docs)] // documentation missing in model
    Code269,
    #[allow(missing_docs)] // documentation missing in model
    Code270,
    #[allow(missing_docs)] // documentation missing in model
    Code271,
    #[allow(missing_docs)] // documentation missing in model
    Code272,
    #[allow(missing_docs)] // documentation missing in model
    Code273,
    #[allow(missing_docs)] // documentation missing in model
    Code274,
    #[allow(missing_docs)] // documentation missing in model
    Code275,
    #[allow(missing_docs)] // documentation missing in model
    Code276,
    #[allow(missing_docs)] // documentation missing in model
    Code277,
    #[allow(missing_docs)] // documentation missing in model
    Code278,
    #[allow(missing_docs)] // documentation missing in model
    Code280,
    #[allow(missing_docs)] // documentation missing in model
    Code283,
    #[allow(missing_docs)] // documentation missing in model
    Code284,
    #[allow(missing_docs)] // documentation missing in model
    Code285,
    #[allow(missing_docs)] // documentation missing in model
    Code286,
    #[allow(missing_docs)] // documentation missing in model
    Code288,
    #[allow(missing_docs)] // documentation missing in model
    Code290,
    #[allow(missing_docs)] // documentation missing in model
    Code300,
    #[allow(missing_docs)] // documentation missing in model
    Code301,
    #[allow(missing_docs)] // documentation missing in model
    Code303,
    #[allow(missing_docs)] // documentation missing in model
    Code304,
    #[allow(missing_docs)] // documentation missing in model
    Code309,
    #[allow(missing_docs)] // documentation missing in model
    Code310,
    #[allow(missing_docs)] // documentation missing in model
    Code311,
    #[allow(missing_docs)] // documentation missing in model
    Code312,
    #[allow(missing_docs)] // documentation missing in model
    Code313,
    #[allow(missing_docs)] // documentation missing in model
    Code315,
    #[allow(missing_docs)] // documentation missing in model
    Code317,
    #[allow(missing_docs)] // documentation missing in model
    Code319,
    #[allow(missing_docs)] // documentation missing in model
    Code322,
    #[allow(missing_docs)] // documentation missing in model
    Code323,
    #[allow(missing_docs)] // documentation missing in model
    Code324,
    #[allow(missing_docs)] // documentation missing in model
    Code325,
    #[allow(missing_docs)] // documentation missing in model
    Code326,
    #[allow(missing_docs)] // documentation missing in model
    Code350,
    #[allow(missing_docs)] // documentation missing in model
    Code352,
    #[allow(missing_docs)] // documentation missing in model
    Code353,
    #[allow(missing_docs)] // documentation missing in model
    Code354,
    #[allow(missing_docs)] // documentation missing in model
    Code355,
    #[allow(missing_docs)] // documentation missing in model
    Code356,
    #[allow(missing_docs)] // documentation missing in model
    Code357,
    #[allow(missing_docs)] // documentation missing in model
    Code358,
    #[allow(missing_docs)] // documentation missing in model
    Code359,
    #[allow(missing_docs)] // documentation missing in model
    Code361,
    #[allow(missing_docs)] // documentation missing in model
    Code362,
    #[allow(missing_docs)] // documentation missing in model
    Code404,
    #[allow(missing_docs)] // documentation missing in model
    Code410,
    #[allow(missing_docs)] // documentation missing in model
    Code412,
    #[allow(missing_docs)] // documentation missing in model
    Code414,
    #[allow(missing_docs)] // documentation missing in model
    Code417,
    #[allow(missing_docs)] // documentation missing in model
    Code418,
    #[allow(missing_docs)] // documentation missing in model
    Code419,
    #[allow(missing_docs)] // documentation missing in model
    Code420,
    #[allow(missing_docs)] // documentation missing in model
    Code421,
    #[allow(missing_docs)] // documentation missing in model
    Code422,
    #[allow(missing_docs)] // documentation missing in model
    Code423,
    #[allow(missing_docs)] // documentation missing in model
    Code424,
    #[allow(missing_docs)] // documentation missing in model
    Code425,
    #[allow(missing_docs)] // documentation missing in model
    Code426,
    #[allow(missing_docs)] // documentation missing in model
    Code429,
    #[allow(missing_docs)] // documentation missing in model
    Code431,
    #[allow(missing_docs)] // documentation missing in model
    Code432,
    #[allow(missing_docs)] // documentation missing in model
    Code433,
    #[allow(missing_docs)] // documentation missing in model
    Code434,
    #[allow(missing_docs)] // documentation missing in model
    Code435,
    #[allow(missing_docs)] // documentation missing in model
    Code436,
    #[allow(missing_docs)] // documentation missing in model
    Code437,
    #[allow(missing_docs)] // documentation missing in model
    Code440,
    #[allow(missing_docs)] // documentation missing in model
    Code451,
    #[allow(missing_docs)] // documentation missing in model
    Code452,
    #[allow(missing_docs)] // documentation missing in model
    Code453,
    #[allow(missing_docs)] // documentation missing in model
    Code455,
    #[allow(missing_docs)] // documentation missing in model
    Code456,
    #[allow(missing_docs)] // documentation missing in model
    Code460,
    #[allow(missing_docs)] // documentation missing in model
    Code463,
    #[allow(missing_docs)] // documentation missing in model
    Code466,
    #[allow(missing_docs)] // documentation missing in model
    Code468,
    #[allow(missing_docs)] // documentation missing in model
    Code470,
    #[allow(missing_docs)] // documentation missing in model
    Code475,
    #[allow(missing_docs)] // documentation missing in model
    Code485,
    #[allow(missing_docs)] // documentation missing in model
    Code486,
    #[allow(missing_docs)] // documentation missing in model
    Code490,
    #[allow(missing_docs)] // documentation missing in model
    Code492,
    #[allow(missing_docs)] // documentation missing in model
    Code494,
    #[allow(missing_docs)] // documentation missing in model
    Code500,
    #[allow(missing_docs)] // documentation missing in model
    Code501,
    #[allow(missing_docs)] // documentation missing in model
    Code503,
    #[allow(missing_docs)] // documentation missing in model
    Code504,
    #[allow(missing_docs)] // documentation missing in model
    Code511,
    #[allow(missing_docs)] // documentation missing in model
    Code517,
    #[allow(missing_docs)] // documentation missing in model
    Code521,
    #[allow(missing_docs)] // documentation missing in model
    Code527,
    #[allow(missing_docs)] // documentation missing in model
    Code536,
    #[allow(missing_docs)] // documentation missing in model
    Code540,
    #[allow(missing_docs)] // documentation missing in model
    Code561,
    #[allow(missing_docs)] // documentation missing in model
    Code567,
    #[allow(missing_docs)] // documentation missing in model
    Code568,
    #[allow(missing_docs)] // documentation missing in model
    Code601,
    #[allow(missing_docs)] // documentation missing in model
    Code603,
    #[allow(missing_docs)] // documentation missing in model
    Code620,
    #[allow(missing_docs)] // documentation missing in model
    Code625,
    #[allow(missing_docs)] // documentation missing in model
    Code650,
    #[allow(missing_docs)] // documentation missing in model
    Code715,
    #[allow(missing_docs)] // documentation missing in model
    Code753,
    #[allow(missing_docs)] // documentation missing in model
    Code754,
    #[allow(missing_docs)] // documentation missing in model
    Code805,
    #[allow(missing_docs)] // documentation missing in model
    Code806,
    #[allow(missing_docs)] // documentation missing in model
    Code810,
    #[allow(missing_docs)] // documentation missing in model
    Code811,
    #[allow(missing_docs)] // documentation missing in model
    Code812,
    #[allow(missing_docs)] // documentation missing in model
    Code813,
    #[allow(missing_docs)] // documentation missing in model
    Code814,
    #[allow(missing_docs)] // documentation missing in model
    Code815,
    #[allow(missing_docs)] // documentation missing in model
    Code816,
    #[allow(missing_docs)] // documentation missing in model
    Code818,
    #[allow(missing_docs)] // documentation missing in model
    Code819,
    #[allow(missing_docs)] // documentation missing in model
    Code820,
    #[allow(missing_docs)] // documentation missing in model
    Code821,
    #[allow(missing_docs)] // documentation missing in model
    Code822,
    #[allow(missing_docs)] // documentation missing in model
    Code823,
    #[allow(missing_docs)] // documentation missing in model
    Code824,
    #[allow(missing_docs)] // documentation missing in model
    Code826,
    #[allow(missing_docs)] // documentation missing in model
    Code827,
    #[allow(missing_docs)] // documentation missing in model
    Code828,
    #[allow(missing_docs)] // documentation missing in model
    Code829,
    #[allow(missing_docs)] // documentation missing in model
    Code830,
    #[allow(missing_docs)] // documentation missing in model
    Code831,
    #[allow(missing_docs)] // documentation missing in model
    Code832,
    #[allow(missing_docs)] // documentation missing in model
    Code833,
    #[allow(missing_docs)] // documentation missing in model
    Code834,
    #[allow(missing_docs)] // documentation missing in model
    Code835,
    #[allow(missing_docs)] // documentation missing in model
    Code836,
    #[allow(missing_docs)] // documentation missing in model
    Code837,
    #[allow(missing_docs)] // documentation missing in model
    Code838,
    #[allow(missing_docs)] // documentation missing in model
    Code839,
    #[allow(missing_docs)] // documentation missing in model
    Code840,
    #[allow(missing_docs)] // documentation missing in model
    Code841,
    #[allow(missing_docs)] // documentation missing in model
    Code842,
    #[allow(missing_docs)] // documentation missing in model
    Code843,
    #[allow(missing_docs)] // documentation missing in model
    Code844,
    #[allow(missing_docs)] // documentation missing in model
    Code845,
    #[allow(missing_docs)] // documentation missing in model
    Code846,
    #[allow(missing_docs)] // documentation missing in model
    Code847,
    #[allow(missing_docs)] // documentation missing in model
    Code848,
    #[allow(missing_docs)] // documentation missing in model
    Code849,
    #[allow(missing_docs)] // documentation missing in model
    Code850,
    #[allow(missing_docs)] // documentation missing in model
    Code851,
    #[allow(missing_docs)] // documentation missing in model
    Code852,
    #[allow(missing_docs)] // documentation missing in model
    Code853,
    #[allow(missing_docs)] // documentation missing in model
    Code854,
    #[allow(missing_docs)] // documentation missing in model
    Code855,
    #[allow(missing_docs)] // documentation missing in model
    Code856,
    #[allow(missing_docs)] // documentation missing in model
    Code857,
    #[allow(missing_docs)] // documentation missing in model
    Code858,
    #[allow(missing_docs)] // documentation missing in model
    Code859,
    #[allow(missing_docs)] // documentation missing in model
    Code860,
    #[allow(missing_docs)] // documentation missing in model
    Code861,
    #[allow(missing_docs)] // documentation missing in model
    Code862,
    #[allow(missing_docs)] // documentation missing in model
    Code863,
    #[allow(missing_docs)] // documentation missing in model
    Code864,
    #[allow(missing_docs)] // documentation missing in model
    Code865,
    #[allow(missing_docs)] // documentation missing in model
    Code866,
    #[allow(missing_docs)] // documentation missing in model
    Code867,
    #[allow(missing_docs)] // documentation missing in model
    Code868,
    #[allow(missing_docs)] // documentation missing in model
    Code869,
    #[allow(missing_docs)] // documentation missing in model
    Code870,
    #[allow(missing_docs)] // documentation missing in model
    Code871,
    #[allow(missing_docs)] // documentation missing in model
    Code872,
    #[allow(missing_docs)] // documentation missing in model
    Code873,
    #[allow(missing_docs)] // documentation missing in model
    Code874,
    #[allow(missing_docs)] // documentation missing in model
    Code875,
    #[allow(missing_docs)] // documentation missing in model
    Code876,
    #[allow(missing_docs)] // documentation missing in model
    Code877,
    #[allow(missing_docs)] // documentation missing in model
    Code878,
    #[allow(missing_docs)] // documentation missing in model
    Code879,
    #[allow(missing_docs)] // documentation missing in model
    Code880,
    #[allow(missing_docs)] // documentation missing in model
    Code881,
    #[allow(missing_docs)] // documentation missing in model
    Code882,
    #[allow(missing_docs)] // documentation missing in model
    Code883,
    #[allow(missing_docs)] // documentation missing in model
    Code884,
    #[allow(missing_docs)] // documentation missing in model
    Code885,
    #[allow(missing_docs)] // documentation missing in model
    Code886,
    #[allow(missing_docs)] // documentation missing in model
    Code887,
    #[allow(missing_docs)] // documentation missing in model
    Code888,
    #[allow(missing_docs)] // documentation missing in model
    Code889,
    #[allow(missing_docs)] // documentation missing in model
    Code890,
    #[allow(missing_docs)] // documentation missing in model
    Code891,
    #[allow(missing_docs)] // documentation missing in model
    Code892,
    #[allow(missing_docs)] // documentation missing in model
    Code893,
    #[allow(missing_docs)] // documentation missing in model
    Code894,
    #[allow(missing_docs)] // documentation missing in model
    Code895,
    #[allow(missing_docs)] // documentation missing in model
    Code896,
    #[allow(missing_docs)] // documentation missing in model
    Code897,
    #[allow(missing_docs)] // documentation missing in model
    Code920,
    #[allow(missing_docs)] // documentation missing in model
    Code924,
    #[allow(missing_docs)] // documentation missing in model
    Code925,
    #[allow(missing_docs)] // documentation missing in model
    Code926,
    #[allow(missing_docs)] // documentation missing in model
    Code928,
    #[allow(missing_docs)] // documentation missing in model
    Code940,
    #[allow(missing_docs)] // documentation missing in model
    Code943,
    #[allow(missing_docs)] // documentation missing in model
    Code944,
    #[allow(missing_docs)] // documentation missing in model
    Code945,
    #[allow(missing_docs)] // documentation missing in model
    Code947,
    #[allow(missing_docs)] // documentation missing in model
    Code980,
    #[allow(missing_docs)] // documentation missing in model
    Code990,
    #[allow(missing_docs)] // documentation missing in model
    Code993,
    #[allow(missing_docs)] // documentation missing in model
    Code996,
    #[allow(missing_docs)] // documentation missing in model
    Code997,
    #[allow(missing_docs)] // documentation missing in model
    Code998,
    #[allow(missing_docs)] // documentation missing in model
    Code999,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for X12TransactionSetCode {
    fn from(s: &str) -> Self {
        match s {
            "100" => X12TransactionSetCode::Code100,
            "101" => X12TransactionSetCode::Code101,
            "102" => X12TransactionSetCode::Code102,
            "103" => X12TransactionSetCode::Code103,
            "104" => X12TransactionSetCode::Code104,
            "105" => X12TransactionSetCode::Code105,
            "106" => X12TransactionSetCode::Code106,
            "107" => X12TransactionSetCode::Code107,
            "108" => X12TransactionSetCode::Code108,
            "109" => X12TransactionSetCode::Code109,
            "110" => X12TransactionSetCode::Code110,
            "111" => X12TransactionSetCode::Code111,
            "112" => X12TransactionSetCode::Code112,
            "113" => X12TransactionSetCode::Code113,
            "120" => X12TransactionSetCode::Code120,
            "121" => X12TransactionSetCode::Code121,
            "124" => X12TransactionSetCode::Code124,
            "125" => X12TransactionSetCode::Code125,
            "126" => X12TransactionSetCode::Code126,
            "127" => X12TransactionSetCode::Code127,
            "128" => X12TransactionSetCode::Code128,
            "129" => X12TransactionSetCode::Code129,
            "130" => X12TransactionSetCode::Code130,
            "131" => X12TransactionSetCode::Code131,
            "132" => X12TransactionSetCode::Code132,
            "133" => X12TransactionSetCode::Code133,
            "135" => X12TransactionSetCode::Code135,
            "138" => X12TransactionSetCode::Code138,
            "139" => X12TransactionSetCode::Code139,
            "140" => X12TransactionSetCode::Code140,
            "141" => X12TransactionSetCode::Code141,
            "142" => X12TransactionSetCode::Code142,
            "143" => X12TransactionSetCode::Code143,
            "144" => X12TransactionSetCode::Code144,
            "146" => X12TransactionSetCode::Code146,
            "147" => X12TransactionSetCode::Code147,
            "148" => X12TransactionSetCode::Code148,
            "149" => X12TransactionSetCode::Code149,
            "150" => X12TransactionSetCode::Code150,
            "151" => X12TransactionSetCode::Code151,
            "152" => X12TransactionSetCode::Code152,
            "153" => X12TransactionSetCode::Code153,
            "154" => X12TransactionSetCode::Code154,
            "155" => X12TransactionSetCode::Code155,
            "157" => X12TransactionSetCode::Code157,
            "158" => X12TransactionSetCode::Code158,
            "159" => X12TransactionSetCode::Code159,
            "160" => X12TransactionSetCode::Code160,
            "161" => X12TransactionSetCode::Code161,
            "163" => X12TransactionSetCode::Code163,
            "170" => X12TransactionSetCode::Code170,
            "175" => X12TransactionSetCode::Code175,
            "176" => X12TransactionSetCode::Code176,
            "179" => X12TransactionSetCode::Code179,
            "180" => X12TransactionSetCode::Code180,
            "185" => X12TransactionSetCode::Code185,
            "186" => X12TransactionSetCode::Code186,
            "187" => X12TransactionSetCode::Code187,
            "188" => X12TransactionSetCode::Code188,
            "189" => X12TransactionSetCode::Code189,
            "190" => X12TransactionSetCode::Code190,
            "191" => X12TransactionSetCode::Code191,
            "194" => X12TransactionSetCode::Code194,
            "195" => X12TransactionSetCode::Code195,
            "196" => X12TransactionSetCode::Code196,
            "197" => X12TransactionSetCode::Code197,
            "198" => X12TransactionSetCode::Code198,
            "199" => X12TransactionSetCode::Code199,
            "200" => X12TransactionSetCode::Code200,
            "201" => X12TransactionSetCode::Code201,
            "202" => X12TransactionSetCode::Code202,
            "203" => X12TransactionSetCode::Code203,
            "204" => X12TransactionSetCode::Code204,
            "205" => X12TransactionSetCode::Code205,
            "206" => X12TransactionSetCode::Code206,
            "210" => X12TransactionSetCode::Code210,
            "211" => X12TransactionSetCode::Code211,
            "212" => X12TransactionSetCode::Code212,
            "213" => X12TransactionSetCode::Code213,
            "214" => X12TransactionSetCode::Code214,
            "215" => X12TransactionSetCode::Code215,
            "216" => X12TransactionSetCode::Code216,
            "217" => X12TransactionSetCode::Code217,
            "219" => X12TransactionSetCode::Code219,
            "220" => X12TransactionSetCode::Code220,
            "222" => X12TransactionSetCode::Code222,
            "223" => X12TransactionSetCode::Code223,
            "224" => X12TransactionSetCode::Code224,
            "225" => X12TransactionSetCode::Code225,
            "227" => X12TransactionSetCode::Code227,
            "228" => X12TransactionSetCode::Code228,
            "240" => X12TransactionSetCode::Code240,
            "242" => X12TransactionSetCode::Code242,
            "244" => X12TransactionSetCode::Code244,
            "245" => X12TransactionSetCode::Code245,
            "248" => X12TransactionSetCode::Code248,
            "249" => X12TransactionSetCode::Code249,
            "250" => X12TransactionSetCode::Code250,
            "251" => X12TransactionSetCode::Code251,
            "252" => X12TransactionSetCode::Code252,
            "255" => X12TransactionSetCode::Code255,
            "256" => X12TransactionSetCode::Code256,
            "259" => X12TransactionSetCode::Code259,
            "260" => X12TransactionSetCode::Code260,
            "261" => X12TransactionSetCode::Code261,
            "262" => X12TransactionSetCode::Code262,
            "263" => X12TransactionSetCode::Code263,
            "264" => X12TransactionSetCode::Code264,
            "265" => X12TransactionSetCode::Code265,
            "266" => X12TransactionSetCode::Code266,
            "267" => X12TransactionSetCode::Code267,
            "268" => X12TransactionSetCode::Code268,
            "269" => X12TransactionSetCode::Code269,
            "270" => X12TransactionSetCode::Code270,
            "271" => X12TransactionSetCode::Code271,
            "272" => X12TransactionSetCode::Code272,
            "273" => X12TransactionSetCode::Code273,
            "274" => X12TransactionSetCode::Code274,
            "275" => X12TransactionSetCode::Code275,
            "276" => X12TransactionSetCode::Code276,
            "277" => X12TransactionSetCode::Code277,
            "278" => X12TransactionSetCode::Code278,
            "280" => X12TransactionSetCode::Code280,
            "283" => X12TransactionSetCode::Code283,
            "284" => X12TransactionSetCode::Code284,
            "285" => X12TransactionSetCode::Code285,
            "286" => X12TransactionSetCode::Code286,
            "288" => X12TransactionSetCode::Code288,
            "290" => X12TransactionSetCode::Code290,
            "300" => X12TransactionSetCode::Code300,
            "301" => X12TransactionSetCode::Code301,
            "303" => X12TransactionSetCode::Code303,
            "304" => X12TransactionSetCode::Code304,
            "309" => X12TransactionSetCode::Code309,
            "310" => X12TransactionSetCode::Code310,
            "311" => X12TransactionSetCode::Code311,
            "312" => X12TransactionSetCode::Code312,
            "313" => X12TransactionSetCode::Code313,
            "315" => X12TransactionSetCode::Code315,
            "317" => X12TransactionSetCode::Code317,
            "319" => X12TransactionSetCode::Code319,
            "322" => X12TransactionSetCode::Code322,
            "323" => X12TransactionSetCode::Code323,
            "324" => X12TransactionSetCode::Code324,
            "325" => X12TransactionSetCode::Code325,
            "326" => X12TransactionSetCode::Code326,
            "350" => X12TransactionSetCode::Code350,
            "352" => X12TransactionSetCode::Code352,
            "353" => X12TransactionSetCode::Code353,
            "354" => X12TransactionSetCode::Code354,
            "355" => X12TransactionSetCode::Code355,
            "356" => X12TransactionSetCode::Code356,
            "357" => X12TransactionSetCode::Code357,
            "358" => X12TransactionSetCode::Code358,
            "359" => X12TransactionSetCode::Code359,
            "361" => X12TransactionSetCode::Code361,
            "362" => X12TransactionSetCode::Code362,
            "404" => X12TransactionSetCode::Code404,
            "410" => X12TransactionSetCode::Code410,
            "412" => X12TransactionSetCode::Code412,
            "414" => X12TransactionSetCode::Code414,
            "417" => X12TransactionSetCode::Code417,
            "418" => X12TransactionSetCode::Code418,
            "419" => X12TransactionSetCode::Code419,
            "420" => X12TransactionSetCode::Code420,
            "421" => X12TransactionSetCode::Code421,
            "422" => X12TransactionSetCode::Code422,
            "423" => X12TransactionSetCode::Code423,
            "424" => X12TransactionSetCode::Code424,
            "425" => X12TransactionSetCode::Code425,
            "426" => X12TransactionSetCode::Code426,
            "429" => X12TransactionSetCode::Code429,
            "431" => X12TransactionSetCode::Code431,
            "432" => X12TransactionSetCode::Code432,
            "433" => X12TransactionSetCode::Code433,
            "434" => X12TransactionSetCode::Code434,
            "435" => X12TransactionSetCode::Code435,
            "436" => X12TransactionSetCode::Code436,
            "437" => X12TransactionSetCode::Code437,
            "440" => X12TransactionSetCode::Code440,
            "451" => X12TransactionSetCode::Code451,
            "452" => X12TransactionSetCode::Code452,
            "453" => X12TransactionSetCode::Code453,
            "455" => X12TransactionSetCode::Code455,
            "456" => X12TransactionSetCode::Code456,
            "460" => X12TransactionSetCode::Code460,
            "463" => X12TransactionSetCode::Code463,
            "466" => X12TransactionSetCode::Code466,
            "468" => X12TransactionSetCode::Code468,
            "470" => X12TransactionSetCode::Code470,
            "475" => X12TransactionSetCode::Code475,
            "485" => X12TransactionSetCode::Code485,
            "486" => X12TransactionSetCode::Code486,
            "490" => X12TransactionSetCode::Code490,
            "492" => X12TransactionSetCode::Code492,
            "494" => X12TransactionSetCode::Code494,
            "500" => X12TransactionSetCode::Code500,
            "501" => X12TransactionSetCode::Code501,
            "503" => X12TransactionSetCode::Code503,
            "504" => X12TransactionSetCode::Code504,
            "511" => X12TransactionSetCode::Code511,
            "517" => X12TransactionSetCode::Code517,
            "521" => X12TransactionSetCode::Code521,
            "527" => X12TransactionSetCode::Code527,
            "536" => X12TransactionSetCode::Code536,
            "540" => X12TransactionSetCode::Code540,
            "561" => X12TransactionSetCode::Code561,
            "567" => X12TransactionSetCode::Code567,
            "568" => X12TransactionSetCode::Code568,
            "601" => X12TransactionSetCode::Code601,
            "603" => X12TransactionSetCode::Code603,
            "620" => X12TransactionSetCode::Code620,
            "625" => X12TransactionSetCode::Code625,
            "650" => X12TransactionSetCode::Code650,
            "715" => X12TransactionSetCode::Code715,
            "753" => X12TransactionSetCode::Code753,
            "754" => X12TransactionSetCode::Code754,
            "805" => X12TransactionSetCode::Code805,
            "806" => X12TransactionSetCode::Code806,
            "810" => X12TransactionSetCode::Code810,
            "811" => X12TransactionSetCode::Code811,
            "812" => X12TransactionSetCode::Code812,
            "813" => X12TransactionSetCode::Code813,
            "814" => X12TransactionSetCode::Code814,
            "815" => X12TransactionSetCode::Code815,
            "816" => X12TransactionSetCode::Code816,
            "818" => X12TransactionSetCode::Code818,
            "819" => X12TransactionSetCode::Code819,
            "820" => X12TransactionSetCode::Code820,
            "821" => X12TransactionSetCode::Code821,
            "822" => X12TransactionSetCode::Code822,
            "823" => X12TransactionSetCode::Code823,
            "824" => X12TransactionSetCode::Code824,
            "826" => X12TransactionSetCode::Code826,
            "827" => X12TransactionSetCode::Code827,
            "828" => X12TransactionSetCode::Code828,
            "829" => X12TransactionSetCode::Code829,
            "830" => X12TransactionSetCode::Code830,
            "831" => X12TransactionSetCode::Code831,
            "832" => X12TransactionSetCode::Code832,
            "833" => X12TransactionSetCode::Code833,
            "834" => X12TransactionSetCode::Code834,
            "835" => X12TransactionSetCode::Code835,
            "836" => X12TransactionSetCode::Code836,
            "837" => X12TransactionSetCode::Code837,
            "838" => X12TransactionSetCode::Code838,
            "839" => X12TransactionSetCode::Code839,
            "840" => X12TransactionSetCode::Code840,
            "841" => X12TransactionSetCode::Code841,
            "842" => X12TransactionSetCode::Code842,
            "843" => X12TransactionSetCode::Code843,
            "844" => X12TransactionSetCode::Code844,
            "845" => X12TransactionSetCode::Code845,
            "846" => X12TransactionSetCode::Code846,
            "847" => X12TransactionSetCode::Code847,
            "848" => X12TransactionSetCode::Code848,
            "849" => X12TransactionSetCode::Code849,
            "850" => X12TransactionSetCode::Code850,
            "851" => X12TransactionSetCode::Code851,
            "852" => X12TransactionSetCode::Code852,
            "853" => X12TransactionSetCode::Code853,
            "854" => X12TransactionSetCode::Code854,
            "855" => X12TransactionSetCode::Code855,
            "856" => X12TransactionSetCode::Code856,
            "857" => X12TransactionSetCode::Code857,
            "858" => X12TransactionSetCode::Code858,
            "859" => X12TransactionSetCode::Code859,
            "860" => X12TransactionSetCode::Code860,
            "861" => X12TransactionSetCode::Code861,
            "862" => X12TransactionSetCode::Code862,
            "863" => X12TransactionSetCode::Code863,
            "864" => X12TransactionSetCode::Code864,
            "865" => X12TransactionSetCode::Code865,
            "866" => X12TransactionSetCode::Code866,
            "867" => X12TransactionSetCode::Code867,
            "868" => X12TransactionSetCode::Code868,
            "869" => X12TransactionSetCode::Code869,
            "870" => X12TransactionSetCode::Code870,
            "871" => X12TransactionSetCode::Code871,
            "872" => X12TransactionSetCode::Code872,
            "873" => X12TransactionSetCode::Code873,
            "874" => X12TransactionSetCode::Code874,
            "875" => X12TransactionSetCode::Code875,
            "876" => X12TransactionSetCode::Code876,
            "877" => X12TransactionSetCode::Code877,
            "878" => X12TransactionSetCode::Code878,
            "879" => X12TransactionSetCode::Code879,
            "880" => X12TransactionSetCode::Code880,
            "881" => X12TransactionSetCode::Code881,
            "882" => X12TransactionSetCode::Code882,
            "883" => X12TransactionSetCode::Code883,
            "884" => X12TransactionSetCode::Code884,
            "885" => X12TransactionSetCode::Code885,
            "886" => X12TransactionSetCode::Code886,
            "887" => X12TransactionSetCode::Code887,
            "888" => X12TransactionSetCode::Code888,
            "889" => X12TransactionSetCode::Code889,
            "890" => X12TransactionSetCode::Code890,
            "891" => X12TransactionSetCode::Code891,
            "892" => X12TransactionSetCode::Code892,
            "893" => X12TransactionSetCode::Code893,
            "894" => X12TransactionSetCode::Code894,
            "895" => X12TransactionSetCode::Code895,
            "896" => X12TransactionSetCode::Code896,
            "897" => X12TransactionSetCode::Code897,
            "920" => X12TransactionSetCode::Code920,
            "924" => X12TransactionSetCode::Code924,
            "925" => X12TransactionSetCode::Code925,
            "926" => X12TransactionSetCode::Code926,
            "928" => X12TransactionSetCode::Code928,
            "940" => X12TransactionSetCode::Code940,
            "943" => X12TransactionSetCode::Code943,
            "944" => X12TransactionSetCode::Code944,
            "945" => X12TransactionSetCode::Code945,
            "947" => X12TransactionSetCode::Code947,
            "980" => X12TransactionSetCode::Code980,
            "990" => X12TransactionSetCode::Code990,
            "993" => X12TransactionSetCode::Code993,
            "996" => X12TransactionSetCode::Code996,
            "997" => X12TransactionSetCode::Code997,
            "998" => X12TransactionSetCode::Code998,
            "999" => X12TransactionSetCode::Code999,
            other => {
                X12TransactionSetCode::Unknown(crate::types::UnknownVariantValue(other.to_owned()))
            }
        }
    }
}
impl std::str::FromStr for X12TransactionSetCode {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(X12TransactionSetCode::from(s))
    }
}
impl X12TransactionSetCode {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            X12TransactionSetCode::Code100 => "100",
            X12TransactionSetCode::Code101 => "101",
            X12TransactionSetCode::Code102 => "102",
            X12TransactionSetCode::Code103 => "103",
            X12TransactionSetCode::Code104 => "104",
            X12TransactionSetCode::Code105 => "105",
            X12TransactionSetCode::Code106 => "106",
            X12TransactionSetCode::Code107 => "107",
            X12TransactionSetCode::Code108 => "108",
            X12TransactionSetCode::Code109 => "109",
            X12TransactionSetCode::Code110 => "110",
            X12TransactionSetCode::Code111 => "111",
            X12TransactionSetCode::Code112 => "112",
            X12TransactionSetCode::Code113 => "113",
            X12TransactionSetCode::Code120 => "120",
            X12TransactionSetCode::Code121 => "121",
            X12TransactionSetCode::Code124 => "124",
            X12TransactionSetCode::Code125 => "125",
            X12TransactionSetCode::Code126 => "126",
            X12TransactionSetCode::Code127 => "127",
            X12TransactionSetCode::Code128 => "128",
            X12TransactionSetCode::Code129 => "129",
            X12TransactionSetCode::Code130 => "130",
            X12TransactionSetCode::Code131 => "131",
            X12TransactionSetCode::Code132 => "132",
            X12TransactionSetCode::Code133 => "133",
            X12TransactionSetCode::Code135 => "135",
            X12TransactionSetCode::Code138 => "138",
            X12TransactionSetCode::Code139 => "139",
            X12TransactionSetCode::Code140 => "140",
            X12TransactionSetCode::Code141 => "141",
            X12TransactionSetCode::Code142 => "142",
            X12TransactionSetCode::Code143 => "143",
            X12TransactionSetCode::Code144 => "144",
            X12TransactionSetCode::Code146 => "146",
            X12TransactionSetCode::Code147 => "147",
            X12TransactionSetCode::Code148 => "148",
            X12TransactionSetCode::Code149 => "149",
            X12TransactionSetCode::Code150 => "150",
            X12TransactionSetCode::Code151 => "151",
            X12TransactionSetCode::Code152 => "152",
            X12TransactionSetCode::Code153 => "153",
            X12TransactionSetCode::Code154 => "154",
            X12TransactionSetCode::Code155 => "155",
            X12TransactionSetCode::Code157 => "157",
            X12TransactionSetCode::Code158 => "158",
            X12TransactionSetCode::Code159 => "159",
            X12TransactionSetCode::Code160 => "160",
            X12TransactionSetCode::Code161 => "161",
            X12TransactionSetCode::Code163 => "163",
            X12TransactionSetCode::Code170 => "170",
            X12TransactionSetCode::Code175 => "175",
            X12TransactionSetCode::Code176 => "176",
            X12TransactionSetCode::Code179 => "179",
            X12TransactionSetCode::Code180 => "180",
            X12TransactionSetCode::Code185 => "185",
            X12TransactionSetCode::Code186 => "186",
            X12TransactionSetCode::Code187 => "187",
            X12TransactionSetCode::Code188 => "188",
            X12TransactionSetCode::Code189 => "189",
            X12TransactionSetCode::Code190 => "190",
            X12TransactionSetCode::Code191 => "191",
            X12TransactionSetCode::Code194 => "194",
            X12TransactionSetCode::Code195 => "195",
            X12TransactionSetCode::Code196 => "196",
            X12TransactionSetCode::Code197 => "197",
            X12TransactionSetCode::Code198 => "198",
            X12TransactionSetCode::Code199 => "199",
            X12TransactionSetCode::Code200 => "200",
            X12TransactionSetCode::Code201 => "201",
            X12TransactionSetCode::Code202 => "202",
            X12TransactionSetCode::Code203 => "203",
            X12TransactionSetCode::Code204 => "204",
            X12TransactionSetCode::Code205 => "205",
            X12TransactionSetCode::Code206 => "206",
            X12TransactionSetCode::Code210 => "210",
            X12TransactionSetCode::Code211 => "211",
            X12TransactionSetCode::Code212 => "212",
            X12TransactionSetCode::Code213 => "213",
            X12TransactionSetCode::Code214 => "214",
            X12TransactionSetCode::Code215 => "215",
            X12TransactionSetCode::Code216 => "216",
            X12TransactionSetCode::Code217 => "217",
            X12TransactionSetCode::Code219 => "219",
            X12TransactionSetCode::Code220 => "220",
            X12TransactionSetCode::Code222 => "222",
            X12TransactionSetCode::Code223 => "223",
            X12TransactionSetCode::Code224 => "224",
            X12TransactionSetCode::Code225 => "225",
            X12TransactionSetCode::Code227 => "227",
            X12TransactionSetCode::Code228 => "228",
            X12TransactionSetCode::Code240 => "240",
            X12TransactionSetCode::Code242 => "242",
            X12TransactionSetCode::Code244 => "244",
            X12TransactionSetCode::Code245 => "245",
            X12TransactionSetCode::Code248 => "248",
            X12TransactionSetCode::Code249 => "249",
            X12TransactionSetCode::Code250 => "250",
            X12TransactionSetCode::Code251 => "251",
            X12TransactionSetCode::Code252 => "252",
            X12TransactionSetCode::Code255 => "255",
            X12TransactionSetCode::Code256 => "256",
            X12TransactionSetCode::Code259 => "259",
            X12TransactionSetCode::Code260 => "260",
            X12TransactionSetCode::Code261 => "261",
            X12TransactionSetCode::Code262 => "262",
            X12TransactionSetCode::Code263 => "263",
            X12TransactionSetCode::Code264 => "264",
            X12TransactionSetCode::Code265 => "265",
            X12TransactionSetCode::Code266 => "266",
            X12TransactionSetCode::Code267 => "267",
            X12TransactionSetCode::Code268 => "268",
            X12TransactionSetCode::Code269 => "269",
            X12TransactionSetCode::Code270 => "270",
            X12TransactionSetCode::Code271 => "271",
            X12TransactionSetCode::Code272 => "272",
            X12TransactionSetCode::Code273 => "273",
            X12TransactionSetCode::Code274 => "274",
            X12TransactionSetCode::Code275 => "275",
            X12TransactionSetCode::Code276 => "276",
            X12TransactionSetCode::Code277 => "277",
            X12TransactionSetCode::Code278 => "278",
            X12TransactionSetCode::Code280 => "280",
            X12TransactionSetCode::Code283 => "283",
            X12TransactionSetCode::Code284 => "284",
            X12TransactionSetCode::Code285 => "285",
            X12TransactionSetCode::Code286 => "286",
            X12TransactionSetCode::Code288 => "288",
            X12TransactionSetCode::Code290 => "290",
            X12TransactionSetCode::Code300 => "300",
            X12TransactionSetCode::Code301 => "301",
            X12TransactionSetCode::Code303 => "303",
            X12TransactionSetCode::Code304 => "304",
            X12TransactionSetCode::Code309 => "309",
            X12TransactionSetCode::Code310 => "310",
            X12TransactionSetCode::Code311 => "311",
            X12TransactionSetCode::Code312 => "312",
            X12TransactionSetCode::Code313 => "313",
            X12TransactionSetCode::Code315 => "315",
            X12TransactionSetCode::Code317 => "317",
            X12TransactionSetCode::Code319 => "319",
            X12TransactionSetCode::Code322 => "322",
            X12TransactionSetCode::Code323 => "323",
            X12TransactionSetCode::Code324 => "324",
            X12TransactionSetCode::Code325 => "325",
            X12TransactionSetCode::Code326 => "326",
            X12TransactionSetCode::Code350 => "350",
            X12TransactionSetCode::Code352 => "352",
            X12TransactionSetCode::Code353 => "353",
            X12TransactionSetCode::Code354 => "354",
            X12TransactionSetCode::Code355 => "355",
            X12TransactionSetCode::Code356 => "356",
            X12TransactionSetCode::Code357 => "357",
            X12TransactionSetCode::Code358 => "358",
            X12TransactionSetCode::Code359 => "359",
            X12TransactionSetCode::Code361 => "361",
            X12TransactionSetCode::Code362 => "362",
            X12TransactionSetCode::Code404 => "404",
            X12TransactionSetCode::Code410 => "410",
            X12TransactionSetCode::Code412 => "412",
            X12TransactionSetCode::Code414 => "414",
            X12TransactionSetCode::Code417 => "417",
            X12TransactionSetCode::Code418 => "418",
            X12TransactionSetCode::Code419 => "419",
            X12TransactionSetCode::Code420 => "420",
            X12TransactionSetCode::Code421 => "421",
            X12TransactionSetCode::Code422 => "422",
            X12TransactionSetCode::Code423 => "423",
            X12TransactionSetCode::Code424 => "424",
            X12TransactionSetCode::Code425 => "425",
            X12TransactionSetCode::Code426 => "426",
            X12TransactionSetCode::Code429 => "429",
            X12TransactionSetCode::Code431 => "431",
            X12TransactionSetCode::Code432 => "432",
            X12TransactionSetCode::Code433 => "433",
            X12TransactionSetCode::Code434 => "434",
            X12TransactionSetCode::Code435 => "435",
            X12TransactionSetCode::Code436 => "436",
            X12TransactionSetCode::Code437 => "437",
            X12TransactionSetCode::Code440 => "440",
            X12TransactionSetCode::Code451 => "451",
            X12TransactionSetCode::Code452 => "452",
            X12TransactionSetCode::Code453 => "453",
            X12TransactionSetCode::Code455 => "455",
            X12TransactionSetCode::Code456 => "456",
            X12TransactionSetCode::Code460 => "460",
            X12TransactionSetCode::Code463 => "463",
            X12TransactionSetCode::Code466 => "466",
            X12TransactionSetCode::Code468 => "468",
            X12TransactionSetCode::Code470 => "470",
            X12TransactionSetCode::Code475 => "475",
            X12TransactionSetCode::Code485 => "485",
            X12TransactionSetCode::Code486 => "486",
            X12TransactionSetCode::Code490 => "490",
            X12TransactionSetCode::Code492 => "492",
            X12TransactionSetCode::Code494 => "494",
            X12TransactionSetCode::Code500 => "500",
            X12TransactionSetCode::Code501 => "501",
            X12TransactionSetCode::Code503 => "503",
            X12TransactionSetCode::Code504 => "504",
            X12TransactionSetCode::Code511 => "511",
            X12TransactionSetCode::Code517 => "517",
            X12TransactionSetCode::Code521 => "521",
            X12TransactionSetCode::Code527 => "527",
            X12TransactionSetCode::Code536 => "536",
            X12TransactionSetCode::Code540 => "540",
            X12TransactionSetCode::Code561 => "561",
            X12TransactionSetCode::Code567 => "567",
            X12TransactionSetCode::Code568 => "568",
            X12TransactionSetCode::Code601 => "601",
            X12TransactionSetCode::Code603 => "603",
            X12TransactionSetCode::Code620 => "620",
            X12TransactionSetCode::Code625 => "625",
            X12TransactionSetCode::Code650 => "650",
            X12TransactionSetCode::Code715 => "715",
            X12TransactionSetCode::Code753 => "753",
            X12TransactionSetCode::Code754 => "754",
            X12TransactionSetCode::Code805 => "805",
            X12TransactionSetCode::Code806 => "806",
            X12TransactionSetCode::Code810 => "810",
            X12TransactionSetCode::Code811 => "811",
            X12TransactionSetCode::Code812 => "812",
            X12TransactionSetCode::Code813 => "813",
            X12TransactionSetCode::Code814 => "814",
            X12TransactionSetCode::Code815 => "815",
            X12TransactionSetCode::Code816 => "816",
            X12TransactionSetCode::Code818 => "818",
            X12TransactionSetCode::Code819 => "819",
            X12TransactionSetCode::Code820 => "820",
            X12TransactionSetCode::Code821 => "821",
            X12TransactionSetCode::Code822 => "822",
            X12TransactionSetCode::Code823 => "823",
            X12TransactionSetCode::Code824 => "824",
            X12TransactionSetCode::Code826 => "826",
            X12TransactionSetCode::Code827 => "827",
            X12TransactionSetCode::Code828 => "828",
            X12TransactionSetCode::Code829 => "829",
            X12TransactionSetCode::Code830 => "830",
            X12TransactionSetCode::Code831 => "831",
            X12TransactionSetCode::Code832 => "832",
            X12TransactionSetCode::Code833 => "833",
            X12TransactionSetCode::Code834 => "834",
            X12TransactionSetCode::Code835 => "835",
            X12TransactionSetCode::Code836 => "836",
            X12TransactionSetCode::Code837 => "837",
            X12TransactionSetCode::Code838 => "838",
            X12TransactionSetCode::Code839 => "839",
            X12TransactionSetCode::Code840 => "840",
            X12TransactionSetCode::Code841 => "841",
            X12TransactionSetCode::Code842 => "842",
            X12TransactionSetCode::Code843 => "843",
            X12TransactionSetCode::Code844 => "844",
            X12TransactionSetCode::Code845 => "845",
            X12TransactionSetCode::Code846 => "846",
            X12TransactionSetCode::Code847 => "847",
            X12TransactionSetCode::Code848 => "848",
            X12TransactionSetCode::Code849 => "849",
            X12TransactionSetCode::Code850 => "850",
            X12TransactionSetCode::Code851 => "851",
            X12TransactionSetCode::Code852 => "852",
            X12TransactionSetCode::Code853 => "853",
            X12TransactionSetCode::Code854 => "854",
            X12TransactionSetCode::Code855 => "855",
            X12TransactionSetCode::Code856 => "856",
            X12TransactionSetCode::Code857 => "857",
            X12TransactionSetCode::Code858 => "858",
            X12TransactionSetCode::Code859 => "859",
            X12TransactionSetCode::Code860 => "860",
            X12TransactionSetCode::Code861 => "861",
            X12TransactionSetCode::Code862 => "862",
            X12TransactionSetCode::Code863 => "863",
            X12TransactionSetCode::Code864 => "864",
            X12TransactionSetCode::Code865 => "865",
            X12TransactionSetCode::Code866 => "866",
            X12TransactionSetCode::Code867 => "867",
            X12TransactionSetCode::Code868 => "868",
            X12TransactionSetCode::Code869 => "869",
            X12TransactionSetCode::Code870 => "870",
            X12TransactionSetCode::Code871 => "871",
            X12TransactionSetCode::Code872 => "872",
            X12TransactionSetCode::Code873 => "873",
            X12TransactionSetCode::Code874 => "874",
            X12TransactionSetCode::Code875 => "875",
            X12TransactionSetCode::Code876 => "876",
            X12TransactionSetCode::Code877 => "877",
            X12TransactionSetCode::Code878 => "878",
            X12TransactionSetCode::Code879 => "879",
            X12TransactionSetCode::Code880 => "880",
            X12TransactionSetCode::Code881 => "881",
            X12TransactionSetCode::Code882 => "882",
            X12TransactionSetCode::Code883 => "883",
            X12TransactionSetCode::Code884 => "884",
            X12TransactionSetCode::Code885 => "885",
            X12TransactionSetCode::Code886 => "886",
            X12TransactionSetCode::Code887 => "887",
            X12TransactionSetCode::Code888 => "888",
            X12TransactionSetCode::Code889 => "889",
            X12TransactionSetCode::Code890 => "890",
            X12TransactionSetCode::Code891 => "891",
            X12TransactionSetCode::Code892 => "892",
            X12TransactionSetCode::Code893 => "893",
            X12TransactionSetCode::Code894 => "894",
            X12TransactionSetCode::Code895 => "895",
            X12TransactionSetCode::Code896 => "896",
            X12TransactionSetCode::Code897 => "897",
            X12TransactionSetCode::Code920 => "920",
            X12TransactionSetCode::Code924 => "924",
            X12TransactionSetCode::Code925 => "925",
            X12TransactionSetCode::Code926 => "926",
            X12TransactionSetCode::Code928 => "928",
            X12TransactionSetCode::Code940 => "940",
            X12TransactionSetCode::Code943 => "943",
            X12TransactionSetCode::Code944 => "944",
            X12TransactionSetCode::Code945 => "945",
            X12TransactionSetCode::Code947 => "947",
            X12TransactionSetCode::Code980 => "980",
            X12TransactionSetCode::Code990 => "990",
            X12TransactionSetCode::Code993 => "993",
            X12TransactionSetCode::Code996 => "996",
            X12TransactionSetCode::Code997 => "997",
            X12TransactionSetCode::Code998 => "998",
            X12TransactionSetCode::Code999 => "999",
            X12TransactionSetCode::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` representations of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &[
            "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111",
            "112", "113", "120", "121", "124", "125", "126", "127", "128", "129", "130", "131",
            "132", "133", "135", "138", "139", "140", "141", "142", "143", "144", "146", "147",
            "148", "149", "150", "151", "152", "153", "154", "155", "157", "158", "159", "160",
            "161", "163", "170", "175", "176", "179", "180", "185", "186", "187", "188", "189",
            "190", "191", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203",
            "204", "205", "206", "210", "211", "212", "213", "214", "215", "216", "217", "219",
            "220", "222", "223", "224", "225", "227", "228", "240", "242", "244", "245", "248",
            "249", "250", "251", "252", "255", "256", "259", "260", "261", "262", "263", "264",
            "265", "266", "267", "268", "269", "270", "271", "272", "273", "274", "275", "276",
            "277", "278", "280", "283", "284", "285", "286", "288", "290", "300", "301", "303",
            "304", "309", "310", "311", "312", "313", "315", "317", "319", "322", "323", "324",
            "325", "326", "350", "352", "353", "354", "355", "356", "357", "358", "359", "361",
            "362", "404", "410", "412", "414", "417", "418", "419", "420", "421", "422", "423",
            "424", "425", "426", "429", "431", "432", "433", "434", "435", "436", "437", "440",
            "451", "452", "453", "455", "456", "460", "463", "466", "468", "470", "475", "485",
            "486", "490", "492", "494", "500", "501", "503", "504", "511", "517", "521", "527",
            "536", "540", "561", "567", "568", "601", "603", "620", "625", "650", "715", "753",
            "754", "805", "806", "810", "811", "812", "813", "814", "815", "816", "818", "819",
            "820", "821", "822", "823", "824", "826", "827", "828", "829", "830", "831", "832",
            "833", "834", "835", "836", "837", "838", "839", "840", "841", "842", "843", "844",
            "845", "846", "847", "848", "849", "850", "851", "852", "853", "854", "855", "856",
            "857", "858", "859", "860", "861", "862", "863", "864", "865", "866", "867", "868",
            "869", "870", "871", "872", "873", "874", "875", "876", "877", "878", "879", "880",
            "881", "882", "883", "884", "885", "886", "887", "888", "889", "890", "891", "892",
            "893", "894", "895", "896", "897", "920", "924", "925", "926", "928", "940", "943",
            "944", "945", "947", "980", "990", "993", "996", "997", "998", "999",
        ]
    }
}
impl AsRef<str> for X12TransactionSetCode {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

/// When writing a match expression against `X12Release`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let x12release = unimplemented!();
/// match x12release {
///     X12Release::Release002000 => { /* ... */ },
///     X12Release::Release002010 => { /* ... */ },
///     X12Release::Release002040 => { /* ... */ },
///     X12Release::Release003000 => { /* ... */ },
///     X12Release::Release003010 => { /* ... */ },
///     X12Release::Release003020 => { /* ... */ },
///     X12Release::Release003030 => { /* ... */ },
///     X12Release::Release003040 => { /* ... */ },
///     X12Release::Release003050 => { /* ... */ },
///     X12Release::Release003060 => { /* ... */ },
///     X12Release::Release003070 => { /* ... */ },
///     X12Release::Release004000 => { /* ... */ },
///     X12Release::Release004010 => { /* ... */ },
///     X12Release::Release004020 => { /* ... */ },
///     X12Release::Release004030 => { /* ... */ },
///     X12Release::Release004040 => { /* ... */ },
///     X12Release::Release004050 => { /* ... */ },
///     X12Release::Release004060 => { /* ... */ },
///     X12Release::Release005000 => { /* ... */ },
///     X12Release::Release005010 => { /* ... */ },
///     X12Release::Release005010X186 => { /* ... */ },
///     X12Release::Release005010X186A1 => { /* ... */ },
///     X12Release::Release005010X210 => { /* ... */ },
///     X12Release::Release005010X211 => { /* ... */ },
///     X12Release::Release005010X212 => { /* ... */ },
///     X12Release::Release005010X214 => { /* ... */ },
///     X12Release::Release005010X216 => { /* ... */ },
///     X12Release::Release005010X216E1 => { /* ... */ },
///     X12Release::Release005010X216E2 => { /* ... */ },
///     X12Release::Release005010X217 => { /* ... */ },
///     X12Release::Release005010X218 => { /* ... */ },
///     X12Release::Release005010X220 => { /* ... */ },
///     X12Release::Release005010X220A1 => { /* ... */ },
///     X12Release::Release005010X221 => { /* ... */ },
///     X12Release::Release005010X221A1 => { /* ... */ },
///     X12Release::Release005010X222 => { /* ... */ },
///     X12Release::Release005010X222A1 => { /* ... */ },
///     X12Release::Release005010X222A2 => { /* ... */ },
///     X12Release::Release005010X223 => { /* ... */ },
///     X12Release::Release005010X223A1 => { /* ... */ },
///     X12Release::Release005010X223A2 => { /* ... */ },
///     X12Release::Release005010X223A3 => { /* ... */ },
///     X12Release::Release005010X223E1 => { /* ... */ },
///     X12Release::Release005010X224 => { /* ... */ },
///     X12Release::Release005010X224A1 => { /* ... */ },
///     X12Release::Release005010X224A2 => { /* ... */ },
///     X12Release::Release005010X224A3 => { /* ... */ },
///     X12Release::Release005010X231 => { /* ... */ },
///     X12Release::Release005010X231A1 => { /* ... */ },
///     X12Release::Release005010X279 => { /* ... */ },
///     X12Release::Release005010X279A1 => { /* ... */ },
///     X12Release::Release005010X291 => { /* ... */ },
///     X12Release::Release005010X307 => { /* ... */ },
///     X12Release::Release005010X364 => { /* ... */ },
///     X12Release::Release005020 => { /* ... */ },
///     X12Release::Release005030 => { /* ... */ },
///     X12Release::Release005040 => { /* ... */ },
///     X12Release::Release005050 => { /* ... */ },
///     X12Release::Release006000 => { /* ... */ },
///     X12Release::Release006010 => { /* ... */ },
///     X12Release::Release006020 => { /* ... */ },
///     X12Release::Release006030 => { /* ... */ },
///     X12Release::Release006040 => { /* ... */ },
///     X12Release::Release006050 => { /* ... */ },
///     X12Release::Release007000 => { /* ... */ },
///     X12Release::Release007010 => { /* ... */ },
///     X12Release::Release007020 => { /* ... */ },
///     X12Release::Release007030 => { /* ... */ },
///     X12Release::Release007040 => { /* ... */ },
///     X12Release::Release007050 => { /* ... */ },
///     X12Release::Release007060 => { /* ... */ },
///     X12Release::Release008000 => { /* ... */ },
///     X12Release::Release008010 => { /* ... */ },
///     X12Release::Release008020 => { /* ... */ },
///     X12Release::Release008030 => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `x12release` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `X12Release::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `X12Release::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `X12Release::NewFeature` is defined.
/// Specifically, when `x12release` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `X12Release::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum X12Release {
    #[allow(missing_docs)] // documentation missing in model
    Release002000,
    #[allow(missing_docs)] // documentation missing in model
    Release002010,
    #[allow(missing_docs)] // documentation missing in model
    Release002040,
    #[allow(missing_docs)] // documentation missing in model
    Release003000,
    #[allow(missing_docs)] // documentation missing in model
    Release003010,
    #[allow(missing_docs)] // documentation missing in model
    Release003020,
    #[allow(missing_docs)] // documentation missing in model
    Release003030,
    #[allow(missing_docs)] // documentation missing in model
    Release003040,
    #[allow(missing_docs)] // documentation missing in model
    Release003050,
    #[allow(missing_docs)] // documentation missing in model
    Release003060,
    #[allow(missing_docs)] // documentation missing in model
    Release003070,
    #[allow(missing_docs)] // documentation missing in model
    Release004000,
    #[allow(missing_docs)] // documentation missing in model
    Release004010,
    #[allow(missing_docs)] // documentation missing in model
    Release004020,
    #[allow(missing_docs)] // documentation missing in model
    Release004030,
    #[allow(missing_docs)] // documentation missing in model
    Release004040,
    #[allow(missing_docs)] // documentation missing in model
    Release004050,
    #[allow(missing_docs)] // documentation missing in model
    Release004060,
    #[allow(missing_docs)] // documentation missing in model
    Release005000,
    #[allow(missing_docs)] // documentation missing in model
    Release005010,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X186,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X186A1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X210,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X211,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X212,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X214,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X216,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X216E1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X216E2,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X217,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X218,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X220,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X220A1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X221,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X221A1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X222,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X222A1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X222A2,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X223,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X223A1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X223A2,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X223A3,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X223E1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X224,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X224A1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X224A2,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X224A3,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X231,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X231A1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X279,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X279A1,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X291,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X307,
    #[allow(missing_docs)] // documentation missing in model
    Release005010X364,
    #[allow(missing_docs)] // documentation missing in model
    Release005020,
    #[allow(missing_docs)] // documentation missing in model
    Release005030,
    #[allow(missing_docs)] // documentation missing in model
    Release005040,
    #[allow(missing_docs)] // documentation missing in model
    Release005050,
    #[allow(missing_docs)] // documentation missing in model
    Release006000,
    #[allow(missing_docs)] // documentation missing in model
    Release006010,
    #[allow(missing_docs)] // documentation missing in model
    Release006020,
    #[allow(missing_docs)] // documentation missing in model
    Release006030,
    #[allow(missing_docs)] // documentation missing in model
    Release006040,
    #[allow(missing_docs)] // documentation missing in model
    Release006050,
    #[allow(missing_docs)] // documentation missing in model
    Release007000,
    #[allow(missing_docs)] // documentation missing in model
    Release007010,
    #[allow(missing_docs)] // documentation missing in model
    Release007020,
    #[allow(missing_docs)] // documentation missing in model
    Release007030,
    #[allow(missing_docs)] // documentation missing in model
    Release007040,
    #[allow(missing_docs)] // documentation missing in model
    Release007050,
    #[allow(missing_docs)] // documentation missing in model
    Release007060,
    #[allow(missing_docs)] // documentation missing in model
    Release008000,
    #[allow(missing_docs)] // documentation missing in model
    Release008010,
    #[allow(missing_docs)] // documentation missing in model
    Release008020,
    #[allow(missing_docs)] // documentation missing in model
    Release008030,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for X12Release {
    fn from(s: &str) -> Self {
        match s {
            "002000" => X12Release::Release002000,
            "002010" => X12Release::Release002010,
            "002040" => X12Release::Release002040,
            "003000" => X12Release::Release003000,
            "003010" => X12Release::Release003010,
            "003020" => X12Release::Release003020,
            "003030" => X12Release::Release003030,
            "003040" => X12Release::Release003040,
            "003050" => X12Release::Release003050,
            "003060" => X12Release::Release003060,
            "003070" => X12Release::Release003070,
            "004000" => X12Release::Release004000,
            "004010" => X12Release::Release004010,
            "004020" => X12Release::Release004020,
            "004030" => X12Release::Release004030,
            "004040" => X12Release::Release004040,
            "004050" => X12Release::Release004050,
            "004060" => X12Release::Release004060,
            "005000" => X12Release::Release005000,
            "005010" => X12Release::Release005010,
            "005010X186" => X12Release::Release005010X186,
            "005010X186A1" => X12Release::Release005010X186A1,
            "005010X210" => X12Release::Release005010X210,
            "005010X211" => X12Release::Release005010X211,
            "005010X212" => X12Release::Release005010X212,
            "005010X214" => X12Release::Release005010X214,
            "005010X216" => X12Release::Release005010X216,
            "005010X216E1" => X12Release::Release005010X216E1,
            "005010X216E2" => X12Release::Release005010X216E2,
            "005010X217" => X12Release::Release005010X217,
            "005010X218" => X12Release::Release005010X218,
            "005010X220" => X12Release::Release005010X220,
            "005010X220A1" => X12Release::Release005010X220A1,
            "005010X221" => X12Release::Release005010X221,
            "005010X221A1" => X12Release::Release005010X221A1,
            "005010X222" => X12Release::Release005010X222,
            "005010X222A1" => X12Release::Release005010X222A1,
            "005010X222A2" => X12Release::Release005010X222A2,
            "005010X223" => X12Release::Release005010X223,
            "005010X223A1" => X12Release::Release005010X223A1,
            "005010X223A2" => X12Release::Release005010X223A2,
            "005010X223A3" => X12Release::Release005010X223A3,
            "005010X223E1" => X12Release::Release005010X223E1,
            "005010X224" => X12Release::Release005010X224,
            "005010X224A1" => X12Release::Release005010X224A1,
            "005010X224A2" => X12Release::Release005010X224A2,
            "005010X224A3" => X12Release::Release005010X224A3,
            "005010X231" => X12Release::Release005010X231,
            "005010X231A1" => X12Release::Release005010X231A1,
            "005010X279" => X12Release::Release005010X279,
            "005010X279A1" => X12Release::Release005010X279A1,
            "005010X291" => X12Release::Release005010X291,
            "005010X307" => X12Release::Release005010X307,
            "005010X364" => X12Release::Release005010X364,
            "005020" => X12Release::Release005020,
            "005030" => X12Release::Release005030,
            "005040" => X12Release::Release005040,
            "005050" => X12Release::Release005050,
            "006000" => X12Release::Release006000,
            "006010" => X12Release::Release006010,
            "006020" => X12Release::Release006020,
            "006030" => X12Release::Release006030,
            "006040" => X12Release::Release006040,
            "006050" => X12Release::Release006050,
            "007000" => X12Release::Release007000,
            "007010" => X12Release::Release007010,
            "007020" => X12Release::Release007020,
            "007030" => X12Release::Release007030,
            "007040" => X12Release::Release007040,
            "007050" => X12Release::Release007050,
            "007060" => X12Release::Release007060,
            "008000" => X12Release::Release008000,
            "008010" => X12Release::Release008010,
            "008020" => X12Release::Release008020,
            "008030" => X12Release::Release008030,
            other => X12Release::Unknown(crate::types::UnknownVariantValue(other.to_owned())),
        }
    }
}
impl std::str::FromStr for X12Release {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(X12Release::from(s))
    }
}
impl X12Release {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            X12Release::Release002000 => "002000",
            X12Release::Release002010 => "002010",
            X12Release::Release002040 => "002040",
            X12Release::Release003000 => "003000",
            X12Release::Release003010 => "003010",
            X12Release::Release003020 => "003020",
            X12Release::Release003030 => "003030",
            X12Release::Release003040 => "003040",
            X12Release::Release003050 => "003050",
            X12Release::Release003060 => "003060",
            X12Release::Release003070 => "003070",
            X12Release::Release004000 => "004000",
            X12Release::Release004010 => "004010",
            X12Release::Release004020 => "004020",
            X12Release::Release004030 => "004030",
            X12Release::Release004040 => "004040",
            X12Release::Release004050 => "004050",
            X12Release::Release004060 => "004060",
            X12Release::Release005000 => "005000",
            X12Release::Release005010 => "005010",
            X12Release::Release005010X186 => "005010X186",
            X12Release::Release005010X186A1 => "005010X186A1",
            X12Release::Release005010X210 => "005010X210",
            X12Release::Release005010X211 => "005010X211",
            X12Release::Release005010X212 => "005010X212",
            X12Release::Release005010X214 => "005010X214",
            X12Release::Release005010X216 => "005010X216",
            X12Release::Release005010X216E1 => "005010X216E1",
            X12Release::Release005010X216E2 => "005010X216E2",
            X12Release::Release005010X217 => "005010X217",
            X12Release::Release005010X218 => "005010X218",
            X12Release::Release005010X220 => "005010X220",
            X12Release::Release005010X220A1 => "005010X220A1",
            X12Release::Release005010X221 => "005010X221",
            X12Release::Release005010X221A1 => "005010X221A1",
            X12Release::Release005010X222 => "005010X222",
            X12Release::Release005010X222A1 => "005010X222A1",
            X12Release::Release005010X222A2 => "005010X222A2",
            X12Release::Release005010X223 => "005010X223",
            X12Release::Release005010X223A1 => "005010X223A1",
            X12Release::Release005010X223A2 => "005010X223A2",
            X12Release::Release005010X223A3 => "005010X223A3",
            X12Release::Release005010X223E1 => "005010X223E1",
            X12Release::Release005010X224 => "005010X224",
            X12Release::Release005010X224A1 => "005010X224A1",
            X12Release::Release005010X224A2 => "005010X224A2",
            X12Release::Release005010X224A3 => "005010X224A3",
            X12Release::Release005010X231 => "005010X231",
            X12Release::Release005010X231A1 => "005010X231A1",
            X12Release::Release005010X279 => "005010X279",
            X12Release::Release005010X279A1 => "005010X279A1",
            X12Release::Release005010X291 => "005010X291",
            X12Release::Release005010X307 => "005010X307",
            X12Release::Release005010X364 => "005010X364",
            X12Release::Release005020 => "005020",
            X12Release::Release005030 => "005030",
            X12Release::Release005040 => "005040",
            X12Release::Release005050 => "005050",
            X12Release::Release006000 => "006000",
            X12Release::Release006010 => "006010",
            X12Release::Release006020 => "006020",
            X12Release::Release006030 => "006030",
            X12Release::Release006040 => "006040",
            X12Release::Release006050 => "006050",
            X12Release::Release007000 => "007000",
            X12Release::Release007010 => "007010",
            X12Release::Release007020 => "007020",
            X12Release::Release007030 => "007030",
            X12Release::Release007040 => "007040",
            X12Release::Release007050 => "007050",
            X12Release::Release007060 => "007060",
            X12Release::Release008000 => "008000",
            X12Release::Release008010 => "008010",
            X12Release::Release008020 => "008020",
            X12Release::Release008030 => "008030",
            X12Release::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` representations of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &[
            "002000",
            "002010",
            "002040",
            "003000",
            "003010",
            "003020",
            "003030",
            "003040",
            "003050",
            "003060",
            "003070",
            "004000",
            "004010",
            "004020",
            "004030",
            "004040",
            "004050",
            "004060",
            "005000",
            "005010",
            "005010X186",
            "005010X186A1",
            "005010X210",
            "005010X211",
            "005010X212",
            "005010X214",
            "005010X216",
            "005010X216E1",
            "005010X216E2",
            "005010X217",
            "005010X218",
            "005010X220",
            "005010X220A1",
            "005010X221",
            "005010X221A1",
            "005010X222",
            "005010X222A1",
            "005010X222A2",
            "005010X223",
            "005010X223A1",
            "005010X223A2",
            "005010X223A3",
            "005010X223E1",
            "005010X224",
            "005010X224A1",
            "005010X224A2",
            "005010X224A3",
            "005010X231",
            "005010X231A1",
            "005010X279",
            "005010X279A1",
            "005010X291",
            "005010X307",
            "005010X364",
            "005020",
            "005030",
            "005040",
            "005050",
            "006000",
            "006010",
            "006020",
            "006030",
            "006040",
            "006050",
            "007000",
            "007010",
            "007020",
            "007030",
            "007040",
            "007050",
            "007060",
            "008000",
            "008010",
            "008020",
            "008030",
        ]
    }
}
impl AsRef<str> for X12Release {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct InboundX12TransactionSettingsSummary {
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub release: std::option::Option<crate::model::X12Release>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub transaction_set_identifier: std::option::Option<crate::model::X12TransactionSetCode>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub guide_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub created_at: std::option::Option<aws_smithy_types::DateTime>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub updated_at: std::option::Option<aws_smithy_types::DateTime>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub inbound_x12_transaction_settings_id: std::option::Option<std::string::String>,
}
impl InboundX12TransactionSettingsSummary {
    #[allow(missing_docs)] // documentation missing in model
    pub fn release(&self) -> std::option::Option<&crate::model::X12Release> {
        self.release.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn transaction_set_identifier(
        &self,
    ) -> std::option::Option<&crate::model::X12TransactionSetCode> {
        self.transaction_set_identifier.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn guide_id(&self) -> std::option::Option<&str> {
        self.guide_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn created_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.created_at.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn updated_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.updated_at.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn inbound_x12_transaction_settings_id(&self) -> std::option::Option<&str> {
        self.inbound_x12_transaction_settings_id.as_deref()
    }
}
/// See [`InboundX12TransactionSettingsSummary`](crate::model::InboundX12TransactionSettingsSummary).
pub mod inbound_x12_transaction_settings_summary {

    /// A builder for [`InboundX12TransactionSettingsSummary`](crate::model::InboundX12TransactionSettingsSummary).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) release: std::option::Option<crate::model::X12Release>,
        pub(crate) transaction_set_identifier:
            std::option::Option<crate::model::X12TransactionSetCode>,
        pub(crate) guide_id: std::option::Option<std::string::String>,
        pub(crate) created_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) updated_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) inbound_x12_transaction_settings_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        #[allow(missing_docs)] // documentation missing in model
        pub fn release(mut self, input: crate::model::X12Release) -> Self {
            self.release = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_release(mut self, input: std::option::Option<crate::model::X12Release>) -> Self {
            self.release = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn transaction_set_identifier(
            mut self,
            input: crate::model::X12TransactionSetCode,
        ) -> Self {
            self.transaction_set_identifier = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_transaction_set_identifier(
            mut self,
            input: std::option::Option<crate::model::X12TransactionSetCode>,
        ) -> Self {
            self.transaction_set_identifier = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn guide_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.guide_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_guide_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.guide_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn created_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.created_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_created_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.created_at = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn updated_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.updated_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_updated_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.updated_at = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn inbound_x12_transaction_settings_id(
            mut self,
            input: impl Into<std::string::String>,
        ) -> Self {
            self.inbound_x12_transaction_settings_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_inbound_x12_transaction_settings_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inbound_x12_transaction_settings_id = input;
            self
        }
        /// Consumes the builder and constructs a [`InboundX12TransactionSettingsSummary`](crate::model::InboundX12TransactionSettingsSummary).
        pub fn build(self) -> crate::model::InboundX12TransactionSettingsSummary {
            crate::model::InboundX12TransactionSettingsSummary {
                release: self.release,
                transaction_set_identifier: self.transaction_set_identifier,
                guide_id: self.guide_id,
                created_at: self.created_at,
                updated_at: self.updated_at,
                inbound_x12_transaction_settings_id: self.inbound_x12_transaction_settings_id,
            }
        }
    }
}
impl InboundX12TransactionSettingsSummary {
    /// Creates a new builder-style object to manufacture [`InboundX12TransactionSettingsSummary`](crate::model::InboundX12TransactionSettingsSummary).
    pub fn builder() -> crate::model::inbound_x12_transaction_settings_summary::Builder {
        crate::model::inbound_x12_transaction_settings_summary::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct X12ProfileFields {
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub interchange_qualifier: std::option::Option<crate::model::X12InterchangeQualifier>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub interchange_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub profile_id: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub profile_type: std::option::Option<crate::model::ProfileType>,
    /// Store the application ids provided by your partner, with the ability to select one as the default. These values can be used to configure the GS-02, GS-03 of the outbound transaction settings.
    #[doc(hidden)]
    pub application_identifiers: std::option::Option<std::vec::Vec<crate::model::X12ApplicationId>>,
}
impl X12ProfileFields {
    #[allow(missing_docs)] // documentation missing in model
    pub fn interchange_qualifier(
        &self,
    ) -> std::option::Option<&crate::model::X12InterchangeQualifier> {
        self.interchange_qualifier.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn interchange_id(&self) -> std::option::Option<&str> {
        self.interchange_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn profile_id(&self) -> std::option::Option<&str> {
        self.profile_id.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn profile_type(&self) -> std::option::Option<&crate::model::ProfileType> {
        self.profile_type.as_ref()
    }
    /// Store the application ids provided by your partner, with the ability to select one as the default. These values can be used to configure the GS-02, GS-03 of the outbound transaction settings.
    pub fn application_identifiers(
        &self,
    ) -> std::option::Option<&[crate::model::X12ApplicationId]> {
        self.application_identifiers.as_deref()
    }
}
/// See [`X12ProfileFields`](crate::model::X12ProfileFields).
pub mod x12_profile_fields {

    /// A builder for [`X12ProfileFields`](crate::model::X12ProfileFields).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) interchange_qualifier:
            std::option::Option<crate::model::X12InterchangeQualifier>,
        pub(crate) interchange_id: std::option::Option<std::string::String>,
        pub(crate) profile_id: std::option::Option<std::string::String>,
        pub(crate) profile_type: std::option::Option<crate::model::ProfileType>,
        pub(crate) application_identifiers:
            std::option::Option<std::vec::Vec<crate::model::X12ApplicationId>>,
    }
    impl Builder {
        #[allow(missing_docs)] // documentation missing in model
        pub fn interchange_qualifier(
            mut self,
            input: crate::model::X12InterchangeQualifier,
        ) -> Self {
            self.interchange_qualifier = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_interchange_qualifier(
            mut self,
            input: std::option::Option<crate::model::X12InterchangeQualifier>,
        ) -> Self {
            self.interchange_qualifier = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn interchange_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.interchange_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_interchange_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.interchange_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn profile_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.profile_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_profile_id(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.profile_id = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn profile_type(mut self, input: crate::model::ProfileType) -> Self {
            self.profile_type = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_profile_type(
            mut self,
            input: std::option::Option<crate::model::ProfileType>,
        ) -> Self {
            self.profile_type = input;
            self
        }
        /// Appends an item to `application_identifiers`.
        ///
        /// To override the contents of this collection use [`set_application_identifiers`](Self::set_application_identifiers).
        ///
        /// Store the application ids provided by your partner, with the ability to select one as the default. These values can be used to configure the GS-02, GS-03 of the outbound transaction settings.
        pub fn application_identifiers(mut self, input: crate::model::X12ApplicationId) -> Self {
            let mut v = self.application_identifiers.unwrap_or_default();
            v.push(input);
            self.application_identifiers = Some(v);
            self
        }
        /// Store the application ids provided by your partner, with the ability to select one as the default. These values can be used to configure the GS-02, GS-03 of the outbound transaction settings.
        pub fn set_application_identifiers(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::X12ApplicationId>>,
        ) -> Self {
            self.application_identifiers = input;
            self
        }
        /// Consumes the builder and constructs a [`X12ProfileFields`](crate::model::X12ProfileFields).
        pub fn build(self) -> crate::model::X12ProfileFields {
            crate::model::X12ProfileFields {
                interchange_qualifier: self.interchange_qualifier,
                interchange_id: self.interchange_id,
                profile_id: self.profile_id,
                profile_type: self.profile_type,
                application_identifiers: self.application_identifiers,
            }
        }
    }
}
impl X12ProfileFields {
    /// Creates a new builder-style object to manufacture [`X12ProfileFields`](crate::model::X12ProfileFields).
    pub fn builder() -> crate::model::x12_profile_fields::Builder {
        crate::model::x12_profile_fields::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct X12BucketConnectionFields {
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub inbound_subdirectory: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub outbound_subdirectory: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub bucket_name: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub parent_directory: std::option::Option<std::string::String>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub created_at: std::option::Option<aws_smithy_types::DateTime>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub updated_at: std::option::Option<aws_smithy_types::DateTime>,
    /// ------------------------------------------- Connections ------------------------------------------- Autogenerated identifier for a bucket connection
    #[doc(hidden)]
    pub bucket_connection_id: std::option::Option<std::string::String>,
}
impl X12BucketConnectionFields {
    #[allow(missing_docs)] // documentation missing in model
    pub fn inbound_subdirectory(&self) -> std::option::Option<&str> {
        self.inbound_subdirectory.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn outbound_subdirectory(&self) -> std::option::Option<&str> {
        self.outbound_subdirectory.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn bucket_name(&self) -> std::option::Option<&str> {
        self.bucket_name.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn parent_directory(&self) -> std::option::Option<&str> {
        self.parent_directory.as_deref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn created_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.created_at.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn updated_at(&self) -> std::option::Option<&aws_smithy_types::DateTime> {
        self.updated_at.as_ref()
    }
    /// ------------------------------------------- Connections ------------------------------------------- Autogenerated identifier for a bucket connection
    pub fn bucket_connection_id(&self) -> std::option::Option<&str> {
        self.bucket_connection_id.as_deref()
    }
}
/// See [`X12BucketConnectionFields`](crate::model::X12BucketConnectionFields).
pub mod x12_bucket_connection_fields {

    /// A builder for [`X12BucketConnectionFields`](crate::model::X12BucketConnectionFields).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) inbound_subdirectory: std::option::Option<std::string::String>,
        pub(crate) outbound_subdirectory: std::option::Option<std::string::String>,
        pub(crate) bucket_name: std::option::Option<std::string::String>,
        pub(crate) parent_directory: std::option::Option<std::string::String>,
        pub(crate) created_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) updated_at: std::option::Option<aws_smithy_types::DateTime>,
        pub(crate) bucket_connection_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        #[allow(missing_docs)] // documentation missing in model
        pub fn inbound_subdirectory(mut self, input: impl Into<std::string::String>) -> Self {
            self.inbound_subdirectory = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_inbound_subdirectory(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.inbound_subdirectory = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn outbound_subdirectory(mut self, input: impl Into<std::string::String>) -> Self {
            self.outbound_subdirectory = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_outbound_subdirectory(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.outbound_subdirectory = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn bucket_name(mut self, input: impl Into<std::string::String>) -> Self {
            self.bucket_name = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_bucket_name(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.bucket_name = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn parent_directory(mut self, input: impl Into<std::string::String>) -> Self {
            self.parent_directory = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_parent_directory(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.parent_directory = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn created_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.created_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_created_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.created_at = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn updated_at(mut self, input: aws_smithy_types::DateTime) -> Self {
            self.updated_at = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_updated_at(
            mut self,
            input: std::option::Option<aws_smithy_types::DateTime>,
        ) -> Self {
            self.updated_at = input;
            self
        }
        /// ------------------------------------------- Connections ------------------------------------------- Autogenerated identifier for a bucket connection
        pub fn bucket_connection_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.bucket_connection_id = Some(input.into());
            self
        }
        /// ------------------------------------------- Connections ------------------------------------------- Autogenerated identifier for a bucket connection
        pub fn set_bucket_connection_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.bucket_connection_id = input;
            self
        }
        /// Consumes the builder and constructs a [`X12BucketConnectionFields`](crate::model::X12BucketConnectionFields).
        pub fn build(self) -> crate::model::X12BucketConnectionFields {
            crate::model::X12BucketConnectionFields {
                inbound_subdirectory: self.inbound_subdirectory,
                outbound_subdirectory: self.outbound_subdirectory,
                bucket_name: self.bucket_name,
                parent_directory: self.parent_directory,
                created_at: self.created_at,
                updated_at: self.updated_at,
                bucket_connection_id: self.bucket_connection_id,
            }
        }
    }
}
impl X12BucketConnectionFields {
    /// Creates a new builder-style object to manufacture [`X12BucketConnectionFields`](crate::model::X12BucketConnectionFields).
    pub fn builder() -> crate::model::x12_bucket_connection_fields::Builder {
        crate::model::x12_bucket_connection_fields::Builder::default()
    }
}

/// When writing a match expression against `X12ConnectionType`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let x12connectiontype = unimplemented!();
/// match x12connectiontype {
///     X12ConnectionType::Bucket => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `x12connectiontype` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `X12ConnectionType::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `X12ConnectionType::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `X12ConnectionType::NewFeature` is defined.
/// Specifically, when `x12connectiontype` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `X12ConnectionType::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum X12ConnectionType {
    #[allow(missing_docs)] // documentation missing in model
    Bucket,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for X12ConnectionType {
    fn from(s: &str) -> Self {
        match s {
            "bucket" => X12ConnectionType::Bucket,
            other => {
                X12ConnectionType::Unknown(crate::types::UnknownVariantValue(other.to_owned()))
            }
        }
    }
}
impl std::str::FromStr for X12ConnectionType {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(X12ConnectionType::from(s))
    }
}
impl X12ConnectionType {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            X12ConnectionType::Bucket => "bucket",
            X12ConnectionType::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` representations of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &["bucket"]
    }
}
impl AsRef<str> for X12ConnectionType {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

/// When writing a match expression against `X12ControlNumberType`, it is important to ensure
/// your code is forward-compatible. That is, if a match arm handles a case for a
/// feature that is supported by the service but has not been represented as an enum
/// variant in a current version of SDK, your code should continue to work when you
/// upgrade SDK to a future version in which the enum does include a variant for that
/// feature.
///
/// Here is an example of how you can make a match expression forward-compatible:
///
/// ```text
/// # let x12controlnumbertype = unimplemented!();
/// match x12controlnumbertype {
///     X12ControlNumberType::Group => { /* ... */ },
///     X12ControlNumberType::Interchange => { /* ... */ },
///     other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
///     _ => { /* ... */ },
/// }
/// ```
/// The above code demonstrates that when `x12controlnumbertype` represents
/// `NewFeature`, the execution path will lead to the second last match arm,
/// even though the enum does not contain a variant `X12ControlNumberType::NewFeature`
/// in the current version of SDK. The reason is that the variable `other`,
/// created by the `@` operator, is bound to
/// `X12ControlNumberType::Unknown(UnknownVariantValue("NewFeature".to_owned()))`
/// and calling `as_str` on it yields `"NewFeature"`.
/// This match expression is forward-compatible when executed with a newer
/// version of SDK where the variant `X12ControlNumberType::NewFeature` is defined.
/// Specifically, when `x12controlnumbertype` represents `NewFeature`,
/// the execution path will hit the second last match arm as before by virtue of
/// calling `as_str` on `X12ControlNumberType::NewFeature` also yielding `"NewFeature"`.
///
/// Explicitly matching on the `Unknown` variant should
/// be avoided for two reasons:
/// - The inner data `UnknownVariantValue` is opaque, and no further information can be extracted.
/// - It might inadvertently shadow other intended match arms.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(
    std::clone::Clone,
    std::cmp::Eq,
    std::cmp::Ord,
    std::cmp::PartialEq,
    std::cmp::PartialOrd,
    std::fmt::Debug,
    std::hash::Hash,
)]
pub enum X12ControlNumberType {
    #[allow(missing_docs)] // documentation missing in model
    Group,
    #[allow(missing_docs)] // documentation missing in model
    Interchange,
    /// `Unknown` contains new variants that have been added since this code was generated.
    Unknown(crate::types::UnknownVariantValue),
}
impl std::convert::From<&str> for X12ControlNumberType {
    fn from(s: &str) -> Self {
        match s {
            "group" => X12ControlNumberType::Group,
            "interchange" => X12ControlNumberType::Interchange,
            other => {
                X12ControlNumberType::Unknown(crate::types::UnknownVariantValue(other.to_owned()))
            }
        }
    }
}
impl std::str::FromStr for X12ControlNumberType {
    type Err = std::convert::Infallible;

    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        Ok(X12ControlNumberType::from(s))
    }
}
impl X12ControlNumberType {
    /// Returns the `&str` value of the enum member.
    pub fn as_str(&self) -> &str {
        match self {
            X12ControlNumberType::Group => "group",
            X12ControlNumberType::Interchange => "interchange",
            X12ControlNumberType::Unknown(value) => value.as_str(),
        }
    }
    /// Returns all the `&str` representations of the enum members.
    pub const fn values() -> &'static [&'static str] {
        &["group", "interchange"]
    }
}
impl AsRef<str> for X12ControlNumberType {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct X12InterchangeIdentifier {
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub interchange_qualifier: std::option::Option<crate::model::X12InterchangeQualifier>,
    #[allow(missing_docs)] // documentation missing in model
    #[doc(hidden)]
    pub interchange_id: std::option::Option<std::string::String>,
}
impl X12InterchangeIdentifier {
    #[allow(missing_docs)] // documentation missing in model
    pub fn interchange_qualifier(
        &self,
    ) -> std::option::Option<&crate::model::X12InterchangeQualifier> {
        self.interchange_qualifier.as_ref()
    }
    #[allow(missing_docs)] // documentation missing in model
    pub fn interchange_id(&self) -> std::option::Option<&str> {
        self.interchange_id.as_deref()
    }
}
/// See [`X12InterchangeIdentifier`](crate::model::X12InterchangeIdentifier).
pub mod x12_interchange_identifier {

    /// A builder for [`X12InterchangeIdentifier`](crate::model::X12InterchangeIdentifier).
    #[non_exhaustive]
    #[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) interchange_qualifier:
            std::option::Option<crate::model::X12InterchangeQualifier>,
        pub(crate) interchange_id: std::option::Option<std::string::String>,
    }
    impl Builder {
        #[allow(missing_docs)] // documentation missing in model
        pub fn interchange_qualifier(
            mut self,
            input: crate::model::X12InterchangeQualifier,
        ) -> Self {
            self.interchange_qualifier = Some(input);
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_interchange_qualifier(
            mut self,
            input: std::option::Option<crate::model::X12InterchangeQualifier>,
        ) -> Self {
            self.interchange_qualifier = input;
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn interchange_id(mut self, input: impl Into<std::string::String>) -> Self {
            self.interchange_id = Some(input.into());
            self
        }
        #[allow(missing_docs)] // documentation missing in model
        pub fn set_interchange_id(
            mut self,
            input: std::option::Option<std::string::String>,
        ) -> Self {
            self.interchange_id = input;
            self
        }
        /// Consumes the builder and constructs a [`X12InterchangeIdentifier`](crate::model::X12InterchangeIdentifier).
        pub fn build(self) -> crate::model::X12InterchangeIdentifier {
            crate::model::X12InterchangeIdentifier {
                interchange_qualifier: self.interchange_qualifier,
                interchange_id: self.interchange_id,
            }
        }
    }
}
impl X12InterchangeIdentifier {
    /// Creates a new builder-style object to manufacture [`X12InterchangeIdentifier`](crate::model::X12InterchangeIdentifier).
    pub fn builder() -> crate::model::x12_interchange_identifier::Builder {
        crate::model::x12_interchange_identifier::Builder::default()
    }
}
