Models

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

DefaultOptionTypeDef = Literal["default"]

Value = Literal["non-eSim"]

GlobalOptionTypeDef = Literal["global"]

VariableOptionTypeDef = Literal["variable"]


class ConfigType:
    option_type: DefaultOptionTypeDef
    value: Value  # pytype: disable=annotation-type-mismatch


class OneOfIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfSlotOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfSlotOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfMaxRetryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfMaxRetryOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfFailovertimerOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfFailovertimerOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfAutoSimOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


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


class OneOfAutoSimOptionsDef3:
    option_type: DefaultOptionTypeDef
    value: bool


class CommonControllerConfigDef:
    id: Union[OneOfIdOptionsDef1, OneOfIdOptionsDef2]
    auto_sim: Optional[
        Union[
            OneOfAutoSimOptionsDef1,
            OneOfAutoSimOptionsDef2,
            OneOfAutoSimOptionsDef3,
        ]
    ]
    failovertimer: Optional[
        Union[
            OneOfFailovertimerOptionsDef1,
            OneOfFailovertimerOptionsDef2,
            OneOfFailovertimerOptionsDef3,
        ]
    ]
    max_retry: Optional[
        Union[
            OneOfMaxRetryOptionsDef1,
            OneOfMaxRetryOptionsDef2,
            OneOfMaxRetryOptionsDef3,
        ]
    ]
    slot: Optional[
        Union[
            OneOfSlotOptionsDef1,
            OneOfSlotOptionsDef2,
            OneOfSlotOptionsDef3,
        ]
    ]


class NonEsimControllerConfigDef:
    """
    Regular Cellular controller (non-eSim) config
    """

    config_type: ConfigType
    controller_config: CommonControllerConfigDef


class Payload:
    """
    CellularController profile parcel schema for POST request
    """

    data: NonEsimControllerConfigDef
    name: str
    # Set the parcel 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]
    # CellularController profile parcel schema for POST request
    payload: Optional[Payload]


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


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

    parcel_id: str
    metadata: Optional[Any]


class CreateCellularControllerProfileParcelForTransportPostRequest:
    """
    CellularController profile parcel schema for POST request
    """

    data: NonEsimControllerConfigDef
    name: str
    # Set the parcel description
    description: Optional[str]
    metadata: Optional[Any]


class CellularControllerOneOfIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class CellularControllerOneOfSlotOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class CellularControllerOneOfMaxRetryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class CellularControllerOneOfFailovertimerOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class CellularControllerCommonControllerConfigDef:
    id: Union[
        CellularControllerOneOfIdOptionsDef1, OneOfIdOptionsDef2
    ]
    auto_sim: Optional[
        Union[
            OneOfAutoSimOptionsDef1,
            OneOfAutoSimOptionsDef2,
            OneOfAutoSimOptionsDef3,
        ]
    ]
    failovertimer: Optional[
        Union[
            CellularControllerOneOfFailovertimerOptionsDef1,
            OneOfFailovertimerOptionsDef2,
            OneOfFailovertimerOptionsDef3,
        ]
    ]
    max_retry: Optional[
        Union[
            CellularControllerOneOfMaxRetryOptionsDef1,
            OneOfMaxRetryOptionsDef2,
            OneOfMaxRetryOptionsDef3,
        ]
    ]
    slot: Optional[
        Union[
            CellularControllerOneOfSlotOptionsDef1,
            OneOfSlotOptionsDef2,
            OneOfSlotOptionsDef3,
        ]
    ]


class CellularControllerNonEsimControllerConfigDef:
    """
    Regular Cellular controller (non-eSim) config
    """

    config_type: ConfigType
    controller_config: CellularControllerCommonControllerConfigDef


class CellularControllerPayload:
    """
    CellularController profile parcel schema for PUT request
    """

    data: CellularControllerNonEsimControllerConfigDef
    name: str
    # Set the parcel description
    description: Optional[str]
    metadata: Optional[Any]


class GetSingleSdwanTransportCellularControllerPayload:
    # 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]
    # CellularController profile parcel schema for PUT request
    payload: Optional[CellularControllerPayload]


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

    id: str
    metadata: Optional[Any]


class TransportCellularControllerOneOfIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class TransportCellularControllerOneOfSlotOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class TransportCellularControllerOneOfMaxRetryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class TransportCellularControllerOneOfFailovertimerOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class TransportCellularControllerCommonControllerConfigDef:
    id: Union[
        TransportCellularControllerOneOfIdOptionsDef1,
        OneOfIdOptionsDef2,
    ]
    auto_sim: Optional[
        Union[
            OneOfAutoSimOptionsDef1,
            OneOfAutoSimOptionsDef2,
            OneOfAutoSimOptionsDef3,
        ]
    ]
    failovertimer: Optional[
        Union[
            TransportCellularControllerOneOfFailovertimerOptionsDef1,
            OneOfFailovertimerOptionsDef2,
            OneOfFailovertimerOptionsDef3,
        ]
    ]
    max_retry: Optional[
        Union[
            TransportCellularControllerOneOfMaxRetryOptionsDef1,
            OneOfMaxRetryOptionsDef2,
            OneOfMaxRetryOptionsDef3,
        ]
    ]
    slot: Optional[
        Union[
            TransportCellularControllerOneOfSlotOptionsDef1,
            OneOfSlotOptionsDef2,
            OneOfSlotOptionsDef3,
        ]
    ]


class TransportCellularControllerNonEsimControllerConfigDef:
    """
    Regular Cellular controller (non-eSim) config
    """

    config_type: ConfigType
    controller_config: (
        TransportCellularControllerCommonControllerConfigDef
    )


class EditCellularControllerProfileParcelForTransportPutRequest:
    """
    CellularController profile parcel schema for PUT request
    """

    data: TransportCellularControllerNonEsimControllerConfigDef
    name: str
    # Set the parcel description
    description: Optional[str]
    metadata: Optional[Any]