Models

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

GlobalOptionTypeDef = Literal["global"]

SigProviderDef = Literal["Generic", "Umbrella", "Zscaler"]

DefaultOptionTypeDef = Literal["default"]

VariableOptionTypeDef = Literal["variable"]

InterfaceApplicationDef = Literal["sig"]

InterfaceTunnelSetDef = Literal[
    "secure-internet-gateway-other",
    "secure-internet-gateway-umbrella",
    "secure-internet-gateway-zscaler",
]

InterfaceTunnelDcPreferenceDef = Literal["primary-dc", "secondary-dc"]

InterfaceIkeCiphersuiteDef = Literal[
    "aes128-cbc-sha1",
    "aes128-cbc-sha2",
    "aes256-cbc-sha1",
    "aes256-cbc-sha2",
]

DefaultInterfaceIkeCiphersuiteDef = Literal["aes256-cbc-sha1"]

InterfaceIkeGroupDef = Literal[
    "14", "15", "16", "19", "2", "20", "21", "5"
]

InterfaceIpsecCiphersuiteDef = Literal[
    "aes256-cbc-sha1",
    "aes256-cbc-sha256",
    "aes256-cbc-sha384",
    "aes256-cbc-sha512",
    "aes256-gcm",
]

InterfacePerfectForwardSecrecyDef = Literal[
    "group-14",
    "group-15",
    "group-16",
    "group-19",
    "group-2",
    "group-20",
    "group-21",
    "group-5",
    "none",
]

ServiceDisplayTimeUnitDef = Literal["DAY", "HOUR", "MINUTE"]

DefaultServiceDisplayTimeUnitDef = Literal["MINUTE"]

ServiceRefreshTimeUnitDef = Literal["DAY", "HOUR", "MINUTE"]

DefaultServiceRefreshTimeUnitDef = Literal["MINUTE"]

TrackerTrackerTypeDef = Literal["SIG"]

SigSigProviderDef = Literal["Generic", "Umbrella", "Zscaler"]

SigInterfaceApplicationDef = Literal["sig"]

SigInterfaceTunnelSetDef = Literal[
    "secure-internet-gateway-other",
    "secure-internet-gateway-umbrella",
    "secure-internet-gateway-zscaler",
]

SigInterfaceTunnelDcPreferenceDef = Literal[
    "primary-dc", "secondary-dc"
]

SigInterfaceIkeCiphersuiteDef = Literal[
    "aes128-cbc-sha1",
    "aes128-cbc-sha2",
    "aes256-cbc-sha1",
    "aes256-cbc-sha2",
]

SigDefaultInterfaceIkeCiphersuiteDef = Literal["aes256-cbc-sha1"]

SigInterfaceIkeGroupDef = Literal[
    "14", "15", "16", "19", "2", "20", "21", "5"
]

SigSecuritySigInterfaceIkeGroupDef = Literal[
    "14", "15", "16", "19", "2", "20", "21", "5"
]

SigInterfaceIpsecCiphersuiteDef = Literal[
    "aes256-cbc-sha1",
    "aes256-cbc-sha256",
    "aes256-cbc-sha384",
    "aes256-cbc-sha512",
    "aes256-gcm",
]

SigSecuritySigInterfaceIpsecCiphersuiteDef = Literal[
    "aes256-cbc-sha1",
    "aes256-cbc-sha256",
    "aes256-cbc-sha384",
    "aes256-cbc-sha512",
    "aes256-gcm",
]

SigInterfacePerfectForwardSecrecyDef = Literal[
    "group-14",
    "group-15",
    "group-16",
    "group-19",
    "group-2",
    "group-20",
    "group-21",
    "group-5",
    "none",
]

SigSecuritySigInterfacePerfectForwardSecrecyDef = Literal[
    "group-14",
    "group-15",
    "group-16",
    "group-19",
    "group-2",
    "group-20",
    "group-21",
    "group-5",
    "none",
]

SigServiceDisplayTimeUnitDef = Literal["DAY", "HOUR", "MINUTE"]

SigDefaultServiceDisplayTimeUnitDef = Literal["MINUTE"]

SigServiceRefreshTimeUnitDef = Literal["DAY", "HOUR", "MINUTE"]

SigDefaultServiceRefreshTimeUnitDef = Literal["MINUTE"]

SigTrackerTrackerTypeDef = Literal["SIG"]

SigSecuritySigSigProviderDef = Literal[
    "Generic", "Umbrella", "Zscaler"
]

SigSecuritySigInterfaceApplicationDef = Literal["sig"]

SigSecuritySigInterfaceTunnelSetDef = Literal[
    "secure-internet-gateway-other",
    "secure-internet-gateway-umbrella",
    "secure-internet-gateway-zscaler",
]

SigSecuritySigInterfaceTunnelDcPreferenceDef = Literal[
    "primary-dc", "secondary-dc"
]

SigSecuritySigInterfaceIkeCiphersuiteDef = Literal[
    "aes128-cbc-sha1",
    "aes128-cbc-sha2",
    "aes256-cbc-sha1",
    "aes256-cbc-sha2",
]

SigSecuritySigDefaultInterfaceIkeCiphersuiteDef = Literal[
    "aes256-cbc-sha1"
]

SdwanSigSecuritySigInterfaceIkeGroupDef = Literal[
    "14", "15", "16", "19", "2", "20", "21", "5"
]

FeatureProfileSdwanSigSecuritySigInterfaceIkeGroupDef = Literal[
    "14", "15", "16", "19", "2", "20", "21", "5"
]

SdwanSigSecuritySigInterfaceIpsecCiphersuiteDef = Literal[
    "aes256-cbc-sha1",
    "aes256-cbc-sha256",
    "aes256-cbc-sha384",
    "aes256-cbc-sha512",
    "aes256-gcm",
]

FeatureProfileSdwanSigSecuritySigInterfaceIpsecCiphersuiteDef = (
    Literal[
        "aes256-cbc-sha1",
        "aes256-cbc-sha256",
        "aes256-cbc-sha384",
        "aes256-cbc-sha512",
        "aes256-gcm",
    ]
)

SdwanSigSecuritySigInterfacePerfectForwardSecrecyDef = Literal[
    "group-14",
    "group-15",
    "group-16",
    "group-19",
    "group-2",
    "group-20",
    "group-21",
    "group-5",
    "none",
]

FeatureProfileSdwanSigSecuritySigInterfacePerfectForwardSecrecyDef = (
    Literal[
        "group-14",
        "group-15",
        "group-16",
        "group-19",
        "group-2",
        "group-20",
        "group-21",
        "group-5",
        "none",
    ]
)

SigSecuritySigServiceDisplayTimeUnitDef = Literal[
    "DAY", "HOUR", "MINUTE"
]

SigSecuritySigDefaultServiceDisplayTimeUnitDef = Literal["MINUTE"]

SigSecuritySigServiceRefreshTimeUnitDef = Literal[
    "DAY", "HOUR", "MINUTE"
]

SigSecuritySigDefaultServiceRefreshTimeUnitDef = Literal["MINUTE"]

SigSecuritySigTrackerTrackerTypeDef = Literal["SIG"]


class OneOfSigProviderOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigProviderDef


class OneOfSrcVpnOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfSrcVpnOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class InterfaceMetadataSharing:
    src_vpn: Optional[
        Union[OneOfSrcVpnOptionsDef1, OneOfSrcVpnOptionsDef2]
    ]


class OneOfInterfaceIfNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfInterfaceAutoOptionsDef:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfInterfaceShutdownOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfInterfaceShutdownOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfInterfaceDescriptionOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceDescriptionOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfInterfaceUnnumberedOptionsDef:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfInterfaceAddressOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceAddressOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfInterfaceTunnelSourceOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceTunnelSourceInterfaceOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceTunnelRouteViaOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceTunnelRouteViaOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class OneOfInterfaceTunnelDestinationOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceApplicationOptionsDef:
    option_type: GlobalOptionTypeDef
    value: InterfaceApplicationDef


class OneOfInterfaceTunnelSetOptionsDef:
    option_type: GlobalOptionTypeDef
    value: InterfaceTunnelSetDef


class OneOfInterfaceTunnelDcPreferenceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: InterfaceTunnelDcPreferenceDef


class OneOfInterfaceTcpMssAdjustOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfInterfaceTcpMssAdjustOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfInterfaceMtuOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfInterfaceDpdIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfInterfaceDpdIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfInterfaceDpdRetriesOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfInterfaceDpdRetriesOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfInterfaceIkeVersionOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfInterfaceIkeVersionOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfInterfacePreSharedSecretOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfacePreSharedSecretOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfInterfaceIkeRekeyIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfInterfaceIkeRekeyIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfInterfaceIkeCiphersuiteOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: InterfaceIkeCiphersuiteDef


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


class OneOfInterfaceIkeCiphersuiteOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[DefaultInterfaceIkeCiphersuiteDef]


class OneOfInterfaceIkeGroupOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: InterfaceIkeGroupDef


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


class OneOfInterfaceIkeGroupOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[InterfaceIkeGroupDef]


class OneOfInterfacePreSharedKeyDynamicOptionsDef:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfInterfaceIkeLocalIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceIkeLocalIdOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfInterfaceIkeRemoteIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceIkeRemoteIdOptionsDef3:
    option_type: DefaultOptionTypeDef


class OneOfInterfaceIpsecRekeyIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfInterfaceIpsecRekeyIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfInterfaceIpsecReplayWindowOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfInterfaceIpsecReplayWindowOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfInterfaceIpsecCiphersuiteOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: InterfaceIpsecCiphersuiteDef


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


class OneOfInterfaceIpsecCiphersuiteOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[InterfaceIpsecCiphersuiteDef]


class OneOfInterfacePerfectForwardSecrecyOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: InterfacePerfectForwardSecrecyDef


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


class OneOfInterfacePerfectForwardSecrecyOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[InterfacePerfectForwardSecrecyDef]


class OneOfInterfaceTrackerOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfInterfaceTrackerOptionsDef2:
    option_type: DefaultOptionTypeDef


class OneOfInterfaceTrackEnableOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfInterfaceTrackEnableOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfInterfaceTunnelPublicIpOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfInterfaceTunnelPublicIpOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class Interface:
    if_name: OneOfInterfaceIfNameOptionsDef
    tunnel_source_interface: Union[
        OneOfInterfaceTunnelSourceInterfaceOptionsDef1,
        OneOfInterfaceTunnelSourceInterfaceOptionsDef2,
    ]
    address: Optional[
        Union[
            OneOfInterfaceAddressOptionsDef1,
            OneOfInterfaceAddressOptionsDef2,
            OneOfInterfaceAddressOptionsDef3,
        ]
    ]
    application: Optional[OneOfInterfaceApplicationOptionsDef]
    auto: Optional[OneOfInterfaceAutoOptionsDef]
    description: Optional[
        Union[
            OneOfInterfaceDescriptionOptionsDef1,
            OneOfInterfaceDescriptionOptionsDef2,
            OneOfInterfaceDescriptionOptionsDef3,
        ]
    ]
    dpd_interval: Optional[
        Union[
            OneOfInterfaceDpdIntervalOptionsDef1,
            OneOfInterfaceDpdIntervalOptionsDef2,
            OneOfInterfaceDpdIntervalOptionsDef3,
        ]
    ]
    dpd_retries: Optional[
        Union[
            OneOfInterfaceDpdRetriesOptionsDef1,
            OneOfInterfaceDpdRetriesOptionsDef2,
            OneOfInterfaceDpdRetriesOptionsDef3,
        ]
    ]
    ike_ciphersuite: Optional[
        Union[
            OneOfInterfaceIkeCiphersuiteOptionsDef1,
            OneOfInterfaceIkeCiphersuiteOptionsDef2,
            OneOfInterfaceIkeCiphersuiteOptionsDef3,
        ]
    ]
    ike_group: Optional[
        Union[
            OneOfInterfaceIkeGroupOptionsDef1,
            OneOfInterfaceIkeGroupOptionsDef2,
            OneOfInterfaceIkeGroupOptionsDef3,
        ]
    ]
    ike_local_id: Optional[
        Union[
            OneOfInterfaceIkeLocalIdOptionsDef1,
            OneOfInterfaceIkeLocalIdOptionsDef2,
            OneOfInterfaceIkeLocalIdOptionsDef3,
        ]
    ]
    ike_rekey_interval: Optional[
        Union[
            OneOfInterfaceIkeRekeyIntervalOptionsDef1,
            OneOfInterfaceIkeRekeyIntervalOptionsDef2,
            OneOfInterfaceIkeRekeyIntervalOptionsDef3,
        ]
    ]
    ike_remote_id: Optional[
        Union[
            OneOfInterfaceIkeRemoteIdOptionsDef1,
            OneOfInterfaceIkeRemoteIdOptionsDef2,
            OneOfInterfaceIkeRemoteIdOptionsDef3,
        ]
    ]
    ike_version: Optional[
        Union[
            OneOfInterfaceIkeVersionOptionsDef1,
            OneOfInterfaceIkeVersionOptionsDef2,
            OneOfInterfaceIkeVersionOptionsDef3,
        ]
    ]
    ipsec_ciphersuite: Optional[
        Union[
            OneOfInterfaceIpsecCiphersuiteOptionsDef1,
            OneOfInterfaceIpsecCiphersuiteOptionsDef2,
            OneOfInterfaceIpsecCiphersuiteOptionsDef3,
        ]
    ]
    ipsec_rekey_interval: Optional[
        Union[
            OneOfInterfaceIpsecRekeyIntervalOptionsDef1,
            OneOfInterfaceIpsecRekeyIntervalOptionsDef2,
            OneOfInterfaceIpsecRekeyIntervalOptionsDef3,
        ]
    ]
    ipsec_replay_window: Optional[
        Union[
            OneOfInterfaceIpsecReplayWindowOptionsDef1,
            OneOfInterfaceIpsecReplayWindowOptionsDef2,
            OneOfInterfaceIpsecReplayWindowOptionsDef3,
        ]
    ]
    mtu: Optional[
        Union[
            OneOfInterfaceMtuOptionsDef1, OneOfInterfaceMtuOptionsDef2
        ]
    ]
    perfect_forward_secrecy: Optional[
        Union[
            OneOfInterfacePerfectForwardSecrecyOptionsDef1,
            OneOfInterfacePerfectForwardSecrecyOptionsDef2,
            OneOfInterfacePerfectForwardSecrecyOptionsDef3,
        ]
    ]
    pre_shared_key_dynamic: Optional[
        OneOfInterfacePreSharedKeyDynamicOptionsDef
    ]
    pre_shared_secret: Optional[
        Union[
            OneOfInterfacePreSharedSecretOptionsDef1,
            OneOfInterfacePreSharedSecretOptionsDef2,
            OneOfInterfacePreSharedSecretOptionsDef3,
        ]
    ]
    shutdown: Optional[
        Union[
            OneOfInterfaceShutdownOptionsDef1,
            OneOfInterfaceShutdownOptionsDef2,
        ]
    ]
    tcp_mss_adjust: Optional[
        Union[
            OneOfInterfaceTcpMssAdjustOptionsDef1,
            OneOfInterfaceTcpMssAdjustOptionsDef2,
            OneOfInterfaceTcpMssAdjustOptionsDef3,
        ]
    ]
    track_enable: Optional[
        Union[
            OneOfInterfaceTrackEnableOptionsDef1,
            OneOfInterfaceTrackEnableOptionsDef2,
        ]
    ]
    tracker: Optional[
        Union[
            OneOfInterfaceTrackerOptionsDef1,
            OneOfInterfaceTrackerOptionsDef2,
        ]
    ]
    tunnel_dc_preference: Optional[
        OneOfInterfaceTunnelDcPreferenceOptionsDef
    ]
    tunnel_destination: Optional[
        Union[
            OneOfInterfaceTunnelDestinationOptionsDef1,
            OneOfInterfaceTunnelDestinationOptionsDef2,
        ]
    ]
    tunnel_public_ip: Optional[
        Union[
            OneOfInterfaceTunnelPublicIpOptionsDef1,
            OneOfInterfaceTunnelPublicIpOptionsDef2,
            OneOfInterfaceTunnelPublicIpOptionsDef3,
        ]
    ]
    tunnel_route_via: Optional[
        Union[
            OneOfInterfaceTunnelRouteViaOptionsDef1,
            OneOfInterfaceTunnelRouteViaOptionsDef2,
            OneOfInterfaceTunnelRouteViaOptionsDef3,
        ]
    ]
    tunnel_set: Optional[OneOfInterfaceTunnelSetOptionsDef]
    tunnel_source: Optional[
        Union[
            OneOfInterfaceTunnelSourceOptionsDef1,
            OneOfInterfaceTunnelSourceOptionsDef2,
        ]
    ]
    unnumbered: Optional[OneOfInterfaceUnnumberedOptionsDef]


class OneOfServiceInterfacePairActiveInterfaceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfServiceInterfacePairActiveInterfaceWeightOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfServiceInterfacePairBackupInterfaceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfServiceInterfacePairBackupInterfaceWeightOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class InterfacePair:
    active_interface: (
        OneOfServiceInterfacePairActiveInterfaceOptionsDef
    )
    backup_interface: (
        OneOfServiceInterfacePairBackupInterfaceOptionsDef
    )
    active_interface_weight: Optional[
        OneOfServiceInterfacePairActiveInterfaceWeightOptionsDef
    ]
    backup_interface_weight: Optional[
        OneOfServiceInterfacePairBackupInterfaceWeightOptionsDef
    ]


class OneOfServiceAuthRequiredOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceAuthRequiredOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceXffForwardEnabledOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceXffForwardEnabledOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceOfwEnabledOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceOfwEnabledOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceIpsControlOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceIpsControlOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceCautionEnabledOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceCautionEnabledOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServicePrimaryDataCenterOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfServicePrimaryDataCenterOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


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


class OneOfServiceSecondaryDataCenterOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfServiceSecondaryDataCenterOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


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


class OneOfServiceIpOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceIpOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceIdleTimeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfServiceIdleTimeOptionsDef2:
    option_type: DefaultOptionTypeDef
    value: int


class OneOfServiceDisplayTimeUnitOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: ServiceDisplayTimeUnitDef


class OneOfServiceDisplayTimeUnitOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[DefaultServiceDisplayTimeUnitDef]


class OneOfServiceIpEnforcedForKnownBrowsersOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceIpEnforcedForKnownBrowsersOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceRefreshTimeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfServiceRefreshTimeOptionsDef2:
    option_type: DefaultOptionTypeDef
    value: int


class OneOfServiceRefreshTimeUnitOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: ServiceRefreshTimeUnitDef


class OneOfServiceRefreshTimeUnitOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[DefaultServiceRefreshTimeUnitDef]


class OneOfServiceEnabledOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceEnabledOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceBlockInternetUntilAcceptedOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceBlockInternetUntilAcceptedOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceForceSslInspectionOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfServiceForceSslInspectionOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[bool]


class OneOfServiceTimeoutOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfServiceTimeoutOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfServiceLocationNameOptionsDef1:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


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


class OneOfServiceDataCenterPrimaryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfServiceDataCenterPrimaryOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


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


class OneOfServiceDataCenterSecondaryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfServiceDataCenterSecondaryOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


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


class Service:
    """
    Configure services
    """

    auth_required: Optional[
        Union[
            OneOfServiceAuthRequiredOptionsDef1,
            OneOfServiceAuthRequiredOptionsDef2,
        ]
    ]
    block_internet_until_accepted: Optional[
        Union[
            OneOfServiceBlockInternetUntilAcceptedOptionsDef1,
            OneOfServiceBlockInternetUntilAcceptedOptionsDef2,
        ]
    ]
    caution_enabled: Optional[
        Union[
            OneOfServiceCautionEnabledOptionsDef1,
            OneOfServiceCautionEnabledOptionsDef2,
        ]
    ]
    data_center_primary: Optional[
        Union[
            OneOfServiceDataCenterPrimaryOptionsDef1,
            OneOfServiceDataCenterPrimaryOptionsDef2,
            OneOfServiceDataCenterPrimaryOptionsDef3,
        ]
    ]
    data_center_secondary: Optional[
        Union[
            OneOfServiceDataCenterSecondaryOptionsDef1,
            OneOfServiceDataCenterSecondaryOptionsDef2,
            OneOfServiceDataCenterSecondaryOptionsDef3,
        ]
    ]
    display_time_unit: Optional[
        Union[
            OneOfServiceDisplayTimeUnitOptionsDef1,
            OneOfServiceDisplayTimeUnitOptionsDef2,
        ]
    ]
    enabled: Optional[
        Union[
            OneOfServiceEnabledOptionsDef1,
            OneOfServiceEnabledOptionsDef2,
        ]
    ]
    force_ssl_inspection: Optional[
        Union[
            OneOfServiceForceSslInspectionOptionsDef1,
            OneOfServiceForceSslInspectionOptionsDef2,
        ]
    ]
    idle_time: Optional[
        Union[
            OneOfServiceIdleTimeOptionsDef1,
            OneOfServiceIdleTimeOptionsDef2,
        ]
    ]
    # Interface Pair for active and backup
    interface_pair: Optional[List[InterfacePair]]
    ip: Optional[
        Union[OneOfServiceIpOptionsDef1, OneOfServiceIpOptionsDef2]
    ]
    ip_enforced_for_known_browsers: Optional[
        Union[
            OneOfServiceIpEnforcedForKnownBrowsersOptionsDef1,
            OneOfServiceIpEnforcedForKnownBrowsersOptionsDef2,
        ]
    ]
    ips_control: Optional[
        Union[
            OneOfServiceIpsControlOptionsDef1,
            OneOfServiceIpsControlOptionsDef2,
        ]
    ]
    location_name: Optional[
        Union[
            OneOfServiceLocationNameOptionsDef1,
            OneOfServiceLocationNameOptionsDef2,
        ]
    ]
    ofw_enabled: Optional[
        Union[
            OneOfServiceOfwEnabledOptionsDef1,
            OneOfServiceOfwEnabledOptionsDef2,
        ]
    ]
    primary_data_center: Optional[
        Union[
            OneOfServicePrimaryDataCenterOptionsDef1,
            OneOfServicePrimaryDataCenterOptionsDef2,
            OneOfServicePrimaryDataCenterOptionsDef3,
        ]
    ]
    refresh_time: Optional[
        Union[
            OneOfServiceRefreshTimeOptionsDef1,
            OneOfServiceRefreshTimeOptionsDef2,
        ]
    ]
    refresh_time_unit: Optional[
        Union[
            OneOfServiceRefreshTimeUnitOptionsDef1,
            OneOfServiceRefreshTimeUnitOptionsDef2,
        ]
    ]
    secondary_data_center: Optional[
        Union[
            OneOfServiceSecondaryDataCenterOptionsDef1,
            OneOfServiceSecondaryDataCenterOptionsDef2,
            OneOfServiceSecondaryDataCenterOptionsDef3,
        ]
    ]
    timeout: Optional[
        Union[
            OneOfServiceTimeoutOptionsDef1,
            OneOfServiceTimeoutOptionsDef2,
        ]
    ]
    xff_forward_enabled: Optional[
        Union[
            OneOfServiceXffForwardEnabledOptionsDef1,
            OneOfServiceXffForwardEnabledOptionsDef2,
        ]
    ]


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


class OneOfIpV4AddressOptionsDef2:
    option_type: GlobalOptionTypeDef
    value: Any


class OneOfTrackerNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfTrackerEndpointApiUrlOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


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


class OneOfTrackerThresholdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfTrackerThresholdOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfTrackerIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfTrackerIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfTrackerMultiplierOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


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


class OneOfTrackerMultiplierOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class OneOfTrackerTrackerTypeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: TrackerTrackerTypeDef


class Tracker:
    endpoint_api_url: Union[
        OneOfTrackerEndpointApiUrlOptionsDef1,
        OneOfTrackerEndpointApiUrlOptionsDef2,
    ]
    name: OneOfTrackerNameOptionsDef
    tracker_type: OneOfTrackerTrackerTypeOptionsDef
    interval: Optional[
        Union[
            OneOfTrackerIntervalOptionsDef1,
            OneOfTrackerIntervalOptionsDef2,
            OneOfTrackerIntervalOptionsDef3,
        ]
    ]
    multiplier: Optional[
        Union[
            OneOfTrackerMultiplierOptionsDef1,
            OneOfTrackerMultiplierOptionsDef2,
            OneOfTrackerMultiplierOptionsDef3,
        ]
    ]
    threshold: Optional[
        Union[
            OneOfTrackerThresholdOptionsDef1,
            OneOfTrackerThresholdOptionsDef2,
            OneOfTrackerThresholdOptionsDef3,
        ]
    ]


class SigData:
    tracker_src_ip: Union[
        OneOfIpV4AddressOptionsDef1, OneOfIpV4AddressOptionsDef2
    ]
    # Interface name: IPsec when present
    interface: Optional[List[Interface]]
    interface_metadata_sharing: Optional[InterfaceMetadataSharing]
    # Configure services
    service: Optional[Service]
    sig_provider: Optional[OneOfSigProviderOptionsDef]
    # Tracker configuration
    tracker: Optional[List[Tracker]]


class Payload:
    """
    SIG schema for POST request
    """

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


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]
    # SIG schema for POST request
    payload: Optional[Payload]


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


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

    parcel_id: str
    metadata: Optional[Any]


class SigSecuritySigData:
    tracker_src_ip: Union[
        OneOfIpV4AddressOptionsDef1, OneOfIpV4AddressOptionsDef2
    ]
    # Interface name: IPsec when present
    interface: Optional[List[Interface]]
    interface_metadata_sharing: Optional[InterfaceMetadataSharing]
    # Configure services
    service: Optional[Service]
    sig_provider: Optional[OneOfSigProviderOptionsDef]
    # Tracker configuration
    tracker: Optional[List[Tracker]]


class CreateSigSecurityProfileParcel1PostRequest:
    """
    SIG schema for POST request
    """

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


class SigOneOfSigProviderOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigSigProviderDef


class SigInterfaceMetadataSharing:
    src_vpn: Optional[
        Union[OneOfSrcVpnOptionsDef1, OneOfSrcVpnOptionsDef2]
    ]


class SigOneOfInterfaceIfNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceDescriptionOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceAddressOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceTunnelSourceOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceTunnelRouteViaOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceTunnelRouteViaOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigOneOfInterfaceTunnelDestinationOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceApplicationOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigInterfaceApplicationDef


class SigOneOfInterfaceTunnelSetOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigInterfaceTunnelSetDef


class SigOneOfInterfaceTunnelDcPreferenceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigInterfaceTunnelDcPreferenceDef


class SigOneOfInterfaceTcpMssAdjustOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfInterfaceMtuOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfInterfaceDpdIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfInterfaceDpdIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfInterfaceDpdRetriesOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfInterfaceDpdRetriesOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfInterfaceIkeVersionOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfInterfaceIkeVersionOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfInterfacePreSharedSecretOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceIkeRekeyIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfInterfaceIkeRekeyIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfInterfaceIkeCiphersuiteOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigInterfaceIkeCiphersuiteDef


class SigOneOfInterfaceIkeCiphersuiteOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigDefaultInterfaceIkeCiphersuiteDef]


class SigOneOfInterfaceIkeGroupOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigInterfaceIkeGroupDef


class SigOneOfInterfaceIkeGroupOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigSecuritySigInterfaceIkeGroupDef]


class SigOneOfInterfaceIkeLocalIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceIkeRemoteIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceIpsecRekeyIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfInterfaceIpsecRekeyIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfInterfaceIpsecReplayWindowOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfInterfaceIpsecReplayWindowOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfInterfaceIpsecCiphersuiteOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigInterfaceIpsecCiphersuiteDef


class SigOneOfInterfaceIpsecCiphersuiteOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigSecuritySigInterfaceIpsecCiphersuiteDef]


class SigOneOfInterfacePerfectForwardSecrecyOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigInterfacePerfectForwardSecrecyDef


class SigOneOfInterfacePerfectForwardSecrecyOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigSecuritySigInterfacePerfectForwardSecrecyDef]


class SigOneOfInterfaceTrackerOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceTunnelPublicIpOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfInterfaceTunnelPublicIpOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigInterface:
    if_name: SigOneOfInterfaceIfNameOptionsDef
    tunnel_source_interface: Union[
        OneOfInterfaceTunnelSourceInterfaceOptionsDef1,
        OneOfInterfaceTunnelSourceInterfaceOptionsDef2,
    ]
    address: Optional[
        Union[
            SigOneOfInterfaceAddressOptionsDef1,
            OneOfInterfaceAddressOptionsDef2,
            OneOfInterfaceAddressOptionsDef3,
        ]
    ]
    application: Optional[SigOneOfInterfaceApplicationOptionsDef]
    auto: Optional[OneOfInterfaceAutoOptionsDef]
    description: Optional[
        Union[
            SigOneOfInterfaceDescriptionOptionsDef1,
            OneOfInterfaceDescriptionOptionsDef2,
            OneOfInterfaceDescriptionOptionsDef3,
        ]
    ]
    dpd_interval: Optional[
        Union[
            SigOneOfInterfaceDpdIntervalOptionsDef1,
            OneOfInterfaceDpdIntervalOptionsDef2,
            SigOneOfInterfaceDpdIntervalOptionsDef3,
        ]
    ]
    dpd_retries: Optional[
        Union[
            SigOneOfInterfaceDpdRetriesOptionsDef1,
            OneOfInterfaceDpdRetriesOptionsDef2,
            SigOneOfInterfaceDpdRetriesOptionsDef3,
        ]
    ]
    ike_ciphersuite: Optional[
        Union[
            SigOneOfInterfaceIkeCiphersuiteOptionsDef1,
            OneOfInterfaceIkeCiphersuiteOptionsDef2,
            SigOneOfInterfaceIkeCiphersuiteOptionsDef3,
        ]
    ]
    ike_group: Optional[
        Union[
            SigOneOfInterfaceIkeGroupOptionsDef1,
            OneOfInterfaceIkeGroupOptionsDef2,
            SigOneOfInterfaceIkeGroupOptionsDef3,
        ]
    ]
    ike_local_id: Optional[
        Union[
            SigOneOfInterfaceIkeLocalIdOptionsDef1,
            OneOfInterfaceIkeLocalIdOptionsDef2,
            OneOfInterfaceIkeLocalIdOptionsDef3,
        ]
    ]
    ike_rekey_interval: Optional[
        Union[
            SigOneOfInterfaceIkeRekeyIntervalOptionsDef1,
            OneOfInterfaceIkeRekeyIntervalOptionsDef2,
            SigOneOfInterfaceIkeRekeyIntervalOptionsDef3,
        ]
    ]
    ike_remote_id: Optional[
        Union[
            SigOneOfInterfaceIkeRemoteIdOptionsDef1,
            OneOfInterfaceIkeRemoteIdOptionsDef2,
            OneOfInterfaceIkeRemoteIdOptionsDef3,
        ]
    ]
    ike_version: Optional[
        Union[
            SigOneOfInterfaceIkeVersionOptionsDef1,
            OneOfInterfaceIkeVersionOptionsDef2,
            SigOneOfInterfaceIkeVersionOptionsDef3,
        ]
    ]
    ipsec_ciphersuite: Optional[
        Union[
            SigOneOfInterfaceIpsecCiphersuiteOptionsDef1,
            OneOfInterfaceIpsecCiphersuiteOptionsDef2,
            SigOneOfInterfaceIpsecCiphersuiteOptionsDef3,
        ]
    ]
    ipsec_rekey_interval: Optional[
        Union[
            SigOneOfInterfaceIpsecRekeyIntervalOptionsDef1,
            OneOfInterfaceIpsecRekeyIntervalOptionsDef2,
            SigOneOfInterfaceIpsecRekeyIntervalOptionsDef3,
        ]
    ]
    ipsec_replay_window: Optional[
        Union[
            SigOneOfInterfaceIpsecReplayWindowOptionsDef1,
            OneOfInterfaceIpsecReplayWindowOptionsDef2,
            SigOneOfInterfaceIpsecReplayWindowOptionsDef3,
        ]
    ]
    mtu: Optional[
        Union[
            SigOneOfInterfaceMtuOptionsDef1,
            OneOfInterfaceMtuOptionsDef2,
        ]
    ]
    perfect_forward_secrecy: Optional[
        Union[
            SigOneOfInterfacePerfectForwardSecrecyOptionsDef1,
            OneOfInterfacePerfectForwardSecrecyOptionsDef2,
            SigOneOfInterfacePerfectForwardSecrecyOptionsDef3,
        ]
    ]
    pre_shared_key_dynamic: Optional[
        OneOfInterfacePreSharedKeyDynamicOptionsDef
    ]
    pre_shared_secret: Optional[
        Union[
            SigOneOfInterfacePreSharedSecretOptionsDef1,
            OneOfInterfacePreSharedSecretOptionsDef2,
            OneOfInterfacePreSharedSecretOptionsDef3,
        ]
    ]
    shutdown: Optional[
        Union[
            OneOfInterfaceShutdownOptionsDef1,
            OneOfInterfaceShutdownOptionsDef2,
        ]
    ]
    tcp_mss_adjust: Optional[
        Union[
            SigOneOfInterfaceTcpMssAdjustOptionsDef1,
            OneOfInterfaceTcpMssAdjustOptionsDef2,
            OneOfInterfaceTcpMssAdjustOptionsDef3,
        ]
    ]
    track_enable: Optional[
        Union[
            OneOfInterfaceTrackEnableOptionsDef1,
            OneOfInterfaceTrackEnableOptionsDef2,
        ]
    ]
    tracker: Optional[
        Union[
            SigOneOfInterfaceTrackerOptionsDef1,
            OneOfInterfaceTrackerOptionsDef2,
        ]
    ]
    tunnel_dc_preference: Optional[
        SigOneOfInterfaceTunnelDcPreferenceOptionsDef
    ]
    tunnel_destination: Optional[
        Union[
            SigOneOfInterfaceTunnelDestinationOptionsDef1,
            OneOfInterfaceTunnelDestinationOptionsDef2,
        ]
    ]
    tunnel_public_ip: Optional[
        Union[
            SigOneOfInterfaceTunnelPublicIpOptionsDef1,
            OneOfInterfaceTunnelPublicIpOptionsDef2,
            SigOneOfInterfaceTunnelPublicIpOptionsDef3,
        ]
    ]
    tunnel_route_via: Optional[
        Union[
            SigOneOfInterfaceTunnelRouteViaOptionsDef1,
            OneOfInterfaceTunnelRouteViaOptionsDef2,
            SigOneOfInterfaceTunnelRouteViaOptionsDef3,
        ]
    ]
    tunnel_set: Optional[SigOneOfInterfaceTunnelSetOptionsDef]
    tunnel_source: Optional[
        Union[
            SigOneOfInterfaceTunnelSourceOptionsDef1,
            OneOfInterfaceTunnelSourceOptionsDef2,
        ]
    ]
    unnumbered: Optional[OneOfInterfaceUnnumberedOptionsDef]


class SigOneOfServiceInterfacePairActiveInterfaceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfServiceInterfacePairActiveInterfaceWeightOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfServiceInterfacePairBackupInterfaceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfServiceInterfacePairBackupInterfaceWeightOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class SigInterfacePair:
    active_interface: (
        SigOneOfServiceInterfacePairActiveInterfaceOptionsDef
    )
    backup_interface: (
        SigOneOfServiceInterfacePairBackupInterfaceOptionsDef
    )
    active_interface_weight: Optional[
        SigOneOfServiceInterfacePairActiveInterfaceWeightOptionsDef
    ]
    backup_interface_weight: Optional[
        SigOneOfServiceInterfacePairBackupInterfaceWeightOptionsDef
    ]


class SigOneOfServicePrimaryDataCenterOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfServicePrimaryDataCenterOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigOneOfServiceSecondaryDataCenterOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfServiceSecondaryDataCenterOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigOneOfServiceIdleTimeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfServiceIdleTimeOptionsDef2:
    option_type: DefaultOptionTypeDef
    value: int


class SigOneOfServiceDisplayTimeUnitOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigServiceDisplayTimeUnitDef


class SigOneOfServiceDisplayTimeUnitOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigDefaultServiceDisplayTimeUnitDef]


class SigOneOfServiceRefreshTimeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfServiceRefreshTimeOptionsDef2:
    option_type: DefaultOptionTypeDef
    value: int


class SigOneOfServiceRefreshTimeUnitOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigServiceRefreshTimeUnitDef


class SigOneOfServiceRefreshTimeUnitOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigDefaultServiceRefreshTimeUnitDef]


class SigOneOfServiceTimeoutOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfServiceTimeoutOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfServiceLocationNameOptionsDef1:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigOneOfServiceDataCenterPrimaryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfServiceDataCenterPrimaryOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigOneOfServiceDataCenterSecondaryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfServiceDataCenterSecondaryOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigService:
    """
    Configure services
    """

    auth_required: Optional[
        Union[
            OneOfServiceAuthRequiredOptionsDef1,
            OneOfServiceAuthRequiredOptionsDef2,
        ]
    ]
    block_internet_until_accepted: Optional[
        Union[
            OneOfServiceBlockInternetUntilAcceptedOptionsDef1,
            OneOfServiceBlockInternetUntilAcceptedOptionsDef2,
        ]
    ]
    caution_enabled: Optional[
        Union[
            OneOfServiceCautionEnabledOptionsDef1,
            OneOfServiceCautionEnabledOptionsDef2,
        ]
    ]
    data_center_primary: Optional[
        Union[
            SigOneOfServiceDataCenterPrimaryOptionsDef1,
            SigOneOfServiceDataCenterPrimaryOptionsDef2,
            OneOfServiceDataCenterPrimaryOptionsDef3,
        ]
    ]
    data_center_secondary: Optional[
        Union[
            SigOneOfServiceDataCenterSecondaryOptionsDef1,
            SigOneOfServiceDataCenterSecondaryOptionsDef2,
            OneOfServiceDataCenterSecondaryOptionsDef3,
        ]
    ]
    display_time_unit: Optional[
        Union[
            SigOneOfServiceDisplayTimeUnitOptionsDef1,
            SigOneOfServiceDisplayTimeUnitOptionsDef2,
        ]
    ]
    enabled: Optional[
        Union[
            OneOfServiceEnabledOptionsDef1,
            OneOfServiceEnabledOptionsDef2,
        ]
    ]
    force_ssl_inspection: Optional[
        Union[
            OneOfServiceForceSslInspectionOptionsDef1,
            OneOfServiceForceSslInspectionOptionsDef2,
        ]
    ]
    idle_time: Optional[
        Union[
            SigOneOfServiceIdleTimeOptionsDef1,
            SigOneOfServiceIdleTimeOptionsDef2,
        ]
    ]
    # Interface Pair for active and backup
    interface_pair: Optional[List[SigInterfacePair]]
    ip: Optional[
        Union[OneOfServiceIpOptionsDef1, OneOfServiceIpOptionsDef2]
    ]
    ip_enforced_for_known_browsers: Optional[
        Union[
            OneOfServiceIpEnforcedForKnownBrowsersOptionsDef1,
            OneOfServiceIpEnforcedForKnownBrowsersOptionsDef2,
        ]
    ]
    ips_control: Optional[
        Union[
            OneOfServiceIpsControlOptionsDef1,
            OneOfServiceIpsControlOptionsDef2,
        ]
    ]
    location_name: Optional[
        Union[
            SigOneOfServiceLocationNameOptionsDef1,
            OneOfServiceLocationNameOptionsDef2,
        ]
    ]
    ofw_enabled: Optional[
        Union[
            OneOfServiceOfwEnabledOptionsDef1,
            OneOfServiceOfwEnabledOptionsDef2,
        ]
    ]
    primary_data_center: Optional[
        Union[
            SigOneOfServicePrimaryDataCenterOptionsDef1,
            SigOneOfServicePrimaryDataCenterOptionsDef2,
            OneOfServicePrimaryDataCenterOptionsDef3,
        ]
    ]
    refresh_time: Optional[
        Union[
            SigOneOfServiceRefreshTimeOptionsDef1,
            SigOneOfServiceRefreshTimeOptionsDef2,
        ]
    ]
    refresh_time_unit: Optional[
        Union[
            SigOneOfServiceRefreshTimeUnitOptionsDef1,
            SigOneOfServiceRefreshTimeUnitOptionsDef2,
        ]
    ]
    secondary_data_center: Optional[
        Union[
            SigOneOfServiceSecondaryDataCenterOptionsDef1,
            SigOneOfServiceSecondaryDataCenterOptionsDef2,
            OneOfServiceSecondaryDataCenterOptionsDef3,
        ]
    ]
    timeout: Optional[
        Union[
            SigOneOfServiceTimeoutOptionsDef1,
            SigOneOfServiceTimeoutOptionsDef2,
        ]
    ]
    xff_forward_enabled: Optional[
        Union[
            OneOfServiceXffForwardEnabledOptionsDef1,
            OneOfServiceXffForwardEnabledOptionsDef2,
        ]
    ]


class SigOneOfTrackerNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfTrackerEndpointApiUrlOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigOneOfTrackerThresholdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfTrackerThresholdOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfTrackerIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfTrackerIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfTrackerMultiplierOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigOneOfTrackerMultiplierOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigOneOfTrackerTrackerTypeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigTrackerTrackerTypeDef


class SigTracker:
    endpoint_api_url: Union[
        SigOneOfTrackerEndpointApiUrlOptionsDef1,
        OneOfTrackerEndpointApiUrlOptionsDef2,
    ]
    name: SigOneOfTrackerNameOptionsDef
    tracker_type: SigOneOfTrackerTrackerTypeOptionsDef
    interval: Optional[
        Union[
            SigOneOfTrackerIntervalOptionsDef1,
            OneOfTrackerIntervalOptionsDef2,
            SigOneOfTrackerIntervalOptionsDef3,
        ]
    ]
    multiplier: Optional[
        Union[
            SigOneOfTrackerMultiplierOptionsDef1,
            OneOfTrackerMultiplierOptionsDef2,
            SigOneOfTrackerMultiplierOptionsDef3,
        ]
    ]
    threshold: Optional[
        Union[
            SigOneOfTrackerThresholdOptionsDef1,
            OneOfTrackerThresholdOptionsDef2,
            SigOneOfTrackerThresholdOptionsDef3,
        ]
    ]


class SdwanSigSecuritySigData:
    tracker_src_ip: Union[
        OneOfIpV4AddressOptionsDef1, OneOfIpV4AddressOptionsDef2
    ]
    # Interface name: IPsec when present
    interface: Optional[List[SigInterface]]
    interface_metadata_sharing: Optional[SigInterfaceMetadataSharing]
    # Configure services
    service: Optional[SigService]
    sig_provider: Optional[SigOneOfSigProviderOptionsDef]
    # Tracker configuration
    tracker: Optional[List[SigTracker]]


class SigPayload:
    """
    SIG schema for PUT request
    """

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


class GetSingleSdwanSigSecuritySigPayload:
    # 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]
    # SIG schema for PUT request
    payload: Optional[SigPayload]


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

    id: str
    metadata: Optional[Any]


class SigSecuritySigOneOfSigProviderOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigSecuritySigSigProviderDef


class SigSecuritySigInterfaceMetadataSharing:
    src_vpn: Optional[
        Union[OneOfSrcVpnOptionsDef1, OneOfSrcVpnOptionsDef2]
    ]


class SigSecuritySigOneOfInterfaceIfNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceDescriptionOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceAddressOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceTunnelSourceOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceTunnelRouteViaOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceTunnelRouteViaOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigSecuritySigOneOfInterfaceTunnelDestinationOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceApplicationOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigSecuritySigInterfaceApplicationDef


class SigSecuritySigOneOfInterfaceTunnelSetOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigSecuritySigInterfaceTunnelSetDef


class SigSecuritySigOneOfInterfaceTunnelDcPreferenceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigSecuritySigInterfaceTunnelDcPreferenceDef


class SigSecuritySigOneOfInterfaceTcpMssAdjustOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfInterfaceMtuOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfInterfaceDpdIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfInterfaceDpdIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfInterfaceDpdRetriesOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfInterfaceDpdRetriesOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfInterfaceIkeVersionOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfInterfaceIkeVersionOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfInterfacePreSharedSecretOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceIkeRekeyIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfInterfaceIkeRekeyIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfInterfaceIkeCiphersuiteOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigSecuritySigInterfaceIkeCiphersuiteDef


class SigSecuritySigOneOfInterfaceIkeCiphersuiteOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigSecuritySigDefaultInterfaceIkeCiphersuiteDef]


class SigSecuritySigOneOfInterfaceIkeGroupOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SdwanSigSecuritySigInterfaceIkeGroupDef


class SigSecuritySigOneOfInterfaceIkeGroupOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[
        FeatureProfileSdwanSigSecuritySigInterfaceIkeGroupDef
    ]


class SigSecuritySigOneOfInterfaceIkeLocalIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceIkeRemoteIdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceIpsecRekeyIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfInterfaceIpsecRekeyIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfInterfaceIpsecReplayWindowOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfInterfaceIpsecReplayWindowOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfInterfaceIpsecCiphersuiteOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SdwanSigSecuritySigInterfaceIpsecCiphersuiteDef


class SigSecuritySigOneOfInterfaceIpsecCiphersuiteOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[
        FeatureProfileSdwanSigSecuritySigInterfaceIpsecCiphersuiteDef
    ]


class SigSecuritySigOneOfInterfacePerfectForwardSecrecyOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SdwanSigSecuritySigInterfacePerfectForwardSecrecyDef


class SigSecuritySigOneOfInterfacePerfectForwardSecrecyOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[
        FeatureProfileSdwanSigSecuritySigInterfacePerfectForwardSecrecyDef
    ]


class SigSecuritySigOneOfInterfaceTrackerOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceTunnelPublicIpOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfInterfaceTunnelPublicIpOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigSecuritySigInterface:
    if_name: SigSecuritySigOneOfInterfaceIfNameOptionsDef
    tunnel_source_interface: Union[
        OneOfInterfaceTunnelSourceInterfaceOptionsDef1,
        OneOfInterfaceTunnelSourceInterfaceOptionsDef2,
    ]
    address: Optional[
        Union[
            SigSecuritySigOneOfInterfaceAddressOptionsDef1,
            OneOfInterfaceAddressOptionsDef2,
            OneOfInterfaceAddressOptionsDef3,
        ]
    ]
    application: Optional[
        SigSecuritySigOneOfInterfaceApplicationOptionsDef
    ]
    auto: Optional[OneOfInterfaceAutoOptionsDef]
    description: Optional[
        Union[
            SigSecuritySigOneOfInterfaceDescriptionOptionsDef1,
            OneOfInterfaceDescriptionOptionsDef2,
            OneOfInterfaceDescriptionOptionsDef3,
        ]
    ]
    dpd_interval: Optional[
        Union[
            SigSecuritySigOneOfInterfaceDpdIntervalOptionsDef1,
            OneOfInterfaceDpdIntervalOptionsDef2,
            SigSecuritySigOneOfInterfaceDpdIntervalOptionsDef3,
        ]
    ]
    dpd_retries: Optional[
        Union[
            SigSecuritySigOneOfInterfaceDpdRetriesOptionsDef1,
            OneOfInterfaceDpdRetriesOptionsDef2,
            SigSecuritySigOneOfInterfaceDpdRetriesOptionsDef3,
        ]
    ]
    ike_ciphersuite: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIkeCiphersuiteOptionsDef1,
            OneOfInterfaceIkeCiphersuiteOptionsDef2,
            SigSecuritySigOneOfInterfaceIkeCiphersuiteOptionsDef3,
        ]
    ]
    ike_group: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIkeGroupOptionsDef1,
            OneOfInterfaceIkeGroupOptionsDef2,
            SigSecuritySigOneOfInterfaceIkeGroupOptionsDef3,
        ]
    ]
    ike_local_id: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIkeLocalIdOptionsDef1,
            OneOfInterfaceIkeLocalIdOptionsDef2,
            OneOfInterfaceIkeLocalIdOptionsDef3,
        ]
    ]
    ike_rekey_interval: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIkeRekeyIntervalOptionsDef1,
            OneOfInterfaceIkeRekeyIntervalOptionsDef2,
            SigSecuritySigOneOfInterfaceIkeRekeyIntervalOptionsDef3,
        ]
    ]
    ike_remote_id: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIkeRemoteIdOptionsDef1,
            OneOfInterfaceIkeRemoteIdOptionsDef2,
            OneOfInterfaceIkeRemoteIdOptionsDef3,
        ]
    ]
    ike_version: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIkeVersionOptionsDef1,
            OneOfInterfaceIkeVersionOptionsDef2,
            SigSecuritySigOneOfInterfaceIkeVersionOptionsDef3,
        ]
    ]
    ipsec_ciphersuite: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIpsecCiphersuiteOptionsDef1,
            OneOfInterfaceIpsecCiphersuiteOptionsDef2,
            SigSecuritySigOneOfInterfaceIpsecCiphersuiteOptionsDef3,
        ]
    ]
    ipsec_rekey_interval: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIpsecRekeyIntervalOptionsDef1,
            OneOfInterfaceIpsecRekeyIntervalOptionsDef2,
            SigSecuritySigOneOfInterfaceIpsecRekeyIntervalOptionsDef3,
        ]
    ]
    ipsec_replay_window: Optional[
        Union[
            SigSecuritySigOneOfInterfaceIpsecReplayWindowOptionsDef1,
            OneOfInterfaceIpsecReplayWindowOptionsDef2,
            SigSecuritySigOneOfInterfaceIpsecReplayWindowOptionsDef3,
        ]
    ]
    mtu: Optional[
        Union[
            SigSecuritySigOneOfInterfaceMtuOptionsDef1,
            OneOfInterfaceMtuOptionsDef2,
        ]
    ]
    perfect_forward_secrecy: Optional[
        Union[
            SigSecuritySigOneOfInterfacePerfectForwardSecrecyOptionsDef1,
            OneOfInterfacePerfectForwardSecrecyOptionsDef2,
            SigSecuritySigOneOfInterfacePerfectForwardSecrecyOptionsDef3,
        ]
    ]
    pre_shared_key_dynamic: Optional[
        OneOfInterfacePreSharedKeyDynamicOptionsDef
    ]
    pre_shared_secret: Optional[
        Union[
            SigSecuritySigOneOfInterfacePreSharedSecretOptionsDef1,
            OneOfInterfacePreSharedSecretOptionsDef2,
            OneOfInterfacePreSharedSecretOptionsDef3,
        ]
    ]
    shutdown: Optional[
        Union[
            OneOfInterfaceShutdownOptionsDef1,
            OneOfInterfaceShutdownOptionsDef2,
        ]
    ]
    tcp_mss_adjust: Optional[
        Union[
            SigSecuritySigOneOfInterfaceTcpMssAdjustOptionsDef1,
            OneOfInterfaceTcpMssAdjustOptionsDef2,
            OneOfInterfaceTcpMssAdjustOptionsDef3,
        ]
    ]
    track_enable: Optional[
        Union[
            OneOfInterfaceTrackEnableOptionsDef1,
            OneOfInterfaceTrackEnableOptionsDef2,
        ]
    ]
    tracker: Optional[
        Union[
            SigSecuritySigOneOfInterfaceTrackerOptionsDef1,
            OneOfInterfaceTrackerOptionsDef2,
        ]
    ]
    tunnel_dc_preference: Optional[
        SigSecuritySigOneOfInterfaceTunnelDcPreferenceOptionsDef
    ]
    tunnel_destination: Optional[
        Union[
            SigSecuritySigOneOfInterfaceTunnelDestinationOptionsDef1,
            OneOfInterfaceTunnelDestinationOptionsDef2,
        ]
    ]
    tunnel_public_ip: Optional[
        Union[
            SigSecuritySigOneOfInterfaceTunnelPublicIpOptionsDef1,
            OneOfInterfaceTunnelPublicIpOptionsDef2,
            SigSecuritySigOneOfInterfaceTunnelPublicIpOptionsDef3,
        ]
    ]
    tunnel_route_via: Optional[
        Union[
            SigSecuritySigOneOfInterfaceTunnelRouteViaOptionsDef1,
            OneOfInterfaceTunnelRouteViaOptionsDef2,
            SigSecuritySigOneOfInterfaceTunnelRouteViaOptionsDef3,
        ]
    ]
    tunnel_set: Optional[
        SigSecuritySigOneOfInterfaceTunnelSetOptionsDef
    ]
    tunnel_source: Optional[
        Union[
            SigSecuritySigOneOfInterfaceTunnelSourceOptionsDef1,
            OneOfInterfaceTunnelSourceOptionsDef2,
        ]
    ]
    unnumbered: Optional[OneOfInterfaceUnnumberedOptionsDef]


class SigSecuritySigOneOfServiceInterfacePairActiveInterfaceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfServiceInterfacePairActiveInterfaceWeightOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfServiceInterfacePairBackupInterfaceOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfServiceInterfacePairBackupInterfaceWeightOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigInterfacePair:
    active_interface: SigSecuritySigOneOfServiceInterfacePairActiveInterfaceOptionsDef
    backup_interface: SigSecuritySigOneOfServiceInterfacePairBackupInterfaceOptionsDef
    active_interface_weight: Optional[
        SigSecuritySigOneOfServiceInterfacePairActiveInterfaceWeightOptionsDef
    ]
    backup_interface_weight: Optional[
        SigSecuritySigOneOfServiceInterfacePairBackupInterfaceWeightOptionsDef
    ]


class SigSecuritySigOneOfServicePrimaryDataCenterOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfServicePrimaryDataCenterOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigSecuritySigOneOfServiceSecondaryDataCenterOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfServiceSecondaryDataCenterOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigSecuritySigOneOfServiceIdleTimeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfServiceIdleTimeOptionsDef2:
    option_type: DefaultOptionTypeDef
    value: int


class SigSecuritySigOneOfServiceDisplayTimeUnitOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigSecuritySigServiceDisplayTimeUnitDef


class SigSecuritySigOneOfServiceDisplayTimeUnitOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigSecuritySigDefaultServiceDisplayTimeUnitDef]


class SigSecuritySigOneOfServiceRefreshTimeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfServiceRefreshTimeOptionsDef2:
    option_type: DefaultOptionTypeDef
    value: int


class SigSecuritySigOneOfServiceRefreshTimeUnitOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: SigSecuritySigServiceRefreshTimeUnitDef


class SigSecuritySigOneOfServiceRefreshTimeUnitOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[SigSecuritySigDefaultServiceRefreshTimeUnitDef]


class SigSecuritySigOneOfServiceTimeoutOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfServiceTimeoutOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfServiceLocationNameOptionsDef1:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigSecuritySigOneOfServiceDataCenterPrimaryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfServiceDataCenterPrimaryOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigSecuritySigOneOfServiceDataCenterSecondaryOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfServiceDataCenterSecondaryOptionsDef2:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[str]


class SigSecuritySigService:
    """
    Configure services
    """

    auth_required: Optional[
        Union[
            OneOfServiceAuthRequiredOptionsDef1,
            OneOfServiceAuthRequiredOptionsDef2,
        ]
    ]
    block_internet_until_accepted: Optional[
        Union[
            OneOfServiceBlockInternetUntilAcceptedOptionsDef1,
            OneOfServiceBlockInternetUntilAcceptedOptionsDef2,
        ]
    ]
    caution_enabled: Optional[
        Union[
            OneOfServiceCautionEnabledOptionsDef1,
            OneOfServiceCautionEnabledOptionsDef2,
        ]
    ]
    data_center_primary: Optional[
        Union[
            SigSecuritySigOneOfServiceDataCenterPrimaryOptionsDef1,
            SigSecuritySigOneOfServiceDataCenterPrimaryOptionsDef2,
            OneOfServiceDataCenterPrimaryOptionsDef3,
        ]
    ]
    data_center_secondary: Optional[
        Union[
            SigSecuritySigOneOfServiceDataCenterSecondaryOptionsDef1,
            SigSecuritySigOneOfServiceDataCenterSecondaryOptionsDef2,
            OneOfServiceDataCenterSecondaryOptionsDef3,
        ]
    ]
    display_time_unit: Optional[
        Union[
            SigSecuritySigOneOfServiceDisplayTimeUnitOptionsDef1,
            SigSecuritySigOneOfServiceDisplayTimeUnitOptionsDef2,
        ]
    ]
    enabled: Optional[
        Union[
            OneOfServiceEnabledOptionsDef1,
            OneOfServiceEnabledOptionsDef2,
        ]
    ]
    force_ssl_inspection: Optional[
        Union[
            OneOfServiceForceSslInspectionOptionsDef1,
            OneOfServiceForceSslInspectionOptionsDef2,
        ]
    ]
    idle_time: Optional[
        Union[
            SigSecuritySigOneOfServiceIdleTimeOptionsDef1,
            SigSecuritySigOneOfServiceIdleTimeOptionsDef2,
        ]
    ]
    # Interface Pair for active and backup
    interface_pair: Optional[List[SigSecuritySigInterfacePair]]
    ip: Optional[
        Union[OneOfServiceIpOptionsDef1, OneOfServiceIpOptionsDef2]
    ]
    ip_enforced_for_known_browsers: Optional[
        Union[
            OneOfServiceIpEnforcedForKnownBrowsersOptionsDef1,
            OneOfServiceIpEnforcedForKnownBrowsersOptionsDef2,
        ]
    ]
    ips_control: Optional[
        Union[
            OneOfServiceIpsControlOptionsDef1,
            OneOfServiceIpsControlOptionsDef2,
        ]
    ]
    location_name: Optional[
        Union[
            SigSecuritySigOneOfServiceLocationNameOptionsDef1,
            OneOfServiceLocationNameOptionsDef2,
        ]
    ]
    ofw_enabled: Optional[
        Union[
            OneOfServiceOfwEnabledOptionsDef1,
            OneOfServiceOfwEnabledOptionsDef2,
        ]
    ]
    primary_data_center: Optional[
        Union[
            SigSecuritySigOneOfServicePrimaryDataCenterOptionsDef1,
            SigSecuritySigOneOfServicePrimaryDataCenterOptionsDef2,
            OneOfServicePrimaryDataCenterOptionsDef3,
        ]
    ]
    refresh_time: Optional[
        Union[
            SigSecuritySigOneOfServiceRefreshTimeOptionsDef1,
            SigSecuritySigOneOfServiceRefreshTimeOptionsDef2,
        ]
    ]
    refresh_time_unit: Optional[
        Union[
            SigSecuritySigOneOfServiceRefreshTimeUnitOptionsDef1,
            SigSecuritySigOneOfServiceRefreshTimeUnitOptionsDef2,
        ]
    ]
    secondary_data_center: Optional[
        Union[
            SigSecuritySigOneOfServiceSecondaryDataCenterOptionsDef1,
            SigSecuritySigOneOfServiceSecondaryDataCenterOptionsDef2,
            OneOfServiceSecondaryDataCenterOptionsDef3,
        ]
    ]
    timeout: Optional[
        Union[
            SigSecuritySigOneOfServiceTimeoutOptionsDef1,
            SigSecuritySigOneOfServiceTimeoutOptionsDef2,
        ]
    ]
    xff_forward_enabled: Optional[
        Union[
            OneOfServiceXffForwardEnabledOptionsDef1,
            OneOfServiceXffForwardEnabledOptionsDef2,
        ]
    ]


class SigSecuritySigOneOfTrackerNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfTrackerEndpointApiUrlOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class SigSecuritySigOneOfTrackerThresholdOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfTrackerThresholdOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfTrackerIntervalOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfTrackerIntervalOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfTrackerMultiplierOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class SigSecuritySigOneOfTrackerMultiplierOptionsDef3:
    option_type: Optional[DefaultOptionTypeDef]
    value: Optional[int]


class SigSecuritySigOneOfTrackerTrackerTypeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: SigSecuritySigTrackerTrackerTypeDef


class SigSecuritySigTracker:
    endpoint_api_url: Union[
        SigSecuritySigOneOfTrackerEndpointApiUrlOptionsDef1,
        OneOfTrackerEndpointApiUrlOptionsDef2,
    ]
    name: SigSecuritySigOneOfTrackerNameOptionsDef
    tracker_type: SigSecuritySigOneOfTrackerTrackerTypeOptionsDef
    interval: Optional[
        Union[
            SigSecuritySigOneOfTrackerIntervalOptionsDef1,
            OneOfTrackerIntervalOptionsDef2,
            SigSecuritySigOneOfTrackerIntervalOptionsDef3,
        ]
    ]
    multiplier: Optional[
        Union[
            SigSecuritySigOneOfTrackerMultiplierOptionsDef1,
            OneOfTrackerMultiplierOptionsDef2,
            SigSecuritySigOneOfTrackerMultiplierOptionsDef3,
        ]
    ]
    threshold: Optional[
        Union[
            SigSecuritySigOneOfTrackerThresholdOptionsDef1,
            OneOfTrackerThresholdOptionsDef2,
            SigSecuritySigOneOfTrackerThresholdOptionsDef3,
        ]
    ]


class FeatureProfileSdwanSigSecuritySigData:
    tracker_src_ip: Union[
        OneOfIpV4AddressOptionsDef1, OneOfIpV4AddressOptionsDef2
    ]
    # Interface name: IPsec when present
    interface: Optional[List[SigSecuritySigInterface]]
    interface_metadata_sharing: Optional[
        SigSecuritySigInterfaceMetadataSharing
    ]
    # Configure services
    service: Optional[SigSecuritySigService]
    sig_provider: Optional[SigSecuritySigOneOfSigProviderOptionsDef]
    # Tracker configuration
    tracker: Optional[List[SigSecuritySigTracker]]


class EditSigSecurityProfileParcel1PutRequest:
    """
    SIG schema for PUT request
    """

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