Models

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

VariableOptionTypeDef = Literal["variable"]

GlobalOptionTypeDef = Literal["global"]

DefaultOptionTypeDef = Literal["default"]

ModeDef = Literal["ms-based", "standalone"]

DefaultModeDef = Literal["ms-based"]

GpsModeDef = Literal["ms-based", "standalone"]

GpsDefaultModeDef = Literal["ms-based"]


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


class OneOfOnBooleanDefaultFalseOptionsDef2:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfOnBooleanDefaultFalseOptionsDef3:
    option_type: DefaultOptionTypeDef
    value: bool


class OneOfModeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: ModeDef


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


class OneOfModeOptionsDef3:
    option_type: DefaultOptionTypeDef
    value: DefaultModeDef  # pytype: disable=annotation-type-mismatch


class OneOfNmeaOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


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


class OneOfNmeaOptionsDef3:
    option_type: DefaultOptionTypeDef
    value: bool


class OneOfSourceAddressOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: Any


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


class OneOfSourceAddressOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfDestinationAddressOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: Any


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


class OneOfDestinationAddressOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfDestinationPortOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfDestinationPortOptionsDef3:
    option_type: DefaultOptionTypeDef


class Data:
    destination_address: Optional[
        Union[
            OneOfDestinationAddressOptionsDef1,
            OneOfDestinationAddressOptionsDef2,
            OneOfDestinationAddressOptionsDef3,
        ]
    ]
    destination_port: Optional[
        Union[
            OneOfDestinationPortOptionsDef1,
            OneOfDestinationPortOptionsDef2,
            OneOfDestinationPortOptionsDef3,
        ]
    ]
    enable: Optional[
        Union[
            OneOfOnBooleanDefaultFalseOptionsDef1,
            OneOfOnBooleanDefaultFalseOptionsDef2,
            OneOfOnBooleanDefaultFalseOptionsDef3,
        ]
    ]
    mode: Optional[
        Union[
            OneOfModeOptionsDef1,
            OneOfModeOptionsDef2,
            OneOfModeOptionsDef3,
        ]
    ]
    nmea: Optional[
        Union[
            OneOfNmeaOptionsDef1,
            OneOfNmeaOptionsDef2,
            OneOfNmeaOptionsDef3,
        ]
    ]
    source_address: Optional[
        Union[
            OneOfSourceAddressOptionsDef1,
            OneOfSourceAddressOptionsDef2,
            OneOfSourceAddressOptionsDef3,
        ]
    ]


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

    data: Data
    description: Optional[str]
    metadata: Optional[Any]
    name: Optional[str]


class GetCellularControllerAssociatedGpsParcelsForTransportGetResponse:
    # 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]
    # Gps profile parcel schema for POST request
    payload: Optional[Payload]


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

    parcel_id: str
    metadata: Optional[Any]


class CreateCellularControllerAndGpsParcelAssociationForTransportPostRequest:
    """
    Profile Parcel POST Request schema
    """

    parcel_id: str
    metadata: Optional[Any]


class GpsOneOfModeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: GpsModeDef


class GpsOneOfModeOptionsDef3:
    option_type: DefaultOptionTypeDef
    value: (
        GpsDefaultModeDef  # pytype: disable=annotation-type-mismatch
    )


class GpsData:
    destination_address: Optional[
        Union[
            OneOfDestinationAddressOptionsDef1,
            OneOfDestinationAddressOptionsDef2,
            OneOfDestinationAddressOptionsDef3,
        ]
    ]
    destination_port: Optional[
        Union[
            OneOfDestinationPortOptionsDef1,
            OneOfDestinationPortOptionsDef2,
            OneOfDestinationPortOptionsDef3,
        ]
    ]
    enable: Optional[
        Union[
            OneOfOnBooleanDefaultFalseOptionsDef1,
            OneOfOnBooleanDefaultFalseOptionsDef2,
            OneOfOnBooleanDefaultFalseOptionsDef3,
        ]
    ]
    mode: Optional[
        Union[
            GpsOneOfModeOptionsDef1,
            OneOfModeOptionsDef2,
            GpsOneOfModeOptionsDef3,
        ]
    ]
    nmea: Optional[
        Union[
            OneOfNmeaOptionsDef1,
            OneOfNmeaOptionsDef2,
            OneOfNmeaOptionsDef3,
        ]
    ]
    source_address: Optional[
        Union[
            OneOfSourceAddressOptionsDef1,
            OneOfSourceAddressOptionsDef2,
            OneOfSourceAddressOptionsDef3,
        ]
    ]


class GpsPayload:
    """
    Gps profile parcel schema for PUT request
    """

    data: GpsData
    description: Optional[str]
    metadata: Optional[Any]
    name: Optional[str]


class GetSingleSdwanTransportCellularControllerGpsPayload:
    # 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]
    # Gps profile parcel schema for PUT request
    payload: Optional[GpsPayload]


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

    id: str
    metadata: Optional[Any]


class EditCellularControllerAndGpsParcelAssociationForTransportPutRequest:
    """
    Profile Parcel POST Request schema
    """

    parcel_id: str
    metadata: Optional[Any]