"""Response schemas for networks 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 BatchNetworkFloorPlansAutoLocateJobsJobsItem(_BaseSchema):
    """Item schema for jobs."""

    floor_plan_id: str = Field(validation_alias="floorPlanId", serialization_alias="floorPlanId")
    refresh: list[str] = Field(default_factory=list)
    scheduled_at: datetime | None = Field(
        default=None, validation_alias="scheduledAt", serialization_alias="scheduledAt"
    )


class BatchNetworkFloorPlansAutoLocateJobsResponse(_BaseSchema):
    """Response for batchNetworkFloorPlansAutoLocateJobs operation."""

    jobs: list[BatchNetworkFloorPlansAutoLocateJobsResponseJobsItem] = Field(default_factory=list)


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

    id: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    floor_plan_id: str | None = Field(
        default=None, validation_alias="floorPlanId", serialization_alias="floorPlanId"
    )
    status: str | None = None
    scheduled_at: datetime | None = Field(
        default=None, validation_alias="scheduledAt", serialization_alias="scheduledAt"
    )
    completed: NetworksJobsCompleted | None = None
    ranging: NetworksJobsRanging | None = None
    gnss: NetworksJobsRanging | None = None
    errors: list[NetworksJobsErrorsItem] = Field(default_factory=list)


class BatchNetworkFloorPlansDevicesUpdateAssignmentsItem(_BaseSchema):
    """Item schema for assignments."""

    serial: str
    floor_plan: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemGroup = Field(
        validation_alias="floorPlan", serialization_alias="floorPlan"
    )


class BatchNetworkFloorPlansDevicesUpdateResponse(_BaseSchema):
    """Response for batchNetworkFloorPlansDevicesUpdate operation."""

    success: bool | None = None


class BindNetworkResponse(_BaseSchema):
    """Response for bindNetwork operation."""

    id: str | None = None
    organization_id: str | None = Field(
        default=None, validation_alias="organizationId", serialization_alias="organizationId"
    )
    name: str | None = None
    product_types: list[str] = Field(
        default_factory=list, validation_alias="productTypes", serialization_alias="productTypes"
    )
    time_zone: str | None = Field(
        default=None, validation_alias="timeZone", serialization_alias="timeZone"
    )
    tags: list[str] = Field(default_factory=list)
    enrollment_string: str | None = Field(
        default=None, validation_alias="enrollmentString", serialization_alias="enrollmentString"
    )
    url: str | None = None
    notes: str | None = None
    is_bound_to_config_template: bool | None = Field(
        default=None,
        validation_alias="isBoundToConfigTemplate",
        serialization_alias="isBoundToConfigTemplate",
    )
    config_template_id: str | None = Field(
        default=None, validation_alias="configTemplateId", serialization_alias="configTemplateId"
    )


class ClaimNetworkDevicesDetailsByDeviceItem(_BaseSchema):
    """Item schema for detailsByDevice."""

    serial: str
    details: list[ClaimNetworkDevicesDetailsByDeviceItemDetailsItem]


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

    name: str
    value: str | None = None


class ClaimNetworkDevicesResponse(_BaseSchema):
    """Response for claimNetworkDevices operation."""

    serials: list[str] = Field(default_factory=list)
    errors: list[ClaimNetworkDevicesResponseErrorsItem] = Field(default_factory=list)


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

    serial: str
    errors: list[str]


class CreateNetworkFirmwareUpgradesRollbackReasonsItem(_BaseSchema):
    """Item schema for reasons."""

    category: str
    comment: str


class CreateNetworkFirmwareUpgradesRollbackResponse(_BaseSchema):
    """Response for createNetworkFirmwareUpgradesRollback operation."""

    product: str | None = None
    status: str | None = None
    upgrade_batch_id: str | None = Field(
        default=None, validation_alias="upgradeBatchId", serialization_alias="upgradeBatchId"
    )
    time: datetime | None = None
    to_version: NetworksCurrentVersion | None = Field(
        default=None, validation_alias="toVersion", serialization_alias="toVersion"
    )
    reasons: list[CreateNetworkFirmwareUpgradesRollbackResponseReasonsItem] = Field(
        default_factory=list
    )


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

    category: str | None = None
    comment: str | None = None


class CreateNetworkFirmwareUpgradesRollbackToVersion(_BaseSchema):
    """Version to downgrade to (if the network has firmware flexibility)."""

    id: str | None = None


class CreateNetworkFirmwareUpgradesStagedEventProducts(_BaseSchema):
    """Contains firmware upgrade version information."""

    switch: CreateNetworkFirmwareUpgradesStagedEventProductsSwitch | None = None
    switch_catalyst: CreateNetworkFirmwareUpgradesStagedEventProductsSwitch | None = Field(
        default=None, validation_alias="switchCatalyst", serialization_alias="switchCatalyst"
    )


class CreateNetworkFirmwareUpgradesStagedEventProductsSwitch(_BaseSchema):
    """Version information for the switch network being upgraded."""

    next_upgrade: NetworksNextUpgrade4 | None = Field(
        default=None, validation_alias="nextUpgrade", serialization_alias="nextUpgrade"
    )


class CreateNetworkFirmwareUpgradesStagedEventResponse(_BaseSchema):
    """Response for createNetworkFirmwareUpgradesStagedEvent operation."""

    products: GetNetworkFirmwareUpgradesStagedEventsResponseProducts | None = None
    stages: list[GetNetworkFirmwareUpgradesStagedEventsResponseStagesItem] = Field(
        default_factory=list
    )
    reasons: list[CreateNetworkFirmwareUpgradesRollbackResponseReasonsItem] = Field(
        default_factory=list
    )


class CreateNetworkFirmwareUpgradesStagedEventStagesItem(_BaseSchema):
    """Item schema for stages."""

    group: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemGroup | None = None
    milestones: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemMilestones | None = None


class CreateNetworkFirmwareUpgradesStagedGroupAssignedDevices(_BaseSchema):
    """The devices and Switch Stacks assigned to the Group."""

    devices: list[CreateNetworkFirmwareUpgradesStagedGroupAssignedDevicesDevicesItem] = Field(
        default_factory=list
    )
    switch_stacks: list[CreateNetworkFirmwareUpgradesStagedGroupAssignedDevicesSwitchStacksItem] = (
        Field(
            default_factory=list,
            validation_alias="switchStacks",
            serialization_alias="switchStacks",
        )
    )


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

    serial: str
    name: str | None = None


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

    id: str
    name: str | None = None


class CreateNetworkFirmwareUpgradesStagedGroupResponse(_BaseSchema):
    """Response for createNetworkFirmwareUpgradesStagedGroup operation."""

    group_id: str | None = Field(
        default=None, validation_alias="groupId", serialization_alias="groupId"
    )
    name: str | None = None
    description: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    assigned_devices: NetworksAssignedDevices | None = Field(
        default=None, validation_alias="assignedDevices", serialization_alias="assignedDevices"
    )


class CreateNetworkFloorPlanBottomLeftCorner(_BaseSchema):
    """The longitude and latitude of the bottom left corner of your floor plan."""

    lat: float | None = None
    lng: float | None = None


class CreateNetworkFloorPlanBottomRightCorner(_BaseSchema):
    """The longitude and latitude of the bottom right corner of your floor plan."""

    lat: float | None = None
    lng: float | None = None


class CreateNetworkFloorPlanCenter(_BaseSchema):
    """The longitude and latitude of the center of your floor plan. The 'center' or two adjacent
    corners (e.g. 'topLeftCorner' and 'bottomLeftCorner') must be specified. If 'center' is
    specified, the floor plan is placed over that point with no rotation. If two adjacent
    corners are specified, the floor plan is rotated to line up with the two specified points.
    The aspect ratio of the floor plan's image is preserved regardless of which corners/center
    are specified. (This means if that more than two corners are specified, only two corners may
    be used to preserve the floor plan's aspect ratio.). No two points can have the same
    latitude, longitude pair.
    """

    lat: float | None = None
    lng: float | None = None


class CreateNetworkFloorPlanResponse(_BaseSchema):
    """Response for createNetworkFloorPlan operation."""

    floor_plan_id: str | None = Field(
        default=None, validation_alias="floorPlanId", serialization_alias="floorPlanId"
    )
    image_url: str | None = Field(
        default=None, validation_alias="imageUrl", serialization_alias="imageUrl"
    )
    image_url_expires_at: str | None = Field(
        default=None, validation_alias="imageUrlExpiresAt", serialization_alias="imageUrlExpiresAt"
    )
    image_extension: str | None = Field(
        default=None, validation_alias="imageExtension", serialization_alias="imageExtension"
    )
    image_md5: str | None = Field(
        default=None, validation_alias="imageMd5", serialization_alias="imageMd5"
    )
    name: str | None = None
    devices: list[NetworksDevicesItem2] = Field(default_factory=list)
    width: float | None = None
    height: float | None = None
    center: NetworksCenter | None = None
    bottom_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomLeftCorner", serialization_alias="bottomLeftCorner"
    )
    bottom_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomRightCorner", serialization_alias="bottomRightCorner"
    )
    top_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topLeftCorner", serialization_alias="topLeftCorner"
    )
    top_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topRightCorner", serialization_alias="topRightCorner"
    )
    floor_number: float | None = Field(
        default=None, validation_alias="floorNumber", serialization_alias="floorNumber"
    )


class CreateNetworkFloorPlanTopLeftCorner(_BaseSchema):
    """The longitude and latitude of the top left corner of your floor plan."""

    lat: float | None = None
    lng: float | None = None


class CreateNetworkFloorPlanTopRightCorner(_BaseSchema):
    """The longitude and latitude of the top right corner of your floor plan."""

    lat: float | None = None
    lng: float | None = None


class CreateNetworkGroupPolicyBandwidth(_BaseSchema):
    """The bandwidth settings for clients bound to your group policy."""

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


class CreateNetworkGroupPolicyBonjourForwarding(_BaseSchema):
    """The Bonjour settings for your group policy. Only valid if your network has a wireless
    configuration.
    """

    settings: str | None = None
    rules: list[NetworksRulesItem] = Field(default_factory=list)


class CreateNetworkGroupPolicyContentFiltering(_BaseSchema):
    """The content filtering settings for your group policy."""

    allowed_url_patterns: NetworksAllowedUrlPatterns | None = Field(
        default=None,
        validation_alias="allowedUrlPatterns",
        serialization_alias="allowedUrlPatterns",
    )
    blocked_url_patterns: NetworksAllowedUrlPatterns | None = Field(
        default=None,
        validation_alias="blockedUrlPatterns",
        serialization_alias="blockedUrlPatterns",
    )
    blocked_url_categories: NetworksBlockedUrlCategories | None = Field(
        default=None,
        validation_alias="blockedUrlCategories",
        serialization_alias="blockedUrlCategories",
    )


class CreateNetworkGroupPolicyFirewallAndTrafficShaping(_BaseSchema):
    """The firewall and traffic shaping rules and settings for your policy."""

    settings: str | None = None
    traffic_shaping_rules: list[NetworksTrafficShapingRulesItem] = Field(
        default_factory=list,
        validation_alias="trafficShapingRules",
        serialization_alias="trafficShapingRules",
    )
    l3_firewall_rules: list[NetworksL3FirewallRulesItem] = Field(
        default_factory=list,
        validation_alias="l3FirewallRules",
        serialization_alias="l3FirewallRules",
    )
    l7_firewall_rules: list[NetworksL7FirewallRulesItem] = Field(
        default_factory=list,
        validation_alias="l7FirewallRules",
        serialization_alias="l7FirewallRules",
    )


class CreateNetworkGroupPolicyResponse(_BaseSchema):
    """Response for createNetworkGroupPolicy operation."""

    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    scheduling: NetworksScheduling | None = None
    bandwidth: NetworksBandwidth | None = None
    firewall_and_traffic_shaping: NetworksFirewallAndTrafficShaping | None = Field(
        default=None,
        validation_alias="firewallAndTrafficShaping",
        serialization_alias="firewallAndTrafficShaping",
    )
    content_filtering: NetworksContentFiltering | None = Field(
        default=None, validation_alias="contentFiltering", serialization_alias="contentFiltering"
    )
    splash_auth_settings: str | None = Field(
        default=None,
        validation_alias="splashAuthSettings",
        serialization_alias="splashAuthSettings",
    )
    vlan_tagging: NetworksVlanTagging | None = Field(
        default=None, validation_alias="vlanTagging", serialization_alias="vlanTagging"
    )
    bonjour_forwarding: NetworksBonjourForwarding | None = Field(
        default=None, validation_alias="bonjourForwarding", serialization_alias="bonjourForwarding"
    )


class CreateNetworkGroupPolicyScheduling(_BaseSchema):
    """The schedule for the group policy. Schedules are applied to days of the week."""

    enabled: bool | None = None
    monday: NetworksMonday | None = None
    tuesday: NetworksMonday | None = None
    wednesday: NetworksMonday | None = None
    thursday: NetworksMonday | None = None
    friday: NetworksMonday | None = None
    saturday: NetworksMonday | None = None
    sunday: NetworksMonday | None = None


class CreateNetworkGroupPolicyVlanTagging(_BaseSchema):
    """The VLAN tagging settings for your group policy. Only available if your network has a
    wireless configuration.
    """

    settings: str | None = None
    vlan_id: str | None = Field(
        default=None, validation_alias="vlanId", serialization_alias="vlanId"
    )


class CreateNetworkMerakiAuthUserAuthorizationsItem(_BaseSchema):
    """Item schema for authorizations."""

    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )
    expires_at: str | None = Field(
        default=None, validation_alias="expiresAt", serialization_alias="expiresAt"
    )


class CreateNetworkMerakiAuthUserResponse(_BaseSchema):
    """Response for createNetworkMerakiAuthUser operation."""

    id: str | None = None
    email: str | None = None
    name: str | None = None
    created_at: datetime | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    account_type: str | None = Field(
        default=None, validation_alias="accountType", serialization_alias="accountType"
    )
    is_admin: bool | None = Field(
        default=None, validation_alias="isAdmin", serialization_alias="isAdmin"
    )
    authorizations: list[NetworksAuthorizationsItem] = Field(default_factory=list)


class CreateNetworkMqttBrokerAuthentication(_BaseSchema):
    """Authentication settings of the MQTT broker."""

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


class CreateNetworkMqttBrokerResponse(_BaseSchema):
    """Response for createNetworkMqttBroker operation."""

    id: str | None = None
    name: str | None = None
    host: str | None = None
    port: int | None = None
    security: NetworksSecurity | None = None
    authentication: NetworksAuthentication | None = None


class CreateNetworkMqttBrokerSecurity(_BaseSchema):
    """Security settings of the MQTT broker."""

    mode: str | None = None
    tls: CreateNetworkMqttBrokerSecurityTls | None = None


class CreateNetworkMqttBrokerSecurityTls(_BaseSchema):
    """TLS settings of the MQTT broker."""

    ca_certificate: str | None = Field(
        default=None, validation_alias="caCertificate", serialization_alias="caCertificate"
    )
    verify_hostnames: bool | None = Field(
        default=None, validation_alias="verifyHostnames", serialization_alias="verifyHostnames"
    )


class CreateNetworkPiiRequestResponse(_BaseSchema):
    """Response for createNetworkPiiRequest operation."""

    id: str | None = None
    organization_wide: bool | None = Field(
        default=None, validation_alias="organizationWide", serialization_alias="organizationWide"
    )
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    mac: str | None = None
    datasets: str | None = None
    status: str | None = None
    created_at: int | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    completed_at: int | None = Field(
        default=None, validation_alias="completedAt", serialization_alias="completedAt"
    )


class CreateNetworkVlanProfileResponse(_BaseSchema):
    """Response for createNetworkVlanProfile operation."""

    iname: str | None = None
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    vlan_names: list[NetworksVlanNamesItem] = Field(
        default_factory=list, validation_alias="vlanNames", serialization_alias="vlanNames"
    )
    vlan_groups: list[NetworksVlanGroupsItem] = Field(
        default_factory=list, validation_alias="vlanGroups", serialization_alias="vlanGroups"
    )


class CreateNetworkVlanProfileVlanGroupsItem(_BaseSchema):
    """Item schema for vlanGroups."""

    name: str
    vlan_ids: str = Field(validation_alias="vlanIds", serialization_alias="vlanIds")


class CreateNetworkVlanProfileVlanNamesItem(_BaseSchema):
    """Item schema for vlanNames."""

    name: str
    vlan_id: str = Field(validation_alias="vlanId", serialization_alias="vlanId")
    adaptive_policy_group: NetworksToVersion | None = Field(
        default=None,
        validation_alias="adaptivePolicyGroup",
        serialization_alias="adaptivePolicyGroup",
    )


class CreateNetworkWebhooksHttpServerPayloadTemplate(_BaseSchema):
    """The payload template to use when posting data to the HTTP server."""

    payload_template_id: str | None = Field(
        default=None, validation_alias="payloadTemplateId", serialization_alias="payloadTemplateId"
    )
    name: str | None = None


class CreateNetworkWebhooksHttpServerResponse(_BaseSchema):
    """Response for createNetworkWebhooksHttpServer operation."""

    id: str | None = None
    name: str | None = None
    url: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    payload_template: NetworksPayloadTemplate | None = Field(
        default=None, validation_alias="payloadTemplate", serialization_alias="payloadTemplate"
    )


class CreateNetworkWebhooksPayloadTemplateHeadersItem(_BaseSchema):
    """Item schema for headers."""

    name: str | None = None
    template: str | None = None


class CreateNetworkWebhooksPayloadTemplateResponse(_BaseSchema):
    """Response for createNetworkWebhooksPayloadTemplate operation."""

    payload_template_id: str | None = Field(
        default=None, validation_alias="payloadTemplateId", serialization_alias="payloadTemplateId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    name: str | None = None
    headers: list[NetworksHeadersItem] = Field(default_factory=list)
    body: str | None = None
    sharing: NetworksSharing | None = None


class CreateNetworkWebhooksWebhookTestResponse(_BaseSchema):
    """Response for createNetworkWebhooksWebhookTest operation."""

    id: str | None = None
    url: str | None = None
    status: str | None = None


class DeferNetworkFirmwareUpgradesStagedEventsResponse(_BaseSchema):
    """Response for deferNetworkFirmwareUpgradesStagedEvents operation."""

    products: GetNetworkFirmwareUpgradesStagedEventsResponseProducts | None = None
    stages: list[GetNetworkFirmwareUpgradesStagedEventsResponseStagesItem] = Field(
        default_factory=list
    )
    reasons: list[CreateNetworkFirmwareUpgradesRollbackResponseReasonsItem] = Field(
        default_factory=list
    )


class DeleteNetworkFloorPlanResponse(_BaseSchema):
    """Response for deleteNetworkFloorPlan operation."""

    floor_plan_id: str | None = Field(
        default=None, validation_alias="floorPlanId", serialization_alias="floorPlanId"
    )
    image_url: str | None = Field(
        default=None, validation_alias="imageUrl", serialization_alias="imageUrl"
    )
    image_url_expires_at: str | None = Field(
        default=None, validation_alias="imageUrlExpiresAt", serialization_alias="imageUrlExpiresAt"
    )
    image_extension: str | None = Field(
        default=None, validation_alias="imageExtension", serialization_alias="imageExtension"
    )
    image_md5: str | None = Field(
        default=None, validation_alias="imageMd5", serialization_alias="imageMd5"
    )
    name: str | None = None
    devices: list[NetworksDevicesItem2] = Field(default_factory=list)
    width: float | None = None
    height: float | None = None
    center: NetworksCenter | None = None
    bottom_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomLeftCorner", serialization_alias="bottomLeftCorner"
    )
    bottom_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomRightCorner", serialization_alias="bottomRightCorner"
    )
    top_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topLeftCorner", serialization_alias="topLeftCorner"
    )
    top_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topRightCorner", serialization_alias="topRightCorner"
    )
    floor_number: float | None = Field(
        default=None, validation_alias="floorNumber", serialization_alias="floorNumber"
    )


class GetNetworkAlertsHistoryResponse(RootModel[list["GetNetworkAlertsHistoryResponseItem"]]):
    """Response for getNetworkAlertsHistory operation."""


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

    occurred_at: str | None = Field(
        default=None, validation_alias="occurredAt", serialization_alias="occurredAt"
    )
    alert_type_id: str | None = Field(
        default=None, validation_alias="alertTypeId", serialization_alias="alertTypeId"
    )
    alert_type: str | None = Field(
        default=None, validation_alias="alertType", serialization_alias="alertType"
    )
    device: NetworksDevice | None = None
    destinations: NetworksDestinations | None = None
    alert_data: dict[str, Any] | None = Field(
        default=None, validation_alias="alertData", serialization_alias="alertData"
    )


class GetNetworkAlertsSettingsResponse(_BaseSchema):
    """Response for getNetworkAlertsSettings operation."""

    default_destinations: GetNetworkAlertsSettingsResponseDefaultDestinations | None = Field(
        default=None,
        validation_alias="defaultDestinations",
        serialization_alias="defaultDestinations",
    )
    alerts: list[GetNetworkAlertsSettingsResponseAlertsItem] = Field(default_factory=list)
    muting: GetNetworkAlertsSettingsResponseMuting | None = None


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

    type_: str = Field(validation_alias="type", serialization_alias="type")
    enabled: bool | None = None
    alert_destinations: NetworksAlertsAlertDestinations | None = Field(
        default=None, validation_alias="alertDestinations", serialization_alias="alertDestinations"
    )
    filters: NetworksAlertsFilters | None = None


class GetNetworkAlertsSettingsResponseDefaultDestinations(_BaseSchema):
    """The network-wide destinations for all alerts on the network."""

    emails: list[str] = Field(default_factory=list)
    all_admins: bool | None = Field(
        default=None, validation_alias="allAdmins", serialization_alias="allAdmins"
    )
    snmp: bool | None = None
    http_server_ids: list[str] = Field(
        default_factory=list, validation_alias="httpServerIds", serialization_alias="httpServerIds"
    )


class GetNetworkAlertsSettingsResponseMuting(_BaseSchema):
    """Mute alerts under certain conditions."""

    by_port_schedules: NetworksMutingByPortSchedules | None = Field(
        default=None, validation_alias="byPortSchedules", serialization_alias="byPortSchedules"
    )


class GetNetworkBluetoothClientResponse(_BaseSchema):
    """Response for getNetworkBluetoothClient operation."""

    id: str | None = None
    mac: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    device_name: str | None = Field(
        default=None, validation_alias="deviceName", serialization_alias="deviceName"
    )
    manufacturer: str | None = None
    last_seen: int | None = Field(
        default=None, validation_alias="lastSeen", serialization_alias="lastSeen"
    )
    seen_by_device_mac: str | None = Field(
        default=None, validation_alias="seenByDeviceMac", serialization_alias="seenByDeviceMac"
    )
    in_sight_alert: bool | None = Field(
        default=None, validation_alias="inSightAlert", serialization_alias="inSightAlert"
    )
    out_of_sight_alert: bool | None = Field(
        default=None, validation_alias="outOfSightAlert", serialization_alias="outOfSightAlert"
    )
    tags: list[str] = Field(default_factory=list)


class GetNetworkBluetoothClientsResponse(RootModel[list["GetNetworkBluetoothClientsResponseItem"]]):
    """Response for getNetworkBluetoothClients operation."""


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

    id: str | None = None
    mac: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    name: str | None = None
    device_name: str | None = Field(
        default=None, validation_alias="deviceName", serialization_alias="deviceName"
    )
    manufacturer: str | None = None
    last_seen: int | None = Field(
        default=None, validation_alias="lastSeen", serialization_alias="lastSeen"
    )
    seen_by_device_mac: str | None = Field(
        default=None, validation_alias="seenByDeviceMac", serialization_alias="seenByDeviceMac"
    )
    in_sight_alert: bool | None = Field(
        default=None, validation_alias="inSightAlert", serialization_alias="inSightAlert"
    )
    out_of_sight_alert: bool | None = Field(
        default=None, validation_alias="outOfSightAlert", serialization_alias="outOfSightAlert"
    )
    tags: list[str] = Field(default_factory=list)


class GetNetworkClientPolicyResponse(_BaseSchema):
    """Response for getNetworkClientPolicy operation."""

    mac: str | None = None
    device_policy: str | None = Field(
        default=None, validation_alias="devicePolicy", serialization_alias="devicePolicy"
    )
    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    policies_by_ssid: list[GetNetworkClientPolicyResponsePoliciesBySsidItem] = Field(
        default_factory=list,
        validation_alias="policiesBySsid",
        serialization_alias="policiesBySsid",
    )


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

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


class GetNetworkClientResponse(_BaseSchema):
    """Response for getNetworkClient operation."""

    id: str | None = None
    mac: str | None = None
    ip: str | None = None
    ip6: str | None = None
    ip6_local: str | None = Field(
        default=None, validation_alias="ip6Local", serialization_alias="ip6Local"
    )
    description: str | None = None
    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"
    )
    manufacturer: str | None = None
    os: str | None = None
    user: str | None = None
    vlan: str | None = None
    named_vlan: str | None = Field(
        default=None, validation_alias="namedVlan", serialization_alias="namedVlan"
    )
    ssid: str | None = None
    switchport: str | None = None
    wireless_capabilities: str | None = Field(
        default=None,
        validation_alias="wirelessCapabilities",
        serialization_alias="wirelessCapabilities",
    )
    sm_installed: bool | None = Field(
        default=None, validation_alias="smInstalled", serialization_alias="smInstalled"
    )
    recent_device_mac: str | None = Field(
        default=None, validation_alias="recentDeviceMac", serialization_alias="recentDeviceMac"
    )
    recent_device_name: str | None = Field(
        default=None, validation_alias="recentDeviceName", serialization_alias="recentDeviceName"
    )
    recent_device_serial: str | None = Field(
        default=None,
        validation_alias="recentDeviceSerial",
        serialization_alias="recentDeviceSerial",
    )
    recent_device_connection: str | None = Field(
        default=None,
        validation_alias="recentDeviceConnection",
        serialization_alias="recentDeviceConnection",
    )
    client_vpn_connections: list[GetNetworkClientResponseClientVpnConnectionsItem] = Field(
        default_factory=list,
        validation_alias="clientVpnConnections",
        serialization_alias="clientVpnConnections",
    )
    lldp: list[list[str]] = Field(default_factory=list)
    cdp: list[list[str]] = Field(default_factory=list)
    status: str | None = None
    notes: str | None = None
    device_type_prediction: str | None = Field(
        default=None,
        validation_alias="deviceTypePrediction",
        serialization_alias="deviceTypePrediction",
    )


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

    remote_ip: str | None = Field(
        default=None, validation_alias="remoteIp", serialization_alias="remoteIp"
    )
    connected_at: int | None = Field(
        default=None, validation_alias="connectedAt", serialization_alias="connectedAt"
    )
    disconnected_at: int | None = Field(
        default=None, validation_alias="disconnectedAt", serialization_alias="disconnectedAt"
    )


class GetNetworkClientTrafficHistoryResponse(
    RootModel[list["GetNetworkClientTrafficHistoryResponseItem"]]
):
    """Response for getNetworkClientTrafficHistory operation."""


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

    ts: datetime | None = None
    application: str | None = None
    destination: str | None = None
    protocol: str | None = None
    port: int | None = None
    recv: float | None = None
    sent: float | None = None
    num_flows: int | None = Field(
        default=None, validation_alias="numFlows", serialization_alias="numFlows"
    )
    active_seconds: int | None = Field(
        default=None, validation_alias="activeSeconds", serialization_alias="activeSeconds"
    )


class GetNetworkClientUsageHistoryResponse(
    RootModel[list["GetNetworkClientUsageHistoryResponseItem"]]
):
    """Response for getNetworkClientUsageHistory operation."""


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

    received: float | None = None
    sent: float | None = None
    ts: datetime | None = None


class GetNetworkClientsApplicationUsageResponse(
    RootModel[list["GetNetworkClientsApplicationUsageResponseItem"]]
):
    """Response for getNetworkClientsApplicationUsage operation."""


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

    client_id: str | None = Field(
        default=None, validation_alias="clientId", serialization_alias="clientId"
    )
    client_ip: str | None = Field(
        default=None, validation_alias="clientIp", serialization_alias="clientIp"
    )
    client_mac: str | None = Field(
        default=None, validation_alias="clientMac", serialization_alias="clientMac"
    )
    application_usage: list[NetworksApplicationUsageItem] = Field(
        default_factory=list,
        validation_alias="applicationUsage",
        serialization_alias="applicationUsage",
    )


class GetNetworkClientsBandwidthUsageHistoryResponse(
    RootModel[list["GetNetworkClientsBandwidthUsageHistoryResponseItem"]]
):
    """Response for getNetworkClientsBandwidthUsageHistory operation."""


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

    ts: datetime | None = None
    total: float | None = None
    upstream: float | None = None
    downstream: float | None = None


class GetNetworkClientsOverviewResponse(_BaseSchema):
    """Response for getNetworkClientsOverview operation."""

    counts: GetNetworkClientsOverviewResponseCounts | None = None
    usages: GetNetworkClientsOverviewResponseUsages | None = None


class GetNetworkClientsOverviewResponseCounts(_BaseSchema):
    """The number of clients on a network over a given time range."""

    total: int | None = None
    with_heavy_usage: int | None = Field(
        default=None, validation_alias="withHeavyUsage", serialization_alias="withHeavyUsage"
    )


class GetNetworkClientsOverviewResponseUsages(_BaseSchema):
    """The average usage of the clients on a network over a given time range."""

    average: int | None = None
    with_heavy_usage_average: int | None = Field(
        default=None,
        validation_alias="withHeavyUsageAverage",
        serialization_alias="withHeavyUsageAverage",
    )


class GetNetworkClientsResponse(RootModel[list["GetNetworkClientsResponseItem"]]):
    """Response for getNetworkClients operation."""


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

    id: str | None = None
    mac: str | None = None
    ip: str | None = None
    ip6: str | None = None
    description: str | None = None
    first_seen: datetime | None = Field(
        default=None, validation_alias="firstSeen", serialization_alias="firstSeen"
    )
    last_seen: datetime | None = Field(
        default=None, validation_alias="lastSeen", serialization_alias="lastSeen"
    )
    manufacturer: str | None = None
    os: str | None = None
    user: str | None = None
    vlan: str | None = None
    ssid: str | None = None
    switchport: str | None = None
    wireless_capabilities: str | None = Field(
        default=None,
        validation_alias="wirelessCapabilities",
        serialization_alias="wirelessCapabilities",
    )
    sm_installed: bool | None = Field(
        default=None, validation_alias="smInstalled", serialization_alias="smInstalled"
    )
    recent_device_mac: str | None = Field(
        default=None, validation_alias="recentDeviceMac", serialization_alias="recentDeviceMac"
    )
    status: str | None = None
    usage: NetworksUsage | None = None
    named_vlan: str | None = Field(
        default=None, validation_alias="namedVlan", serialization_alias="namedVlan"
    )
    adaptive_policy_group: str | None = Field(
        default=None,
        validation_alias="adaptivePolicyGroup",
        serialization_alias="adaptivePolicyGroup",
    )
    device_type_prediction: str | None = Field(
        default=None,
        validation_alias="deviceTypePrediction",
        serialization_alias="deviceTypePrediction",
    )
    recent_device_serial: str | None = Field(
        default=None,
        validation_alias="recentDeviceSerial",
        serialization_alias="recentDeviceSerial",
    )
    recent_device_name: str | None = Field(
        default=None, validation_alias="recentDeviceName", serialization_alias="recentDeviceName"
    )
    recent_device_connection: str | None = Field(
        default=None,
        validation_alias="recentDeviceConnection",
        serialization_alias="recentDeviceConnection",
    )
    notes: str | None = None
    ip6_local: str | None = Field(
        default=None, validation_alias="ip6Local", serialization_alias="ip6Local"
    )
    group_policy8021x: str | None = Field(
        default=None, validation_alias="groupPolicy8021x", serialization_alias="groupPolicy8021x"
    )
    psk_group: str | None = Field(
        default=None, validation_alias="pskGroup", serialization_alias="pskGroup"
    )


class GetNetworkClientsUsageHistoriesResponse(
    RootModel[list["GetNetworkClientsUsageHistoriesResponseItem"]]
):
    """Response for getNetworkClientsUsageHistories operation."""


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

    client_id: str | None = Field(
        default=None, validation_alias="clientId", serialization_alias="clientId"
    )
    client_ip: str | None = Field(
        default=None, validation_alias="clientIp", serialization_alias="clientIp"
    )
    client_mac: str | None = Field(
        default=None, validation_alias="clientMac", serialization_alias="clientMac"
    )
    usage_history: list[NetworksUsageHistoryItem] = Field(
        default_factory=list, validation_alias="usageHistory", serialization_alias="usageHistory"
    )


class GetNetworkDevicesResponse(RootModel[list["GetNetworkDevicesResponseItem"]]):
    """Response for getNetworkDevices operation."""


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

    name: str | None = None
    lat: float | None = None
    lng: float | None = None
    address: str | None = None
    notes: str | None = None
    tags: list[str] = Field(default_factory=list)
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    serial: str | None = None
    model: str | None = None
    mac: str | None = None
    lan_ip: str | None = Field(default=None, validation_alias="lanIp", serialization_alias="lanIp")
    firmware: str | None = None
    floor_plan_id: str | None = Field(
        default=None, validation_alias="floorPlanId", serialization_alias="floorPlanId"
    )
    details: list[NetworksDetailsItem] = Field(default_factory=list)
    beacon_id_params: NetworksBeaconIdParams | None = Field(
        default=None, validation_alias="beaconIdParams", serialization_alias="beaconIdParams"
    )


class GetNetworkEventsEventTypesResponse(RootModel[list["GetNetworkEventsEventTypesResponseItem"]]):
    """Response for getNetworkEventsEventTypes operation."""


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

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


class GetNetworkEventsResponse(_BaseSchema):
    """Response for getNetworkEvents operation."""

    message: str | None = None
    page_start_at: str | None = Field(
        default=None, validation_alias="pageStartAt", serialization_alias="pageStartAt"
    )
    page_end_at: str | None = Field(
        default=None, validation_alias="pageEndAt", serialization_alias="pageEndAt"
    )
    events: list[GetNetworkEventsResponseEventsItem] = Field(default_factory=list)


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

    occurred_at: str | None = Field(
        default=None, validation_alias="occurredAt", serialization_alias="occurredAt"
    )
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    description: str | None = None
    category: str | None = None
    client_id: str | None = Field(
        default=None, validation_alias="clientId", serialization_alias="clientId"
    )
    client_description: str | None = Field(
        default=None, validation_alias="clientDescription", serialization_alias="clientDescription"
    )
    client_mac: str | None = Field(
        default=None, validation_alias="clientMac", serialization_alias="clientMac"
    )
    device_serial: str | None = Field(
        default=None, validation_alias="deviceSerial", serialization_alias="deviceSerial"
    )
    device_name: str | None = Field(
        default=None, validation_alias="deviceName", serialization_alias="deviceName"
    )
    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )
    event_data: NetworksEventsEventData | None = Field(
        default=None, validation_alias="eventData", serialization_alias="eventData"
    )


class GetNetworkFirmwareUpgradesResponse(_BaseSchema):
    """Response for getNetworkFirmwareUpgrades operation."""

    upgrade_window: GetNetworkFirmwareUpgradesResponseUpgradeWindow | None = Field(
        default=None, validation_alias="upgradeWindow", serialization_alias="upgradeWindow"
    )
    timezone: str | None = None
    products: GetNetworkFirmwareUpgradesResponseProducts | None = None


class GetNetworkFirmwareUpgradesResponseProducts(_BaseSchema):
    """The network devices to be updated."""

    wireless: NetworksProductsWireless | None = None
    appliance: NetworksProductsWireless | None = None
    switch: NetworksProductsWireless | None = None
    camera: NetworksProductsWireless | None = None
    cellular_gateway: NetworksProductsWireless | None = Field(
        default=None, validation_alias="cellularGateway", serialization_alias="cellularGateway"
    )
    sensor: NetworksProductsWireless | None = None
    wireless_controller: NetworksProductsWireless | None = Field(
        default=None,
        validation_alias="wirelessController",
        serialization_alias="wirelessController",
    )
    secure_connect: NetworksProductsWireless | None = Field(
        default=None, validation_alias="secureConnect", serialization_alias="secureConnect"
    )


class GetNetworkFirmwareUpgradesResponseUpgradeWindow(_BaseSchema):
    """Upgrade window for devices in network."""

    day_of_week: str | None = Field(
        default=None, validation_alias="dayOfWeek", serialization_alias="dayOfWeek"
    )
    hour_of_day: str | None = Field(
        default=None, validation_alias="hourOfDay", serialization_alias="hourOfDay"
    )


class GetNetworkFirmwareUpgradesStagedEventsResponse(_BaseSchema):
    """Response for getNetworkFirmwareUpgradesStagedEvents operation."""

    products: GetNetworkFirmwareUpgradesStagedEventsResponseProducts | None = None
    stages: list[GetNetworkFirmwareUpgradesStagedEventsResponseStagesItem] = Field(
        default_factory=list
    )
    reasons: list[CreateNetworkFirmwareUpgradesRollbackResponseReasonsItem] = Field(
        default_factory=list
    )


class GetNetworkFirmwareUpgradesStagedEventsResponseProducts(_BaseSchema):
    """The network devices to be updated."""

    switch: NetworksProductsSwitch | None = None


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

    group: NetworksStagesGroup | None = None
    milestones: NetworksStagesMilestones | None = None
    status: str | None = None


class GetNetworkFirmwareUpgradesStagedGroupResponse(_BaseSchema):
    """Response for getNetworkFirmwareUpgradesStagedGroup operation."""

    group_id: str | None = Field(
        default=None, validation_alias="groupId", serialization_alias="groupId"
    )
    name: str | None = None
    description: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    assigned_devices: NetworksAssignedDevices | None = Field(
        default=None, validation_alias="assignedDevices", serialization_alias="assignedDevices"
    )


class GetNetworkFirmwareUpgradesStagedGroupsResponse(
    RootModel[list["GetNetworkFirmwareUpgradesStagedGroupsResponseItem"]]
):
    """Response for getNetworkFirmwareUpgradesStagedGroups operation."""


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

    group_id: str | None = Field(
        default=None, validation_alias="groupId", serialization_alias="groupId"
    )
    name: str | None = None
    description: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    assigned_devices: NetworksAssignedDevices | None = Field(
        default=None, validation_alias="assignedDevices", serialization_alias="assignedDevices"
    )


class GetNetworkFirmwareUpgradesStagedStagesResponse(
    RootModel[list["GetNetworkFirmwareUpgradesStagedStagesResponseItem"]]
):
    """Response for getNetworkFirmwareUpgradesStagedStages operation."""


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

    group: NetworksStagesGroup | None = None


class GetNetworkFloorPlanResponse(_BaseSchema):
    """Response for getNetworkFloorPlan operation."""

    floor_plan_id: str | None = Field(
        default=None, validation_alias="floorPlanId", serialization_alias="floorPlanId"
    )
    image_url: str | None = Field(
        default=None, validation_alias="imageUrl", serialization_alias="imageUrl"
    )
    image_url_expires_at: str | None = Field(
        default=None, validation_alias="imageUrlExpiresAt", serialization_alias="imageUrlExpiresAt"
    )
    image_extension: str | None = Field(
        default=None, validation_alias="imageExtension", serialization_alias="imageExtension"
    )
    image_md5: str | None = Field(
        default=None, validation_alias="imageMd5", serialization_alias="imageMd5"
    )
    name: str | None = None
    devices: list[NetworksDevicesItem2] = Field(default_factory=list)
    width: float | None = None
    height: float | None = None
    center: NetworksCenter | None = None
    bottom_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomLeftCorner", serialization_alias="bottomLeftCorner"
    )
    bottom_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomRightCorner", serialization_alias="bottomRightCorner"
    )
    top_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topLeftCorner", serialization_alias="topLeftCorner"
    )
    top_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topRightCorner", serialization_alias="topRightCorner"
    )
    floor_number: float | None = Field(
        default=None, validation_alias="floorNumber", serialization_alias="floorNumber"
    )


class GetNetworkFloorPlansResponse(RootModel[list["GetNetworkFloorPlansResponseItem"]]):
    """Response for getNetworkFloorPlans operation."""


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

    floor_plan_id: str | None = Field(
        default=None, validation_alias="floorPlanId", serialization_alias="floorPlanId"
    )
    image_url: str | None = Field(
        default=None, validation_alias="imageUrl", serialization_alias="imageUrl"
    )
    image_url_expires_at: str | None = Field(
        default=None, validation_alias="imageUrlExpiresAt", serialization_alias="imageUrlExpiresAt"
    )
    image_extension: str | None = Field(
        default=None, validation_alias="imageExtension", serialization_alias="imageExtension"
    )
    image_md5: str | None = Field(
        default=None, validation_alias="imageMd5", serialization_alias="imageMd5"
    )
    name: str | None = None
    devices: list[NetworksDevicesItem2] = Field(default_factory=list)
    width: float | None = None
    height: float | None = None
    center: NetworksCenter | None = None
    bottom_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomLeftCorner", serialization_alias="bottomLeftCorner"
    )
    bottom_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomRightCorner", serialization_alias="bottomRightCorner"
    )
    top_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topLeftCorner", serialization_alias="topLeftCorner"
    )
    top_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topRightCorner", serialization_alias="topRightCorner"
    )
    floor_number: float | None = Field(
        default=None, validation_alias="floorNumber", serialization_alias="floorNumber"
    )


class GetNetworkGroupPoliciesResponse(RootModel[list["GetNetworkGroupPoliciesResponseItem"]]):
    """Response for getNetworkGroupPolicies operation."""


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

    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    scheduling: NetworksScheduling | None = None
    bandwidth: NetworksBandwidth | None = None
    firewall_and_traffic_shaping: NetworksFirewallAndTrafficShaping | None = Field(
        default=None,
        validation_alias="firewallAndTrafficShaping",
        serialization_alias="firewallAndTrafficShaping",
    )
    content_filtering: NetworksContentFiltering | None = Field(
        default=None, validation_alias="contentFiltering", serialization_alias="contentFiltering"
    )
    splash_auth_settings: str | None = Field(
        default=None,
        validation_alias="splashAuthSettings",
        serialization_alias="splashAuthSettings",
    )
    vlan_tagging: NetworksVlanTagging | None = Field(
        default=None, validation_alias="vlanTagging", serialization_alias="vlanTagging"
    )
    bonjour_forwarding: NetworksBonjourForwarding | None = Field(
        default=None, validation_alias="bonjourForwarding", serialization_alias="bonjourForwarding"
    )


class GetNetworkGroupPolicyResponse(_BaseSchema):
    """Response for getNetworkGroupPolicy operation."""

    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    scheduling: NetworksScheduling | None = None
    bandwidth: NetworksBandwidth | None = None
    firewall_and_traffic_shaping: NetworksFirewallAndTrafficShaping | None = Field(
        default=None,
        validation_alias="firewallAndTrafficShaping",
        serialization_alias="firewallAndTrafficShaping",
    )
    content_filtering: NetworksContentFiltering | None = Field(
        default=None, validation_alias="contentFiltering", serialization_alias="contentFiltering"
    )
    splash_auth_settings: str | None = Field(
        default=None,
        validation_alias="splashAuthSettings",
        serialization_alias="splashAuthSettings",
    )
    vlan_tagging: NetworksVlanTagging | None = Field(
        default=None, validation_alias="vlanTagging", serialization_alias="vlanTagging"
    )
    bonjour_forwarding: NetworksBonjourForwarding | None = Field(
        default=None, validation_alias="bonjourForwarding", serialization_alias="bonjourForwarding"
    )


class GetNetworkHealthAlertsResponse(RootModel[list["GetNetworkHealthAlertsResponseItem"]]):
    """Response for getNetworkHealthAlerts operation."""


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

    id: str | None = None
    category: str | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    severity: str | None = None
    scope: NetworksScope | None = None


class GetNetworkMerakiAuthUserResponse(_BaseSchema):
    """Response for getNetworkMerakiAuthUser operation."""

    id: str | None = None
    email: str | None = None
    name: str | None = None
    created_at: datetime | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    account_type: str | None = Field(
        default=None, validation_alias="accountType", serialization_alias="accountType"
    )
    is_admin: bool | None = Field(
        default=None, validation_alias="isAdmin", serialization_alias="isAdmin"
    )
    authorizations: list[NetworksAuthorizationsItem] = Field(default_factory=list)


class GetNetworkMerakiAuthUsersResponse(RootModel[list["GetNetworkMerakiAuthUsersResponseItem"]]):
    """Response for getNetworkMerakiAuthUsers operation."""


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

    id: str | None = None
    email: str | None = None
    name: str | None = None
    created_at: datetime | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    account_type: str | None = Field(
        default=None, validation_alias="accountType", serialization_alias="accountType"
    )
    is_admin: bool | None = Field(
        default=None, validation_alias="isAdmin", serialization_alias="isAdmin"
    )
    authorizations: list[NetworksAuthorizationsItem] = Field(default_factory=list)


class GetNetworkMqttBrokerResponse(_BaseSchema):
    """Response for getNetworkMqttBroker operation."""

    id: str | None = None
    name: str | None = None
    host: str | None = None
    port: int | None = None
    security: NetworksSecurity | None = None
    authentication: NetworksAuthentication | None = None


class GetNetworkMqttBrokersResponse(RootModel[list["GetNetworkMqttBrokersResponseItem"]]):
    """Response for getNetworkMqttBrokers operation."""


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

    id: str | None = None
    name: str | None = None
    host: str | None = None
    port: int | None = None
    security: NetworksSecurity | None = None
    authentication: NetworksAuthentication | None = None


class GetNetworkNetflowResponse(_BaseSchema):
    """Response for getNetworkNetflow operation."""

    reporting_enabled: bool | None = Field(
        default=None, validation_alias="reportingEnabled", serialization_alias="reportingEnabled"
    )
    collector_ip: str | None = Field(
        default=None, validation_alias="collectorIp", serialization_alias="collectorIp"
    )
    collector_port: int | None = Field(
        default=None, validation_alias="collectorPort", serialization_alias="collectorPort"
    )
    eta_enabled: bool | None = Field(
        default=None, validation_alias="etaEnabled", serialization_alias="etaEnabled"
    )
    eta_dst_port: int | None = Field(
        default=None, validation_alias="etaDstPort", serialization_alias="etaDstPort"
    )


class GetNetworkNetworkHealthChannelUtilizationResponse(
    RootModel[list["GetNetworkNetworkHealthChannelUtilizationResponseItem"]]
):
    """Response for getNetworkNetworkHealthChannelUtilization operation."""


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

    serial: str | None = None
    model: str | None = None
    tags: str | None = None
    wifi0: list[NetworksWifi0Item] = Field(default_factory=list)
    wifi1: list[NetworksWifi0Item] = Field(default_factory=list)


class GetNetworkPiiPiiKeysResponse(RootModel[dict[str, "GetNetworkPiiPiiKeysResponseValue"]]):
    """Response for getNetworkPiiPiiKeys operation."""


class GetNetworkPiiPiiKeysResponseValue(_BaseSchema):
    """List of pii keys."""

    macs: list[str] = Field(default_factory=list)
    emails: list[str] = Field(default_factory=list)
    usernames: list[str] = Field(default_factory=list)
    serials: list[str] = Field(default_factory=list)
    imeis: list[str] = Field(default_factory=list)
    bluetooth_macs: list[str] = Field(
        default_factory=list, validation_alias="bluetoothMacs", serialization_alias="bluetoothMacs"
    )


class GetNetworkPiiRequestResponse(_BaseSchema):
    """Response for getNetworkPiiRequest operation."""

    id: str | None = None
    organization_wide: bool | None = Field(
        default=None, validation_alias="organizationWide", serialization_alias="organizationWide"
    )
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    mac: str | None = None
    datasets: str | None = None
    status: str | None = None
    created_at: int | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    completed_at: int | None = Field(
        default=None, validation_alias="completedAt", serialization_alias="completedAt"
    )


class GetNetworkPiiRequestsResponse(RootModel[list["GetNetworkPiiRequestsResponseItem"]]):
    """Response for getNetworkPiiRequests operation."""


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

    id: str | None = None
    organization_wide: bool | None = Field(
        default=None, validation_alias="organizationWide", serialization_alias="organizationWide"
    )
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    mac: str | None = None
    datasets: str | None = None
    status: str | None = None
    created_at: int | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    completed_at: int | None = Field(
        default=None, validation_alias="completedAt", serialization_alias="completedAt"
    )


class GetNetworkPiiSmDevicesForKeyResponse(RootModel[dict[str, list[str]]]):
    """Response for getNetworkPiiSmDevicesForKey operation."""


class GetNetworkPiiSmOwnersForKeyResponse(RootModel[dict[str, list[str]]]):
    """Response for getNetworkPiiSmOwnersForKey operation."""


class GetNetworkPoliciesByClientResponse(RootModel[list["GetNetworkPoliciesByClientResponseItem"]]):
    """Response for getNetworkPoliciesByClient operation."""


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

    name: str | None = None
    client_id: str | None = Field(
        default=None, validation_alias="clientId", serialization_alias="clientId"
    )
    assigned: list[NetworksAssignedItem] = Field(default_factory=list)


class GetNetworkResponse(_BaseSchema):
    """Response for getNetwork operation."""

    id: str
    organization_id: str = Field(
        validation_alias="organizationId", serialization_alias="organizationId"
    )
    name: str | None = None
    product_types: list[str] = Field(
        default_factory=list, validation_alias="productTypes", serialization_alias="productTypes"
    )
    time_zone: str | None = Field(
        default=None, validation_alias="timeZone", serialization_alias="timeZone"
    )
    tags: list[str] = Field(default_factory=list)
    enrollment_string: str | None = Field(
        default=None, validation_alias="enrollmentString", serialization_alias="enrollmentString"
    )
    url: str | None = None
    notes: str | None = None
    is_bound_to_config_template: bool | None = Field(
        default=None,
        validation_alias="isBoundToConfigTemplate",
        serialization_alias="isBoundToConfigTemplate",
    )


class GetNetworkSettingsResponse(_BaseSchema):
    """Response for getNetworkSettings operation."""

    local_status_page_enabled: bool | None = Field(
        default=None,
        validation_alias="localStatusPageEnabled",
        serialization_alias="localStatusPageEnabled",
    )
    remote_status_page_enabled: bool | None = Field(
        default=None,
        validation_alias="remoteStatusPageEnabled",
        serialization_alias="remoteStatusPageEnabled",
    )
    local_status_page: GetNetworkSettingsResponseLocalStatusPage | None = Field(
        default=None, validation_alias="localStatusPage", serialization_alias="localStatusPage"
    )
    secure_port: NetworksMutingByPortSchedules | None = Field(
        default=None, validation_alias="securePort", serialization_alias="securePort"
    )
    fips: NetworksMutingByPortSchedules | None = None
    named_vlans: GetNetworkSettingsResponseNamedVlans | None = Field(
        default=None, validation_alias="namedVlans", serialization_alias="namedVlans"
    )


class GetNetworkSettingsResponseLocalStatusPage(_BaseSchema):
    """A hash of Local Status page(s)' authentication options applied to the Network."""

    authentication: NetworksLocalStatusPageAuthentication | None = None


class GetNetworkSettingsResponseNamedVlans(_BaseSchema):
    """A hash of Named VLANs options applied to the Network."""

    enabled: bool


class GetNetworkSnmpResponse(_BaseSchema):
    """Response for getNetworkSnmp operation."""

    access: str | None = None
    community_string: str | None = Field(
        default=None, validation_alias="communityString", serialization_alias="communityString"
    )
    users: list[GetNetworkSnmpResponseUsersItem] = Field(default_factory=list)


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

    username: str | None = None
    passphrase: str | None = None


class GetNetworkSplashLoginAttemptsResponse(
    RootModel[list["GetNetworkSplashLoginAttemptsResponseItem"]]
):
    """Response for getNetworkSplashLoginAttempts operation."""


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

    name: str | None = None
    login: str | None = None
    ssid: str | None = None
    login_at: datetime | None = Field(
        default=None, validation_alias="loginAt", serialization_alias="loginAt"
    )
    gateway_device_mac: str | None = Field(
        default=None, validation_alias="gatewayDeviceMac", serialization_alias="gatewayDeviceMac"
    )
    client_mac: str | None = Field(
        default=None, validation_alias="clientMac", serialization_alias="clientMac"
    )
    client_id: str | None = Field(
        default=None, validation_alias="clientId", serialization_alias="clientId"
    )
    authorization: str | None = None


class GetNetworkSyslogServersResponse(_BaseSchema):
    """Response for getNetworkSyslogServers operation."""

    servers: list[GetNetworkSyslogServersResponseServersItem] = Field(default_factory=list)


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

    host: str | None = None
    port: int | None = None
    roles: list[str] = Field(default_factory=list)


class GetNetworkTopologyLinkLayerResponse(_BaseSchema):
    """Response for getNetworkTopologyLinkLayer operation."""

    nodes: list[GetNetworkTopologyLinkLayerResponseNodesItem] = Field(default_factory=list)
    links: list[GetNetworkTopologyLinkLayerResponseLinksItem] = Field(default_factory=list)
    errors: list[str] = Field(default_factory=list)


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

    ends: list[NetworksLinksEndsItem] = Field(default_factory=list)
    last_reported_at: str | None = Field(
        default=None, validation_alias="lastReportedAt", serialization_alias="lastReportedAt"
    )


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

    derived_id: str | None = Field(
        default=None, validation_alias="derivedId", serialization_alias="derivedId"
    )
    mac: str | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    root: bool | None = None
    device: NetworksNodesDevice | None = None
    discovered: NetworksNodesDiscovered | None = None
    stack: NetworksNodesStack | None = None


class GetNetworkTrafficAnalysisResponse(_BaseSchema):
    """Response for getNetworkTrafficAnalysis operation."""

    mode: str | None = None
    custom_pie_chart_items: list[GetNetworkTrafficAnalysisResponseCustomPieChartItemsItem] = Field(
        default_factory=list,
        validation_alias="customPieChartItems",
        serialization_alias="customPieChartItems",
    )


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

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


class GetNetworkTrafficResponse(RootModel[list["GetNetworkTrafficResponseItem"]]):
    """Response for getNetworkTraffic operation."""


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

    application: str | None = None
    destination: str | None = None
    protocol: str | None = None
    port: int | None = None
    sent: float | None = None
    recv: float | None = None
    num_clients: int | None = Field(
        default=None, validation_alias="numClients", serialization_alias="numClients"
    )
    active_time: int | None = Field(
        default=None, validation_alias="activeTime", serialization_alias="activeTime"
    )
    flows: int | None = None


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


class GetNetworkVlanProfileResponse(_BaseSchema):
    """Response for getNetworkVlanProfile operation."""

    iname: str | None = None
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    vlan_names: list[NetworksVlanNamesItem] = Field(
        default_factory=list, validation_alias="vlanNames", serialization_alias="vlanNames"
    )
    vlan_groups: list[NetworksVlanGroupsItem] = Field(
        default_factory=list, validation_alias="vlanGroups", serialization_alias="vlanGroups"
    )


class GetNetworkVlanProfilesAssignmentsByDeviceResponse(
    RootModel[list["GetNetworkVlanProfilesAssignmentsByDeviceResponseItem"]]
):
    """Response for getNetworkVlanProfilesAssignmentsByDevice operation."""


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

    name: str | None = None
    serial: str | None = None
    mac: str | None = None
    product_type: str | None = Field(
        default=None, validation_alias="productType", serialization_alias="productType"
    )
    vlan_profile: NetworksVlanProfile | None = Field(
        default=None, validation_alias="vlanProfile", serialization_alias="vlanProfile"
    )
    stack: NetworksToVersion | None = None


class GetNetworkVlanProfilesResponse(RootModel[list["GetNetworkVlanProfilesResponseItem"]]):
    """Response for getNetworkVlanProfiles operation."""


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

    iname: str | None = None
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    vlan_names: list[NetworksVlanNamesItem] = Field(
        default_factory=list, validation_alias="vlanNames", serialization_alias="vlanNames"
    )
    vlan_groups: list[NetworksVlanGroupsItem] = Field(
        default_factory=list, validation_alias="vlanGroups", serialization_alias="vlanGroups"
    )


class GetNetworkWebhooksHttpServerResponse(_BaseSchema):
    """Response for getNetworkWebhooksHttpServer operation."""

    id: str | None = None
    name: str | None = None
    url: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    payload_template: NetworksPayloadTemplate | None = Field(
        default=None, validation_alias="payloadTemplate", serialization_alias="payloadTemplate"
    )


class GetNetworkWebhooksHttpServersResponse(
    RootModel[list["GetNetworkWebhooksHttpServersResponseItem"]]
):
    """Response for getNetworkWebhooksHttpServers operation."""


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

    id: str | None = None
    name: str | None = None
    url: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    payload_template: NetworksPayloadTemplate | None = Field(
        default=None, validation_alias="payloadTemplate", serialization_alias="payloadTemplate"
    )


class GetNetworkWebhooksPayloadTemplateResponse(_BaseSchema):
    """Response for getNetworkWebhooksPayloadTemplate operation."""

    payload_template_id: str | None = Field(
        default=None, validation_alias="payloadTemplateId", serialization_alias="payloadTemplateId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    name: str | None = None
    headers: list[NetworksHeadersItem] = Field(default_factory=list)
    body: str | None = None
    sharing: NetworksSharing | None = None


class GetNetworkWebhooksPayloadTemplatesResponse(
    RootModel[list["GetNetworkWebhooksPayloadTemplatesResponseItem"]]
):
    """Response for getNetworkWebhooksPayloadTemplates operation."""


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

    payload_template_id: str | None = Field(
        default=None, validation_alias="payloadTemplateId", serialization_alias="payloadTemplateId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    name: str | None = None
    headers: list[NetworksHeadersItem] = Field(default_factory=list)
    body: str | None = None
    sharing: NetworksSharing | None = None


class GetNetworkWebhooksWebhookTestResponse(_BaseSchema):
    """Response for getNetworkWebhooksWebhookTest operation."""

    id: str | None = None
    url: str | None = None
    status: str | None = None


class NetworksAlertsAlertDestinations(_BaseSchema):
    """A hash of destinations for this specific alert."""

    emails: list[str] = Field(default_factory=list)
    sms_numbers: list[str] = Field(
        default_factory=list, validation_alias="smsNumbers", serialization_alias="smsNumbers"
    )
    all_admins: bool | None = Field(
        default=None, validation_alias="allAdmins", serialization_alias="allAdmins"
    )
    snmp: bool | None = None
    http_server_ids: list[str] = Field(
        default_factory=list, validation_alias="httpServerIds", serialization_alias="httpServerIds"
    )


class NetworksAlertsFilters(_BaseSchema):
    """A hash of specific configuration data for the alert. Only filters specific to the alert will
    be updated.
    """

    conditions: list[NetworksConditionsItem] = Field(default_factory=list)
    failure_type: str | None = Field(
        default=None, validation_alias="failureType", serialization_alias="failureType"
    )
    lookback_window: int | None = Field(
        default=None, validation_alias="lookbackWindow", serialization_alias="lookbackWindow"
    )
    min_duration: int | None = Field(
        default=None, validation_alias="minDuration", serialization_alias="minDuration"
    )
    name: str | None = None
    period: int | None = None
    priority: str | None = None
    regex: str | None = None
    selector: str | None = None
    serials: list[str] = Field(default_factory=list)
    ssid_num: int | None = Field(
        default=None, validation_alias="ssidNum", serialization_alias="ssidNum"
    )
    tag: str | None = None
    threshold: int | None = None
    timeout: int | None = None


class NetworksAllowedUrlPatterns(_BaseSchema):
    """Settings for allowed URL patterns."""

    settings: str | None = None
    patterns: list[str] = Field(default_factory=list)


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

    application: str | None = None
    received: int | None = None
    sent: int | None = None


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

    url: str | None = None
    name: str | None = None


class NetworksAssignedDevices(_BaseSchema):
    """The devices and Switch Stacks assigned to the Group."""

    devices: list[NetworksDevicesItem] = Field(default_factory=list)
    switch_stacks: list[NetworksSwitchStacksItem] = Field(
        default_factory=list, validation_alias="switchStacks", serialization_alias="switchStacks"
    )


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

    name: str | None = None
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    ssid: list[NetworksSsidItem] = Field(default_factory=list)


class NetworksAuthentication(_BaseSchema):
    """Authentication settings of the MQTT broker."""

    username: str | None = None


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

    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )
    authorized_zone: str | None = Field(
        default=None, validation_alias="authorizedZone", serialization_alias="authorizedZone"
    )
    expires_at: datetime | None = Field(
        default=None, validation_alias="expiresAt", serialization_alias="expiresAt"
    )
    authorized_by_name: str | None = Field(
        default=None, validation_alias="authorizedByName", serialization_alias="authorizedByName"
    )
    authorized_by_email: str | None = Field(
        default=None, validation_alias="authorizedByEmail", serialization_alias="authorizedByEmail"
    )


class NetworksBandwidth(_BaseSchema):
    """The bandwidth settings for clients bound to your group policy."""

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


class NetworksBandwidthLimits(_BaseSchema):
    """The bandwidth limits object, specifying upload and download speed for clients bound to the
    group policy. These are only enforced if 'settings' is set to 'custom'.
    """

    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 NetworksBeaconIdParams(_BaseSchema):
    """Beacon Id parameters with an identifier and major and minor versions."""

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


class NetworksBlockedUrlCategories(_BaseSchema):
    """Settings for blocked URL categories."""

    settings: str | None = None
    categories: list[str] = Field(default_factory=list)


class NetworksBonjourForwarding(_BaseSchema):
    """The Bonjour settings for your group policy. Only valid if your network has a wireless
    configuration.
    """

    settings: str | None = None
    rules: list[NetworksRulesItem] = Field(default_factory=list)


class NetworksByNetwork(_BaseSchema):
    """Information on network access to the template."""

    admins_can_modify: bool | None = Field(
        default=None, validation_alias="adminsCanModify", serialization_alias="adminsCanModify"
    )


class NetworksCdp(_BaseSchema):
    """CDP information."""

    platform: str | None = None
    device_id: str | None = Field(
        default=None, validation_alias="deviceId", serialization_alias="deviceId"
    )
    address: str | None = None
    capabilities: list[str] = Field(default_factory=list)
    management_address: str | None = Field(
        default=None, validation_alias="managementAddress", serialization_alias="managementAddress"
    )


class NetworksCdp2(_BaseSchema):
    """CDP port information."""

    port_id: str | None = Field(
        default=None, validation_alias="portId", serialization_alias="portId"
    )
    native_vlan: int | None = Field(
        default=None, validation_alias="nativeVlan", serialization_alias="nativeVlan"
    )


class NetworksCenter(_BaseSchema):
    """The longitude and latitude of the center of your floor plan. The 'center' or two adjacent
    corners (e.g. 'topLeftCorner' and 'bottomLeftCorner') must be specified. If 'center' is
    specified, the floor plan is placed over that point with no rotation. If two adjacent
    corners are specified, the floor plan is rotated to line up with the two specified points.
    The aspect ratio of the floor plan's image is preserved regardless of which corners/center
    are specified. (This means if that more than two corners are specified, only two corners may
    be used to preserve the floor plan's aspect ratio.). No two points can have the same
    latitude, longitude pair.
    """

    lat: float | None = None
    lng: float | None = None


class NetworksClients(_BaseSchema):
    """Client information."""

    counts: NetworksCounts | None = None


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

    mac: str | None = None


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

    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    unit: str | None = None
    duration: int | None = None
    direction: str | None = None
    threshold: float | None = None


class NetworksContentFiltering(_BaseSchema):
    """The content filtering settings for your group policy."""

    allowed_url_patterns: NetworksAllowedUrlPatterns | None = Field(
        default=None,
        validation_alias="allowedUrlPatterns",
        serialization_alias="allowedUrlPatterns",
    )
    blocked_url_patterns: NetworksAllowedUrlPatterns | None = Field(
        default=None,
        validation_alias="blockedUrlPatterns",
        serialization_alias="blockedUrlPatterns",
    )
    blocked_url_categories: NetworksBlockedUrlCategories | None = Field(
        default=None,
        validation_alias="blockedUrlCategories",
        serialization_alias="blockedUrlCategories",
    )


class NetworksCounts(_BaseSchema):
    """Client counts."""

    total: int | None = None


class NetworksCurrentVersion(_BaseSchema):
    """Details of the current version on the device."""

    id: str | None = None
    firmware: str | None = None
    short_name: str | None = Field(
        default=None, validation_alias="shortName", serialization_alias="shortName"
    )
    release_type: str | None = Field(
        default=None, validation_alias="releaseType", serialization_alias="releaseType"
    )
    release_date: datetime | None = Field(
        default=None, validation_alias="releaseDate", serialization_alias="releaseDate"
    )


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

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


class NetworksDestinations(_BaseSchema):
    """the destinations this alert is configured to be delivered to."""

    email: NetworksEmail | None = None
    push: NetworksEmail | None = None
    sms: NetworksEmail | None = None
    webhook: NetworksEmail | None = None


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

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


class NetworksDevice(_BaseSchema):
    """info related to the device that caused the alert."""

    serial: str | None = None


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

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


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

    name: str | None = None
    lat: float | None = None
    lng: float | None = None
    address: str | None = None
    notes: str | None = None
    tags: list[str] = Field(default_factory=list)
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    serial: str | None = None
    model: str | None = None
    imei: str | None = None
    mac: str | None = None
    lan_ip: str | None = Field(default=None, validation_alias="lanIp", serialization_alias="lanIp")
    firmware: str | None = None
    product_type: str | None = Field(
        default=None, validation_alias="productType", serialization_alias="productType"
    )
    details: list[NetworksDetailsItem] = Field(default_factory=list)


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

    url: str | None = None
    name: str | None = None
    product_type: str | None = Field(
        default=None, validation_alias="productType", serialization_alias="productType"
    )
    serial: str | None = None
    mac: str | None = None
    lldp: NetworksLldp | None = None
    clients: list[NetworksClientsItem] = Field(default_factory=list)


class NetworksDiscovered(_BaseSchema):
    """Discovered LLDP/CDP information at this end."""

    lldp: NetworksLldp3 | None = None
    cdp: NetworksCdp2 | None = None


class NetworksEmail(_BaseSchema):
    """email destinations for this alert."""

    sent_at: str | None = Field(
        default=None, validation_alias="sentAt", serialization_alias="sentAt"
    )


class NetworksEventsEventData(_BaseSchema):
    """An object containing more data related to the event."""

    radio: str | None = None
    vap: str | None = None
    client_mac: str | None = None
    client_ip: str | None = None
    channel: str | None = None
    rssi: str | None = None
    aid: str | None = None


class NetworksFirewallAndTrafficShaping(_BaseSchema):
    """The firewall and traffic shaping rules and settings for your policy."""

    settings: str | None = None
    traffic_shaping_rules: list[NetworksTrafficShapingRulesItem] = Field(
        default_factory=list,
        validation_alias="trafficShapingRules",
        serialization_alias="trafficShapingRules",
    )
    l3_firewall_rules: list[NetworksL3FirewallRulesItem] = Field(
        default_factory=list,
        validation_alias="l3FirewallRules",
        serialization_alias="l3FirewallRules",
    )
    l7_firewall_rules: list[NetworksL7FirewallRulesItem] = Field(
        default_factory=list,
        validation_alias="l7FirewallRules",
        serialization_alias="l7FirewallRules",
    )


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

    name: str | None = None
    template: str | None = None


class NetworksJobsCompleted(_BaseSchema):
    """Auto locate job progress information."""

    percentage: int | None = None


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

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


class NetworksJobsRanging(_BaseSchema):
    """Ranging status and progress information."""

    status: str | None = None
    completed: NetworksJobsCompleted | None = None


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

    comment: str | None = None
    policy: str
    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 NetworksL7FirewallRulesItem(_BaseSchema):
    """Schema for NetworksL7FirewallRulesItem."""

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


class NetworksLastUpgrade(_BaseSchema):
    """Details of the last firmware upgrade on the device."""

    time: datetime | None = None
    from_version: NetworksCurrentVersion | None = Field(
        default=None, validation_alias="fromVersion", serialization_alias="fromVersion"
    )
    to_version: NetworksCurrentVersion | None = Field(
        default=None, validation_alias="toVersion", serialization_alias="toVersion"
    )


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

    node: NetworksNode | None = None
    device: NetworksDevicesItem | None = None
    discovered: NetworksDiscovered | None = None


class NetworksLldp(_BaseSchema):
    """Lldp information."""

    port_id: str | None = Field(
        default=None, validation_alias="portId", serialization_alias="portId"
    )


class NetworksLldp2(_BaseSchema):
    """LLDP information."""

    chassis_id: str | None = Field(
        default=None, validation_alias="chassisId", serialization_alias="chassisId"
    )
    system_name: str | None = Field(
        default=None, validation_alias="systemName", serialization_alias="systemName"
    )
    system_description: str | None = Field(
        default=None, validation_alias="systemDescription", serialization_alias="systemDescription"
    )
    system_capabilities: list[str] = Field(
        default_factory=list,
        validation_alias="systemCapabilities",
        serialization_alias="systemCapabilities",
    )
    management_address: str | None = Field(
        default=None, validation_alias="managementAddress", serialization_alias="managementAddress"
    )


class NetworksLldp3(_BaseSchema):
    """LLDP port information."""

    port_id: str | None = Field(
        default=None, validation_alias="portId", serialization_alias="portId"
    )
    port_description: str | None = Field(
        default=None, validation_alias="portDescription", serialization_alias="portDescription"
    )


class NetworksLocalStatusPageAuthentication(_BaseSchema):
    """A hash of Local Status page(s)' authentication options applied to the Network."""

    enabled: bool | None = None
    username: str | None = None


class NetworksMonday(_BaseSchema):
    """The schedule object for Monday."""

    active: bool | None = None
    from_: str | None = Field(default=None, validation_alias="from", serialization_alias="from")
    to: str | None = None


class NetworksMutingByPortSchedules(_BaseSchema):
    """Mute wireless unreachable alerts based on switch port schedules."""

    enabled: bool | None = None


class NetworksNextUpgrade(_BaseSchema):
    """Details of the next firmware upgrade on the device."""

    time: str | None = None
    to_version: NetworksCurrentVersion | None = Field(
        default=None, validation_alias="toVersion", serialization_alias="toVersion"
    )


class NetworksNextUpgrade2(_BaseSchema):
    """The pending firmware upgrade if it exists."""

    time: str | None = None
    to_version: NetworksToVersion | None = Field(
        default=None, validation_alias="toVersion", serialization_alias="toVersion"
    )


class NetworksNextUpgrade3(_BaseSchema):
    """Details of the next firmware upgrade."""

    to_version: NetworksToVersion2 | None = Field(
        default=None, validation_alias="toVersion", serialization_alias="toVersion"
    )


class NetworksNextUpgrade4(_BaseSchema):
    """The next upgrade version for the switch network."""

    to_version: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemGroup | None = Field(
        default=None, validation_alias="toVersion", serialization_alias="toVersion"
    )


class NetworksNode(_BaseSchema):
    """Node reference."""

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


class NetworksNodesDevice(_BaseSchema):
    """Device information (present when type is 'device')."""

    serial: str | None = None
    name: str | None = None
    model: str | None = None
    product_type: str | None = Field(
        default=None, validation_alias="productType", serialization_alias="productType"
    )
    status: str | None = None
    last_reported_at: str | None = Field(
        default=None, validation_alias="lastReportedAt", serialization_alias="lastReportedAt"
    )
    clients: NetworksClients | None = None
    uplinks: list[NetworksUplinksItem] = Field(default_factory=list)


class NetworksNodesDiscovered(_BaseSchema):
    """Discovered device information (present when type is 'discovered')."""

    lldp: NetworksLldp2 | None = None
    cdp: NetworksCdp | None = None


class NetworksNodesStack(_BaseSchema):
    """Stack information (present when type is 'stack')."""

    id: int | None = None
    name: str | None = None
    members: list[dict[str, Any]] = Field(default_factory=list)
    clients: NetworksClients | None = None


class NetworksPayloadTemplate(_BaseSchema):
    """The payload template to use when posting data to the HTTP server."""

    payload_template_id: str | None = Field(
        default=None, validation_alias="payloadTemplateId", serialization_alias="payloadTemplateId"
    )
    name: str | None = None


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

    url: str | None = None
    network: NetworksSwitchStacksItem | None = None


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

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


class NetworksProductsSwitch(_BaseSchema):
    """The Switch network to be updated."""

    next_upgrade: NetworksNextUpgrade3 | None = Field(
        default=None, validation_alias="nextUpgrade", serialization_alias="nextUpgrade"
    )


class NetworksProductsWireless(_BaseSchema):
    """The network device to be updated."""

    current_version: NetworksCurrentVersion | None = Field(
        default=None, validation_alias="currentVersion", serialization_alias="currentVersion"
    )
    last_upgrade: NetworksLastUpgrade | None = Field(
        default=None, validation_alias="lastUpgrade", serialization_alias="lastUpgrade"
    )
    next_upgrade: NetworksNextUpgrade | None = Field(
        default=None, validation_alias="nextUpgrade", serialization_alias="nextUpgrade"
    )
    is_upgrade_available: bool | None = Field(
        default=None,
        validation_alias="isUpgradeAvailable",
        serialization_alias="isUpgradeAvailable",
    )
    available_versions: list[NetworksCurrentVersion] = Field(
        default_factory=list,
        validation_alias="availableVersions",
        serialization_alias="availableVersions",
    )
    participate_in_next_beta_release: bool | None = Field(
        default=None,
        validation_alias="participateInNextBetaRelease",
        serialization_alias="participateInNextBetaRelease",
    )


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

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


class NetworksScheduling(_BaseSchema):
    """The schedule for the group policy. Schedules are applied to days of the week."""

    enabled: bool | None = None
    monday: NetworksMonday | None = None
    tuesday: NetworksMonday | None = None
    wednesday: NetworksMonday | None = None
    thursday: NetworksMonday | None = None
    friday: NetworksMonday | None = None
    saturday: NetworksMonday | None = None
    sunday: NetworksMonday | None = None


class NetworksScope(_BaseSchema):
    """The scope of the alert."""

    devices: list[NetworksDevicesItem3] = Field(default_factory=list)
    applications: list[NetworksApplicationsItem] = Field(default_factory=list)
    peers: list[NetworksPeersItem] = Field(default_factory=list)


class NetworksSecurity(_BaseSchema):
    """Security settings of the MQTT broker."""

    mode: str | None = None
    tls: NetworksTls | None = None


class NetworksSharing(_BaseSchema):
    """Information on which entities have access to the template."""

    by_network: NetworksByNetwork | None = Field(
        default=None, validation_alias="byNetwork", serialization_alias="byNetwork"
    )


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

    ssid_number: int | None = Field(
        default=None, validation_alias="ssidNumber", serialization_alias="ssidNumber"
    )


class NetworksStagesGroup(_BaseSchema):
    """The staged upgrade group."""

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


class NetworksStagesMilestones(_BaseSchema):
    """The Staged Upgrade Milestones for the stage."""

    scheduled_for: datetime | None = Field(
        default=None, validation_alias="scheduledFor", serialization_alias="scheduledFor"
    )
    started_at: datetime | None = Field(
        default=None, validation_alias="startedAt", serialization_alias="startedAt"
    )
    completed_at: datetime | None = Field(
        default=None, validation_alias="completedAt", serialization_alias="completedAt"
    )
    canceled_at: datetime | None = Field(
        default=None, validation_alias="canceledAt", serialization_alias="canceledAt"
    )


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

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


class NetworksTls(_BaseSchema):
    """TLS settings of the MQTT broker."""

    has_ca_certificate: bool | None = Field(
        default=None, validation_alias="hasCaCertificate", serialization_alias="hasCaCertificate"
    )
    verify_hostnames: bool | None = Field(
        default=None, validation_alias="verifyHostnames", serialization_alias="verifyHostnames"
    )


class NetworksToVersion(_BaseSchema):
    """The version to be updated to."""

    id: str | None = None


class NetworksToVersion2(_BaseSchema):
    """Details of the version the device will upgrade to."""

    id: str | None = None
    short_name: str | None = Field(
        default=None, validation_alias="shortName", serialization_alias="shortName"
    )


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

    definitions: list[NetworksDefinitionsItem]
    per_client_bandwidth_limits: NetworksPerClientBandwidthLimits | 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"
    )
    priority: str | None = None


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

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


class NetworksUsage(_BaseSchema):
    """Usage, sent and received."""

    sent: float | None = None
    recv: float | None = None


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

    received: float | None = None
    sent: float | None = None
    ts: datetime | None = None


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

    name: str | None = None
    vlan_ids: str | None = Field(
        default=None, validation_alias="vlanIds", serialization_alias="vlanIds"
    )


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

    name: str | None = None
    vlan_id: str | None = Field(
        default=None, validation_alias="vlanId", serialization_alias="vlanId"
    )
    adaptive_policy_group: NetworksSwitchStacksItem | None = Field(
        default=None,
        validation_alias="adaptivePolicyGroup",
        serialization_alias="adaptivePolicyGroup",
    )


class NetworksVlanProfile(_BaseSchema):
    """The VLAN Profile."""

    iname: str | None = None
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )


class NetworksVlanTagging(_BaseSchema):
    """The VLAN tagging settings for your group policy. Only available if your network has a
    wireless configuration.
    """

    settings: str | None = None
    vlan_id: str | None = Field(
        default=None, validation_alias="vlanId", serialization_alias="vlanId"
    )


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

    start_time: datetime | None = Field(
        default=None, validation_alias="startTime", serialization_alias="startTime"
    )
    end_time: datetime | None = Field(
        default=None, validation_alias="endTime", serialization_alias="endTime"
    )
    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 ProvisionNetworkClientsClientsItem(_BaseSchema):
    """Item schema for clients."""

    mac: str
    name: str | None = None


class ProvisionNetworkClientsPoliciesBySecurityAppliance(_BaseSchema):
    """An object, describing what the policy-connection association is for the security appliance.
    (Only relevant if the security appliance is actually within the network).
    """

    device_policy: str | None = Field(
        default=None, validation_alias="devicePolicy", serialization_alias="devicePolicy"
    )


class ProvisionNetworkClientsPoliciesBySsid(_BaseSchema):
    """An object, describing the policy-connection associations for each active SSID within the
    network. Keys should be the number of enabled SSIDs, mapping to an object describing the
    client's policy.
    """

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


class ProvisionNetworkClientsPoliciesBySsid0(_BaseSchema):
    """The number for the SSID."""

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


class ProvisionNetworkClientsResponse(_BaseSchema):
    """Response for provisionNetworkClients operation."""

    clients: list[ProvisionNetworkClientsResponseClientsItem] = Field(default_factory=list)
    device_policy: str | None = Field(
        default=None, validation_alias="devicePolicy", serialization_alias="devicePolicy"
    )
    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )


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

    mac: str | None = None
    client_id: str | None = Field(
        default=None, validation_alias="clientId", serialization_alias="clientId"
    )
    name: str | None = None
    message: str | None = None


class PublishNetworkFloorPlansAutoLocateJobDevicesItem(_BaseSchema):
    """Item schema for devices."""

    serial: str
    lat: float
    lng: float
    auto_locate: PublishNetworkFloorPlansAutoLocateJobDevicesItemAutoLocate | None = Field(
        default=None, validation_alias="autoLocate", serialization_alias="autoLocate"
    )


class PublishNetworkFloorPlansAutoLocateJobDevicesItemAutoLocate(_BaseSchema):
    """The auto locate position for this device."""

    is_anchor: bool | None = Field(
        default=None, validation_alias="isAnchor", serialization_alias="isAnchor"
    )


class PublishNetworkFloorPlansAutoLocateJobResponse(_BaseSchema):
    """Response for publishNetworkFloorPlansAutoLocateJob operation."""

    success: bool | None = None


class ReassignNetworkVlanProfilesAssignmentsResponse(_BaseSchema):
    """Response for reassignNetworkVlanProfilesAssignments operation."""

    vlan_profile: ReassignNetworkVlanProfilesAssignmentsResponseVlanProfile | None = Field(
        default=None, validation_alias="vlanProfile", serialization_alias="vlanProfile"
    )
    serials: list[str] = Field(default_factory=list)
    stack_ids: list[str] = Field(
        default_factory=list, validation_alias="stackIds", serialization_alias="stackIds"
    )


class ReassignNetworkVlanProfilesAssignmentsResponseVlanProfile(_BaseSchema):
    """The VLAN Profile."""

    iname: str | None = None
    name: str | None = None


class ReassignNetworkVlanProfilesAssignmentsVlanProfile(_BaseSchema):
    """The VLAN Profile."""

    iname: str | None = None


class RecalculateNetworkFloorPlansAutoLocateJobDevicesItem(_BaseSchema):
    """Item schema for devices."""

    serial: str
    auto_locate: RecalculateNetworkFloorPlansAutoLocateJobDevicesItemAutoLocate = Field(
        validation_alias="autoLocate", serialization_alias="autoLocate"
    )


class RecalculateNetworkFloorPlansAutoLocateJobDevicesItemAutoLocate(_BaseSchema):
    """The auto locate position for this device."""

    is_anchor: bool = Field(validation_alias="isAnchor", serialization_alias="isAnchor")
    lat: float | None = None
    lng: float | None = None


class RecalculateNetworkFloorPlansAutoLocateJobResponse(_BaseSchema):
    """Response for recalculateNetworkFloorPlansAutoLocateJob operation."""

    success: bool | None = None


class RollbacksNetworkFirmwareUpgradesStagedEventsReasonsItem(_BaseSchema):
    """Item schema for reasons."""

    category: str
    comment: str


class RollbacksNetworkFirmwareUpgradesStagedEventsResponse(_BaseSchema):
    """Response for rollbacksNetworkFirmwareUpgradesStagedEvents operation."""

    products: GetNetworkFirmwareUpgradesStagedEventsResponseProducts | None = None
    stages: list[GetNetworkFirmwareUpgradesStagedEventsResponseStagesItem] = Field(
        default_factory=list
    )
    reasons: list[CreateNetworkFirmwareUpgradesRollbackResponseReasonsItem] = Field(
        default_factory=list
    )


class RollbacksNetworkFirmwareUpgradesStagedEventsStagesItem(_BaseSchema):
    """Item schema for stages."""

    group: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemGroup | None = None
    milestones: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemMilestones | None = None


class SplitNetworkResponse(_BaseSchema):
    """Response for splitNetwork operation."""

    resulting_networks: list[SplitNetworkResponseResultingNetworksItem] = Field(
        default_factory=list,
        validation_alias="resultingNetworks",
        serialization_alias="resultingNetworks",
    )


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

    id: str | None = None
    organization_id: str | None = Field(
        default=None, validation_alias="organizationId", serialization_alias="organizationId"
    )
    name: str | None = None
    product_types: list[str] = Field(
        default_factory=list, validation_alias="productTypes", serialization_alias="productTypes"
    )
    time_zone: str | None = Field(
        default=None, validation_alias="timeZone", serialization_alias="timeZone"
    )
    tags: list[str] = Field(default_factory=list)
    enrollment_string: str | None = Field(
        default=None, validation_alias="enrollmentString", serialization_alias="enrollmentString"
    )
    url: str | None = None
    notes: str | None = None
    is_bound_to_config_template: bool | None = Field(
        default=None,
        validation_alias="isBoundToConfigTemplate",
        serialization_alias="isBoundToConfigTemplate",
    )


class UnbindNetworkResponse(_BaseSchema):
    """Response for unbindNetwork operation."""

    id: str | None = None
    organization_id: str | None = Field(
        default=None, validation_alias="organizationId", serialization_alias="organizationId"
    )
    name: str | None = None
    product_types: list[str] = Field(
        default_factory=list, validation_alias="productTypes", serialization_alias="productTypes"
    )
    time_zone: str | None = Field(
        default=None, validation_alias="timeZone", serialization_alias="timeZone"
    )
    tags: list[str] = Field(default_factory=list)
    enrollment_string: str | None = Field(
        default=None, validation_alias="enrollmentString", serialization_alias="enrollmentString"
    )
    url: str | None = None
    notes: str | None = None
    is_bound_to_config_template: bool | None = Field(
        default=None,
        validation_alias="isBoundToConfigTemplate",
        serialization_alias="isBoundToConfigTemplate",
    )


class UpdateNetworkAlertsSettingsAlertsItem(_BaseSchema):
    """Item schema for alerts."""

    type_: str = Field(validation_alias="type", serialization_alias="type")
    enabled: bool | None = None
    alert_destinations: NetworksAlertsAlertDestinations | None = Field(
        default=None, validation_alias="alertDestinations", serialization_alias="alertDestinations"
    )
    filters: NetworksAlertsFilters | None = None


class UpdateNetworkAlertsSettingsDefaultDestinations(_BaseSchema):
    """The network-wide destinations for all alerts on the network."""

    emails: list[str] = Field(default_factory=list)
    all_admins: bool | None = Field(
        default=None, validation_alias="allAdmins", serialization_alias="allAdmins"
    )
    snmp: bool | None = None
    http_server_ids: list[str] = Field(
        default_factory=list, validation_alias="httpServerIds", serialization_alias="httpServerIds"
    )


class UpdateNetworkAlertsSettingsMuting(_BaseSchema):
    """Mute alerts under certain conditions."""

    by_port_schedules: NetworksMutingByPortSchedules | None = Field(
        default=None, validation_alias="byPortSchedules", serialization_alias="byPortSchedules"
    )


class UpdateNetworkAlertsSettingsResponse(_BaseSchema):
    """Response for updateNetworkAlertsSettings operation."""

    default_destinations: GetNetworkAlertsSettingsResponseDefaultDestinations | None = Field(
        default=None,
        validation_alias="defaultDestinations",
        serialization_alias="defaultDestinations",
    )
    alerts: list[GetNetworkAlertsSettingsResponseAlertsItem] = Field(default_factory=list)
    muting: GetNetworkAlertsSettingsResponseMuting | None = None


class UpdateNetworkClientPolicyResponse(_BaseSchema):
    """Response for updateNetworkClientPolicy operation."""

    mac: str | None = None
    device_policy: str | None = Field(
        default=None, validation_alias="devicePolicy", serialization_alias="devicePolicy"
    )
    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    policies_by_ssid: list[GetNetworkClientPolicyResponsePoliciesBySsidItem] = Field(
        default_factory=list,
        validation_alias="policiesBySsid",
        serialization_alias="policiesBySsid",
    )


class UpdateNetworkClientSplashAuthorizationStatusSsids(_BaseSchema):
    """The target SSIDs. Each SSID must be enabled and must have Click-through splash enabled. For
    each SSID where isAuthorized is true, the expiration time will automatically be set
    according to the SSID's splash frequency. Not all networks support configuring all SSIDs.
    """

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


class UpdateNetworkClientSplashAuthorizationStatusSsids0(_BaseSchema):
    """Splash authorization for SSID 0."""

    is_authorized: bool | None = Field(
        default=None, validation_alias="isAuthorized", serialization_alias="isAuthorized"
    )


class UpdateNetworkFirmwareUpgradesProducts(_BaseSchema):
    """Contains information about the network to update."""

    wireless: UpdateNetworkFirmwareUpgradesProductsWireless | None = None
    appliance: UpdateNetworkFirmwareUpgradesProductsWireless | None = None
    switch: UpdateNetworkFirmwareUpgradesProductsWireless | None = None
    camera: UpdateNetworkFirmwareUpgradesProductsWireless | None = None
    cellular_gateway: UpdateNetworkFirmwareUpgradesProductsWireless | None = Field(
        default=None, validation_alias="cellularGateway", serialization_alias="cellularGateway"
    )
    sensor: UpdateNetworkFirmwareUpgradesProductsWireless | None = None
    wireless_controller: UpdateNetworkFirmwareUpgradesProductsWireless | None = Field(
        default=None,
        validation_alias="wirelessController",
        serialization_alias="wirelessController",
    )
    secure_connect: UpdateNetworkFirmwareUpgradesProductsWireless | None = Field(
        default=None, validation_alias="secureConnect", serialization_alias="secureConnect"
    )
    switch_catalyst: UpdateNetworkFirmwareUpgradesProductsWireless | None = Field(
        default=None, validation_alias="switchCatalyst", serialization_alias="switchCatalyst"
    )


class UpdateNetworkFirmwareUpgradesProductsWireless(_BaseSchema):
    """The network device to be updated."""

    next_upgrade: NetworksNextUpgrade2 | None = Field(
        default=None, validation_alias="nextUpgrade", serialization_alias="nextUpgrade"
    )
    participate_in_next_beta_release: bool | None = Field(
        default=None,
        validation_alias="participateInNextBetaRelease",
        serialization_alias="participateInNextBetaRelease",
    )


class UpdateNetworkFirmwareUpgradesResponse(_BaseSchema):
    """Response for updateNetworkFirmwareUpgrades operation."""

    upgrade_window: GetNetworkFirmwareUpgradesResponseUpgradeWindow | None = Field(
        default=None, validation_alias="upgradeWindow", serialization_alias="upgradeWindow"
    )
    timezone: str | None = None
    products: GetNetworkFirmwareUpgradesResponseProducts | None = None


class UpdateNetworkFirmwareUpgradesStagedEventsResponse(_BaseSchema):
    """Response for updateNetworkFirmwareUpgradesStagedEvents operation."""

    products: GetNetworkFirmwareUpgradesStagedEventsResponseProducts | None = None
    stages: list[GetNetworkFirmwareUpgradesStagedEventsResponseStagesItem] = Field(
        default_factory=list
    )
    reasons: list[CreateNetworkFirmwareUpgradesRollbackResponseReasonsItem] = Field(
        default_factory=list
    )


class UpdateNetworkFirmwareUpgradesStagedEventsStagesItem(_BaseSchema):
    """Item schema for stages."""

    group: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemGroup | None = None
    milestones: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemMilestones | None = None


class UpdateNetworkFirmwareUpgradesStagedEventsStagesItemGroup(_BaseSchema):
    """The Staged Upgrade Group containing the name and ID."""

    id: str


class UpdateNetworkFirmwareUpgradesStagedEventsStagesItemMilestones(_BaseSchema):
    """The Staged Upgrade Milestones for the specific stage."""

    scheduled_for: str = Field(validation_alias="scheduledFor", serialization_alias="scheduledFor")


class UpdateNetworkFirmwareUpgradesStagedGroupAssignedDevices(_BaseSchema):
    """The devices and Switch Stacks assigned to the Group."""

    devices: list[CreateNetworkFirmwareUpgradesStagedGroupAssignedDevicesDevicesItem] = Field(
        default_factory=list
    )
    switch_stacks: list[CreateNetworkFirmwareUpgradesStagedGroupAssignedDevicesSwitchStacksItem] = (
        Field(
            default_factory=list,
            validation_alias="switchStacks",
            serialization_alias="switchStacks",
        )
    )


class UpdateNetworkFirmwareUpgradesStagedGroupResponse(_BaseSchema):
    """Response for updateNetworkFirmwareUpgradesStagedGroup operation."""

    group_id: str | None = Field(
        default=None, validation_alias="groupId", serialization_alias="groupId"
    )
    name: str | None = None
    description: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    assigned_devices: NetworksAssignedDevices | None = Field(
        default=None, validation_alias="assignedDevices", serialization_alias="assignedDevices"
    )


class UpdateNetworkFirmwareUpgradesStagedStagesJsonItem(_BaseSchema):
    """Item schema for _json."""

    group: UpdateNetworkFirmwareUpgradesStagedEventsStagesItemGroup | None = None


class UpdateNetworkFirmwareUpgradesStagedStagesResponse(
    RootModel[list["UpdateNetworkFirmwareUpgradesStagedStagesResponseItem"]]
):
    """Response for updateNetworkFirmwareUpgradesStagedStages operation."""


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

    group: NetworksStagesGroup | None = None


class UpdateNetworkFirmwareUpgradesUpgradeWindow(_BaseSchema):
    """Upgrade window for devices in network."""

    day_of_week: str | None = Field(
        default=None, validation_alias="dayOfWeek", serialization_alias="dayOfWeek"
    )
    hour_of_day: str | None = Field(
        default=None, validation_alias="hourOfDay", serialization_alias="hourOfDay"
    )


class UpdateNetworkFloorPlanBottomLeftCorner(_BaseSchema):
    """The longitude and latitude of the bottom left corner of your floor plan."""

    lat: float | None = None
    lng: float | None = None


class UpdateNetworkFloorPlanBottomRightCorner(_BaseSchema):
    """The longitude and latitude of the bottom right corner of your floor plan."""

    lat: float | None = None
    lng: float | None = None


class UpdateNetworkFloorPlanCenter(_BaseSchema):
    """The longitude and latitude of the center of your floor plan. If you want to change the
    geolocation data of your floor plan, either the 'center' or two adjacent corners (e.g.
    'topLeftCorner' and 'bottomLeftCorner') must be specified. If 'center' is specified, the
    floor plan is placed over that point with no rotation. If two adjacent corners are
    specified, the floor plan is rotated to line up with the two specified points. The aspect
    ratio of the floor plan's image is preserved regardless of which corners/center are
    specified. (This means if that more than two corners are specified, only two corners may be
    used to preserve the floor plan's aspect ratio.). No two points can have the same latitude,
    longitude pair.
    """

    lat: float | None = None
    lng: float | None = None


class UpdateNetworkFloorPlanResponse(_BaseSchema):
    """Response for updateNetworkFloorPlan operation."""

    floor_plan_id: str | None = Field(
        default=None, validation_alias="floorPlanId", serialization_alias="floorPlanId"
    )
    image_url: str | None = Field(
        default=None, validation_alias="imageUrl", serialization_alias="imageUrl"
    )
    image_url_expires_at: str | None = Field(
        default=None, validation_alias="imageUrlExpiresAt", serialization_alias="imageUrlExpiresAt"
    )
    image_extension: str | None = Field(
        default=None, validation_alias="imageExtension", serialization_alias="imageExtension"
    )
    image_md5: str | None = Field(
        default=None, validation_alias="imageMd5", serialization_alias="imageMd5"
    )
    name: str | None = None
    devices: list[NetworksDevicesItem2] = Field(default_factory=list)
    width: float | None = None
    height: float | None = None
    center: NetworksCenter | None = None
    bottom_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomLeftCorner", serialization_alias="bottomLeftCorner"
    )
    bottom_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="bottomRightCorner", serialization_alias="bottomRightCorner"
    )
    top_left_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topLeftCorner", serialization_alias="topLeftCorner"
    )
    top_right_corner: NetworksCenter | None = Field(
        default=None, validation_alias="topRightCorner", serialization_alias="topRightCorner"
    )
    floor_number: float | None = Field(
        default=None, validation_alias="floorNumber", serialization_alias="floorNumber"
    )


class UpdateNetworkFloorPlanTopLeftCorner(_BaseSchema):
    """The longitude and latitude of the top left corner of your floor plan."""

    lat: float | None = None
    lng: float | None = None


class UpdateNetworkFloorPlanTopRightCorner(_BaseSchema):
    """The longitude and latitude of the top right corner of your floor plan."""

    lat: float | None = None
    lng: float | None = None


class UpdateNetworkGroupPolicyBandwidth(_BaseSchema):
    """The bandwidth settings for clients bound to your group policy."""

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


class UpdateNetworkGroupPolicyBonjourForwarding(_BaseSchema):
    """The Bonjour settings for your group policy. Only valid if your network has a wireless
    configuration.
    """

    settings: str | None = None
    rules: list[NetworksRulesItem] = Field(default_factory=list)


class UpdateNetworkGroupPolicyContentFiltering(_BaseSchema):
    """The content filtering settings for your group policy."""

    allowed_url_patterns: NetworksAllowedUrlPatterns | None = Field(
        default=None,
        validation_alias="allowedUrlPatterns",
        serialization_alias="allowedUrlPatterns",
    )
    blocked_url_patterns: NetworksAllowedUrlPatterns | None = Field(
        default=None,
        validation_alias="blockedUrlPatterns",
        serialization_alias="blockedUrlPatterns",
    )
    blocked_url_categories: NetworksBlockedUrlCategories | None = Field(
        default=None,
        validation_alias="blockedUrlCategories",
        serialization_alias="blockedUrlCategories",
    )


class UpdateNetworkGroupPolicyFirewallAndTrafficShaping(_BaseSchema):
    """The firewall and traffic shaping rules and settings for your policy."""

    settings: str | None = None
    traffic_shaping_rules: list[NetworksTrafficShapingRulesItem] = Field(
        default_factory=list,
        validation_alias="trafficShapingRules",
        serialization_alias="trafficShapingRules",
    )
    l3_firewall_rules: list[NetworksL3FirewallRulesItem] = Field(
        default_factory=list,
        validation_alias="l3FirewallRules",
        serialization_alias="l3FirewallRules",
    )
    l7_firewall_rules: list[NetworksL7FirewallRulesItem] = Field(
        default_factory=list,
        validation_alias="l7FirewallRules",
        serialization_alias="l7FirewallRules",
    )


class UpdateNetworkGroupPolicyResponse(_BaseSchema):
    """Response for updateNetworkGroupPolicy operation."""

    group_policy_id: str | None = Field(
        default=None, validation_alias="groupPolicyId", serialization_alias="groupPolicyId"
    )
    scheduling: NetworksScheduling | None = None
    bandwidth: NetworksBandwidth | None = None
    firewall_and_traffic_shaping: NetworksFirewallAndTrafficShaping | None = Field(
        default=None,
        validation_alias="firewallAndTrafficShaping",
        serialization_alias="firewallAndTrafficShaping",
    )
    content_filtering: NetworksContentFiltering | None = Field(
        default=None, validation_alias="contentFiltering", serialization_alias="contentFiltering"
    )
    splash_auth_settings: str | None = Field(
        default=None,
        validation_alias="splashAuthSettings",
        serialization_alias="splashAuthSettings",
    )
    vlan_tagging: NetworksVlanTagging | None = Field(
        default=None, validation_alias="vlanTagging", serialization_alias="vlanTagging"
    )
    bonjour_forwarding: NetworksBonjourForwarding | None = Field(
        default=None, validation_alias="bonjourForwarding", serialization_alias="bonjourForwarding"
    )


class UpdateNetworkGroupPolicyScheduling(_BaseSchema):
    """The schedule for the group policy. Schedules are applied to days of the week."""

    enabled: bool | None = None
    monday: NetworksMonday | None = None
    tuesday: NetworksMonday | None = None
    wednesday: NetworksMonday | None = None
    thursday: NetworksMonday | None = None
    friday: NetworksMonday | None = None
    saturday: NetworksMonday | None = None
    sunday: NetworksMonday | None = None


class UpdateNetworkGroupPolicyVlanTagging(_BaseSchema):
    """The VLAN tagging settings for your group policy. Only available if your network has a
    wireless configuration.
    """

    settings: str | None = None
    vlan_id: str | None = Field(
        default=None, validation_alias="vlanId", serialization_alias="vlanId"
    )


class UpdateNetworkMerakiAuthUserAuthorizationsItem(_BaseSchema):
    """Item schema for authorizations."""

    ssid_number: int = Field(validation_alias="ssidNumber", serialization_alias="ssidNumber")
    expires_at: str | None = Field(
        default=None, validation_alias="expiresAt", serialization_alias="expiresAt"
    )


class UpdateNetworkMerakiAuthUserResponse(_BaseSchema):
    """Response for updateNetworkMerakiAuthUser operation."""

    id: str | None = None
    email: str | None = None
    name: str | None = None
    created_at: datetime | None = Field(
        default=None, validation_alias="createdAt", serialization_alias="createdAt"
    )
    account_type: str | None = Field(
        default=None, validation_alias="accountType", serialization_alias="accountType"
    )
    is_admin: bool | None = Field(
        default=None, validation_alias="isAdmin", serialization_alias="isAdmin"
    )
    authorizations: list[NetworksAuthorizationsItem] = Field(default_factory=list)


class UpdateNetworkMqttBrokerAuthentication(_BaseSchema):
    """Authentication settings of the MQTT broker."""

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


class UpdateNetworkMqttBrokerResponse(_BaseSchema):
    """Response for updateNetworkMqttBroker operation."""

    id: str | None = None
    name: str | None = None
    host: str | None = None
    port: int | None = None
    security: NetworksSecurity | None = None
    authentication: NetworksAuthentication | None = None


class UpdateNetworkMqttBrokerSecurity(_BaseSchema):
    """Security settings of the MQTT broker."""

    mode: str | None = None
    tls: CreateNetworkMqttBrokerSecurityTls | None = None


class UpdateNetworkNetflowResponse(_BaseSchema):
    """Response for updateNetworkNetflow operation."""

    reporting_enabled: bool | None = Field(
        default=None, validation_alias="reportingEnabled", serialization_alias="reportingEnabled"
    )
    collector_ip: str | None = Field(
        default=None, validation_alias="collectorIp", serialization_alias="collectorIp"
    )
    collector_port: int | None = Field(
        default=None, validation_alias="collectorPort", serialization_alias="collectorPort"
    )
    eta_enabled: bool | None = Field(
        default=None, validation_alias="etaEnabled", serialization_alias="etaEnabled"
    )
    eta_dst_port: int | None = Field(
        default=None, validation_alias="etaDstPort", serialization_alias="etaDstPort"
    )


class UpdateNetworkResponse(_BaseSchema):
    """Response for updateNetwork operation."""

    id: str | None = None
    organization_id: str | None = Field(
        default=None, validation_alias="organizationId", serialization_alias="organizationId"
    )
    name: str | None = None
    product_types: list[str] = Field(
        default_factory=list, validation_alias="productTypes", serialization_alias="productTypes"
    )
    time_zone: str | None = Field(
        default=None, validation_alias="timeZone", serialization_alias="timeZone"
    )
    tags: list[str] = Field(default_factory=list)
    enrollment_string: str | None = Field(
        default=None, validation_alias="enrollmentString", serialization_alias="enrollmentString"
    )
    url: str | None = None
    notes: str | None = None
    is_bound_to_config_template: bool | None = Field(
        default=None,
        validation_alias="isBoundToConfigTemplate",
        serialization_alias="isBoundToConfigTemplate",
    )


class UpdateNetworkSettingsLocalStatusPage(_BaseSchema):
    """A hash of Local Status page(s)' authentication options applied to the Network."""

    authentication: UpdateNetworkSettingsLocalStatusPageAuthentication | None = None


class UpdateNetworkSettingsLocalStatusPageAuthentication(_BaseSchema):
    """A hash of Local Status page(s)' authentication options applied to the Network."""

    enabled: bool | None = None
    username: str | None = None
    password: str | None = None


class UpdateNetworkSettingsNamedVlans(_BaseSchema):
    """A hash of Named VLANs options applied to the Network."""

    enabled: bool | None = None


class UpdateNetworkSettingsResponse(_BaseSchema):
    """Response for updateNetworkSettings operation."""

    local_status_page_enabled: bool | None = Field(
        default=None,
        validation_alias="localStatusPageEnabled",
        serialization_alias="localStatusPageEnabled",
    )
    remote_status_page_enabled: bool | None = Field(
        default=None,
        validation_alias="remoteStatusPageEnabled",
        serialization_alias="remoteStatusPageEnabled",
    )
    local_status_page: GetNetworkSettingsResponseLocalStatusPage | None = Field(
        default=None, validation_alias="localStatusPage", serialization_alias="localStatusPage"
    )
    secure_port: NetworksMutingByPortSchedules | None = Field(
        default=None, validation_alias="securePort", serialization_alias="securePort"
    )
    fips: NetworksMutingByPortSchedules | None = None
    named_vlans: GetNetworkSettingsResponseNamedVlans | None = Field(
        default=None, validation_alias="namedVlans", serialization_alias="namedVlans"
    )


class UpdateNetworkSettingsSecurePort(_BaseSchema):
    """A hash of SecureConnect options applied to the Network."""

    enabled: bool | None = None


class UpdateNetworkSnmpResponse(_BaseSchema):
    """Response for updateNetworkSnmp operation."""

    access: str | None = None
    community_string: str | None = Field(
        default=None, validation_alias="communityString", serialization_alias="communityString"
    )
    users: list[GetNetworkSnmpResponseUsersItem] = Field(default_factory=list)


class UpdateNetworkSnmpUsersItem(_BaseSchema):
    """Item schema for users."""

    username: str
    passphrase: str


class UpdateNetworkSyslogServersResponse(_BaseSchema):
    """Response for updateNetworkSyslogServers operation."""

    servers: list[GetNetworkSyslogServersResponseServersItem] = Field(default_factory=list)


class UpdateNetworkSyslogServersServersItem(_BaseSchema):
    """Item schema for servers."""

    host: str
    port: int
    roles: list[str]


class UpdateNetworkTrafficAnalysisCustomPieChartItemsItem(_BaseSchema):
    """Item schema for customPieChartItems."""

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


class UpdateNetworkTrafficAnalysisResponse(_BaseSchema):
    """Response for updateNetworkTrafficAnalysis operation."""

    mode: str | None = None
    custom_pie_chart_items: list[GetNetworkTrafficAnalysisResponseCustomPieChartItemsItem] = Field(
        default_factory=list,
        validation_alias="customPieChartItems",
        serialization_alias="customPieChartItems",
    )


class UpdateNetworkVlanProfileResponse(_BaseSchema):
    """Response for updateNetworkVlanProfile operation."""

    iname: str | None = None
    name: str | None = None
    is_default: bool | None = Field(
        default=None, validation_alias="isDefault", serialization_alias="isDefault"
    )
    vlan_names: list[NetworksVlanNamesItem] = Field(
        default_factory=list, validation_alias="vlanNames", serialization_alias="vlanNames"
    )
    vlan_groups: list[NetworksVlanGroupsItem] = Field(
        default_factory=list, validation_alias="vlanGroups", serialization_alias="vlanGroups"
    )


class UpdateNetworkVlanProfileVlanGroupsItem(_BaseSchema):
    """Item schema for vlanGroups."""

    name: str
    vlan_ids: str = Field(validation_alias="vlanIds", serialization_alias="vlanIds")


class UpdateNetworkVlanProfileVlanNamesItem(_BaseSchema):
    """Item schema for vlanNames."""

    name: str
    vlan_id: str = Field(validation_alias="vlanId", serialization_alias="vlanId")
    adaptive_policy_group: NetworksToVersion | None = Field(
        default=None,
        validation_alias="adaptivePolicyGroup",
        serialization_alias="adaptivePolicyGroup",
    )


class UpdateNetworkWebhooksHttpServerPayloadTemplate(_BaseSchema):
    """The payload template to use when posting data to the HTTP server."""

    payload_template_id: str | None = Field(
        default=None, validation_alias="payloadTemplateId", serialization_alias="payloadTemplateId"
    )


class UpdateNetworkWebhooksHttpServerResponse(_BaseSchema):
    """Response for updateNetworkWebhooksHttpServer operation."""

    id: str | None = None
    name: str | None = None
    url: str | None = None
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    payload_template: NetworksPayloadTemplate | None = Field(
        default=None, validation_alias="payloadTemplate", serialization_alias="payloadTemplate"
    )


class UpdateNetworkWebhooksPayloadTemplateHeadersItem(_BaseSchema):
    """Item schema for headers."""

    name: str | None = None
    template: str | None = None


class UpdateNetworkWebhooksPayloadTemplateResponse(_BaseSchema):
    """Response for updateNetworkWebhooksPayloadTemplate operation."""

    payload_template_id: str | None = Field(
        default=None, validation_alias="payloadTemplateId", serialization_alias="payloadTemplateId"
    )
    type_: str | None = Field(default=None, validation_alias="type", serialization_alias="type")
    name: str | None = None
    headers: list[NetworksHeadersItem] = Field(default_factory=list)
    body: str | None = None
    sharing: NetworksSharing | None = None


class VmxNetworkDevicesClaimResponse(_BaseSchema):
    """Response for vmxNetworkDevicesClaim operation."""

    name: str | None = None
    lat: float | None = None
    lng: float | None = None
    address: str | None = None
    notes: str | None = None
    tags: list[str] = Field(default_factory=list)
    network_id: str | None = Field(
        default=None, validation_alias="networkId", serialization_alias="networkId"
    )
    serial: str | None = None
    model: str | None = None
    imei: str | None = None
    mac: str | None = None
    lan_ip: str | None = Field(default=None, validation_alias="lanIp", serialization_alias="lanIp")
    firmware: str | None = None
    product_type: str | None = Field(
        default=None, validation_alias="productType", serialization_alias="productType"
    )
    details: list[NetworksDetailsItem] = Field(default_factory=list)
