Models

from typing import Any, Dict, List, Literal, Optional, Union

GlobalOptionTypeDef = Literal["global"]

DefaultOptionTypeDef = Literal["default"]

DefaultAuthenticationDef = Literal["none"]

AuthenticationDef = Literal["chap", "pap", "pap_chap"]

VariableOptionTypeDef = Literal["variable"]

PdnTypeDef = Literal["ipv4", "ipv4v6", "ipv6"]

DefaultPdnTypeDef = Literal["ipv4"]

EsimcellularProfileDefaultAuthenticationDef = Literal["none"]

EsimcellularProfileAuthenticationDef = Literal[
    "chap", "pap", "pap_chap"
]

EsimcellularProfilePdnTypeDef = Literal["ipv4", "ipv4v6", "ipv6"]

EsimcellularProfileDefaultPdnTypeDef = Literal["ipv4"]

TransportEsimcellularProfileDefaultAuthenticationDef = Literal["none"]

TransportEsimcellularProfileAuthenticationDef = Literal[
    "chap", "pap", "pap_chap"
]

TransportEsimcellularProfilePdnTypeDef = Literal[
    "ipv4", "ipv4v6", "ipv6"
]

TransportEsimcellularProfileDefaultPdnTypeDef = Literal["ipv4"]


class OneOfApnOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfDefaultAuthenticationOptionsDef:
    option_type: DefaultOptionTypeDef
    value: DefaultAuthenticationDef  # pytype: disable=annotation-type-mismatch


class Authentication1:
    no_authentication: OneOfDefaultAuthenticationOptionsDef


class OneOfAuthenticationOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: (
        AuthenticationDef  # pytype: disable=annotation-type-mismatch
    )


class OneOfAuthenticationOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfUsernameOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfUsernameOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfPasswordOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfPasswordOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class NeedAuthentication:
    password: Union[
        OneOfPasswordOptionsDef1, OneOfPasswordOptionsDef2
    ]
    type_: Union[
        OneOfAuthenticationOptionsDef1, OneOfAuthenticationOptionsDef2
    ]
    username: Union[
        OneOfUsernameOptionsDef1, OneOfUsernameOptionsDef2
    ]


class Authentication2:
    need_authentication: NeedAuthentication


class OneOfPdnTypeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: PdnTypeDef


class OneOfPdnTypeOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfPdnTypeOptionsDef3:
    option_type: DefaultOptionTypeDef
    value: (
        DefaultPdnTypeDef  # pytype: disable=annotation-type-mismatch
    )


class OneOfNoOverwriteOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfNoOverwriteOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfNoOverwriteOptionsDef3:
    option_type: DefaultOptionTypeDef


class CommonCellularProfileInfoDef:
    apn: OneOfApnOptionsDef
    authentication: Optional[Union[Authentication1, Authentication2]]
    no_overwrite: Optional[
        Union[
            OneOfNoOverwriteOptionsDef1,
            OneOfNoOverwriteOptionsDef2,
            OneOfNoOverwriteOptionsDef3,
        ]
    ]
    pdn_type: Optional[
        Union[
            OneOfPdnTypeOptionsDef1,
            OneOfPdnTypeOptionsDef2,
            OneOfPdnTypeOptionsDef3,
        ]
    ]


class AccountId:
    """
    Set provider account Id used for this profile
    """

    option_type: GlobalOptionTypeDef
    value: str


class CommPlan:
    """
    Set communication plan used for this profile
    """

    option_type: GlobalOptionTypeDef
    value: str


class RatePlan:
    """
    Set rate plan used for this profile
    """

    option_type: GlobalOptionTypeDef
    value: str


class ESimAccountInfoDef:
    # Set provider account Id used for this profile
    account_id: AccountId
    # Set communication plan used for this profile
    comm_plan: CommPlan
    # Set rate plan used for this profile
    rate_plan: RatePlan


class EsimCellularProfileConfigDef:
    """
    eSim Cellular profile config
    """

    account_info: ESimAccountInfoDef
    profile_info: CommonCellularProfileInfoDef


class Payload:
    """
    eSim CellularProfile feature schema for POST request
    """

    # eSim Cellular profile config
    data: EsimCellularProfileConfigDef
    name: str
    # Set the eSim CellularProfile feature description
    description: Optional[str]
    metadata: Optional[Any]


class Data:
    # User who last created this.
    created_by: Optional[str]
    # Timestamp of creation
    created_on: Optional[int]
    # User who last updated this.
    last_updated_by: Optional[str]
    # Timestamp of last update
    last_updated_on: Optional[int]
    parcel_id: Optional[str]
    parcel_type: Optional[str]
    # eSim CellularProfile feature schema for POST request
    payload: Optional[Payload]


class GetListSdwanTransportEsimcellularProfilePayload:
    data: Optional[List[Data]]


class CreateEsimCellularProfileProfileFeatureForTransportPostResponse:
    """
    Profile Parcel POST Response schema
    """

    parcel_id: str
    metadata: Optional[Any]


class CreateEsimCellularProfileProfileFeatureForTransportPostRequest:
    """
    eSim CellularProfile feature schema for POST request
    """

    # eSim Cellular profile config
    data: EsimCellularProfileConfigDef
    name: str
    # Set the eSim CellularProfile feature description
    description: Optional[str]
    metadata: Optional[Any]


class EsimcellularProfileOneOfApnOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class EsimcellularProfileOneOfDefaultAuthenticationOptionsDef:
    option_type: DefaultOptionTypeDef
    value: EsimcellularProfileDefaultAuthenticationDef  # pytype: disable=annotation-type-mismatch


class EsimcellularProfileAuthentication1:
    no_authentication: (
        EsimcellularProfileOneOfDefaultAuthenticationOptionsDef
    )


class EsimcellularProfileOneOfAuthenticationOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: EsimcellularProfileAuthenticationDef  # pytype: disable=annotation-type-mismatch


class EsimcellularProfileOneOfUsernameOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class EsimcellularProfileOneOfPasswordOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class EsimcellularProfileNeedAuthentication:
    password: Union[
        EsimcellularProfileOneOfPasswordOptionsDef1,
        OneOfPasswordOptionsDef2,
    ]
    type_: Union[
        EsimcellularProfileOneOfAuthenticationOptionsDef1,
        OneOfAuthenticationOptionsDef2,
    ]
    username: Union[
        EsimcellularProfileOneOfUsernameOptionsDef1,
        OneOfUsernameOptionsDef2,
    ]


class EsimcellularProfileAuthentication2:
    need_authentication: EsimcellularProfileNeedAuthentication


class EsimcellularProfileOneOfPdnTypeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: EsimcellularProfilePdnTypeDef


class EsimcellularProfileOneOfPdnTypeOptionsDef3:
    option_type: DefaultOptionTypeDef
    value: EsimcellularProfileDefaultPdnTypeDef  # pytype: disable=annotation-type-mismatch


class EsimcellularProfileCommonCellularProfileInfoDef:
    apn: EsimcellularProfileOneOfApnOptionsDef
    authentication: Optional[
        Union[
            EsimcellularProfileAuthentication1,
            EsimcellularProfileAuthentication2,
        ]
    ]
    no_overwrite: Optional[
        Union[
            OneOfNoOverwriteOptionsDef1,
            OneOfNoOverwriteOptionsDef2,
            OneOfNoOverwriteOptionsDef3,
        ]
    ]
    pdn_type: Optional[
        Union[
            EsimcellularProfileOneOfPdnTypeOptionsDef1,
            OneOfPdnTypeOptionsDef2,
            EsimcellularProfileOneOfPdnTypeOptionsDef3,
        ]
    ]


class EsimcellularProfileESimAccountInfoDef:
    # Set provider account Id used for this profile
    account_id: AccountId
    # Set communication plan used for this profile
    comm_plan: CommPlan
    # Set rate plan used for this profile
    rate_plan: RatePlan


class EsimcellularProfileEsimCellularProfileConfigDef:
    """
    eSim Cellular profile config
    """

    account_info: EsimcellularProfileESimAccountInfoDef
    profile_info: EsimcellularProfileCommonCellularProfileInfoDef


class EsimcellularProfilePayload:
    """
    eSim CellularProfile feature schema for PUT request
    """

    # eSim Cellular profile config
    data: EsimcellularProfileEsimCellularProfileConfigDef
    name: str
    # Set the eSim CellularProfile feature description
    description: Optional[str]
    metadata: Optional[Any]


class GetSingleSdwanTransportEsimcellularProfilePayload:
    # User who last created this.
    created_by: Optional[str]
    # Timestamp of creation
    created_on: Optional[int]
    # User who last updated this.
    last_updated_by: Optional[str]
    # Timestamp of last update
    last_updated_on: Optional[int]
    parcel_id: Optional[str]
    parcel_type: Optional[str]
    # eSim CellularProfile feature schema for PUT request
    payload: Optional[EsimcellularProfilePayload]


class EditEsimCellularProfileProfileFeatureForTransportPutResponse:
    """
    Profile Parcel PUT Response schema
    """

    id: str
    metadata: Optional[Any]


class TransportEsimcellularProfileOneOfApnOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class TransportEsimcellularProfileOneOfDefaultAuthenticationOptionsDef:
    option_type: DefaultOptionTypeDef
    value: TransportEsimcellularProfileDefaultAuthenticationDef  # pytype: disable=annotation-type-mismatch


class TransportEsimcellularProfileAuthentication1:
    no_authentication: TransportEsimcellularProfileOneOfDefaultAuthenticationOptionsDef


class TransportEsimcellularProfileOneOfAuthenticationOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: TransportEsimcellularProfileAuthenticationDef  # pytype: disable=annotation-type-mismatch


class TransportEsimcellularProfileOneOfUsernameOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class TransportEsimcellularProfileOneOfPasswordOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class TransportEsimcellularProfileNeedAuthentication:
    password: Union[
        TransportEsimcellularProfileOneOfPasswordOptionsDef1,
        OneOfPasswordOptionsDef2,
    ]
    type_: Union[
        TransportEsimcellularProfileOneOfAuthenticationOptionsDef1,
        OneOfAuthenticationOptionsDef2,
    ]
    username: Union[
        TransportEsimcellularProfileOneOfUsernameOptionsDef1,
        OneOfUsernameOptionsDef2,
    ]


class TransportEsimcellularProfileAuthentication2:
    need_authentication: (
        TransportEsimcellularProfileNeedAuthentication
    )


class TransportEsimcellularProfileOneOfPdnTypeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: TransportEsimcellularProfilePdnTypeDef


class TransportEsimcellularProfileOneOfPdnTypeOptionsDef3:
    option_type: DefaultOptionTypeDef
    value: TransportEsimcellularProfileDefaultPdnTypeDef  # pytype: disable=annotation-type-mismatch


class TransportEsimcellularProfileCommonCellularProfileInfoDef:
    apn: TransportEsimcellularProfileOneOfApnOptionsDef
    authentication: Optional[
        Union[
            TransportEsimcellularProfileAuthentication1,
            TransportEsimcellularProfileAuthentication2,
        ]
    ]
    no_overwrite: Optional[
        Union[
            OneOfNoOverwriteOptionsDef1,
            OneOfNoOverwriteOptionsDef2,
            OneOfNoOverwriteOptionsDef3,
        ]
    ]
    pdn_type: Optional[
        Union[
            TransportEsimcellularProfileOneOfPdnTypeOptionsDef1,
            OneOfPdnTypeOptionsDef2,
            TransportEsimcellularProfileOneOfPdnTypeOptionsDef3,
        ]
    ]


class TransportEsimcellularProfileESimAccountInfoDef:
    # Set provider account Id used for this profile
    account_id: AccountId
    # Set communication plan used for this profile
    comm_plan: CommPlan
    # Set rate plan used for this profile
    rate_plan: RatePlan


class TransportEsimcellularProfileEsimCellularProfileConfigDef:
    """
    eSim Cellular profile config
    """

    account_info: TransportEsimcellularProfileESimAccountInfoDef
    profile_info: (
        TransportEsimcellularProfileCommonCellularProfileInfoDef
    )


class EditEsimCellularProfileProfileFeatureForTransportPutRequest:
    """
    eSim CellularProfile feature schema for PUT request
    """

    # eSim Cellular profile config
    data: TransportEsimcellularProfileEsimCellularProfileConfigDef
    name: str
    # Set the eSim CellularProfile feature description
    description: Optional[str]
    metadata: Optional[Any]