Models

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

GlobalOptionTypeDef = Literal["global"]

VariableOptionTypeDef = Literal["variable"]


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

    parcel_id: str
    metadata: Optional[Any]


class OneOfTargetInterfacesOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: List[str]


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


class Target1:
    """
    Interfaces
    """

    interfaces: Union[
        OneOfTargetInterfacesOptionsDef1,
        OneOfTargetInterfacesOptionsDef2,
    ]


class CommonRuleDef:
    option_type: GlobalOptionTypeDef
    rule_id: List[str]


class Target2:
    """
    Interface Rule
    """

    interface_rule: CommonRuleDef


class RefId:
    option_type: GlobalOptionTypeDef
    value: str


class ParcelReferenceDef:
    ref_id: RefId


class OneOfQosMapQosSchedulersDropsOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfQosMapQosSchedulersQueueOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfQosMapQosSchedulersBandwidthPercentOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfQosMapQosSchedulersSchedulingOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class QosSchedulers:
    bandwidth_percent: Optional[
        OneOfQosMapQosSchedulersBandwidthPercentOptionsDef
    ]
    class_map_ref: Optional[ParcelReferenceDef]
    drops: Optional[OneOfQosMapQosSchedulersDropsOptionsDef]
    queue: Optional[OneOfQosMapQosSchedulersQueueOptionsDef]
    scheduling: Optional[OneOfQosMapQosSchedulersSchedulingOptionsDef]


class QosMap:
    """
    qos-map
    """

    qos_schedulers: Optional[List[QosSchedulers]]


class Data:
    # qos-map
    qos_map: Optional[QosMap]
    target: Optional[Union[Target1, Target2]]


class CreatePolicyApplicationProfileParcelPostRequest:
    """
    Policy qos profile parcel schema for POST request
    """

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


class QosPolicyOneOfTargetInterfacesOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: List[str]


class QosPolicyTarget1:
    """
    Interfaces
    """

    interfaces: Union[
        QosPolicyOneOfTargetInterfacesOptionsDef1,
        OneOfTargetInterfacesOptionsDef2,
    ]


class QosPolicyOneOfQosMapQosSchedulersDropsOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class QosPolicyOneOfQosMapQosSchedulersQueueOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class QosPolicyOneOfQosMapQosSchedulersBandwidthPercentOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class QosPolicyOneOfQosMapQosSchedulersSchedulingOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class QosPolicyQosSchedulers:
    bandwidth_percent: Optional[
        QosPolicyOneOfQosMapQosSchedulersBandwidthPercentOptionsDef
    ]
    class_map_ref: Optional[ParcelReferenceDef]
    drops: Optional[QosPolicyOneOfQosMapQosSchedulersDropsOptionsDef]
    queue: Optional[QosPolicyOneOfQosMapQosSchedulersQueueOptionsDef]
    scheduling: Optional[
        QosPolicyOneOfQosMapQosSchedulersSchedulingOptionsDef
    ]


class QosPolicyQosMap:
    """
    qos-map
    """

    qos_schedulers: Optional[List[QosPolicyQosSchedulers]]


class QosPolicyData:
    # qos-map
    qos_map: Optional[QosPolicyQosMap]
    target: Optional[Union[QosPolicyTarget1, Target2]]


class Payload:
    """
    Policy qos profile parcel schema for PUT request
    """

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


class GetSingleSdwanApplicationPriorityQosPolicyPayload:
    # 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]
    # Policy qos profile parcel schema for PUT request
    payload: Optional[Payload]


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

    id: str
    metadata: Optional[Any]


class ApplicationPriorityQosPolicyOneOfTargetInterfacesOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: List[str]


class ApplicationPriorityQosPolicyTarget1:
    """
    Interfaces
    """

    interfaces: Union[
        ApplicationPriorityQosPolicyOneOfTargetInterfacesOptionsDef1,
        OneOfTargetInterfacesOptionsDef2,
    ]


class ApplicationPriorityQosPolicyOneOfQosMapQosSchedulersDropsOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class ApplicationPriorityQosPolicyOneOfQosMapQosSchedulersQueueOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class ApplicationPriorityQosPolicyOneOfQosMapQosSchedulersBandwidthPercentOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class ApplicationPriorityQosPolicyOneOfQosMapQosSchedulersSchedulingOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class ApplicationPriorityQosPolicyQosSchedulers:
    bandwidth_percent: Optional[
        ApplicationPriorityQosPolicyOneOfQosMapQosSchedulersBandwidthPercentOptionsDef
    ]
    class_map_ref: Optional[ParcelReferenceDef]
    drops: Optional[
        ApplicationPriorityQosPolicyOneOfQosMapQosSchedulersDropsOptionsDef
    ]
    queue: Optional[
        ApplicationPriorityQosPolicyOneOfQosMapQosSchedulersQueueOptionsDef
    ]
    scheduling: Optional[
        ApplicationPriorityQosPolicyOneOfQosMapQosSchedulersSchedulingOptionsDef
    ]


class ApplicationPriorityQosPolicyQosMap:
    """
    qos-map
    """

    qos_schedulers: Optional[
        List[ApplicationPriorityQosPolicyQosSchedulers]
    ]


class ApplicationPriorityQosPolicyData:
    # qos-map
    qos_map: Optional[ApplicationPriorityQosPolicyQosMap]
    target: Optional[
        Union[ApplicationPriorityQosPolicyTarget1, Target2]
    ]


class EditPolicyApplicationProfileParcelPutRequest:
    """
    Policy qos profile parcel schema for PUT request
    """

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