"""Response schemas for wireless endpoints.

This module is automatically @generated from the Meraki API specification.
Do not edit this file manually.
"""

from __future__ import annotations

from datetime import datetime
from typing import Any

from pydantic import Field, RootModel

from meraki_client.schemas._base import _BaseSchema


class AssignNetworkWirelessEthernetPortsProfilesResponse(_BaseSchema):
    """Response for assignNetworkWirelessEthernetPortsProfiles operation."""

    serials: list[str] = Field(default_factory=list)
    profile_id: str | None = Field(
        default=None, validation_alias="profileId", serialization_alias="profileId"
    )


class CreateDeviceWirelessZigbeeEnrollmentResponse(_BaseSchema):
    """Response for createDeviceWirelessZigbeeEnrollment operation."""

    enrollment_id: str | None = Field(
        default=None, validation_alias="enrollmentId", serialization_alias="enrollmentId"
    )
    url: str | None = None
    request: CreateDeviceWirelessZigbeeEnrollmentResponseRequest | None = None
    status: str | None = None


class CreateDeviceWirelessZigbeeEnrollmentResponseRequest(_BaseSchema):
    """Enrollment parameters."""

    serial: str | None = None


class CreateNetworkWirelessAirMarshalRuleMatch(_BaseSchema):
    """Object describing the rule specification."""

    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    string: str | None = None


class CreateNetworkWirelessAirMarshalRuleResponse(_BaseSchema):
    """Response for createNetworkWirelessAirMarshalRule operation."""

    network: WirelessDoorLocksNetwork | None = None
    rule_id: str | None = Field(
        default=None, validation_alias="ruleId", serialization_alias="ruleId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    updated_at: datetime | None = Field(
        default=None, validation_alias="updatedAt", serialization_alias="updatedAt"
    )
    created_at: datetime | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    match: CreateNetworkWirelessAirMarshalRuleResponseMatch | None = None


class CreateNetworkWirelessAirMarshalRuleResponseMatch(_BaseSchema):
    """Indicates whether or not clients are allowed to connect to rogue SSIDs by default. (blocked
    by default).
    """

    string: str | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")


class CreateNetworkWirelessEthernetPortsProfilePortsItem(_BaseSchema):
    """Item schema for ports."""

    name: str
    enabled: bool | None = None
    ssid: int | None = None
    psk_group_id: str | None = Field(
        default=None, validation_alias="pskGroupId", serialization_alias="pskGroupId"
    )


class CreateNetworkWirelessEthernetPortsProfileResponse(_BaseSchema):
    """Response for createNetworkWirelessEthernetPortsProfile operation."""

    profile_id: str | None = Field(
        default=None, validation_alias="profileId", serialization_alias="profileId"
    )
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    ports: list[WirelessPortsItem] = Field(default_factory=list)
    usb_ports: list[WirelessUsbPortsItem] = Field(
        default_factory=list, validation_alias="usbPorts", serialization_alias="usbPorts"
    )


class CreateNetworkWirelessEthernetPortsProfileUsbPortsItem(_BaseSchema):
    """Item schema for usbPorts."""

    name: str
    enabled: bool | None = None
    ssid: int | None = None


class CreateNetworkWirelessRfProfileApBandSettings(_BaseSchema):
    """Settings that will be enabled if selectionType is set to 'ap'."""

    band_operation_mode: str | None = Field(
        default=None, validation_alias="bandOperationMode", serialization_alias="bandOperationMode"
    )
    bands: CreateNetworkWirelessRfProfileApBandSettingsBands | None = None
    band_steering_enabled: bool | None = Field(
        default=None,
        validation_alias="bandSteeringEnabled",
        serialization_alias="bandSteeringEnabled",
    )


class CreateNetworkWirelessRfProfileApBandSettingsBands(_BaseSchema):
    """Settings related to all bands."""

    enabled: list[str] = Field(default_factory=list)


class CreateNetworkWirelessRfProfileFiveGhzSettings(_BaseSchema):
    """Settings related to 5Ghz band."""

    max_power: int | None = Field(
        default=None, validation_alias="maxPower", serialization_alias="maxPower"
    )
    min_power: int | None = Field(
        default=None, validation_alias="minPower", serialization_alias="minPower"
    )
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    valid_auto_channels: list[int] = Field(
        default_factory=list,
        validation_alias="validAutoChannels",
        serialization_alias="validAutoChannels",
    )
    channel_width: str | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    rxsop: int | None = None


class CreateNetworkWirelessRfProfileFlexRadios(_BaseSchema):
    """Flex radio settings."""

    by_model: list[CreateNetworkWirelessRfProfileFlexRadiosByModelItem] = Field(
        default_factory=list, validation_alias="byModel", serialization_alias="byModel"
    )


class CreateNetworkWirelessRfProfileFlexRadiosByModelItem(_BaseSchema):
    """Schema for CreateNetworkWirelessRfProfileFlexRadiosByModelItem."""

    model: str | None = None
    bands: list[str] = Field(default_factory=list)


class CreateNetworkWirelessRfProfilePerSsidSettings(_BaseSchema):
    """Per-SSID radio settings by number."""

    n_0: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="0", serialization_alias="0"
    )
    n_1: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="1", serialization_alias="1"
    )
    n_2: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="2", serialization_alias="2"
    )
    n_3: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="3", serialization_alias="3"
    )
    n_4: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="4", serialization_alias="4"
    )
    n_5: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="5", serialization_alias="5"
    )
    n_6: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="6", serialization_alias="6"
    )
    n_7: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="7", serialization_alias="7"
    )
    n_8: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="8", serialization_alias="8"
    )
    n_9: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="9", serialization_alias="9"
    )
    n_10: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="10", serialization_alias="10"
    )
    n_11: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="11", serialization_alias="11"
    )
    n_12: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="12", serialization_alias="12"
    )
    n_13: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="13", serialization_alias="13"
    )
    n_14: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="14", serialization_alias="14"
    )


class CreateNetworkWirelessRfProfilePerSsidSettings0(_BaseSchema):
    """Settings for SSID 0."""

    min_bitrate: float | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    band_operation_mode: str | None = Field(
        default=None, validation_alias="bandOperationMode", serialization_alias="bandOperationMode"
    )
    bands: CreateNetworkWirelessRfProfileApBandSettingsBands | None = None
    band_steering_enabled: bool | None = Field(
        default=None,
        validation_alias="bandSteeringEnabled",
        serialization_alias="bandSteeringEnabled",
    )


class CreateNetworkWirelessRfProfileResponse(_BaseSchema):
    """Response for createNetworkWirelessRfProfile operation."""

    id: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    client_balancing_enabled: bool | None = Field(
        default=None,
        validation_alias="clientBalancingEnabled",
        serialization_alias="clientBalancingEnabled",
    )
    min_bitrate_type: str | None = Field(
        default=None, validation_alias="minBitrateType", serialization_alias="minBitrateType"
    )
    band_selection_type: str | None = Field(
        default=None, validation_alias="bandSelectionType", serialization_alias="bandSelectionType"
    )
    ap_band_settings: GetNetworkWirelessRfProfilesResponseApBandSettings | None = Field(
        default=None, validation_alias="apBandSettings", serialization_alias="apBandSettings"
    )
    two_four_ghz_settings: GetNetworkWirelessRfProfilesResponseTwoFourGhzSettings | None = Field(
        default=None,
        validation_alias="twoFourGhzSettings",
        serialization_alias="twoFourGhzSettings",
    )
    five_ghz_settings: GetNetworkWirelessRfProfilesResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="fiveGhzSettings", serialization_alias="fiveGhzSettings"
    )
    six_ghz_settings: GetNetworkWirelessRfProfilesResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="sixGhzSettings", serialization_alias="sixGhzSettings"
    )
    transmission: WirelessBusyHourMinimizeChanges | None = None
    per_ssid_settings: GetNetworkWirelessRfProfilesResponsePerSsidSettings | None = Field(
        default=None, validation_alias="perSsidSettings", serialization_alias="perSsidSettings"
    )
    is_indoor_default: bool | None = Field(
        default=None, validation_alias="isIndoorDefault", serialization_alias="isIndoorDefault"
    )
    is_outdoor_default: bool | None = Field(
        default=None, validation_alias="isOutdoorDefault", serialization_alias="isOutdoorDefault"
    )


class CreateNetworkWirelessRfProfileSixGhzSettings(_BaseSchema):
    """Settings related to 6Ghz band. Only applicable to networks with 6Ghz capable APs."""

    max_power: int | None = Field(
        default=None, validation_alias="maxPower", serialization_alias="maxPower"
    )
    min_power: int | None = Field(
        default=None, validation_alias="minPower", serialization_alias="minPower"
    )
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    valid_auto_channels: list[int] = Field(
        default_factory=list,
        validation_alias="validAutoChannels",
        serialization_alias="validAutoChannels",
    )
    channel_width: str | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    rxsop: int | None = None


class CreateNetworkWirelessRfProfileTransmission(_BaseSchema):
    """Settings related to radio transmission."""

    enabled: bool | None = None


class CreateNetworkWirelessRfProfileTwoFourGhzSettings(_BaseSchema):
    """Settings related to 2.4Ghz band."""

    max_power: int | None = Field(
        default=None, validation_alias="maxPower", serialization_alias="maxPower"
    )
    min_power: int | None = Field(
        default=None, validation_alias="minPower", serialization_alias="minPower"
    )
    min_bitrate: float | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    valid_auto_channels: list[int] = Field(
        default_factory=list,
        validation_alias="validAutoChannels",
        serialization_alias="validAutoChannels",
    )
    ax_enabled: bool | None = Field(
        default=None, validation_alias="axEnabled", serialization_alias="axEnabled"
    )
    rxsop: int | None = None


class CreateNetworkWirelessSsidIdentityPskResponse(_BaseSchema):
    """Response for createNetworkWirelessSsidIdentityPsk operation."""

    name: str | None = None
    id: str | None = None
    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    passphrase: str | None = None
    wifi_personal_network_id: str | None = Field(
        default=None,
        validation_alias="wifiPersonalNetworkId",
        serialization_alias="wifiPersonalNetworkId",
    )
    email: str | None = None
    expires_at: datetime | None = Field(
        default=None, validation_alias="expiresAt", serialization_alias="expiresAt"
    )


class CreateOrganizationWirelessDevicesRadsecCertificatesAuthorityResponse(_BaseSchema):
    """Response for createOrganizationWirelessDevicesRadsecCertificatesAuthority operation."""

    certificate_authority_id: str | None = Field(
        default=None,
        validation_alias="certificateAuthorityId",
        serialization_alias="certificateAuthorityId",
    )
    status: str | None = None
    contents: str | None = None


class CreateOrganizationWirelessLocationScanningReceiverNetwork(_BaseSchema):
    """Add scanning API receiver for network."""

    id: str | None = None


class CreateOrganizationWirelessLocationScanningReceiverRadio(_BaseSchema):
    """Add scanning API Radio."""

    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")


class CreateOrganizationWirelessLocationScanningReceiverResponse(_BaseSchema):
    """Response for createOrganizationWirelessLocationScanningReceiver operation."""

    network: WirelessDoorLocksNetwork | None = None
    receiver_id: str | None = Field(
        default=None, validation_alias="receiverId", serialization_alias="receiverId"
    )
    url: str | None = None
    version: str | None = None
    radio: WirelessRadio | None = None


class CreateOrganizationWirelessSsidsFirewallIsolationAllowlistEntryClient(_BaseSchema):
    """The client of allowlist."""

    mac: str | None = None


class CreateOrganizationWirelessSsidsFirewallIsolationAllowlistEntryNetwork(_BaseSchema):
    """The Network that allowlist belongs to."""

    id: str | None = None


class CreateOrganizationWirelessSsidsFirewallIsolationAllowlistEntryResponse(_BaseSchema):
    """Response for createOrganizationWirelessSsidsFirewallIsolationAllowlistEntry operation."""

    entry_id: str = Field(validation_alias="entryId", serialization_alias="entryId")
    created_at: str | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    last_updated_at: str | None = Field(
        default=None, validation_alias="lastUpdatedAt", serialization_alias="lastUpdatedAt"
    )
    description: str | None = None
    client: WirelessClient2 | None = None
    ssid: WirelessSsid | None = None
    network: WirelessNetwork2 | None = None


class CreateOrganizationWirelessSsidsFirewallIsolationAllowlistEntrySsid(_BaseSchema):
    """The SSID that allowlist belongs to."""

    number: int | None = None


class CreateOrganizationWirelessZigbeeDisenrollmentResponse(_BaseSchema):
    """Response for createOrganizationWirelessZigbeeDisenrollment operation."""

    disenrollment_id: str | None = Field(
        default=None, validation_alias="disenrollmentId", serialization_alias="disenrollmentId"
    )
    url: str | None = None
    request: CreateOrganizationWirelessZigbeeDisenrollmentResponseRequest | None = None
    status: str | None = None


class CreateOrganizationWirelessZigbeeDisenrollmentResponseRequest(_BaseSchema):
    """Disenrollment parameters."""

    door_lock_ids: list[str] = Field(
        default_factory=list, validation_alias="doorLockIds", serialization_alias="doorLockIds"
    )


class GetDeviceWirelessBluetoothSettingsResponse(_BaseSchema):
    """Response for getDeviceWirelessBluetoothSettings operation."""

    uuid: str | None = None
    major: int | None = None
    minor: int | None = None


class GetDeviceWirelessConnectionStatsResponse(_BaseSchema):
    """Response for getDeviceWirelessConnectionStats operation."""

    serial: str | None = None
    connection_stats: GetDeviceWirelessConnectionStatsResponseConnectionStats | None = Field(
        default=None, validation_alias="connectionStats", serialization_alias="connectionStats"
    )


class GetDeviceWirelessConnectionStatsResponseConnectionStats(_BaseSchema):
    """The connection stats of the device."""

    assoc: int | None = None
    auth: int | None = None
    dhcp: int | None = None
    dns: int | None = None
    success: int | None = None


class GetDeviceWirelessElectronicShelfLabelResponse(_BaseSchema):
    """Response for getDeviceWirelessElectronicShelfLabel operation."""

    ap_esl_id: int | None = Field(
        default=None, validation_alias="apEslId", serialization_alias="apEslId"
    )
    serial: str | None = None
    channel: str | None = None
    enabled: bool | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    hostname: str | None = None
    provider: str | None = None


class GetDeviceWirelessRadioSettingsResponse(_BaseSchema):
    """Response for getDeviceWirelessRadioSettings operation."""

    serial: str | None = None
    rf_profile_id: str | None = Field(
        default=None, validation_alias="rfProfileId", serialization_alias="rfProfileId"
    )
    two_four_ghz_settings: GetDeviceWirelessRadioSettingsResponseTwoFourGhzSettings | None = Field(
        default=None,
        validation_alias="twoFourGhzSettings",
        serialization_alias="twoFourGhzSettings",
    )
    five_ghz_settings: GetDeviceWirelessRadioSettingsResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="fiveGhzSettings", serialization_alias="fiveGhzSettings"
    )


class GetDeviceWirelessRadioSettingsResponseFiveGhzSettings(_BaseSchema):
    """Manual radio settings for 5 GHz."""

    channel: int | None = None
    channel_width: int | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    target_power: int | None = Field(
        default=None, validation_alias="targetPower", serialization_alias="targetPower"
    )


class GetDeviceWirelessRadioSettingsResponseTwoFourGhzSettings(_BaseSchema):
    """Manual radio settings for 2.4 GHz."""

    channel: int | None = None
    target_power: int | None = Field(
        default=None, validation_alias="targetPower", serialization_alias="targetPower"
    )


class GetDeviceWirelessStatusResponse(_BaseSchema):
    """Response for getDeviceWirelessStatus operation."""

    basic_service_sets: list[GetDeviceWirelessStatusResponseBasicServiceSetsItem] = Field(
        default_factory=list,
        validation_alias="basicServiceSets",
        serialization_alias="basicServiceSets",
    )


class GetDeviceWirelessStatusResponseBasicServiceSetsItem(_BaseSchema):
    """Schema for GetDeviceWirelessStatusResponseBasicServiceSetsItem."""

    ssid_name: str | None = Field(
        default=None, validation_alias="ssidName", serialization_alias="ssidName"
    )
    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )
    enabled: bool | None = None
    band: str | None = None
    bssid: str | None = None
    channel: int | None = None
    channel_width: str | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    power: str | None = None
    visible: bool | None = None
    broadcasting: bool | None = None


class GetDeviceWirelessZigbeeEnrollmentResponse(_BaseSchema):
    """Response for getDeviceWirelessZigbeeEnrollment operation."""

    enrollment_id: str | None = Field(
        default=None, validation_alias="enrollmentId", serialization_alias="enrollmentId"
    )
    url: str | None = None
    request: CreateDeviceWirelessZigbeeEnrollmentResponseRequest | None = None
    status: str | None = None
    enrollment_started_at: str | None = Field(
        default=None,
        validation_alias="enrollmentStartedAt",
        serialization_alias="enrollmentStartedAt",
    )
    door_locks: list[GetDeviceWirelessZigbeeEnrollmentResponseDoorLocksItem] = Field(
        default_factory=list, validation_alias="doorLocks", serialization_alias="doorLocks"
    )


class GetDeviceWirelessZigbeeEnrollmentResponseDoorLocksItem(_BaseSchema):
    """Schema for GetDeviceWirelessZigbeeEnrollmentResponseDoorLocksItem."""

    door_lock_id: str | None = Field(
        default=None, validation_alias="doorLockId", serialization_alias="doorLockId"
    )
    name: str | None = None
    short_id: str | None = Field(
        default=None, validation_alias="shortId", serialization_alias="shortId"
    )
    lqi: str | None = None
    rssi: str | None = None
    status: str | None = None
    eui64: str | None = None
    enrolled_at: datetime | None = Field(
        default=None, validation_alias="enrolledAt", serialization_alias="enrolledAt"
    )
    last_seen_at: datetime | None = Field(
        default=None, validation_alias="lastSeenAt", serialization_alias="lastSeenAt"
    )
    network: WirelessDoorLocksNetwork | None = None
    gateway: WirelessDoorLocksGateway | None = None


class GetNetworkWirelessAirMarshalResponse(
    RootModel[list["GetNetworkWirelessAirMarshalResponseItem"]]
):
    """Response for getNetworkWirelessAirMarshal operation."""


class GetNetworkWirelessAirMarshalResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessAirMarshalResponseItem."""

    ssid: str | None = None
    bssids: list[WirelessBssidsItem] = Field(default_factory=list)
    channels: list[int] = Field(default_factory=list)
    first_seen: int | None = Field(
        default=None, validation_alias="firstSeen", serialization_alias="firstSeen"
    )
    last_seen: int | None = Field(
        default=None, validation_alias="lastSeen", serialization_alias="lastSeen"
    )
    wired_macs: list[str] = Field(
        default_factory=list, validation_alias="wiredMacs", serialization_alias="wiredMacs"
    )
    wired_vlans: list[int] = Field(
        default_factory=list, validation_alias="wiredVlans", serialization_alias="wiredVlans"
    )
    wired_last_seen: int | None = Field(
        default=None, validation_alias="wiredLastSeen", serialization_alias="wiredLastSeen"
    )


class GetNetworkWirelessBillingResponse(_BaseSchema):
    """Response for getNetworkWirelessBilling operation."""

    currency: str | None = None
    plans: list[GetNetworkWirelessBillingResponsePlansItem] = Field(default_factory=list)


class GetNetworkWirelessBillingResponsePlansItem(_BaseSchema):
    """Schema for GetNetworkWirelessBillingResponsePlansItem."""

    id: str | None = None
    price: float | None = None
    bandwidth_limits: WirelessPlansBandwidthLimits | None = Field(
        default=None, validation_alias="bandwidthLimits", serialization_alias="bandwidthLimits"
    )
    time_limit: str | None = Field(
        default=None, validation_alias="timeLimit", serialization_alias="timeLimit"
    )


class GetNetworkWirelessBluetoothSettingsResponse(_BaseSchema):
    """Response for getNetworkWirelessBluetoothSettings operation."""

    scanning_enabled: bool | None = Field(
        default=None, validation_alias="scanningEnabled", serialization_alias="scanningEnabled"
    )
    advertising_enabled: bool | None = Field(
        default=None,
        validation_alias="advertisingEnabled",
        serialization_alias="advertisingEnabled",
    )
    uuid: str | None = None
    major_minor_assignment_mode: str | None = Field(
        default=None,
        validation_alias="majorMinorAssignmentMode",
        serialization_alias="majorMinorAssignmentMode",
    )
    major: int | None = None
    minor: int | None = None
    esl_enabled: bool | None = Field(
        default=None, validation_alias="eslEnabled", serialization_alias="eslEnabled"
    )


class GetNetworkWirelessChannelUtilizationHistoryResponse(
    RootModel[list["GetNetworkWirelessChannelUtilizationHistoryResponseItem"]]
):
    """Response for getNetworkWirelessChannelUtilizationHistory operation."""


class GetNetworkWirelessChannelUtilizationHistoryResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessChannelUtilizationHistoryResponseItem."""

    start_ts: datetime | None = Field(
        default=None, validation_alias="startTs", serialization_alias="startTs"
    )
    end_ts: datetime | None = Field(
        default=None, validation_alias="endTs", serialization_alias="endTs"
    )
    utilization_total: float | None = Field(
        default=None, validation_alias="utilizationTotal", serialization_alias="utilizationTotal"
    )
    utilization80211: float | None = None
    utilization_non80211: float | None = Field(
        default=None,
        validation_alias="utilizationNon80211",
        serialization_alias="utilizationNon80211",
    )


class GetNetworkWirelessClientConnectionStatsResponse(_BaseSchema):
    """Response for getNetworkWirelessClientConnectionStats operation."""

    mac: str | None = None
    connection_stats: GetNetworkWirelessClientConnectionStatsResponseConnectionStats | None = Field(
        default=None, validation_alias="connectionStats", serialization_alias="connectionStats"
    )


class GetNetworkWirelessClientConnectionStatsResponseConnectionStats(_BaseSchema):
    """Connection stats."""

    assoc: int | None = None
    auth: int | None = None
    dhcp: int | None = None
    success: int | None = None


class GetNetworkWirelessClientConnectivityEventsResponse(
    RootModel[list["GetNetworkWirelessClientConnectivityEventsResponseItem"]]
):
    """Response for getNetworkWirelessClientConnectivityEvents operation."""


class GetNetworkWirelessClientConnectivityEventsResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessClientConnectivityEventsResponseItem."""

    occurred_at: datetime | None = Field(
        default=None, validation_alias="occurredAt", serialization_alias="occurredAt"
    )
    band: str | None = None
    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    subtype: str | None = None
    severity: str | None = None
    duration_ms: int | None = Field(
        default=None, validation_alias="durationMs", serialization_alias="durationMs"
    )
    channel: int | None = None
    rssi: int | None = None
    event_data: dict[str, Any] | None = Field(
        default=None, validation_alias="eventData", serialization_alias="eventData"
    )
    device_serial: str | None = Field(
        default=None, validation_alias="deviceSerial", serialization_alias="deviceSerial"
    )
    capture_id: str | None = Field(
        default=None, validation_alias="captureId", serialization_alias="captureId"
    )


class GetNetworkWirelessClientCountHistoryResponse(
    RootModel[list["GetNetworkWirelessClientCountHistoryResponseItem"]]
):
    """Response for getNetworkWirelessClientCountHistory operation."""


class GetNetworkWirelessClientCountHistoryResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessClientCountHistoryResponseItem."""

    start_ts: datetime | None = Field(
        default=None, validation_alias="startTs", serialization_alias="startTs"
    )
    end_ts: datetime | None = Field(
        default=None, validation_alias="endTs", serialization_alias="endTs"
    )
    client_count: int | None = Field(
        default=None, validation_alias="clientCount", serialization_alias="clientCount"
    )


class GetNetworkWirelessClientLatencyHistoryResponse(
    RootModel[list["GetNetworkWirelessClientLatencyHistoryResponseItem"]]
):
    """Response for getNetworkWirelessClientLatencyHistory operation."""


class GetNetworkWirelessClientLatencyHistoryResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessClientLatencyHistoryResponseItem."""

    t0: int | None = None
    t1: int | None = None
    latency_bins_by_category: WirelessLatencyBinsByCategory | None = Field(
        default=None,
        validation_alias="latencyBinsByCategory",
        serialization_alias="latencyBinsByCategory",
    )


class GetNetworkWirelessClientsConnectionStatsResponse(RootModel[list[dict[str, Any]]]):
    """Response for getNetworkWirelessClientsConnectionStats operation."""


class GetNetworkWirelessClientsLatencyStatsResponse(RootModel[list[dict[str, Any]]]):
    """Response for getNetworkWirelessClientsLatencyStats operation."""


class GetNetworkWirelessConnectionStatsResponse(_BaseSchema):
    """Response for getNetworkWirelessConnectionStats operation."""

    assoc: int | None = None
    auth: int | None = None
    dhcp: int | None = None
    dns: int | None = None
    success: int | None = None


class GetNetworkWirelessDataRateHistoryResponse(
    RootModel[list["GetNetworkWirelessDataRateHistoryResponseItem"]]
):
    """Response for getNetworkWirelessDataRateHistory operation."""


class GetNetworkWirelessDataRateHistoryResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessDataRateHistoryResponseItem."""

    start_ts: datetime | None = Field(
        default=None, validation_alias="startTs", serialization_alias="startTs"
    )
    end_ts: datetime | None = Field(
        default=None, validation_alias="endTs", serialization_alias="endTs"
    )
    average_kbps: int | None = Field(
        default=None, validation_alias="averageKbps", serialization_alias="averageKbps"
    )
    download_kbps: int | None = Field(
        default=None, validation_alias="downloadKbps", serialization_alias="downloadKbps"
    )
    upload_kbps: int | None = Field(
        default=None, validation_alias="uploadKbps", serialization_alias="uploadKbps"
    )


class GetNetworkWirelessDevicesConnectionStatsResponse(
    RootModel[list["GetNetworkWirelessDevicesConnectionStatsResponseItem"]]
):
    """Response for getNetworkWirelessDevicesConnectionStats operation."""


class GetNetworkWirelessDevicesConnectionStatsResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessDevicesConnectionStatsResponseItem."""

    serial: str | None = None
    connection_stats: GetDeviceWirelessConnectionStatsResponseConnectionStats | None = Field(
        default=None, validation_alias="connectionStats", serialization_alias="connectionStats"
    )


class GetNetworkWirelessDevicesLatencyStatsResponse(RootModel[list[dict[str, Any]]]):
    """Response for getNetworkWirelessDevicesLatencyStats operation."""


class GetNetworkWirelessElectronicShelfLabelConfiguredDevicesResponse(
    RootModel[list["GetNetworkWirelessElectronicShelfLabelConfiguredDevicesResponseItem"]]
):
    """Response for getNetworkWirelessElectronicShelfLabelConfiguredDevices operation."""


class GetNetworkWirelessElectronicShelfLabelConfiguredDevicesResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessElectronicShelfLabelConfiguredDevicesResponseItem."""

    hostname: str | None = None
    enabled: bool | None = None
    mode: str | None = None


class GetNetworkWirelessElectronicShelfLabelResponse(_BaseSchema):
    """Response for getNetworkWirelessElectronicShelfLabel operation."""

    hostname: str | None = None
    enabled: bool | None = None
    mode: str | None = None


class GetNetworkWirelessEthernetPortsProfileResponse(_BaseSchema):
    """Response for getNetworkWirelessEthernetPortsProfile operation."""

    profile_id: str | None = Field(
        default=None, validation_alias="profileId", serialization_alias="profileId"
    )
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    ports: list[WirelessPortsItem] = Field(default_factory=list)
    usb_ports: list[WirelessUsbPortsItem] = Field(
        default_factory=list, validation_alias="usbPorts", serialization_alias="usbPorts"
    )


class GetNetworkWirelessEthernetPortsProfilesResponse(
    RootModel[list["GetNetworkWirelessEthernetPortsProfilesResponseItem"]]
):
    """Response for getNetworkWirelessEthernetPortsProfiles operation."""


class GetNetworkWirelessEthernetPortsProfilesResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessEthernetPortsProfilesResponseItem."""

    profile_id: str | None = Field(
        default=None, validation_alias="profileId", serialization_alias="profileId"
    )
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    ports: list[WirelessPortsItem] = Field(default_factory=list)
    usb_ports: list[WirelessUsbPortsItem] = Field(
        default_factory=list, validation_alias="usbPorts", serialization_alias="usbPorts"
    )


class GetNetworkWirelessFailedConnectionsResponse(
    RootModel[list["GetNetworkWirelessFailedConnectionsResponseItem"]]
):
    """Response for getNetworkWirelessFailedConnections operation."""


class GetNetworkWirelessFailedConnectionsResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessFailedConnectionsResponseItem."""

    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )
    vlan: int | None = None
    client_mac: str | None = Field(
        default=None, validation_alias="clientMac", serialization_alias="clientMac"
    )
    serial: str | None = None
    radio: int | None = None
    failure_step: str | None = Field(
        default=None, validation_alias="failureStep", serialization_alias="failureStep"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    ts: datetime | None = None


class GetNetworkWirelessLatencyHistoryResponse(
    RootModel[list["GetNetworkWirelessLatencyHistoryResponseItem"]]
):
    """Response for getNetworkWirelessLatencyHistory operation."""


class GetNetworkWirelessLatencyHistoryResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessLatencyHistoryResponseItem."""

    start_ts: datetime | None = Field(
        default=None, validation_alias="startTs", serialization_alias="startTs"
    )
    end_ts: datetime | None = Field(
        default=None, validation_alias="endTs", serialization_alias="endTs"
    )
    avg_latency_ms: int | None = Field(
        default=None, validation_alias="avgLatencyMs", serialization_alias="avgLatencyMs"
    )


class GetNetworkWirelessMeshStatusesResponse(
    RootModel[list["GetNetworkWirelessMeshStatusesResponseItem"]]
):
    """Response for getNetworkWirelessMeshStatuses operation."""


class GetNetworkWirelessMeshStatusesResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessMeshStatusesResponseItem."""

    serial: str | None = None
    mesh_route: list[str] = Field(
        default_factory=list, validation_alias="meshRoute", serialization_alias="meshRoute"
    )
    latest_mesh_performance: WirelessLatestMeshPerformance | None = Field(
        default=None,
        validation_alias="latestMeshPerformance",
        serialization_alias="latestMeshPerformance",
    )


class GetNetworkWirelessRfProfileResponse(_BaseSchema):
    """Response for getNetworkWirelessRfProfile operation."""

    id: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    client_balancing_enabled: bool | None = Field(
        default=None,
        validation_alias="clientBalancingEnabled",
        serialization_alias="clientBalancingEnabled",
    )
    min_bitrate_type: str | None = Field(
        default=None, validation_alias="minBitrateType", serialization_alias="minBitrateType"
    )
    band_selection_type: str | None = Field(
        default=None, validation_alias="bandSelectionType", serialization_alias="bandSelectionType"
    )
    ap_band_settings: GetNetworkWirelessRfProfilesResponseApBandSettings | None = Field(
        default=None, validation_alias="apBandSettings", serialization_alias="apBandSettings"
    )
    two_four_ghz_settings: GetNetworkWirelessRfProfilesResponseTwoFourGhzSettings | None = Field(
        default=None,
        validation_alias="twoFourGhzSettings",
        serialization_alias="twoFourGhzSettings",
    )
    five_ghz_settings: GetNetworkWirelessRfProfilesResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="fiveGhzSettings", serialization_alias="fiveGhzSettings"
    )
    six_ghz_settings: GetNetworkWirelessRfProfilesResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="sixGhzSettings", serialization_alias="sixGhzSettings"
    )
    transmission: WirelessBusyHourMinimizeChanges | None = None
    per_ssid_settings: GetNetworkWirelessRfProfilesResponsePerSsidSettings | None = Field(
        default=None, validation_alias="perSsidSettings", serialization_alias="perSsidSettings"
    )
    is_indoor_default: bool | None = Field(
        default=None, validation_alias="isIndoorDefault", serialization_alias="isIndoorDefault"
    )
    is_outdoor_default: bool | None = Field(
        default=None, validation_alias="isOutdoorDefault", serialization_alias="isOutdoorDefault"
    )


class GetNetworkWirelessRfProfilesResponse(_BaseSchema):
    """Response for getNetworkWirelessRfProfiles operation."""

    id: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    client_balancing_enabled: bool | None = Field(
        default=None,
        validation_alias="clientBalancingEnabled",
        serialization_alias="clientBalancingEnabled",
    )
    min_bitrate_type: str | None = Field(
        default=None, validation_alias="minBitrateType", serialization_alias="minBitrateType"
    )
    band_selection_type: str | None = Field(
        default=None, validation_alias="bandSelectionType", serialization_alias="bandSelectionType"
    )
    ap_band_settings: GetNetworkWirelessRfProfilesResponseApBandSettings | None = Field(
        default=None, validation_alias="apBandSettings", serialization_alias="apBandSettings"
    )
    two_four_ghz_settings: GetNetworkWirelessRfProfilesResponseTwoFourGhzSettings | None = Field(
        default=None,
        validation_alias="twoFourGhzSettings",
        serialization_alias="twoFourGhzSettings",
    )
    five_ghz_settings: GetNetworkWirelessRfProfilesResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="fiveGhzSettings", serialization_alias="fiveGhzSettings"
    )
    six_ghz_settings: GetNetworkWirelessRfProfilesResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="sixGhzSettings", serialization_alias="sixGhzSettings"
    )
    transmission: WirelessBusyHourMinimizeChanges | None = None
    per_ssid_settings: GetNetworkWirelessRfProfilesResponsePerSsidSettings | None = Field(
        default=None, validation_alias="perSsidSettings", serialization_alias="perSsidSettings"
    )
    is_indoor_default: bool | None = Field(
        default=None, validation_alias="isIndoorDefault", serialization_alias="isIndoorDefault"
    )
    is_outdoor_default: bool | None = Field(
        default=None, validation_alias="isOutdoorDefault", serialization_alias="isOutdoorDefault"
    )


class GetNetworkWirelessRfProfilesResponseApBandSettings(_BaseSchema):
    """Settings that will be enabled if selectionType is set to 'ap'."""

    band_operation_mode: str | None = Field(
        default=None, validation_alias="bandOperationMode", serialization_alias="bandOperationMode"
    )
    bands: WirelessApBandSettingsBands | None = None
    band_steering_enabled: bool | None = Field(
        default=None,
        validation_alias="bandSteeringEnabled",
        serialization_alias="bandSteeringEnabled",
    )


class GetNetworkWirelessRfProfilesResponseFiveGhzSettings(_BaseSchema):
    """Settings related to 5Ghz band."""

    max_power: int | None = Field(
        default=None, validation_alias="maxPower", serialization_alias="maxPower"
    )
    min_power: int | None = Field(
        default=None, validation_alias="minPower", serialization_alias="minPower"
    )
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    valid_auto_channels: list[int] = Field(
        default_factory=list,
        validation_alias="validAutoChannels",
        serialization_alias="validAutoChannels",
    )
    channel_width: str | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    rxsop: int | None = None


class GetNetworkWirelessRfProfilesResponsePerSsidSettings(_BaseSchema):
    """Per-SSID radio settings by number."""

    n_0: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="0", serialization_alias="0"
    )
    n_1: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="1", serialization_alias="1"
    )
    n_2: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="2", serialization_alias="2"
    )
    n_3: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="3", serialization_alias="3"
    )
    n_4: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="4", serialization_alias="4"
    )
    n_5: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="5", serialization_alias="5"
    )
    n_6: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="6", serialization_alias="6"
    )
    n_7: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="7", serialization_alias="7"
    )
    n_8: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="8", serialization_alias="8"
    )
    n_9: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="9", serialization_alias="9"
    )
    n_10: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="10", serialization_alias="10"
    )
    n_11: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="11", serialization_alias="11"
    )
    n_12: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="12", serialization_alias="12"
    )
    n_13: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="13", serialization_alias="13"
    )
    n_14: WirelessPerSsidSettings0 | None = Field(
        default=None, validation_alias="14", serialization_alias="14"
    )


class GetNetworkWirelessRfProfilesResponseTwoFourGhzSettings(_BaseSchema):
    """Settings related to 2.4Ghz band."""

    max_power: int | None = Field(
        default=None, validation_alias="maxPower", serialization_alias="maxPower"
    )
    min_power: int | None = Field(
        default=None, validation_alias="minPower", serialization_alias="minPower"
    )
    min_bitrate: float | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    valid_auto_channels: list[int] = Field(
        default_factory=list,
        validation_alias="validAutoChannels",
        serialization_alias="validAutoChannels",
    )
    ax_enabled: bool | None = Field(
        default=None, validation_alias="axEnabled", serialization_alias="axEnabled"
    )
    rxsop: int | None = None


class GetNetworkWirelessSettingsResponse(_BaseSchema):
    """Response for getNetworkWirelessSettings operation."""

    meshing_enabled: bool | None = Field(
        default=None, validation_alias="meshingEnabled", serialization_alias="meshingEnabled"
    )
    ipv6_bridge_enabled: bool | None = Field(
        default=None, validation_alias="ipv6BridgeEnabled", serialization_alias="ipv6BridgeEnabled"
    )
    location_analytics_enabled: bool | None = Field(
        default=None,
        validation_alias="locationAnalyticsEnabled",
        serialization_alias="locationAnalyticsEnabled",
    )
    upgrade_strategy: str | None = Field(
        default=None, validation_alias="upgradeStrategy", serialization_alias="upgradeStrategy"
    )
    led_lights_on: bool | None = Field(
        default=None, validation_alias="ledLightsOn", serialization_alias="ledLightsOn"
    )
    multicast_to_unicast_conversion: WirelessBusyHourMinimizeChanges | None = Field(
        default=None,
        validation_alias="multicastToUnicastConversion",
        serialization_alias="multicastToUnicastConversion",
    )
    named_vlans: GetNetworkWirelessSettingsResponseNamedVlans | None = Field(
        default=None, validation_alias="namedVlans", serialization_alias="namedVlans"
    )
    regulatory_domain: GetNetworkWirelessSettingsResponseRegulatoryDomain | None = Field(
        default=None, validation_alias="regulatoryDomain", serialization_alias="regulatoryDomain"
    )


class GetNetworkWirelessSettingsResponseNamedVlans(_BaseSchema):
    """Named VLAN settings for wireless networks."""

    pool_dhcp_monitoring: WirelessNamedVlansPoolDhcpMonitoring | None = Field(
        default=None,
        validation_alias="poolDhcpMonitoring",
        serialization_alias="poolDhcpMonitoring",
    )


class GetNetworkWirelessSettingsResponseRegulatoryDomain(_BaseSchema):
    """Regulatory domain information for this network."""

    name: str | None = None
    country_code: str | None = Field(
        default=None, validation_alias="countryCode", serialization_alias="countryCode"
    )
    permits6e: bool | None = None


class GetNetworkWirelessSignalQualityHistoryResponse(
    RootModel[list["GetNetworkWirelessSignalQualityHistoryResponseItem"]]
):
    """Response for getNetworkWirelessSignalQualityHistory operation."""


class GetNetworkWirelessSignalQualityHistoryResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessSignalQualityHistoryResponseItem."""

    start_ts: datetime | None = Field(
        default=None, validation_alias="startTs", serialization_alias="startTs"
    )
    end_ts: datetime | None = Field(
        default=None, validation_alias="endTs", serialization_alias="endTs"
    )
    snr: int | None = None
    rssi: int | None = None


class GetNetworkWirelessSsidBonjourForwardingResponse(_BaseSchema):
    """Response for getNetworkWirelessSsidBonjourForwarding operation."""

    enabled: bool | None = None
    exception: WirelessBusyHourMinimizeChanges | None = None
    rules: list[GetNetworkWirelessSsidBonjourForwardingResponseRulesItem] = Field(
        default_factory=list
    )


class GetNetworkWirelessSsidBonjourForwardingResponseRulesItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidBonjourForwardingResponseRulesItem."""

    description: str | None = None
    vlan_id: str | None = Field(
        default=None, validation_alias="vlanId", serialization_alias="vlanId"
    )
    services: list[str] = Field(default_factory=list)


class GetNetworkWirelessSsidEapOverrideResponse(_BaseSchema):
    """Response for getNetworkWirelessSsidEapOverride operation."""

    timeout: int | None = None
    max_retries: int | None = Field(
        default=None, validation_alias="maxRetries", serialization_alias="maxRetries"
    )
    identity: GetNetworkWirelessSsidEapOverrideResponseIdentity | None = None
    eapol_key: GetNetworkWirelessSsidEapOverrideResponseEapolKey | None = Field(
        default=None, validation_alias="eapolKey", serialization_alias="eapolKey"
    )


class GetNetworkWirelessSsidEapOverrideResponseEapolKey(_BaseSchema):
    """EAPOL Key settings."""

    retries: int | None = None
    timeout_in_ms: int | None = Field(
        default=None, validation_alias="timeoutInMs", serialization_alias="timeoutInMs"
    )


class GetNetworkWirelessSsidEapOverrideResponseIdentity(_BaseSchema):
    """EAP settings for identity requests."""

    retries: int | None = None
    timeout: int | None = None


class GetNetworkWirelessSsidFirewallL3FirewallRulesResponse(_BaseSchema):
    """Response for getNetworkWirelessSsidFirewallL3FirewallRules operation."""

    rules: list[GetNetworkWirelessSsidFirewallL3FirewallRulesResponseRulesItem] = Field(
        default_factory=list
    )
    allow_lan_access: bool | None = Field(
        default=None, validation_alias="allowLanAccess", serialization_alias="allowLanAccess"
    )


class GetNetworkWirelessSsidFirewallL3FirewallRulesResponseRulesItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidFirewallL3FirewallRulesResponseRulesItem."""

    comment: str | None = None
    policy: str
    ip_ver: str | None = Field(default=None, validation_alias="ipVer", serialization_alias="ipVer")
    protocol: str
    dest_port: str | None = Field(
        default=None, validation_alias="destPort", serialization_alias="destPort"
    )
    dest_cidr: str = Field(validation_alias="destCidr", serialization_alias="destCidr")


class GetNetworkWirelessSsidFirewallL7FirewallRulesResponse(_BaseSchema):
    """Response for getNetworkWirelessSsidFirewallL7FirewallRules operation."""

    rules: list[GetNetworkWirelessSsidFirewallL7FirewallRulesResponseRulesItem] = Field(
        default_factory=list
    )


class GetNetworkWirelessSsidFirewallL7FirewallRulesResponseRulesItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidFirewallL7FirewallRulesResponseRulesItem."""

    policy: str | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    value: str | None = None


class GetNetworkWirelessSsidHotspot20Response(_BaseSchema):
    """Response for getNetworkWirelessSsidHotspot20 operation."""

    enabled: bool | None = None
    operator: GetNetworkWirelessSsidHotspot20ResponseOperator | None = None
    venue: GetNetworkWirelessSsidHotspot20ResponseVenue | None = None
    network_access_type: str | None = Field(
        default=None, validation_alias="networkAccessType", serialization_alias="networkAccessType"
    )
    domains: list[str] = Field(default_factory=list)
    roam_consort_ois: list[str] = Field(
        default_factory=list,
        validation_alias="roamConsortOis",
        serialization_alias="roamConsortOis",
    )
    mcc_mncs: list[GetNetworkWirelessSsidHotspot20ResponseMccMncsItem] = Field(
        default_factory=list, validation_alias="mccMncs", serialization_alias="mccMncs"
    )
    nai_realms: list[GetNetworkWirelessSsidHotspot20ResponseNaiRealmsItem] = Field(
        default_factory=list, validation_alias="naiRealms", serialization_alias="naiRealms"
    )


class GetNetworkWirelessSsidHotspot20ResponseMccMncsItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidHotspot20ResponseMccMncsItem."""

    mcc: str | None = None
    mnc: str | None = None


class GetNetworkWirelessSsidHotspot20ResponseNaiRealmsItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidHotspot20ResponseNaiRealmsItem."""

    format_: str | None = Field(
        default=None, validation_alias="format", serialization_alias="format"
    )
    name: str | None = None
    methods: list[WirelessNaiRealmsMethodsItem] = Field(default_factory=list)


class GetNetworkWirelessSsidHotspot20ResponseOperator(_BaseSchema):
    """Operator settings for this SSID."""

    name: str | None = None


class GetNetworkWirelessSsidHotspot20ResponseVenue(_BaseSchema):
    """Venue settings for this SSID."""

    name: str | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")


class GetNetworkWirelessSsidIdentityPskResponse(_BaseSchema):
    """Response for getNetworkWirelessSsidIdentityPsk operation."""

    name: str | None = None
    id: str | None = None
    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    passphrase: str | None = None
    wifi_personal_network_id: str | None = Field(
        default=None,
        validation_alias="wifiPersonalNetworkId",
        serialization_alias="wifiPersonalNetworkId",
    )
    email: str | None = None
    expires_at: datetime | None = Field(
        default=None, validation_alias="expiresAt", serialization_alias="expiresAt"
    )


class GetNetworkWirelessSsidIdentityPsksResponse(
    RootModel[list["GetNetworkWirelessSsidIdentityPsksResponseItem"]]
):
    """Response for getNetworkWirelessSsidIdentityPsks operation."""


class GetNetworkWirelessSsidIdentityPsksResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidIdentityPsksResponseItem."""

    name: str | None = None
    id: str | None = None
    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    passphrase: str | None = None
    wifi_personal_network_id: str | None = Field(
        default=None,
        validation_alias="wifiPersonalNetworkId",
        serialization_alias="wifiPersonalNetworkId",
    )
    email: str | None = None
    expires_at: datetime | None = Field(
        default=None, validation_alias="expiresAt", serialization_alias="expiresAt"
    )


class GetNetworkWirelessSsidResponse(_BaseSchema):
    """Response for getNetworkWirelessSsid operation."""

    number: int | None = None
    name: str | None = None
    enabled: bool | None = None
    splash_page: str | None = Field(
        default=None, validation_alias="splashPage", serialization_alias="splashPage"
    )
    ssid_admin_accessible: bool | None = Field(
        default=None,
        validation_alias="ssidAdminAccessible",
        serialization_alias="ssidAdminAccessible",
    )
    local_auth: bool | None = Field(
        default=None, validation_alias="localAuth", serialization_alias="localAuth"
    )
    auth_mode: str | None = Field(
        default=None, validation_alias="authMode", serialization_alias="authMode"
    )
    encryption_mode: str | None = Field(
        default=None, validation_alias="encryptionMode", serialization_alias="encryptionMode"
    )
    wpa_encryption_mode: str | None = Field(
        default=None, validation_alias="wpaEncryptionMode", serialization_alias="wpaEncryptionMode"
    )
    radius_servers: list[WirelessRadiusServersItem] = Field(
        default_factory=list, validation_alias="radiusServers", serialization_alias="radiusServers"
    )
    radius_accounting_servers: list[WirelessRadiusServersItem] = Field(
        default_factory=list,
        validation_alias="radiusAccountingServers",
        serialization_alias="radiusAccountingServers",
    )
    radius_accounting_enabled: bool | None = Field(
        default=None,
        validation_alias="radiusAccountingEnabled",
        serialization_alias="radiusAccountingEnabled",
    )
    radius_enabled: bool | None = Field(
        default=None, validation_alias="radiusEnabled", serialization_alias="radiusEnabled"
    )
    radius_attribute_for_group_policies: str | None = Field(
        default=None,
        validation_alias="radiusAttributeForGroupPolicies",
        serialization_alias="radiusAttributeForGroupPolicies",
    )
    radius_failover_policy: str | None = Field(
        default=None,
        validation_alias="radiusFailoverPolicy",
        serialization_alias="radiusFailoverPolicy",
    )
    radius_load_balancing_policy: str | None = Field(
        default=None,
        validation_alias="radiusLoadBalancingPolicy",
        serialization_alias="radiusLoadBalancingPolicy",
    )
    ip_assignment_mode: str | None = Field(
        default=None, validation_alias="ipAssignmentMode", serialization_alias="ipAssignmentMode"
    )
    admin_splash_url: str | None = Field(
        default=None, validation_alias="adminSplashUrl", serialization_alias="adminSplashUrl"
    )
    splash_timeout: str | None = Field(
        default=None, validation_alias="splashTimeout", serialization_alias="splashTimeout"
    )
    walled_garden_enabled: bool | None = Field(
        default=None,
        validation_alias="walledGardenEnabled",
        serialization_alias="walledGardenEnabled",
    )
    walled_garden_ranges: list[str] = Field(
        default_factory=list,
        validation_alias="walledGardenRanges",
        serialization_alias="walledGardenRanges",
    )
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    band_selection: str | None = Field(
        default=None, validation_alias="bandSelection", serialization_alias="bandSelection"
    )
    per_client_bandwidth_limit_up: int | None = Field(
        default=None,
        validation_alias="perClientBandwidthLimitUp",
        serialization_alias="perClientBandwidthLimitUp",
    )
    per_client_bandwidth_limit_down: int | None = Field(
        default=None,
        validation_alias="perClientBandwidthLimitDown",
        serialization_alias="perClientBandwidthLimitDown",
    )
    visible: bool | None = None
    available_on_all_aps: bool | None = Field(
        default=None, validation_alias="availableOnAllAps", serialization_alias="availableOnAllAps"
    )
    availability_tags: list[str] = Field(
        default_factory=list,
        validation_alias="availabilityTags",
        serialization_alias="availabilityTags",
    )
    per_ssid_bandwidth_limit_up: int | None = Field(
        default=None,
        validation_alias="perSsidBandwidthLimitUp",
        serialization_alias="perSsidBandwidthLimitUp",
    )
    per_ssid_bandwidth_limit_down: int | None = Field(
        default=None,
        validation_alias="perSsidBandwidthLimitDown",
        serialization_alias="perSsidBandwidthLimitDown",
    )
    mandatory_dhcp_enabled: bool | None = Field(
        default=None,
        validation_alias="mandatoryDhcpEnabled",
        serialization_alias="mandatoryDhcpEnabled",
    )


class GetNetworkWirelessSsidSchedulesResponse(_BaseSchema):
    """Response for getNetworkWirelessSsidSchedules operation."""

    enabled: bool | None = None
    ranges: list[GetNetworkWirelessSsidSchedulesResponseRangesItem] = Field(default_factory=list)
    ranges_in_seconds: list[GetNetworkWirelessSsidSchedulesResponseRangesInSecondsItem] = Field(
        default_factory=list,
        validation_alias="rangesInSeconds",
        serialization_alias="rangesInSeconds",
    )


class GetNetworkWirelessSsidSchedulesResponseRangesInSecondsItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidSchedulesResponseRangesInSecondsItem."""

    start: int
    end: int


class GetNetworkWirelessSsidSchedulesResponseRangesItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidSchedulesResponseRangesItem."""

    start_day: str = Field(validation_alias="startDay", serialization_alias="startDay")
    start_time: str = Field(validation_alias="startTime", serialization_alias="startTime")
    end_day: str = Field(validation_alias="endDay", serialization_alias="endDay")
    end_time: str = Field(validation_alias="endTime", serialization_alias="endTime")


class GetNetworkWirelessSsidSplashSettingsResponse(_BaseSchema):
    """Response for getNetworkWirelessSsidSplashSettings operation."""

    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )
    splash_page: str | None = Field(
        default=None, validation_alias="splashPage", serialization_alias="splashPage"
    )
    use_splash_url: bool | None = Field(
        default=None, validation_alias="useSplashUrl", serialization_alias="useSplashUrl"
    )
    splash_url: str | None = Field(
        default=None, validation_alias="splashUrl", serialization_alias="splashUrl"
    )
    splash_timeout: int | None = Field(
        default=None, validation_alias="splashTimeout", serialization_alias="splashTimeout"
    )
    redirect_url: str | None = Field(
        default=None, validation_alias="redirectUrl", serialization_alias="redirectUrl"
    )
    use_redirect_url: bool | None = Field(
        default=None, validation_alias="useRedirectUrl", serialization_alias="useRedirectUrl"
    )
    welcome_message: str | None = Field(
        default=None, validation_alias="welcomeMessage", serialization_alias="welcomeMessage"
    )
    theme_id: str | None = Field(
        default=None, validation_alias="themeId", serialization_alias="themeId"
    )
    splash_logo: GetNetworkWirelessSsidSplashSettingsResponseSplashLogo | None = Field(
        default=None, validation_alias="splashLogo", serialization_alias="splashLogo"
    )
    splash_image: GetNetworkWirelessSsidSplashSettingsResponseSplashLogo | None = Field(
        default=None, validation_alias="splashImage", serialization_alias="splashImage"
    )
    splash_prepaid_front: GetNetworkWirelessSsidSplashSettingsResponseSplashLogo | None = Field(
        default=None,
        validation_alias="splashPrepaidFront",
        serialization_alias="splashPrepaidFront",
    )
    guest_sponsorship: GetNetworkWirelessSsidSplashSettingsResponseGuestSponsorship | None = Field(
        default=None, validation_alias="guestSponsorship", serialization_alias="guestSponsorship"
    )
    block_all_traffic_before_sign_on: bool | None = Field(
        default=None,
        validation_alias="blockAllTrafficBeforeSignOn",
        serialization_alias="blockAllTrafficBeforeSignOn",
    )
    controller_disconnection_behavior: str | None = Field(
        default=None,
        validation_alias="controllerDisconnectionBehavior",
        serialization_alias="controllerDisconnectionBehavior",
    )
    allow_simultaneous_logins: bool | None = Field(
        default=None,
        validation_alias="allowSimultaneousLogins",
        serialization_alias="allowSimultaneousLogins",
    )
    billing: GetNetworkWirelessSsidSplashSettingsResponseBilling | None = None
    sentry_enrollment: GetNetworkWirelessSsidSplashSettingsResponseSentryEnrollment | None = Field(
        default=None, validation_alias="sentryEnrollment", serialization_alias="sentryEnrollment"
    )
    self_registration: GetNetworkWirelessSsidSplashSettingsResponseSelfRegistration | None = Field(
        default=None, validation_alias="selfRegistration", serialization_alias="selfRegistration"
    )


class GetNetworkWirelessSsidSplashSettingsResponseBilling(_BaseSchema):
    """Details associated with billing splash."""

    free_access: WirelessBillingFreeAccess | None = Field(
        default=None, validation_alias="freeAccess", serialization_alias="freeAccess"
    )
    prepaid_access_fast_login_enabled: bool | None = Field(
        default=None,
        validation_alias="prepaidAccessFastLoginEnabled",
        serialization_alias="prepaidAccessFastLoginEnabled",
    )
    reply_to_email_address: str | None = Field(
        default=None,
        validation_alias="replyToEmailAddress",
        serialization_alias="replyToEmailAddress",
    )


class GetNetworkWirelessSsidSplashSettingsResponseGuestSponsorship(_BaseSchema):
    """Details associated with guest sponsored splash."""

    duration_in_minutes: int | None = Field(
        default=None, validation_alias="durationInMinutes", serialization_alias="durationInMinutes"
    )
    guest_can_request_timeframe: bool | None = Field(
        default=None,
        validation_alias="guestCanRequestTimeframe",
        serialization_alias="guestCanRequestTimeframe",
    )


class GetNetworkWirelessSsidSplashSettingsResponseSelfRegistration(_BaseSchema):
    """Self-registration for splash with Meraki authentication."""

    enabled: bool | None = None
    authorization_type: str | None = Field(
        default=None, validation_alias="authorizationType", serialization_alias="authorizationType"
    )


class GetNetworkWirelessSsidSplashSettingsResponseSentryEnrollment(_BaseSchema):
    """Systems Manager sentry enrollment splash settings."""

    systems_manager_network: WirelessSentryEnrollmentSystemsManagerNetwork | None = Field(
        default=None,
        validation_alias="systemsManagerNetwork",
        serialization_alias="systemsManagerNetwork",
    )
    strength: str | None = None
    enforced_systems: list[str] = Field(
        default_factory=list,
        validation_alias="enforcedSystems",
        serialization_alias="enforcedSystems",
    )


class GetNetworkWirelessSsidSplashSettingsResponseSplashLogo(_BaseSchema):
    """The logo used in the splash page."""

    md5: str | None = None
    extension: str | None = None


class GetNetworkWirelessSsidTrafficShapingRulesResponse(_BaseSchema):
    """Response for getNetworkWirelessSsidTrafficShapingRules operation."""

    traffic_shaping_enabled: bool | None = Field(
        default=None,
        validation_alias="trafficShapingEnabled",
        serialization_alias="trafficShapingEnabled",
    )
    default_rules_enabled: bool | None = Field(
        default=None,
        validation_alias="defaultRulesEnabled",
        serialization_alias="defaultRulesEnabled",
    )
    rules: list[GetNetworkWirelessSsidTrafficShapingRulesResponseRulesItem] = Field(
        default_factory=list
    )


class GetNetworkWirelessSsidTrafficShapingRulesResponseRulesItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidTrafficShapingRulesResponseRulesItem."""

    definitions: list[WirelessRulesDefinitionsItem]
    per_client_bandwidth_limits: WirelessRulesPerClientBandwidthLimits | None = Field(
        default=None,
        validation_alias="perClientBandwidthLimits",
        serialization_alias="perClientBandwidthLimits",
    )
    dscp_tag_value: int | None = Field(
        default=None, validation_alias="dscpTagValue", serialization_alias="dscpTagValue"
    )
    pcp_tag_value: int | None = Field(
        default=None, validation_alias="pcpTagValue", serialization_alias="pcpTagValue"
    )


class GetNetworkWirelessSsidsResponse(RootModel[list["GetNetworkWirelessSsidsResponseItem"]]):
    """Response for getNetworkWirelessSsids operation."""


class GetNetworkWirelessSsidsResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessSsidsResponseItem."""

    number: int | None = None
    name: str | None = None
    enabled: bool | None = None
    splash_page: str | None = Field(
        default=None, validation_alias="splashPage", serialization_alias="splashPage"
    )
    ssid_admin_accessible: bool | None = Field(
        default=None,
        validation_alias="ssidAdminAccessible",
        serialization_alias="ssidAdminAccessible",
    )
    local_auth: bool | None = Field(
        default=None, validation_alias="localAuth", serialization_alias="localAuth"
    )
    auth_mode: str | None = Field(
        default=None, validation_alias="authMode", serialization_alias="authMode"
    )
    encryption_mode: str | None = Field(
        default=None, validation_alias="encryptionMode", serialization_alias="encryptionMode"
    )
    wpa_encryption_mode: str | None = Field(
        default=None, validation_alias="wpaEncryptionMode", serialization_alias="wpaEncryptionMode"
    )
    radius_servers: list[WirelessRadiusServersItem] = Field(
        default_factory=list, validation_alias="radiusServers", serialization_alias="radiusServers"
    )
    radius_accounting_servers: list[WirelessRadiusServersItem] = Field(
        default_factory=list,
        validation_alias="radiusAccountingServers",
        serialization_alias="radiusAccountingServers",
    )
    radius_accounting_enabled: bool | None = Field(
        default=None,
        validation_alias="radiusAccountingEnabled",
        serialization_alias="radiusAccountingEnabled",
    )
    radius_enabled: bool | None = Field(
        default=None, validation_alias="radiusEnabled", serialization_alias="radiusEnabled"
    )
    radius_attribute_for_group_policies: str | None = Field(
        default=None,
        validation_alias="radiusAttributeForGroupPolicies",
        serialization_alias="radiusAttributeForGroupPolicies",
    )
    radius_failover_policy: str | None = Field(
        default=None,
        validation_alias="radiusFailoverPolicy",
        serialization_alias="radiusFailoverPolicy",
    )
    radius_load_balancing_policy: str | None = Field(
        default=None,
        validation_alias="radiusLoadBalancingPolicy",
        serialization_alias="radiusLoadBalancingPolicy",
    )
    ip_assignment_mode: str | None = Field(
        default=None, validation_alias="ipAssignmentMode", serialization_alias="ipAssignmentMode"
    )
    admin_splash_url: str | None = Field(
        default=None, validation_alias="adminSplashUrl", serialization_alias="adminSplashUrl"
    )
    splash_timeout: str | None = Field(
        default=None, validation_alias="splashTimeout", serialization_alias="splashTimeout"
    )
    walled_garden_enabled: bool | None = Field(
        default=None,
        validation_alias="walledGardenEnabled",
        serialization_alias="walledGardenEnabled",
    )
    walled_garden_ranges: list[str] = Field(
        default_factory=list,
        validation_alias="walledGardenRanges",
        serialization_alias="walledGardenRanges",
    )
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    band_selection: str | None = Field(
        default=None, validation_alias="bandSelection", serialization_alias="bandSelection"
    )
    per_client_bandwidth_limit_up: int | None = Field(
        default=None,
        validation_alias="perClientBandwidthLimitUp",
        serialization_alias="perClientBandwidthLimitUp",
    )
    per_client_bandwidth_limit_down: int | None = Field(
        default=None,
        validation_alias="perClientBandwidthLimitDown",
        serialization_alias="perClientBandwidthLimitDown",
    )
    visible: bool | None = None
    available_on_all_aps: bool | None = Field(
        default=None, validation_alias="availableOnAllAps", serialization_alias="availableOnAllAps"
    )
    availability_tags: list[str] = Field(
        default_factory=list,
        validation_alias="availabilityTags",
        serialization_alias="availabilityTags",
    )
    per_ssid_bandwidth_limit_up: int | None = Field(
        default=None,
        validation_alias="perSsidBandwidthLimitUp",
        serialization_alias="perSsidBandwidthLimitUp",
    )
    per_ssid_bandwidth_limit_down: int | None = Field(
        default=None,
        validation_alias="perSsidBandwidthLimitDown",
        serialization_alias="perSsidBandwidthLimitDown",
    )
    mandatory_dhcp_enabled: bool | None = Field(
        default=None,
        validation_alias="mandatoryDhcpEnabled",
        serialization_alias="mandatoryDhcpEnabled",
    )
    dot11w: dict[str, Any] | None = None
    dot11r: dict[str, Any] | None = None


class GetNetworkWirelessUsageHistoryResponse(
    RootModel[list["GetNetworkWirelessUsageHistoryResponseItem"]]
):
    """Response for getNetworkWirelessUsageHistory operation."""


class GetNetworkWirelessUsageHistoryResponseItem(_BaseSchema):
    """Schema for GetNetworkWirelessUsageHistoryResponseItem."""

    start_ts: datetime | None = Field(
        default=None, validation_alias="startTs", serialization_alias="startTs"
    )
    end_ts: datetime | None = Field(
        default=None, validation_alias="endTs", serialization_alias="endTs"
    )
    total_kbps: int | None = Field(
        default=None, validation_alias="totalKbps", serialization_alias="totalKbps"
    )
    sent_kbps: int | None = Field(
        default=None, validation_alias="sentKbps", serialization_alias="sentKbps"
    )
    received_kbps: int | None = Field(
        default=None, validation_alias="receivedKbps", serialization_alias="receivedKbps"
    )


class GetOrganizationWirelessAirMarshalRulesResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessAirMarshalRulesResponseItemsItem."""

    network: WirelessDoorLocksNetwork | None = None
    rule_id: str | None = Field(
        default=None, validation_alias="ruleId", serialization_alias="ruleId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    updated_at: datetime | None = Field(
        default=None, validation_alias="updatedAt", serialization_alias="updatedAt"
    )
    created_at: datetime | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    match: CreateNetworkWirelessAirMarshalRuleResponseMatch | None = None


class GetOrganizationWirelessAirMarshalSettingsByNetworkResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessAirMarshalSettingsByNetworkResponseItemsItem."""

    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    default_policy: str | None = Field(
        default=None, validation_alias="defaultPolicy", serialization_alias="defaultPolicy"
    )


class GetOrganizationWirelessClientsOverviewByDeviceResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessClientsOverviewByDeviceResponseItemsItem."""

    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    serial: str | None = None
    counts: WirelessCounts | None = None


class GetOrganizationWirelessDevicesChannelUtilizationByDeviceResponse(
    RootModel[list["GetOrganizationWirelessDevicesChannelUtilizationByDeviceResponseItem"]]
):
    """Response for getOrganizationWirelessDevicesChannelUtilizationByDevice operation."""


class GetOrganizationWirelessDevicesChannelUtilizationByDeviceResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesChannelUtilizationByDeviceResponseItem."""

    serial: str | None = None
    mac: str | None = None
    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    by_band: list[WirelessByBandItem] = Field(
        default_factory=list, validation_alias="byBand", serialization_alias="byBand"
    )


class GetOrganizationWirelessDevicesChannelUtilizationByNetworkResponse(
    RootModel[list["GetOrganizationWirelessDevicesChannelUtilizationByNetworkResponseItem"]]
):
    """Response for getOrganizationWirelessDevicesChannelUtilizationByNetwork operation."""


class GetOrganizationWirelessDevicesChannelUtilizationByNetworkResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesChannelUtilizationByNetworkResponseItem."""

    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    by_band: list[WirelessByBandItem] = Field(
        default_factory=list, validation_alias="byBand", serialization_alias="byBand"
    )


class GetOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByIntervalResponse(
    RootModel[
        list[
            "GetOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByIntervalResponseItem"
        ]
    ]
):
    """Response for getOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByInterval
    operation.
    """


class GetOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByIntervalResponseItem(
    _BaseSchema
):
    """Schema for
    GetOrganizationWirelessDevicesChannelUtilizationHistoryByDeviceByIntervalResponseItem.
    """

    start_ts: datetime | None = Field(
        default=None, validation_alias="startTs", serialization_alias="startTs"
    )
    end_ts: datetime | None = Field(
        default=None, validation_alias="endTs", serialization_alias="endTs"
    )
    serial: str | None = None
    mac: str | None = None
    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    by_band: list[WirelessByBandItem] = Field(
        default_factory=list, validation_alias="byBand", serialization_alias="byBand"
    )


class GetOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByIntervalResponse(
    RootModel[
        list[
            "GetOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByIntervalResponseItem"
        ]
    ]
):
    """Response for getOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByInterval
    operation.
    """


class GetOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByIntervalResponseItem(
    _BaseSchema
):
    """Schema for
    GetOrganizationWirelessDevicesChannelUtilizationHistoryByNetworkByIntervalResponseItem.
    """

    start_ts: datetime | None = Field(
        default=None, validation_alias="startTs", serialization_alias="startTs"
    )
    end_ts: datetime | None = Field(
        default=None, validation_alias="endTs", serialization_alias="endTs"
    )
    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    by_band: list[WirelessByBandItem] = Field(
        default_factory=list, validation_alias="byBand", serialization_alias="byBand"
    )


class GetOrganizationWirelessDevicesEthernetStatusesResponse(
    RootModel[list["GetOrganizationWirelessDevicesEthernetStatusesResponseItem"]]
):
    """Response for getOrganizationWirelessDevicesEthernetStatuses operation."""


class GetOrganizationWirelessDevicesEthernetStatusesResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesEthernetStatusesResponseItem."""

    serial: str | None = None
    name: str | None = None
    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    power: WirelessPower | None = None
    ports: list[WirelessPortsItem2] = Field(default_factory=list)
    aggregation: WirelessAggregation | None = None


class GetOrganizationWirelessDevicesPacketLossByClientResponse(
    RootModel[list["GetOrganizationWirelessDevicesPacketLossByClientResponseItem"]]
):
    """Response for getOrganizationWirelessDevicesPacketLossByClient operation."""


class GetOrganizationWirelessDevicesPacketLossByClientResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesPacketLossByClientResponseItem."""

    downstream: WirelessDownstream | None = None
    upstream: WirelessDownstream | None = None
    client: WirelessClient | None = None
    network: WirelessDoorLocksNetwork | None = None


class GetOrganizationWirelessDevicesPacketLossByDeviceResponse(
    RootModel[list["GetOrganizationWirelessDevicesPacketLossByDeviceResponseItem"]]
):
    """Response for getOrganizationWirelessDevicesPacketLossByDevice operation."""


class GetOrganizationWirelessDevicesPacketLossByDeviceResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesPacketLossByDeviceResponseItem."""

    downstream: WirelessDownstream | None = None
    upstream: WirelessDownstream | None = None
    network: WirelessDoorLocksNetwork | None = None
    device: WirelessDevice | None = None


class GetOrganizationWirelessDevicesPacketLossByNetworkResponse(
    RootModel[list["GetOrganizationWirelessDevicesPacketLossByNetworkResponseItem"]]
):
    """Response for getOrganizationWirelessDevicesPacketLossByNetwork operation."""


class GetOrganizationWirelessDevicesPacketLossByNetworkResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesPacketLossByNetworkResponseItem."""

    downstream: WirelessDownstream | None = None
    upstream: WirelessDownstream | None = None
    network: WirelessDoorLocksNetwork | None = None


class GetOrganizationWirelessDevicesPowerModeHistoryResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesPowerModeHistoryResponseItemsItem."""

    serial: str | None = None
    model: str | None = None
    name: str | None = None
    mac: str | None = None
    tags: list[str] = Field(default_factory=list)
    network: WirelessNetwork | None = None
    events: list[WirelessEventsItem] = Field(default_factory=list)


class GetOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltasResponseItemsItem(
    _BaseSchema
):
    """Schema for
    GetOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsDeltasResponseItemsItem.
    """

    certificate_authority_id: str | None = Field(
        default=None,
        validation_alias="certificateAuthorityId",
        serialization_alias="certificateAuthorityId",
    )
    crl: str | None = None


class GetOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesRadsecCertificatesAuthoritiesCrlsResponseItemsItem."""

    certificate_authority_id: str | None = Field(
        default=None,
        validation_alias="certificateAuthorityId",
        serialization_alias="certificateAuthorityId",
    )
    crl: str | None = None


class GetOrganizationWirelessDevicesRadsecCertificatesAuthoritiesResponse(
    RootModel[list["GetOrganizationWirelessDevicesRadsecCertificatesAuthoritiesResponseItem"]]
):
    """List of Certificate Authorities."""


class GetOrganizationWirelessDevicesRadsecCertificatesAuthoritiesResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesRadsecCertificatesAuthoritiesResponseItem."""

    certificate_authority_id: str | None = Field(
        default=None,
        validation_alias="certificateAuthorityId",
        serialization_alias="certificateAuthorityId",
    )
    status: str | None = None
    contents: str | None = None


class GetOrganizationWirelessDevicesSystemCpuLoadHistoryResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesSystemCpuLoadHistoryResponseItemsItem."""

    serial: str | None = None
    model: str | None = None
    name: str | None = None
    mac: str | None = None
    tags: list[str] = Field(default_factory=list)
    network: WirelessNetwork | None = None
    cpu_count: int | None = Field(
        default=None, validation_alias="cpuCount", serialization_alias="cpuCount"
    )
    series: list[WirelessSeriesItem] = Field(default_factory=list)


class GetOrganizationWirelessDevicesWirelessControllersByDeviceResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessDevicesWirelessControllersByDeviceResponseItemsItem."""

    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    serial: str | None = None
    controller: CreateDeviceWirelessZigbeeEnrollmentResponseRequest | None = None
    joined_at: str | None = Field(
        default=None, validation_alias="joinedAt", serialization_alias="joinedAt"
    )
    model: str | None = None
    tags: list[WirelessTagsItem] = Field(default_factory=list)
    mode: str | None = None
    country_code: str | None = Field(
        default=None, validation_alias="countryCode", serialization_alias="countryCode"
    )
    details: list[WirelessDetailsItem] = Field(default_factory=list)


class GetOrganizationWirelessLocationScanningByNetworkResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessLocationScanningByNetworkResponseItemsItem."""

    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    enabled: bool | None = None
    api: UpdateNetworkWirelessLocationScanningResponseApi | None = None


class GetOrganizationWirelessLocationScanningReceiversResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessLocationScanningReceiversResponseItemsItem."""

    network: WirelessDoorLocksNetwork | None = None
    receiver_id: str | None = Field(
        default=None, validation_alias="receiverId", serialization_alias="receiverId"
    )
    url: str | None = None
    version: str | None = None
    radio: WirelessRadio | None = None


class GetOrganizationWirelessMqttSettingsResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessMqttSettingsResponseItemsItem."""

    network: WirelessDoorLocksNetwork | None = None
    mqtt: WirelessMqtt | None = None
    ble: WirelessBle | None = None
    wifi: WirelessWifi2 | None = None


class GetOrganizationWirelessRadioRrmByNetworkResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessRadioRrmByNetworkResponseItemsItem."""

    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    time_zone: str | None = Field(
        default=None, validation_alias="timeZone", serialization_alias="timeZone"
    )
    busy_hour: UpdateNetworkWirelessRadioRrmResponseBusyHour | None = Field(
        default=None, validation_alias="busyHour", serialization_alias="busyHour"
    )
    channel: UpdateNetworkWirelessRadioRrmResponseChannel | None = None
    fra: WirelessBusyHourMinimizeChanges | None = None
    ai: UpdateNetworkWirelessRadioRrmResponseAi | None = None


class GetOrganizationWirelessRfProfilesAssignmentsByDeviceResponse(
    RootModel[list["GetOrganizationWirelessRfProfilesAssignmentsByDeviceResponseItem"]]
):
    """The top-level propery containing all status data."""


class GetOrganizationWirelessRfProfilesAssignmentsByDeviceResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessRfProfilesAssignmentsByDeviceResponseItem."""

    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    name: str | None = None
    serial: str | None = None
    model: str | None = None
    rf_profile: WirelessRfProfile | None = Field(
        default=None, validation_alias="rfProfile", serialization_alias="rfProfile"
    )


class GetOrganizationWirelessSsidsFirewallIsolationAllowlistEntriesResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessSsidsFirewallIsolationAllowlistEntriesResponseItemsItem."""

    entry_id: str = Field(validation_alias="entryId", serialization_alias="entryId")
    created_at: str | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    last_updated_at: str | None = Field(
        default=None, validation_alias="lastUpdatedAt", serialization_alias="lastUpdatedAt"
    )
    description: str | None = None
    client: WirelessClient2 | None = None
    ssid: WirelessSsid | None = None
    network: WirelessNetwork2 | None = None


class GetOrganizationWirelessSsidsOpenRoamingByNetworkResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessSsidsOpenRoamingByNetworkResponseItemsItem."""

    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    network_name: str | None = Field(
        default=None, validation_alias="networkName", serialization_alias="networkName"
    )
    ssid: list[WirelessSsidItem] = Field(default_factory=list)


class GetOrganizationWirelessSsidsStatusesByDeviceResponseItemsItem(_BaseSchema):
    """Schema for GetOrganizationWirelessSsidsStatusesByDeviceResponseItemsItem."""

    serial: str | None = None
    name: str | None = None
    network: WirelessDoorLocksNetwork | None = None
    basic_service_sets: list[WirelessBasicServiceSetsItem] = Field(
        default_factory=list,
        validation_alias="basicServiceSets",
        serialization_alias="basicServiceSets",
    )


class GetOrganizationWirelessZigbeeByNetworkResponse(
    RootModel[list["GetOrganizationWirelessZigbeeByNetworkResponseItem"]]
):
    """Response for getOrganizationWirelessZigbeeByNetwork operation."""


class GetOrganizationWirelessZigbeeByNetworkResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessZigbeeByNetworkResponseItem."""

    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    enabled: bool | None = None
    iot_controller: UpdateNetworkWirelessZigbeeResponseIotController | None = Field(
        default=None, validation_alias="iotController", serialization_alias="iotController"
    )
    lock_management: UpdateNetworkWirelessZigbeeResponseLockManagement | None = Field(
        default=None, validation_alias="lockManagement", serialization_alias="lockManagement"
    )
    defaults: UpdateNetworkWirelessZigbeeResponseDefaults | None = None


class GetOrganizationWirelessZigbeeDevicesResponse(
    RootModel[list["GetOrganizationWirelessZigbeeDevicesResponseItem"]]
):
    """Response for getOrganizationWirelessZigbeeDevices operation."""


class GetOrganizationWirelessZigbeeDevicesResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessZigbeeDevicesResponseItem."""

    network: WirelessDoorLocksNetwork | None = None
    pan_id: str | None = Field(default=None, validation_alias="panId", serialization_alias="panId")
    channel: str | None = None
    transmit_power_level: int | None = Field(
        default=None,
        validation_alias="transmitPowerLevel",
        serialization_alias="transmitPowerLevel",
    )
    enrolled: bool | None = None
    status: str | None = None
    gateway: WirelessGateway | None = None
    counts: WirelessCounts2 | None = None


class GetOrganizationWirelessZigbeeDisenrollmentResponse(_BaseSchema):
    """Response for getOrganizationWirelessZigbeeDisenrollment operation."""

    disenrollment_id: str | None = Field(
        default=None, validation_alias="disenrollmentId", serialization_alias="disenrollmentId"
    )
    url: str | None = None
    request: CreateOrganizationWirelessZigbeeDisenrollmentResponseRequest | None = None
    status: str | None = None
    door_locks: list[GetOrganizationWirelessZigbeeDisenrollmentResponseDoorLocksItem] = Field(
        default_factory=list, validation_alias="doorLocks", serialization_alias="doorLocks"
    )


class GetOrganizationWirelessZigbeeDisenrollmentResponseDoorLocksItem(_BaseSchema):
    """Schema for GetOrganizationWirelessZigbeeDisenrollmentResponseDoorLocksItem."""

    door_lock_id: str | None = Field(
        default=None, validation_alias="doorLockId", serialization_alias="doorLockId"
    )
    status: str | None = None


class GetOrganizationWirelessZigbeeDoorLocksResponse(
    RootModel[list["GetOrganizationWirelessZigbeeDoorLocksResponseItem"]]
):
    """Response for getOrganizationWirelessZigbeeDoorLocks operation."""


class GetOrganizationWirelessZigbeeDoorLocksResponseItem(_BaseSchema):
    """Schema for GetOrganizationWirelessZigbeeDoorLocksResponseItem."""

    door_lock_id: str | None = Field(
        default=None, validation_alias="doorLockId", serialization_alias="doorLockId"
    )
    name: str | None = None
    short_id: str | None = Field(
        default=None, validation_alias="shortId", serialization_alias="shortId"
    )
    lqi: str | None = None
    rssi: str | None = None
    status: str | None = None
    eui64: str | None = None
    enrolled_at: datetime | None = Field(
        default=None, validation_alias="enrolledAt", serialization_alias="enrolledAt"
    )
    last_seen_at: datetime | None = Field(
        default=None, validation_alias="lastSeenAt", serialization_alias="lastSeenAt"
    )
    network: WirelessDoorLocksNetwork | None = None
    gateway: WirelessDoorLocksGateway | None = None


class RecalculateOrganizationWirelessRadioAutoRfChannelsResponse(_BaseSchema):
    """Response for recalculateOrganizationWirelessRadioAutoRfChannels operation."""

    estimated_completed_at: str | None = Field(
        default=None,
        validation_alias="estimatedCompletedAt",
        serialization_alias="estimatedCompletedAt",
    )


class SetNetworkWirelessEthernetPortsProfilesDefaultResponse(_BaseSchema):
    """Response for setNetworkWirelessEthernetPortsProfilesDefault operation."""

    profile_id: str | None = Field(
        default=None, validation_alias="profileId", serialization_alias="profileId"
    )


class UpdateDeviceWirelessAlternateManagementInterfaceIpv6AddressesItem(_BaseSchema):
    """Item schema for addresses."""

    protocol: str | None = None
    assignment_mode: str | None = Field(
        default=None, validation_alias="assignmentMode", serialization_alias="assignmentMode"
    )
    address: str | None = None
    gateway: str | None = None
    prefix: str | None = None
    nameservers: WirelessAddressesNameservers | None = None


class UpdateDeviceWirelessAlternateManagementInterfaceIpv6Response(_BaseSchema):
    """Response for updateDeviceWirelessAlternateManagementInterfaceIpv6 operation."""

    addresses: list[UpdateDeviceWirelessAlternateManagementInterfaceIpv6ResponseAddressesItem] = (
        Field(default_factory=list)
    )


class UpdateDeviceWirelessAlternateManagementInterfaceIpv6ResponseAddressesItem(_BaseSchema):
    """Schema for UpdateDeviceWirelessAlternateManagementInterfaceIpv6ResponseAddressesItem."""

    protocol: str | None = None
    assignment_mode: str | None = Field(
        default=None, validation_alias="assignmentMode", serialization_alias="assignmentMode"
    )
    address: str | None = None
    gateway: str | None = None
    prefix: str | None = None
    nameservers: WirelessAddressesNameservers | None = None


class UpdateDeviceWirelessBluetoothSettingsResponse(_BaseSchema):
    """Response for updateDeviceWirelessBluetoothSettings operation."""

    uuid: str | None = None
    major: int | None = None
    minor: int | None = None


class UpdateDeviceWirelessElectronicShelfLabelResponse(_BaseSchema):
    """Response for updateDeviceWirelessElectronicShelfLabel operation."""

    ap_esl_id: int | None = Field(
        default=None, validation_alias="apEslId", serialization_alias="apEslId"
    )
    serial: str | None = None
    channel: str | None = None
    enabled: bool | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    hostname: str | None = None
    provider: str | None = None


class UpdateDeviceWirelessRadioSettingsFiveGhzSettings(_BaseSchema):
    """Manual radio settings for 5 GHz."""

    channel: int | None = None
    channel_width: int | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    target_power: int | None = Field(
        default=None, validation_alias="targetPower", serialization_alias="targetPower"
    )


class UpdateDeviceWirelessRadioSettingsResponse(_BaseSchema):
    """Response for updateDeviceWirelessRadioSettings operation."""

    serial: str | None = None
    rf_profile_id: str | None = Field(
        default=None, validation_alias="rfProfileId", serialization_alias="rfProfileId"
    )
    two_four_ghz_settings: GetDeviceWirelessRadioSettingsResponseTwoFourGhzSettings | None = Field(
        default=None,
        validation_alias="twoFourGhzSettings",
        serialization_alias="twoFourGhzSettings",
    )
    five_ghz_settings: GetDeviceWirelessRadioSettingsResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="fiveGhzSettings", serialization_alias="fiveGhzSettings"
    )


class UpdateDeviceWirelessRadioSettingsTwoFourGhzSettings(_BaseSchema):
    """Manual radio settings for 2.4 GHz."""

    channel: int | None = None
    target_power: int | None = Field(
        default=None, validation_alias="targetPower", serialization_alias="targetPower"
    )


class UpdateNetworkWirelessAirMarshalRuleMatch(_BaseSchema):
    """Object describing the rule specification."""

    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    string: str | None = None


class UpdateNetworkWirelessAirMarshalRuleResponse(_BaseSchema):
    """Response for updateNetworkWirelessAirMarshalRule operation."""

    network: WirelessDoorLocksNetwork | None = None
    rule_id: str | None = Field(
        default=None, validation_alias="ruleId", serialization_alias="ruleId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    updated_at: datetime | None = Field(
        default=None, validation_alias="updatedAt", serialization_alias="updatedAt"
    )
    created_at: datetime | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    match: CreateNetworkWirelessAirMarshalRuleResponseMatch | None = None


class UpdateNetworkWirelessAirMarshalSettingsResponse(_BaseSchema):
    """Response for updateNetworkWirelessAirMarshalSettings operation."""

    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    default_policy: str | None = Field(
        default=None, validation_alias="defaultPolicy", serialization_alias="defaultPolicy"
    )


class UpdateNetworkWirelessAlternateManagementInterfaceAccessPointsItem(_BaseSchema):
    """Item schema for accessPoints."""

    serial: str
    alternate_management_ip: str = Field(
        validation_alias="alternateManagementIp", serialization_alias="alternateManagementIp"
    )
    subnet_mask: str | None = Field(
        default=None, validation_alias="subnetMask", serialization_alias="subnetMask"
    )
    gateway: str | None = None
    dns1: str | None = None
    dns2: str | None = None


class UpdateNetworkWirelessBillingPlansItem(_BaseSchema):
    """Item schema for plans."""

    id: str | None = None
    price: float
    bandwidth_limits: WirelessPlansBandwidthLimits = Field(
        validation_alias="bandwidthLimits", serialization_alias="bandwidthLimits"
    )
    time_limit: str = Field(validation_alias="timeLimit", serialization_alias="timeLimit")


class UpdateNetworkWirelessBillingResponse(_BaseSchema):
    """Response for updateNetworkWirelessBilling operation."""

    currency: str | None = None
    plans: list[GetNetworkWirelessBillingResponsePlansItem] = Field(default_factory=list)


class UpdateNetworkWirelessBluetoothSettingsResponse(_BaseSchema):
    """Response for updateNetworkWirelessBluetoothSettings operation."""

    scanning_enabled: bool | None = Field(
        default=None, validation_alias="scanningEnabled", serialization_alias="scanningEnabled"
    )
    advertising_enabled: bool | None = Field(
        default=None,
        validation_alias="advertisingEnabled",
        serialization_alias="advertisingEnabled",
    )
    uuid: str | None = None
    major_minor_assignment_mode: str | None = Field(
        default=None,
        validation_alias="majorMinorAssignmentMode",
        serialization_alias="majorMinorAssignmentMode",
    )
    major: int | None = None
    minor: int | None = None
    esl_enabled: bool | None = Field(
        default=None, validation_alias="eslEnabled", serialization_alias="eslEnabled"
    )


class UpdateNetworkWirelessElectronicShelfLabelResponse(_BaseSchema):
    """Response for updateNetworkWirelessElectronicShelfLabel operation."""

    hostname: str | None = None
    enabled: bool | None = None
    mode: str | None = None


class UpdateNetworkWirelessEthernetPortsProfilePortsItem(_BaseSchema):
    """Item schema for ports."""

    name: str
    enabled: bool | None = None
    ssid: int | None = None
    psk_group_id: str | None = Field(
        default=None, validation_alias="pskGroupId", serialization_alias="pskGroupId"
    )


class UpdateNetworkWirelessEthernetPortsProfileResponse(_BaseSchema):
    """Response for updateNetworkWirelessEthernetPortsProfile operation."""

    profile_id: str | None = Field(
        default=None, validation_alias="profileId", serialization_alias="profileId"
    )
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    ports: list[WirelessPortsItem] = Field(default_factory=list)
    usb_ports: list[WirelessUsbPortsItem] = Field(
        default_factory=list, validation_alias="usbPorts", serialization_alias="usbPorts"
    )


class UpdateNetworkWirelessEthernetPortsProfileUsbPortsItem(_BaseSchema):
    """Item schema for usbPorts."""

    name: str
    enabled: bool | None = None
    ssid: int | None = None


class UpdateNetworkWirelessLocationScanningApi(_BaseSchema):
    """Enable push API for scanning events, analytics must be enabled."""

    enabled: bool | None = None


class UpdateNetworkWirelessLocationScanningResponse(_BaseSchema):
    """Response for updateNetworkWirelessLocationScanning operation."""

    enabled: bool | None = None
    api: UpdateNetworkWirelessLocationScanningResponseApi | None = None


class UpdateNetworkWirelessLocationScanningResponseApi(_BaseSchema):
    """Whether to enable collection of location and scanning analytics."""

    enabled: bool | None = None
    validator: WirelessApiValidator | None = None


class UpdateNetworkWirelessRadioRrmAi(_BaseSchema):
    """AI settings."""

    enabled: bool | None = None


class UpdateNetworkWirelessRadioRrmBusyHour(_BaseSchema):
    """Busy Hour settings."""

    schedule: UpdateNetworkWirelessRadioRrmBusyHourSchedule | None = None
    minimize_changes: WirelessBusyHourMinimizeChanges | None = Field(
        default=None, validation_alias="minimizeChanges", serialization_alias="minimizeChanges"
    )


class UpdateNetworkWirelessRadioRrmBusyHourSchedule(_BaseSchema):
    """Busy hour mode settings."""

    mode: str | None = None
    manual: WirelessAutomatic | None = None


class UpdateNetworkWirelessRadioRrmChannel(_BaseSchema):
    """Channel settings."""

    avoidance: WirelessBusyHourMinimizeChanges | None = None


class UpdateNetworkWirelessRadioRrmFra(_BaseSchema):
    """FRA settings."""

    enabled: bool | None = None


class UpdateNetworkWirelessRadioRrmResponse(_BaseSchema):
    """Response for updateNetworkWirelessRadioRrm operation."""

    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    time_zone: str | None = Field(
        default=None, validation_alias="timeZone", serialization_alias="timeZone"
    )
    busy_hour: UpdateNetworkWirelessRadioRrmResponseBusyHour | None = Field(
        default=None, validation_alias="busyHour", serialization_alias="busyHour"
    )
    channel: UpdateNetworkWirelessRadioRrmResponseChannel | None = None
    fra: WirelessBusyHourMinimizeChanges | None = None
    ai: UpdateNetworkWirelessRadioRrmResponseAi | None = None


class UpdateNetworkWirelessRadioRrmResponseAi(_BaseSchema):
    """AI settings."""

    enabled: bool | None = None
    last_enabled_at: str | None = Field(
        default=None, validation_alias="lastEnabledAt", serialization_alias="lastEnabledAt"
    )


class UpdateNetworkWirelessRadioRrmResponseBusyHour(_BaseSchema):
    """Busy Hour settings."""

    schedule: WirelessBusyHourSchedule | None = None
    minimize_changes: WirelessBusyHourMinimizeChanges | None = Field(
        default=None, validation_alias="minimizeChanges", serialization_alias="minimizeChanges"
    )


class UpdateNetworkWirelessRadioRrmResponseChannel(_BaseSchema):
    """Channel settings."""

    avoidance: WirelessBusyHourMinimizeChanges | None = None


class UpdateNetworkWirelessRfProfileApBandSettings(_BaseSchema):
    """Settings that will be enabled if selectionType is set to 'ap'."""

    band_operation_mode: str | None = Field(
        default=None, validation_alias="bandOperationMode", serialization_alias="bandOperationMode"
    )
    bands: CreateNetworkWirelessRfProfileApBandSettingsBands | None = None
    band_steering_enabled: bool | None = Field(
        default=None,
        validation_alias="bandSteeringEnabled",
        serialization_alias="bandSteeringEnabled",
    )


class UpdateNetworkWirelessRfProfileFiveGhzSettings(_BaseSchema):
    """Settings related to 5Ghz band."""

    max_power: int | None = Field(
        default=None, validation_alias="maxPower", serialization_alias="maxPower"
    )
    min_power: int | None = Field(
        default=None, validation_alias="minPower", serialization_alias="minPower"
    )
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    valid_auto_channels: list[int] = Field(
        default_factory=list,
        validation_alias="validAutoChannels",
        serialization_alias="validAutoChannels",
    )
    channel_width: str | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    rxsop: int | None = None


class UpdateNetworkWirelessRfProfileFlexRadios(_BaseSchema):
    """Flex radio settings."""

    by_model: list[CreateNetworkWirelessRfProfileFlexRadiosByModelItem] = Field(
        default_factory=list, validation_alias="byModel", serialization_alias="byModel"
    )


class UpdateNetworkWirelessRfProfilePerSsidSettings(_BaseSchema):
    """Per-SSID radio settings by number."""

    n_0: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="0", serialization_alias="0"
    )
    n_1: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="1", serialization_alias="1"
    )
    n_2: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="2", serialization_alias="2"
    )
    n_3: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="3", serialization_alias="3"
    )
    n_4: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="4", serialization_alias="4"
    )
    n_5: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="5", serialization_alias="5"
    )
    n_6: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="6", serialization_alias="6"
    )
    n_7: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="7", serialization_alias="7"
    )
    n_8: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="8", serialization_alias="8"
    )
    n_9: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="9", serialization_alias="9"
    )
    n_10: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="10", serialization_alias="10"
    )
    n_11: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="11", serialization_alias="11"
    )
    n_12: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="12", serialization_alias="12"
    )
    n_13: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="13", serialization_alias="13"
    )
    n_14: CreateNetworkWirelessRfProfilePerSsidSettings0 | None = Field(
        default=None, validation_alias="14", serialization_alias="14"
    )


class UpdateNetworkWirelessRfProfileResponse(_BaseSchema):
    """Response for updateNetworkWirelessRfProfile operation."""

    id: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    client_balancing_enabled: bool | None = Field(
        default=None,
        validation_alias="clientBalancingEnabled",
        serialization_alias="clientBalancingEnabled",
    )
    min_bitrate_type: str | None = Field(
        default=None, validation_alias="minBitrateType", serialization_alias="minBitrateType"
    )
    band_selection_type: str | None = Field(
        default=None, validation_alias="bandSelectionType", serialization_alias="bandSelectionType"
    )
    ap_band_settings: GetNetworkWirelessRfProfilesResponseApBandSettings | None = Field(
        default=None, validation_alias="apBandSettings", serialization_alias="apBandSettings"
    )
    two_four_ghz_settings: GetNetworkWirelessRfProfilesResponseTwoFourGhzSettings | None = Field(
        default=None,
        validation_alias="twoFourGhzSettings",
        serialization_alias="twoFourGhzSettings",
    )
    five_ghz_settings: GetNetworkWirelessRfProfilesResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="fiveGhzSettings", serialization_alias="fiveGhzSettings"
    )
    six_ghz_settings: GetNetworkWirelessRfProfilesResponseFiveGhzSettings | None = Field(
        default=None, validation_alias="sixGhzSettings", serialization_alias="sixGhzSettings"
    )
    transmission: WirelessBusyHourMinimizeChanges | None = None
    per_ssid_settings: GetNetworkWirelessRfProfilesResponsePerSsidSettings | None = Field(
        default=None, validation_alias="perSsidSettings", serialization_alias="perSsidSettings"
    )
    is_indoor_default: bool | None = Field(
        default=None, validation_alias="isIndoorDefault", serialization_alias="isIndoorDefault"
    )
    is_outdoor_default: bool | None = Field(
        default=None, validation_alias="isOutdoorDefault", serialization_alias="isOutdoorDefault"
    )


class UpdateNetworkWirelessRfProfileSixGhzSettings(_BaseSchema):
    """Settings related to 6Ghz band. Only applicable to networks with 6Ghz capable APs."""

    max_power: int | None = Field(
        default=None, validation_alias="maxPower", serialization_alias="maxPower"
    )
    min_power: int | None = Field(
        default=None, validation_alias="minPower", serialization_alias="minPower"
    )
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    valid_auto_channels: list[int] = Field(
        default_factory=list,
        validation_alias="validAutoChannels",
        serialization_alias="validAutoChannels",
    )
    channel_width: str | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    rxsop: int | None = None


class UpdateNetworkWirelessRfProfileTransmission(_BaseSchema):
    """Settings related to radio transmission."""

    enabled: bool | None = None


class UpdateNetworkWirelessRfProfileTwoFourGhzSettings(_BaseSchema):
    """Settings related to 2.4Ghz band."""

    max_power: int | None = Field(
        default=None, validation_alias="maxPower", serialization_alias="maxPower"
    )
    min_power: int | None = Field(
        default=None, validation_alias="minPower", serialization_alias="minPower"
    )
    min_bitrate: float | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    valid_auto_channels: list[int] = Field(
        default_factory=list,
        validation_alias="validAutoChannels",
        serialization_alias="validAutoChannels",
    )
    ax_enabled: bool | None = Field(
        default=None, validation_alias="axEnabled", serialization_alias="axEnabled"
    )
    rxsop: int | None = None


class UpdateNetworkWirelessSettingsMulticastToUnicastConversion(_BaseSchema):
    """Multicast-to-unicast conversion settings across the network."""

    enabled: bool | None = None


class UpdateNetworkWirelessSettingsNamedVlans(_BaseSchema):
    """Named VLAN settings for wireless networks."""

    pool_dhcp_monitoring: WirelessNamedVlansPoolDhcpMonitoring | None = Field(
        default=None,
        validation_alias="poolDhcpMonitoring",
        serialization_alias="poolDhcpMonitoring",
    )


class UpdateNetworkWirelessSettingsResponse(_BaseSchema):
    """Response for updateNetworkWirelessSettings operation."""

    meshing_enabled: bool | None = Field(
        default=None, validation_alias="meshingEnabled", serialization_alias="meshingEnabled"
    )
    ipv6_bridge_enabled: bool | None = Field(
        default=None, validation_alias="ipv6BridgeEnabled", serialization_alias="ipv6BridgeEnabled"
    )
    location_analytics_enabled: bool | None = Field(
        default=None,
        validation_alias="locationAnalyticsEnabled",
        serialization_alias="locationAnalyticsEnabled",
    )
    upgrade_strategy: str | None = Field(
        default=None, validation_alias="upgradeStrategy", serialization_alias="upgradeStrategy"
    )
    led_lights_on: bool | None = Field(
        default=None, validation_alias="ledLightsOn", serialization_alias="ledLightsOn"
    )
    multicast_to_unicast_conversion: WirelessBusyHourMinimizeChanges | None = Field(
        default=None,
        validation_alias="multicastToUnicastConversion",
        serialization_alias="multicastToUnicastConversion",
    )
    named_vlans: GetNetworkWirelessSettingsResponseNamedVlans | None = Field(
        default=None, validation_alias="namedVlans", serialization_alias="namedVlans"
    )
    regulatory_domain: GetNetworkWirelessSettingsResponseRegulatoryDomain | None = Field(
        default=None, validation_alias="regulatoryDomain", serialization_alias="regulatoryDomain"
    )


class UpdateNetworkWirelessSsidActiveDirectory(_BaseSchema):
    """The current setting for Active Directory. Only valid if splashPage is 'Password-protected
    with Active Directory'.
    """

    servers: list[UpdateNetworkWirelessSsidActiveDirectoryServersItem] = Field(default_factory=list)
    credentials: UpdateNetworkWirelessSsidActiveDirectoryCredentials | None = None


class UpdateNetworkWirelessSsidActiveDirectoryCredentials(_BaseSchema):
    """(Optional) The credentials of the user account to be used by the AP to bind to your Active
    Directory server. The Active Directory account should have permissions on all your Active
    Directory servers. Only valid if the splashPage is 'Password-protected with Active
    Directory'.
    """

    logon_name: str | None = Field(
        default=None, validation_alias="logonName", serialization_alias="logonName"
    )
    password: str | None = None


class UpdateNetworkWirelessSsidActiveDirectoryServersItem(_BaseSchema):
    """Schema for UpdateNetworkWirelessSsidActiveDirectoryServersItem."""

    host: str
    port: int | None = None


class UpdateNetworkWirelessSsidApTagsAndVlanIdsItem(_BaseSchema):
    """Item schema for apTagsAndVlanIds."""

    tags: list[str] = Field(default_factory=list)
    vlan_id: int | None = Field(
        default=None, validation_alias="vlanId", serialization_alias="vlanId"
    )


class UpdateNetworkWirelessSsidBonjourForwardingException(_BaseSchema):
    """Bonjour forwarding exception."""

    enabled: bool | None = None


class UpdateNetworkWirelessSsidBonjourForwardingResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidBonjourForwarding operation."""

    enabled: bool | None = None
    exception: WirelessBusyHourMinimizeChanges | None = None
    rules: list[GetNetworkWirelessSsidBonjourForwardingResponseRulesItem] = Field(
        default_factory=list
    )


class UpdateNetworkWirelessSsidBonjourForwardingRulesItem(_BaseSchema):
    """Item schema for rules."""

    description: str | None = None
    vlan_id: str = Field(validation_alias="vlanId", serialization_alias="vlanId")
    services: list[str]


class UpdateNetworkWirelessSsidDeviceTypeGroupPoliciesDeviceTypePoliciesItem(_BaseSchema):
    """Item schema for deviceTypePolicies."""

    device_type: str = Field(validation_alias="deviceType", serialization_alias="deviceType")
    device_policy: str = Field(validation_alias="devicePolicy", serialization_alias="devicePolicy")
    group_policy_id: int | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )


class UpdateNetworkWirelessSsidDnsRewrite(_BaseSchema):
    """DNS servers rewrite settings."""

    enabled: bool | None = None
    dns_custom_nameservers: list[str] = Field(
        default_factory=list,
        validation_alias="dnsCustomNameservers",
        serialization_alias="dnsCustomNameservers",
    )


class UpdateNetworkWirelessSsidDot11r(_BaseSchema):
    """The current setting for 802.11r."""

    enabled: bool | None = None
    adaptive: bool | None = None


class UpdateNetworkWirelessSsidDot11w(_BaseSchema):
    """The current setting for Protected Management Frames (802.11w)."""

    enabled: bool | None = None
    required: bool | None = None


class UpdateNetworkWirelessSsidEapOverrideEapolKey(_BaseSchema):
    """EAPOL Key settings."""

    retries: int | None = None
    timeout_in_ms: int | None = Field(
        default=None, validation_alias="timeoutInMs", serialization_alias="timeoutInMs"
    )


class UpdateNetworkWirelessSsidEapOverrideIdentity(_BaseSchema):
    """EAP settings for identity requests."""

    retries: int | None = None
    timeout: int | None = None


class UpdateNetworkWirelessSsidEapOverrideResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidEapOverride operation."""

    timeout: int | None = None
    max_retries: int | None = Field(
        default=None, validation_alias="maxRetries", serialization_alias="maxRetries"
    )
    identity: GetNetworkWirelessSsidEapOverrideResponseIdentity | None = None
    eapol_key: GetNetworkWirelessSsidEapOverrideResponseEapolKey | None = Field(
        default=None, validation_alias="eapolKey", serialization_alias="eapolKey"
    )


class UpdateNetworkWirelessSsidFirewallL3FirewallRulesResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidFirewallL3FirewallRules operation."""

    rules: list[GetNetworkWirelessSsidFirewallL3FirewallRulesResponseRulesItem] = Field(
        default_factory=list
    )
    allow_lan_access: bool | None = Field(
        default=None, validation_alias="allowLanAccess", serialization_alias="allowLanAccess"
    )


class UpdateNetworkWirelessSsidFirewallL3FirewallRulesRulesItem(_BaseSchema):
    """Item schema for rules."""

    comment: str | None = None
    policy: str
    ip_ver: str | None = Field(default=None, validation_alias="ipVer", serialization_alias="ipVer")
    protocol: str
    dest_port: str | None = Field(
        default=None, validation_alias="destPort", serialization_alias="destPort"
    )
    dest_cidr: str = Field(validation_alias="destCidr", serialization_alias="destCidr")


class UpdateNetworkWirelessSsidFirewallL7FirewallRulesResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidFirewallL7FirewallRules operation."""

    rules: list[GetNetworkWirelessSsidFirewallL7FirewallRulesResponseRulesItem] = Field(
        default_factory=list
    )


class UpdateNetworkWirelessSsidFirewallL7FirewallRulesRulesItem(_BaseSchema):
    """Item schema for rules."""

    policy: str | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    value: str | None = None


class UpdateNetworkWirelessSsidGre(_BaseSchema):
    """Ethernet over GRE settings."""

    concentrator: UpdateNetworkWirelessSsidGreConcentrator | None = None
    key: int | None = None


class UpdateNetworkWirelessSsidGreConcentrator(_BaseSchema):
    """The EoGRE concentrator's settings."""

    host: str


class UpdateNetworkWirelessSsidHotspot20MccMncsItem(_BaseSchema):
    """Item schema for mccMncs."""

    mcc: str | None = None
    mnc: str | None = None


class UpdateNetworkWirelessSsidHotspot20NaiRealmsItem(_BaseSchema):
    """Item schema for naiRealms."""

    format_: str | None = Field(
        default=None, validation_alias="format", serialization_alias="format"
    )
    realm: str | None = None
    methods: list[WirelessNaiRealmsMethodsItem] = Field(default_factory=list)


class UpdateNetworkWirelessSsidHotspot20Operator(_BaseSchema):
    """Operator settings for this SSID."""

    name: str | None = None


class UpdateNetworkWirelessSsidHotspot20Response(_BaseSchema):
    """Response for updateNetworkWirelessSsidHotspot20 operation."""

    enabled: bool | None = None
    operator: GetNetworkWirelessSsidHotspot20ResponseOperator | None = None
    venue: GetNetworkWirelessSsidHotspot20ResponseVenue | None = None
    network_access_type: str | None = Field(
        default=None, validation_alias="networkAccessType", serialization_alias="networkAccessType"
    )
    domains: list[str] = Field(default_factory=list)
    roam_consort_ois: list[str] = Field(
        default_factory=list,
        validation_alias="roamConsortOis",
        serialization_alias="roamConsortOis",
    )
    mcc_mncs: list[GetNetworkWirelessSsidHotspot20ResponseMccMncsItem] = Field(
        default_factory=list, validation_alias="mccMncs", serialization_alias="mccMncs"
    )
    nai_realms: list[GetNetworkWirelessSsidHotspot20ResponseNaiRealmsItem] = Field(
        default_factory=list, validation_alias="naiRealms", serialization_alias="naiRealms"
    )


class UpdateNetworkWirelessSsidHotspot20Venue(_BaseSchema):
    """Venue settings for this SSID."""

    name: str | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")


class UpdateNetworkWirelessSsidIdentityPskResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidIdentityPsk operation."""

    name: str | None = None
    id: str | None = None
    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    passphrase: str | None = None
    wifi_personal_network_id: str | None = Field(
        default=None,
        validation_alias="wifiPersonalNetworkId",
        serialization_alias="wifiPersonalNetworkId",
    )
    email: str | None = None
    expires_at: datetime | None = Field(
        default=None, validation_alias="expiresAt", serialization_alias="expiresAt"
    )


class UpdateNetworkWirelessSsidLdap(_BaseSchema):
    """The current setting for LDAP. Only valid if splashPage is 'Password-protected with LDAP'."""

    servers: list[UpdateNetworkWirelessSsidLdapServersItem] = Field(default_factory=list)
    credentials: UpdateNetworkWirelessSsidLdapCredentials | None = None
    base_distinguished_name: str | None = Field(
        default=None,
        validation_alias="baseDistinguishedName",
        serialization_alias="baseDistinguishedName",
    )
    server_ca_certificate: WirelessClientRootCaCertificate | None = Field(
        default=None,
        validation_alias="serverCaCertificate",
        serialization_alias="serverCaCertificate",
    )


class UpdateNetworkWirelessSsidLdapCredentials(_BaseSchema):
    """(Optional) The credentials of the user account to be used by the AP to bind to your LDAP
    server. The LDAP account should have permissions on all your LDAP servers.
    """

    distinguished_name: str | None = Field(
        default=None, validation_alias="distinguishedName", serialization_alias="distinguishedName"
    )
    password: str | None = None


class UpdateNetworkWirelessSsidLdapServersItem(_BaseSchema):
    """Schema for UpdateNetworkWirelessSsidLdapServersItem."""

    host: str
    port: int


class UpdateNetworkWirelessSsidLocalAuthFallback(_BaseSchema):
    """The current configuration for Local Authentication Fallback. Enables the Access Point (AP)
    to store client authentication data for a specified duration that can be adjusted as needed.
    """

    cache_timeout: int | None = Field(
        default=None, validation_alias="cacheTimeout", serialization_alias="cacheTimeout"
    )
    enabled: bool | None = None
    server_ca_certificate: WirelessClientRootCaCertificate | None = Field(
        default=None,
        validation_alias="serverCaCertificate",
        serialization_alias="serverCaCertificate",
    )


class UpdateNetworkWirelessSsidLocalRadius(_BaseSchema):
    """The current setting for Local Authentication, a built-in RADIUS server on the access point.
    Only valid if authMode is '8021x-localradius'.
    """

    cache_timeout: int | None = Field(
        default=None, validation_alias="cacheTimeout", serialization_alias="cacheTimeout"
    )
    password_authentication: WirelessBusyHourMinimizeChanges | None = Field(
        default=None,
        validation_alias="passwordAuthentication",
        serialization_alias="passwordAuthentication",
    )
    certificate_authentication: (
        UpdateNetworkWirelessSsidLocalRadiusCertificateAuthentication | None
    ) = Field(
        default=None,
        validation_alias="certificateAuthentication",
        serialization_alias="certificateAuthentication",
    )


class UpdateNetworkWirelessSsidLocalRadiusCertificateAuthentication(_BaseSchema):
    """The current setting for certificate verification."""

    enabled: bool | None = None
    use_ldap: bool | None = Field(
        default=None, validation_alias="useLdap", serialization_alias="useLdap"
    )
    use_ocsp: bool | None = Field(
        default=None, validation_alias="useOcsp", serialization_alias="useOcsp"
    )
    ocsp_responder_url: str | None = Field(
        default=None, validation_alias="ocspResponderUrl", serialization_alias="ocspResponderUrl"
    )
    client_root_ca_certificate: WirelessClientRootCaCertificate | None = Field(
        default=None,
        validation_alias="clientRootCaCertificate",
        serialization_alias="clientRootCaCertificate",
    )


class UpdateNetworkWirelessSsidNamedVlans(_BaseSchema):
    """Named VLAN settings."""

    tagging: UpdateNetworkWirelessSsidNamedVlansTagging | None = None
    radius: UpdateNetworkWirelessSsidNamedVlansRadius | None = None


class UpdateNetworkWirelessSsidNamedVlansRadius(_BaseSchema):
    """RADIUS settings. This param is only valid when authMode is 'open-with-radius' and
    ipAssignmentMode is not 'NAT mode'.
    """

    guest_vlan: WirelessGuestVlan | None = Field(
        default=None, validation_alias="guestVlan", serialization_alias="guestVlan"
    )


class UpdateNetworkWirelessSsidNamedVlansTagging(_BaseSchema):
    """VLAN tagging settings. This param is only valid when ipAssignmentMode is 'Bridge mode' or
    'Layer 3 roaming'.
    """

    enabled: bool | None = None
    default_vlan_name: str | None = Field(
        default=None, validation_alias="defaultVlanName", serialization_alias="defaultVlanName"
    )
    by_ap_tags: list[WirelessByApTagsItem] = Field(
        default_factory=list, validation_alias="byApTags", serialization_alias="byApTags"
    )


class UpdateNetworkWirelessSsidOauth(_BaseSchema):
    """The OAuth settings of this SSID. Only valid if splashPage is 'Google OAuth'."""

    allowed_domains: list[str] = Field(
        default_factory=list,
        validation_alias="allowedDomains",
        serialization_alias="allowedDomains",
    )


class UpdateNetworkWirelessSsidOpenRoamingResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidOpenRoaming operation."""

    enabled: bool | None = None
    tenant_id: str | None = Field(
        default=None, validation_alias="tenantId", serialization_alias="tenantId"
    )


class UpdateNetworkWirelessSsidRadiusAccountingServersItem(_BaseSchema):
    """Item schema for radiusAccountingServers."""

    host: str
    port: int | None = None
    secret: str | None = None
    radsec_enabled: bool | None = Field(
        default=None, validation_alias="radsecEnabled", serialization_alias="radsecEnabled"
    )
    ca_certificate: str | None = Field(
        default=None, validation_alias="caCertificate", serialization_alias="caCertificate"
    )


class UpdateNetworkWirelessSsidRadiusRadsec(_BaseSchema):
    """The current settings for RADIUS RADSec."""

    tls_tunnel: UpdateNetworkWirelessSsidRadiusRadsecTlsTunnel | None = Field(
        default=None, validation_alias="tlsTunnel", serialization_alias="tlsTunnel"
    )


class UpdateNetworkWirelessSsidRadiusRadsecTlsTunnel(_BaseSchema):
    """RADSec TLS tunnel settings."""

    timeout: int | None = None


class UpdateNetworkWirelessSsidRadiusServersItem(_BaseSchema):
    """Item schema for radiusServers."""

    host: str
    port: int | None = None
    secret: str | None = None
    radsec_enabled: bool | None = Field(
        default=None, validation_alias="radsecEnabled", serialization_alias="radsecEnabled"
    )
    open_roaming_certificate_id: int | None = Field(
        default=None,
        validation_alias="openRoamingCertificateId",
        serialization_alias="openRoamingCertificateId",
    )
    ca_certificate: str | None = Field(
        default=None, validation_alias="caCertificate", serialization_alias="caCertificate"
    )


class UpdateNetworkWirelessSsidResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsid operation."""

    number: int | None = None
    name: str | None = None
    enabled: bool | None = None
    splash_page: str | None = Field(
        default=None, validation_alias="splashPage", serialization_alias="splashPage"
    )
    ssid_admin_accessible: bool | None = Field(
        default=None,
        validation_alias="ssidAdminAccessible",
        serialization_alias="ssidAdminAccessible",
    )
    local_auth: bool | None = Field(
        default=None, validation_alias="localAuth", serialization_alias="localAuth"
    )
    auth_mode: str | None = Field(
        default=None, validation_alias="authMode", serialization_alias="authMode"
    )
    encryption_mode: str | None = Field(
        default=None, validation_alias="encryptionMode", serialization_alias="encryptionMode"
    )
    wpa_encryption_mode: str | None = Field(
        default=None, validation_alias="wpaEncryptionMode", serialization_alias="wpaEncryptionMode"
    )
    radius_servers: list[WirelessRadiusServersItem] = Field(
        default_factory=list, validation_alias="radiusServers", serialization_alias="radiusServers"
    )
    radius_accounting_servers: list[WirelessRadiusServersItem] = Field(
        default_factory=list,
        validation_alias="radiusAccountingServers",
        serialization_alias="radiusAccountingServers",
    )
    radius_accounting_enabled: bool | None = Field(
        default=None,
        validation_alias="radiusAccountingEnabled",
        serialization_alias="radiusAccountingEnabled",
    )
    radius_enabled: bool | None = Field(
        default=None, validation_alias="radiusEnabled", serialization_alias="radiusEnabled"
    )
    radius_attribute_for_group_policies: str | None = Field(
        default=None,
        validation_alias="radiusAttributeForGroupPolicies",
        serialization_alias="radiusAttributeForGroupPolicies",
    )
    radius_failover_policy: str | None = Field(
        default=None,
        validation_alias="radiusFailoverPolicy",
        serialization_alias="radiusFailoverPolicy",
    )
    radius_load_balancing_policy: str | None = Field(
        default=None,
        validation_alias="radiusLoadBalancingPolicy",
        serialization_alias="radiusLoadBalancingPolicy",
    )
    ip_assignment_mode: str | None = Field(
        default=None, validation_alias="ipAssignmentMode", serialization_alias="ipAssignmentMode"
    )
    admin_splash_url: str | None = Field(
        default=None, validation_alias="adminSplashUrl", serialization_alias="adminSplashUrl"
    )
    splash_timeout: str | None = Field(
        default=None, validation_alias="splashTimeout", serialization_alias="splashTimeout"
    )
    walled_garden_enabled: bool | None = Field(
        default=None,
        validation_alias="walledGardenEnabled",
        serialization_alias="walledGardenEnabled",
    )
    walled_garden_ranges: list[str] = Field(
        default_factory=list,
        validation_alias="walledGardenRanges",
        serialization_alias="walledGardenRanges",
    )
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    band_selection: str | None = Field(
        default=None, validation_alias="bandSelection", serialization_alias="bandSelection"
    )
    per_client_bandwidth_limit_up: int | None = Field(
        default=None,
        validation_alias="perClientBandwidthLimitUp",
        serialization_alias="perClientBandwidthLimitUp",
    )
    per_client_bandwidth_limit_down: int | None = Field(
        default=None,
        validation_alias="perClientBandwidthLimitDown",
        serialization_alias="perClientBandwidthLimitDown",
    )
    visible: bool | None = None
    available_on_all_aps: bool | None = Field(
        default=None, validation_alias="availableOnAllAps", serialization_alias="availableOnAllAps"
    )
    availability_tags: list[str] = Field(
        default_factory=list,
        validation_alias="availabilityTags",
        serialization_alias="availabilityTags",
    )
    per_ssid_bandwidth_limit_up: int | None = Field(
        default=None,
        validation_alias="perSsidBandwidthLimitUp",
        serialization_alias="perSsidBandwidthLimitUp",
    )
    per_ssid_bandwidth_limit_down: int | None = Field(
        default=None,
        validation_alias="perSsidBandwidthLimitDown",
        serialization_alias="perSsidBandwidthLimitDown",
    )
    mandatory_dhcp_enabled: bool | None = Field(
        default=None,
        validation_alias="mandatoryDhcpEnabled",
        serialization_alias="mandatoryDhcpEnabled",
    )


class UpdateNetworkWirelessSsidSchedulesRangesInSecondsItem(_BaseSchema):
    """Item schema for rangesInSeconds."""

    start: int
    end: int


class UpdateNetworkWirelessSsidSchedulesRangesItem(_BaseSchema):
    """Item schema for ranges."""

    start_day: str = Field(validation_alias="startDay", serialization_alias="startDay")
    start_time: str = Field(validation_alias="startTime", serialization_alias="startTime")
    end_day: str = Field(validation_alias="endDay", serialization_alias="endDay")
    end_time: str = Field(validation_alias="endTime", serialization_alias="endTime")


class UpdateNetworkWirelessSsidSchedulesResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidSchedules operation."""

    enabled: bool | None = None
    ranges: list[GetNetworkWirelessSsidSchedulesResponseRangesItem] = Field(default_factory=list)
    ranges_in_seconds: list[GetNetworkWirelessSsidSchedulesResponseRangesInSecondsItem] = Field(
        default_factory=list,
        validation_alias="rangesInSeconds",
        serialization_alias="rangesInSeconds",
    )


class UpdateNetworkWirelessSsidSpeedBurst(_BaseSchema):
    """The SpeedBurst setting for this SSID'."""

    enabled: bool | None = None


class UpdateNetworkWirelessSsidSplashSettingsBilling(_BaseSchema):
    """Details associated with billing splash."""

    free_access: WirelessBillingFreeAccess | None = Field(
        default=None, validation_alias="freeAccess", serialization_alias="freeAccess"
    )
    prepaid_access_fast_login_enabled: bool | None = Field(
        default=None,
        validation_alias="prepaidAccessFastLoginEnabled",
        serialization_alias="prepaidAccessFastLoginEnabled",
    )
    reply_to_email_address: str | None = Field(
        default=None,
        validation_alias="replyToEmailAddress",
        serialization_alias="replyToEmailAddress",
    )


class UpdateNetworkWirelessSsidSplashSettingsGuestSponsorship(_BaseSchema):
    """Details associated with guest sponsored splash."""

    duration_in_minutes: int | None = Field(
        default=None, validation_alias="durationInMinutes", serialization_alias="durationInMinutes"
    )
    guest_can_request_timeframe: bool | None = Field(
        default=None,
        validation_alias="guestCanRequestTimeframe",
        serialization_alias="guestCanRequestTimeframe",
    )


class UpdateNetworkWirelessSsidSplashSettingsResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidSplashSettings operation."""

    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )
    splash_page: str | None = Field(
        default=None, validation_alias="splashPage", serialization_alias="splashPage"
    )
    use_splash_url: bool | None = Field(
        default=None, validation_alias="useSplashUrl", serialization_alias="useSplashUrl"
    )
    splash_url: str | None = Field(
        default=None, validation_alias="splashUrl", serialization_alias="splashUrl"
    )
    splash_timeout: int | None = Field(
        default=None, validation_alias="splashTimeout", serialization_alias="splashTimeout"
    )
    redirect_url: str | None = Field(
        default=None, validation_alias="redirectUrl", serialization_alias="redirectUrl"
    )
    use_redirect_url: bool | None = Field(
        default=None, validation_alias="useRedirectUrl", serialization_alias="useRedirectUrl"
    )
    welcome_message: str | None = Field(
        default=None, validation_alias="welcomeMessage", serialization_alias="welcomeMessage"
    )
    theme_id: str | None = Field(
        default=None, validation_alias="themeId", serialization_alias="themeId"
    )
    splash_logo: GetNetworkWirelessSsidSplashSettingsResponseSplashLogo | None = Field(
        default=None, validation_alias="splashLogo", serialization_alias="splashLogo"
    )
    splash_image: GetNetworkWirelessSsidSplashSettingsResponseSplashLogo | None = Field(
        default=None, validation_alias="splashImage", serialization_alias="splashImage"
    )
    splash_prepaid_front: GetNetworkWirelessSsidSplashSettingsResponseSplashLogo | None = Field(
        default=None,
        validation_alias="splashPrepaidFront",
        serialization_alias="splashPrepaidFront",
    )
    guest_sponsorship: GetNetworkWirelessSsidSplashSettingsResponseGuestSponsorship | None = Field(
        default=None, validation_alias="guestSponsorship", serialization_alias="guestSponsorship"
    )
    block_all_traffic_before_sign_on: bool | None = Field(
        default=None,
        validation_alias="blockAllTrafficBeforeSignOn",
        serialization_alias="blockAllTrafficBeforeSignOn",
    )
    controller_disconnection_behavior: str | None = Field(
        default=None,
        validation_alias="controllerDisconnectionBehavior",
        serialization_alias="controllerDisconnectionBehavior",
    )
    allow_simultaneous_logins: bool | None = Field(
        default=None,
        validation_alias="allowSimultaneousLogins",
        serialization_alias="allowSimultaneousLogins",
    )
    billing: GetNetworkWirelessSsidSplashSettingsResponseBilling | None = None
    sentry_enrollment: GetNetworkWirelessSsidSplashSettingsResponseSentryEnrollment | None = Field(
        default=None, validation_alias="sentryEnrollment", serialization_alias="sentryEnrollment"
    )
    self_registration: GetNetworkWirelessSsidSplashSettingsResponseSelfRegistration | None = Field(
        default=None, validation_alias="selfRegistration", serialization_alias="selfRegistration"
    )


class UpdateNetworkWirelessSsidSplashSettingsSelfRegistration(_BaseSchema):
    """Self-registration settings for splash with Meraki authentication."""

    enabled: bool | None = None
    authorization_type: str | None = Field(
        default=None, validation_alias="authorizationType", serialization_alias="authorizationType"
    )


class UpdateNetworkWirelessSsidSplashSettingsSentryEnrollment(_BaseSchema):
    """Systems Manager sentry enrollment splash settings."""

    systems_manager_network: (
        UpdateNetworkWirelessSsidSplashSettingsSentryEnrollmentSystemsManagerNetwork | None
    ) = Field(
        default=None,
        validation_alias="systemsManagerNetwork",
        serialization_alias="systemsManagerNetwork",
    )
    strength: str | None = None
    enforced_systems: list[str] = Field(
        default_factory=list,
        validation_alias="enforcedSystems",
        serialization_alias="enforcedSystems",
    )


class UpdateNetworkWirelessSsidSplashSettingsSentryEnrollmentSystemsManagerNetwork(_BaseSchema):
    """Systems Manager network targeted for sentry enrollment."""

    id: str


class UpdateNetworkWirelessSsidSplashSettingsSplashImage(_BaseSchema):
    """The image used in the splash page."""

    md5: str | None = None
    extension: str | None = None
    image: UpdateNetworkWirelessSsidSplashSettingsSplashLogoImage | None = None


class UpdateNetworkWirelessSsidSplashSettingsSplashLogo(_BaseSchema):
    """The logo used in the splash page."""

    md5: str | None = None
    extension: str | None = None
    image: UpdateNetworkWirelessSsidSplashSettingsSplashLogoImage | None = None


class UpdateNetworkWirelessSsidSplashSettingsSplashLogoImage(_BaseSchema):
    """Properties for setting a new image."""

    format_: str | None = Field(
        default=None, validation_alias="format", serialization_alias="format"
    )
    contents: str | None = None


class UpdateNetworkWirelessSsidSplashSettingsSplashPrepaidFront(_BaseSchema):
    """The prepaid front image used in the splash page."""

    md5: str | None = None
    extension: str | None = None
    image: UpdateNetworkWirelessSsidSplashSettingsSplashLogoImage | None = None


class UpdateNetworkWirelessSsidTrafficShapingRulesResponse(_BaseSchema):
    """Response for updateNetworkWirelessSsidTrafficShapingRules operation."""

    traffic_shaping_enabled: bool | None = Field(
        default=None,
        validation_alias="trafficShapingEnabled",
        serialization_alias="trafficShapingEnabled",
    )
    default_rules_enabled: bool | None = Field(
        default=None,
        validation_alias="defaultRulesEnabled",
        serialization_alias="defaultRulesEnabled",
    )
    rules: list[GetNetworkWirelessSsidTrafficShapingRulesResponseRulesItem] = Field(
        default_factory=list
    )


class UpdateNetworkWirelessSsidTrafficShapingRulesRulesItem(_BaseSchema):
    """Item schema for rules."""

    definitions: list[WirelessRulesDefinitionsItem]
    per_client_bandwidth_limits: WirelessRulesPerClientBandwidthLimits | None = Field(
        default=None,
        validation_alias="perClientBandwidthLimits",
        serialization_alias="perClientBandwidthLimits",
    )
    dscp_tag_value: int | None = Field(
        default=None, validation_alias="dscpTagValue", serialization_alias="dscpTagValue"
    )
    pcp_tag_value: int | None = Field(
        default=None, validation_alias="pcpTagValue", serialization_alias="pcpTagValue"
    )


class UpdateNetworkWirelessSsidVpnConcentrator(_BaseSchema):
    """The VPN concentrator settings for this SSID."""

    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    vlan_id: int | None = Field(
        default=None, validation_alias="vlanId", serialization_alias="vlanId"
    )


class UpdateNetworkWirelessSsidVpnFailover(_BaseSchema):
    """Secondary VPN concentrator settings. This is only used when two VPN concentrators are
    configured on the SSID.
    """

    request_ip: str | None = Field(
        default=None, validation_alias="requestIp", serialization_alias="requestIp"
    )
    heartbeat_interval: int | None = Field(
        default=None, validation_alias="heartbeatInterval", serialization_alias="heartbeatInterval"
    )
    idle_timeout: int | None = Field(
        default=None, validation_alias="idleTimeout", serialization_alias="idleTimeout"
    )


class UpdateNetworkWirelessSsidVpnSplitTunnel(_BaseSchema):
    """The VPN split tunnel settings for this SSID."""

    enabled: bool | None = None
    rules: list[UpdateNetworkWirelessSsidVpnSplitTunnelRulesItem] = Field(default_factory=list)


class UpdateNetworkWirelessSsidVpnSplitTunnelRulesItem(_BaseSchema):
    """Schema for UpdateNetworkWirelessSsidVpnSplitTunnelRulesItem."""

    protocol: str | None = None
    dest_cidr: str = Field(validation_alias="destCidr", serialization_alias="destCidr")
    dest_port: str | None = Field(
        default=None, validation_alias="destPort", serialization_alias="destPort"
    )
    policy: str
    comment: str | None = None


class UpdateNetworkWirelessZigbeeDefaults(_BaseSchema):
    """Default Settings for Zigbee Devices."""

    transmit_power_level: int | None = Field(
        default=None,
        validation_alias="transmitPowerLevel",
        serialization_alias="transmitPowerLevel",
    )
    channel: str | None = None


class UpdateNetworkWirelessZigbeeIotController(_BaseSchema):
    """Zigbee's IoT controller details."""

    serial: str | None = None


class UpdateNetworkWirelessZigbeeLockManagement(_BaseSchema):
    """Login Credentials of on-premises lock management."""

    address: str | None = None
    username: str | None = None
    password: str | None = None


class UpdateNetworkWirelessZigbeeResponse(_BaseSchema):
    """Response for updateNetworkWirelessZigbee operation."""

    network: WirelessSentryEnrollmentSystemsManagerNetwork | None = None
    enabled: bool | None = None
    iot_controller: UpdateNetworkWirelessZigbeeResponseIotController | None = Field(
        default=None, validation_alias="iotController", serialization_alias="iotController"
    )
    lock_management: UpdateNetworkWirelessZigbeeResponseLockManagement | None = Field(
        default=None, validation_alias="lockManagement", serialization_alias="lockManagement"
    )
    defaults: UpdateNetworkWirelessZigbeeResponseDefaults | None = None


class UpdateNetworkWirelessZigbeeResponseDefaults(_BaseSchema):
    """Default settings for the wireless devices in the network."""

    transmit_power_level: int | None = Field(
        default=None,
        validation_alias="transmitPowerLevel",
        serialization_alias="transmitPowerLevel",
    )
    channel: str | None = None


class UpdateNetworkWirelessZigbeeResponseIotController(_BaseSchema):
    """Device details setup the IoT controller."""

    name: str | None = None
    mac: str | None = None
    serial: str | None = None
    status: str | None = None


class UpdateNetworkWirelessZigbeeResponseLockManagement(_BaseSchema):
    """Lock management details."""

    address: str | None = None
    username: str | None = None
    status: str | None = None


class UpdateOrganizationWirelessDevicesRadsecCertificatesAuthoritiesResponse(_BaseSchema):
    """Response for updateOrganizationWirelessDevicesRadsecCertificatesAuthorities operation."""

    certificate_authority_id: str | None = Field(
        default=None,
        validation_alias="certificateAuthorityId",
        serialization_alias="certificateAuthorityId",
    )
    status: str | None = None
    contents: str | None = None


class UpdateOrganizationWirelessLocationScanningReceiverRadio(_BaseSchema):
    """Add scanning API Radio."""

    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")


class UpdateOrganizationWirelessLocationScanningReceiverResponse(_BaseSchema):
    """Response for updateOrganizationWirelessLocationScanningReceiver operation."""

    network: WirelessDoorLocksNetwork | None = None
    receiver_id: str | None = Field(
        default=None, validation_alias="receiverId", serialization_alias="receiverId"
    )
    url: str | None = None
    version: str | None = None
    radio: WirelessRadio | None = None


class UpdateOrganizationWirelessMqttSettingsBle(_BaseSchema):
    """MQTT BLE Settings for network."""

    enabled: bool | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    flush: WirelessFlush | None = None
    allow_lists: WirelessAllowLists | None = Field(
        default=None, validation_alias="allowLists", serialization_alias="allowLists"
    )
    hysteresis: WirelessHysteresis | None = None


class UpdateOrganizationWirelessMqttSettingsMqtt(_BaseSchema):
    """MQTT Settings for network."""

    enabled: bool | None = None
    topic: str | None = None
    message_fields: list[str] = Field(
        default_factory=list, validation_alias="messageFields", serialization_alias="messageFields"
    )
    publishing: WirelessPublishing | None = None
    broker: GetNetworkWirelessSsidHotspot20ResponseOperator | None = None


class UpdateOrganizationWirelessMqttSettingsNetwork(_BaseSchema):
    """Add MQTT Settings for network."""

    id: str | None = None


class UpdateOrganizationWirelessMqttSettingsResponse(_BaseSchema):
    """Response for updateOrganizationWirelessMqttSettings operation."""

    network: WirelessDoorLocksNetwork | None = None
    mqtt: WirelessMqtt | None = None
    ble: WirelessBle | None = None
    wifi: WirelessWifi2 | None = None


class UpdateOrganizationWirelessMqttSettingsWifi(_BaseSchema):
    """MQTT Wi-Fi Settings for network."""

    enabled: bool | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    flush: WirelessFlush | None = None
    allow_lists: WirelessAllowLists2 | None = Field(
        default=None, validation_alias="allowLists", serialization_alias="allowLists"
    )
    hysteresis: WirelessHysteresis | None = None


class UpdateOrganizationWirelessSsidsFirewallIsolationAllowlistEntryClient(_BaseSchema):
    """The client of allowlist."""

    mac: str | None = None


class UpdateOrganizationWirelessSsidsFirewallIsolationAllowlistEntryResponse(_BaseSchema):
    """Response for updateOrganizationWirelessSsidsFirewallIsolationAllowlistEntry operation."""

    entry_id: str = Field(validation_alias="entryId", serialization_alias="entryId")
    created_at: str | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    last_updated_at: str | None = Field(
        default=None, validation_alias="lastUpdatedAt", serialization_alias="lastUpdatedAt"
    )
    description: str | None = None
    client: WirelessClient2 | None = None
    ssid: WirelessSsid | None = None
    network: WirelessNetwork2 | None = None


class UpdateOrganizationWirelessZigbeeDeviceResponse(_BaseSchema):
    """Response for updateOrganizationWirelessZigbeeDevice operation."""

    network: WirelessDoorLocksNetwork | None = None
    pan_id: str | None = Field(default=None, validation_alias="panId", serialization_alias="panId")
    channel: str | None = None
    transmit_power_level: int | None = Field(
        default=None,
        validation_alias="transmitPowerLevel",
        serialization_alias="transmitPowerLevel",
    )
    enrolled: bool | None = None
    status: str | None = None
    gateway: WirelessGateway | None = None
    counts: WirelessCounts2 | None = None


class UpdateOrganizationWirelessZigbeeDoorLockResponse(_BaseSchema):
    """Response for updateOrganizationWirelessZigbeeDoorLock operation."""

    door_lock_id: str | None = Field(
        default=None, validation_alias="doorLockId", serialization_alias="doorLockId"
    )
    name: str | None = None
    short_id: str | None = Field(
        default=None, validation_alias="shortId", serialization_alias="shortId"
    )
    lqi: str | None = None
    rssi: str | None = None
    status: str | None = None
    eui64: str | None = None
    enrolled_at: datetime | None = Field(
        default=None, validation_alias="enrolledAt", serialization_alias="enrolledAt"
    )
    last_seen_at: datetime | None = Field(
        default=None, validation_alias="lastSeenAt", serialization_alias="lastSeenAt"
    )
    network: WirelessDoorLocksNetwork | None = None
    gateway: WirelessDoorLocksGateway | None = None


class WirelessAc(_BaseSchema):
    """AC power details object."""

    is_connected: bool | None = Field(
        default=None, validation_alias="isConnected", serialization_alias="isConnected"
    )


class WirelessAddressesNameservers(_BaseSchema):
    """The DNS servers settings for this address."""

    addresses: list[str] = Field(default_factory=list)


class WirelessAggregation(_BaseSchema):
    """Aggregation details object."""

    enabled: bool | None = None
    speed: int | None = None


class WirelessAllowLists(_BaseSchema):
    """Allowed List for MAC and UUID."""

    uuids: list[str] = Field(default_factory=list)
    macs: list[str] = Field(default_factory=list)


class WirelessAllowLists2(_BaseSchema):
    """Allowed List for MAC and UUID."""

    macs: list[str] = Field(default_factory=list)


class WirelessApBandSettingsBands(_BaseSchema):
    """Settings related to all bands."""

    enabled: list[str] = Field(default_factory=list)


class WirelessApiValidator(_BaseSchema):
    """Validator for push API."""

    string: str | None = None


class WirelessAuthenticationTypes(_BaseSchema):
    """The authentication types for the method. These should be formatted as an object with the EAP
    method category in camelcase as the key and the list of types as the value.
    """

    non_eap_inner_authentication: list[str] = Field(
        default_factory=list,
        validation_alias="nonEapInnerAuthentication",
        serialization_alias="nonEapInnerAuthentication",
    )
    eap_inner_authentication: list[str] = Field(
        default_factory=list,
        validation_alias="eapInnerAuthentication",
        serialization_alias="eapInnerAuthentication",
    )
    credentials: list[str] = Field(default_factory=list)
    tunneled_eap_method_credentials: list[str] = Field(
        default_factory=list,
        validation_alias="tunneledEapMethodCredentials",
        serialization_alias="tunneledEapMethodCredentials",
    )


class WirelessAutomatic(_BaseSchema):
    """Automatic Busy Hour settings."""

    start: str | None = None
    end: str | None = None


class WirelessBackgroundTraffic(_BaseSchema):
    """The time bucket's background traffic latency history."""

    n_0_5: int | None = Field(default=None, validation_alias="0.5", serialization_alias="0.5")
    n_1_0: int | None = Field(default=None, validation_alias="1.0", serialization_alias="1.0")
    n_2_0: int | None = Field(default=None, validation_alias="2.0", serialization_alias="2.0")
    n_4_0: int | None = Field(default=None, validation_alias="4.0", serialization_alias="4.0")
    n_8_0: int | None = Field(default=None, validation_alias="8.0", serialization_alias="8.0")
    n_16_0: int | None = Field(default=None, validation_alias="16.0", serialization_alias="16.0")
    n_32_0: int | None = Field(default=None, validation_alias="32.0", serialization_alias="32.0")
    n_64_0: int | None = Field(default=None, validation_alias="64.0", serialization_alias="64.0")
    n_128_0: int | None = Field(default=None, validation_alias="128.0", serialization_alias="128.0")
    n_256_0: int | None = Field(default=None, validation_alias="256.0", serialization_alias="256.0")
    n_512_0: int | None = Field(default=None, validation_alias="512.0", serialization_alias="512.0")
    n_1024_0: int | None = Field(
        default=None, validation_alias="1024.0", serialization_alias="1024.0"
    )
    n_2048_0: int | None = Field(
        default=None, validation_alias="2048.0", serialization_alias="2048.0"
    )


class WirelessBasicServiceSetsItem(_BaseSchema):
    """Schema for WirelessBasicServiceSetsItem."""

    bssid: str | None = None
    ssid: WirelessSsid2 | None = None
    radio: WirelessRadio2 | None = None


class WirelessBillingFreeAccess(_BaseSchema):
    """Details associated with a free access plan with limits."""

    enabled: bool | None = None
    duration_in_minutes: int | None = Field(
        default=None, validation_alias="durationInMinutes", serialization_alias="durationInMinutes"
    )


class WirelessBle(_BaseSchema):
    """MQTT BLE Settings for network."""

    enabled: bool | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    flush: WirelessFlush | None = None
    allow_lists: WirelessAllowLists | None = Field(
        default=None, validation_alias="allowLists", serialization_alias="allowLists"
    )
    hysteresis: WirelessHysteresis | None = None


class WirelessBssidsItem(_BaseSchema):
    """Schema for WirelessBssidsItem."""

    bssid: str | None = None
    contained: bool | None = None
    detected_by: list[WirelessDetectedByItem] = Field(
        default_factory=list, validation_alias="detectedBy", serialization_alias="detectedBy"
    )


class WirelessBusyHourMinimizeChanges(_BaseSchema):
    """Minimize Changes settings."""

    enabled: bool | None = None


class WirelessBusyHourSchedule(_BaseSchema):
    """Busy hour mode settings."""

    mode: str | None = None
    automatic: WirelessAutomatic | None = None
    manual: WirelessAutomatic | None = None


class WirelessByApTagsItem(_BaseSchema):
    """Schema for WirelessByApTagsItem."""

    tags: list[str] = Field(default_factory=list)
    vlan_name: str | None = Field(
        default=None, validation_alias="vlanName", serialization_alias="vlanName"
    )


class WirelessByBandItem(_BaseSchema):
    """Schema for WirelessByBandItem."""

    band: str | None = None
    wifi: WirelessWifi | None = None
    non_wifi: WirelessWifi | None = Field(
        default=None, validation_alias="nonWifi", serialization_alias="nonWifi"
    )
    total: WirelessWifi | None = None


class WirelessByStatus(_BaseSchema):
    """Associated client count on access point by status."""

    online: int | None = None


class WirelessByStatus2(_BaseSchema):
    """Status stats."""

    online: int | None = None
    offline: int | None = None
    dormant: int | None = None


class WirelessClient(_BaseSchema):
    """Client."""

    id: str | None = None
    mac: str | None = None


class WirelessClient2(_BaseSchema):
    """The client of allowlist."""

    mac: str


class WirelessClientRootCaCertificate(_BaseSchema):
    """The Client CA Certificate used to sign the client certificate."""

    contents: str | None = None


class WirelessCounts(_BaseSchema):
    """Associated client count on access point."""

    by_status: WirelessByStatus | None = Field(
        default=None, validation_alias="byStatus", serialization_alias="byStatus"
    )


class WirelessCounts2(_BaseSchema):
    """Stats."""

    door_locks: WirelessDoorLocks | None = Field(
        default=None, validation_alias="doorLocks", serialization_alias="doorLocks"
    )


class WirelessDetailsItem(_BaseSchema):
    """Schema for WirelessDetailsItem."""

    name: str | None = None
    value: str | None = None


class WirelessDetectedByItem(_BaseSchema):
    """Schema for WirelessDetectedByItem."""

    device: str | None = None
    rssi: int | None = None


class WirelessDevice(_BaseSchema):
    """Device."""

    name: str | None = None
    serial: str | None = None
    mac: str | None = None


class WirelessDoorLocks(_BaseSchema):
    """Door locks stats."""

    by_status: WirelessByStatus2 | None = Field(
        default=None, validation_alias="byStatus", serialization_alias="byStatus"
    )


class WirelessDoorLocksGateway(_BaseSchema):
    """Gateway this door lock is connected to."""

    name: str | None = None
    serial: str | None = None


class WirelessDoorLocksNetwork(_BaseSchema):
    """Network this door lock is connected to."""

    id: str | None = None
    name: str | None = None


class WirelessDownstream(_BaseSchema):
    """Packets sent from an AP to a client."""

    total: int | None = None
    lost: int | None = None
    loss_percentage: float | None = Field(
        default=None, validation_alias="lossPercentage", serialization_alias="lossPercentage"
    )


class WirelessEventsItem(_BaseSchema):
    """Schema for WirelessEventsItem."""

    ts: datetime | None = None
    power_mode: str | None = Field(
        default=None, validation_alias="powerMode", serialization_alias="powerMode"
    )


class WirelessFlush(_BaseSchema):
    """BLE Flush frequency."""

    frequency: int | None = None


class WirelessGateway(_BaseSchema):
    """Wireless device the zigbee device is on."""

    name: str | None = None
    mac: str | None = None
    serial: str | None = None
    tags: list[str] = Field(default_factory=list)


class WirelessGuestVlan(_BaseSchema):
    """Guest VLAN settings. Used to direct traffic to a guest VLAN when none of the RADIUS servers
    are reachable or a client receives access-reject from the RADIUS server.
    """

    enabled: bool | None = None
    name: str | None = None


class WirelessHysteresis(_BaseSchema):
    """BLE Hysteresis Settings for network."""

    enabled: bool | None = None
    threshold: int | None = None


class WirelessLatencyBinsByCategory(_BaseSchema):
    """The latency buckets by category."""

    background_traffic: WirelessBackgroundTraffic | None = Field(
        default=None, validation_alias="backgroundTraffic", serialization_alias="backgroundTraffic"
    )
    best_effort_traffic: WirelessBackgroundTraffic | None = Field(
        default=None, validation_alias="bestEffortTraffic", serialization_alias="bestEffortTraffic"
    )
    video_traffic: WirelessBackgroundTraffic | None = Field(
        default=None, validation_alias="videoTraffic", serialization_alias="videoTraffic"
    )
    voice_traffic: WirelessBackgroundTraffic | None = Field(
        default=None, validation_alias="voiceTraffic", serialization_alias="voiceTraffic"
    )


class WirelessLatestMeshPerformance(_BaseSchema):
    """Current metrics on how the mesh is performing."""

    mbps: float | None = None
    metric: int | None = None
    usage_percentage: str | None = Field(
        default=None, validation_alias="usagePercentage", serialization_alias="usagePercentage"
    )


class WirelessLinkNegotiation(_BaseSchema):
    """Link negotiation details object for the port."""

    duplex: str | None = None
    speed: int | None = None


class WirelessMqtt(_BaseSchema):
    """MQTT Settings for network."""

    settings_id: str | None = Field(
        default=None, validation_alias="settingsId", serialization_alias="settingsId"
    )
    enabled: bool | None = None
    topic: str | None = None
    message_fields: list[str] = Field(
        default_factory=list, validation_alias="messageFields", serialization_alias="messageFields"
    )
    publishing: WirelessPublishing | None = None
    broker: WirelessDoorLocksNetwork | None = None


class WirelessNaiRealmsMethodsItem(_BaseSchema):
    """Schema for WirelessNaiRealmsMethodsItem."""

    id: str | None = None
    authentication_types: WirelessAuthenticationTypes | None = Field(
        default=None,
        validation_alias="authenticationTypes",
        serialization_alias="authenticationTypes",
    )


class WirelessNamedVlansPoolDhcpMonitoring(_BaseSchema):
    """Named VLAN Pool DHCP Monitoring settings."""

    enabled: bool | None = None
    duration: int | None = None


class WirelessNetwork(_BaseSchema):
    """Information regarding the network the device belongs to."""

    id: str | None = None
    name: str | None = None
    tags: list[str] = Field(default_factory=list)


class WirelessNetwork2(_BaseSchema):
    """The network that allowlist SSID belongs to."""

    id: str
    name: str | None = None


class WirelessOpenRoaming(_BaseSchema):
    """Openroaming information for the SSID."""

    enabled: bool | None = None
    tenant_id: str | None = Field(
        default=None, validation_alias="tenantId", serialization_alias="tenantId"
    )


class WirelessPerSsidSettings0(_BaseSchema):
    """Settings for SSID 0."""

    name: str | None = None
    min_bitrate: int | None = Field(
        default=None, validation_alias="minBitrate", serialization_alias="minBitrate"
    )
    band_operation_mode: str | None = Field(
        default=None, validation_alias="bandOperationMode", serialization_alias="bandOperationMode"
    )
    bands: WirelessApBandSettingsBands | None = None
    band_steering_enabled: bool | None = Field(
        default=None,
        validation_alias="bandSteeringEnabled",
        serialization_alias="bandSteeringEnabled",
    )


class WirelessPlansBandwidthLimits(_BaseSchema):
    """The uplink bandwidth settings for the pricing plan."""

    limit_up: int | None = Field(
        default=None, validation_alias="limitUp", serialization_alias="limitUp"
    )
    limit_down: int | None = Field(
        default=None, validation_alias="limitDown", serialization_alias="limitDown"
    )


class WirelessPoe(_BaseSchema):
    """PoE details object for the port."""

    standard: str | None = None


class WirelessPortsItem(_BaseSchema):
    """Schema for WirelessPortsItem."""

    name: str | None = None
    number: int | None = None
    enabled: bool | None = None
    ssid: int | None = None
    psk_group_id: str | None = Field(
        default=None, validation_alias="pskGroupId", serialization_alias="pskGroupId"
    )


class WirelessPortsItem2(_BaseSchema):
    """Schema for WirelessPortsItem2."""

    name: str | None = None
    poe: WirelessPoe | None = None
    link_negotiation: WirelessLinkNegotiation | None = Field(
        default=None, validation_alias="linkNegotiation", serialization_alias="linkNegotiation"
    )


class WirelessPower(_BaseSchema):
    """Power details object."""

    mode: str | None = None
    ac: WirelessAc | None = None
    poe: WirelessAc | None = None


class WirelessPublishing(_BaseSchema):
    """MQTT Publishing Settings."""

    frequency: int | None = None
    qos: int | None = None


class WirelessRadio(_BaseSchema):
    """Add scanning API Radio."""

    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")


class WirelessRadio2(_BaseSchema):
    """Wireless access point radio identifier."""

    band: str | None = None
    channel: int | None = None
    channel_width: int | None = Field(
        default=None, validation_alias="channelWidth", serialization_alias="channelWidth"
    )
    power: int | None = None
    is_broadcasting: bool | None = Field(
        default=None, validation_alias="isBroadcasting", serialization_alias="isBroadcasting"
    )
    index: str | None = None


class WirelessRadiusServersItem(_BaseSchema):
    """Schema for WirelessRadiusServersItem."""

    host: str | None = None
    port: int | None = None
    open_roaming_certificate_id: int | None = Field(
        default=None,
        validation_alias="openRoamingCertificateId",
        serialization_alias="openRoamingCertificateId",
    )
    ca_certificate: str | None = Field(
        default=None, validation_alias="caCertificate", serialization_alias="caCertificate"
    )


class WirelessRfProfile(_BaseSchema):
    """Information regarding the RF Profile of the device."""

    id: str | None = None
    name: str | None = None
    is_indoor_default: bool | None = Field(
        default=None, validation_alias="isIndoorDefault", serialization_alias="isIndoorDefault"
    )
    is_outdoor_default: bool | None = Field(
        default=None, validation_alias="isOutdoorDefault", serialization_alias="isOutdoorDefault"
    )


class WirelessRulesDefinitionsItem(_BaseSchema):
    """Schema for WirelessRulesDefinitionsItem."""

    type_: str = Field(validation_alias="type", serialization_alias="type")
    value: str


class WirelessRulesPerClientBandwidthLimits(_BaseSchema):
    """An object describing the bandwidth settings for your rule."""

    settings: str | None = None
    bandwidth_limits: WirelessPlansBandwidthLimits | None = Field(
        default=None, validation_alias="bandwidthLimits", serialization_alias="bandwidthLimits"
    )


class WirelessSentryEnrollmentSystemsManagerNetwork(_BaseSchema):
    """Systems Manager network targeted for sentry enrollment."""

    id: str | None = None


class WirelessSeriesItem(_BaseSchema):
    """Schema for WirelessSeriesItem."""

    ts: datetime | None = None
    cpu_load5: int | None = Field(
        default=None, validation_alias="cpuLoad5", serialization_alias="cpuLoad5"
    )


class WirelessSsid(_BaseSchema):
    """The SSID that allowlist belongs to."""

    id: str
    name: str | None = None
    number: int | None = None


class WirelessSsid2(_BaseSchema):
    """Wireless access point and network identifier."""

    name: str | None = None
    number: int | None = None
    enabled: bool | None = None
    advertised: bool | None = None


class WirelessSsidItem(_BaseSchema):
    """Schema for WirelessSsidItem."""

    name: str | None = None
    number: int | None = None
    enabled: bool | None = None
    open_roaming: WirelessOpenRoaming | None = Field(
        default=None, validation_alias="openRoaming", serialization_alias="openRoaming"
    )


class WirelessTagsItem(_BaseSchema):
    """Schema for WirelessTagsItem."""

    policy: str | None = None
    site: str | None = None
    rf: str | None = None


class WirelessUsbPortsItem(_BaseSchema):
    """Schema for WirelessUsbPortsItem."""

    name: str | None = None
    enabled: bool | None = None
    ssid: int | None = None


class WirelessWifi(_BaseSchema):
    """An object containing wifi utilization."""

    percentage: float | None = None


class WirelessWifi2(_BaseSchema):
    """MQTT Wi-Fi Settings for network."""

    enabled: bool | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    flush: WirelessFlush | None = None
    allow_lists: WirelessAllowLists2 | None = Field(
        default=None, validation_alias="allowLists", serialization_alias="allowLists"
    )
    hysteresis: WirelessHysteresis | None = None
