/*
 * API Documentation
 *
 * Source of truth and network automation platform
 *
 * The version of the OpenAPI document: 3.1.0 (3.1)
 *
 * Generated by: https://openapi-generator.tech
 */

#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct CableType {
    #[serde(rename = "value", skip_serializing_if = "Option::is_none")]
    pub value: Option<Value>,
    #[serde(rename = "label", skip_serializing_if = "Option::is_none")]
    pub label: Option<Label>,
}

impl CableType {
    pub fn new() -> CableType {
        CableType {
            value: None,
            label: None,
        }
    }
}

///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Value {
    #[serde(rename = "cat3")]
    Cat3,
    #[serde(rename = "cat5")]
    Cat5,
    #[serde(rename = "cat5e")]
    Cat5e,
    #[serde(rename = "cat6")]
    Cat6,
    #[serde(rename = "cat6a")]
    Cat6a,
    #[serde(rename = "cat7")]
    Cat7,
    #[serde(rename = "cat7a")]
    Cat7a,
    #[serde(rename = "cat8")]
    Cat8,
    #[serde(rename = "dac-active")]
    DacActive,
    #[serde(rename = "dac-passive")]
    DacPassive,
    #[serde(rename = "mrj21-trunk")]
    Mrj21Trunk,
    #[serde(rename = "coaxial")]
    Coaxial,
    #[serde(rename = "mmf")]
    Mmf,
    #[serde(rename = "mmf-om1")]
    MmfOm1,
    #[serde(rename = "mmf-om2")]
    MmfOm2,
    #[serde(rename = "mmf-om3")]
    MmfOm3,
    #[serde(rename = "mmf-om4")]
    MmfOm4,
    #[serde(rename = "mmf-om5")]
    MmfOm5,
    #[serde(rename = "smf")]
    Smf,
    #[serde(rename = "smf-os1")]
    SmfOs1,
    #[serde(rename = "smf-os2")]
    SmfOs2,
    #[serde(rename = "aoc")]
    Aoc,
    #[serde(rename = "power")]
    Power,
    #[serde(rename = "other")]
    Other,
}

impl Default for Value {
    fn default() -> Value {
        Self::Cat3
    }
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Label {
    #[serde(rename = "CAT3")]
    Cat3,
    #[serde(rename = "CAT5")]
    Cat5,
    #[serde(rename = "CAT5e")]
    Cat5e,
    #[serde(rename = "CAT6")]
    Cat6,
    #[serde(rename = "CAT6a")]
    Cat6a,
    #[serde(rename = "CAT7")]
    Cat7,
    #[serde(rename = "CAT7a")]
    Cat7a,
    #[serde(rename = "CAT8")]
    Cat8,
    #[serde(rename = "Direct Attach Copper (Active)")]
    DirectAttachCopperLeftParenthesisActiveRightParenthesis,
    #[serde(rename = "Direct Attach Copper (Passive)")]
    DirectAttachCopperLeftParenthesisPassiveRightParenthesis,
    #[serde(rename = "MRJ21 Trunk")]
    Mrj21Trunk,
    #[serde(rename = "Coaxial")]
    Coaxial,
    #[serde(rename = "Multimode Fiber")]
    MultimodeFiber,
    #[serde(rename = "Multimode Fiber (OM1)")]
    MultimodeFiberLeftParenthesisOm1RightParenthesis,
    #[serde(rename = "Multimode Fiber (OM2)")]
    MultimodeFiberLeftParenthesisOm2RightParenthesis,
    #[serde(rename = "Multimode Fiber (OM3)")]
    MultimodeFiberLeftParenthesisOm3RightParenthesis,
    #[serde(rename = "Multimode Fiber (OM4)")]
    MultimodeFiberLeftParenthesisOm4RightParenthesis,
    #[serde(rename = "Multimode Fiber (OM5)")]
    MultimodeFiberLeftParenthesisOm5RightParenthesis,
    #[serde(rename = "Singlemode Fiber")]
    SinglemodeFiber,
    #[serde(rename = "Singlemode Fiber (OS1)")]
    SinglemodeFiberLeftParenthesisOs1RightParenthesis,
    #[serde(rename = "Singlemode Fiber (OS2)")]
    SinglemodeFiberLeftParenthesisOs2RightParenthesis,
    #[serde(rename = "Active Optical Cabling (AOC)")]
    ActiveOpticalCablingLeftParenthesisAocRightParenthesis,
    #[serde(rename = "Power")]
    Power,
    #[serde(rename = "Other")]
    Other,
}

impl Default for Label {
    fn default() -> Label {
        Self::Cat3
    }
}
