"""Response schemas for sm 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 CheckinNetworkSmDevicesResponse(_BaseSchema):
    """Response for checkinNetworkSmDevices operation."""

    ids: list[str] | None = None


class CreateNetworkSmTargetGroupResponse(_BaseSchema):
    """Response for createNetworkSmTargetGroup operation."""

    id: str | None = None
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None


class CreateOrganizationSmAdminsRoleResponse(_BaseSchema):
    """Response for createOrganizationSmAdminsRole operation."""

    role_id: str | None = Field(default=None, alias="roleId")
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None


class GetNetworkSmDeviceCellularUsageHistoryResponse(
    RootModel[list["GetNetworkSmDeviceCellularUsageHistoryResponseItem"]]
):
    """Response for getNetworkSmDeviceCellularUsageHistory operation."""


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

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


class GetNetworkSmDeviceCertsResponse(RootModel[list["GetNetworkSmDeviceCertsResponseItem"]]):
    """Response for getNetworkSmDeviceCerts operation."""


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

    name: str | None = None
    not_valid_after: str | None = Field(default=None, alias="notValidAfter")
    not_valid_before: str | None = Field(default=None, alias="notValidBefore")
    cert_pem: str | None = Field(default=None, alias="certPem")
    device_id: str | None = Field(default=None, alias="deviceId")
    issuer: str | None = None
    subject: str | None = None
    id: str | None = None


class GetNetworkSmDeviceConnectivityResponse(
    RootModel[list["GetNetworkSmDeviceConnectivityResponseItem"]]
):
    """Response for getNetworkSmDeviceConnectivity operation."""


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

    first_seen_at: str | None = Field(default=None, alias="firstSeenAt")
    last_seen_at: str | None = Field(default=None, alias="lastSeenAt")


class GetNetworkSmDeviceDesktopLogsResponse(
    RootModel[list["GetNetworkSmDeviceDesktopLogsResponseItem"]]
):
    """Response for getNetworkSmDeviceDesktopLogs operation."""


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

    measured_at: str | None = Field(default=None, alias="measuredAt")
    user: str | None = None
    network_device: str | None = Field(default=None, alias="networkDevice")
    network_driver: str | None = Field(default=None, alias="networkDriver")
    wifi_channel: str | None = Field(default=None, alias="wifiChannel")
    wifi_auth: str | None = Field(default=None, alias="wifiAuth")
    wifi_bssid: str | None = Field(default=None, alias="wifiBssid")
    wifi_ssid: str | None = Field(default=None, alias="wifiSsid")
    wifi_rssi: str | None = Field(default=None, alias="wifiRssi")
    wifi_noise: str | None = Field(default=None, alias="wifiNoise")
    dhcp_server: str | None = Field(default=None, alias="dhcpServer")
    ip: str | None = None
    network_m_t_u: str | None = Field(default=None, alias="networkMTU")
    subnet: str | None = None
    gateway: str | None = None
    public_i_p: str | None = Field(default=None, alias="publicIP")
    dns_server: str | None = Field(default=None, alias="dnsServer")
    ts: str | None = None


class GetNetworkSmDeviceDeviceCommandLogsResponse(
    RootModel[list["GetNetworkSmDeviceDeviceCommandLogsResponseItem"]]
):
    """Response for getNetworkSmDeviceDeviceCommandLogs operation."""


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

    action: str | None = None
    name: str | None = None
    details: str | None = None
    dashboard_user: str | None = Field(default=None, alias="dashboardUser")
    ts: str | None = None


class GetNetworkSmDeviceDeviceProfilesResponse(
    RootModel[list["GetNetworkSmDeviceDeviceProfilesResponseItem"]]
):
    """Response for getNetworkSmDeviceDeviceProfiles operation."""


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

    device_id: str | None = Field(default=None, alias="deviceId")
    id: str | None = None
    is_encrypted: bool | None = Field(default=None, alias="isEncrypted")
    is_managed: bool | None = Field(default=None, alias="isManaged")
    profile_data: str | None = Field(default=None, alias="profileData")
    profile_identifier: str | None = Field(default=None, alias="profileIdentifier")
    name: str | None = None
    version: str | None = None


class GetNetworkSmDeviceNetworkAdaptersResponse(
    RootModel[list["GetNetworkSmDeviceNetworkAdaptersResponseItem"]]
):
    """Response for getNetworkSmDeviceNetworkAdapters operation."""


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

    dhcp_server: str | None = Field(default=None, alias="dhcpServer")
    dns_server: str | None = Field(default=None, alias="dnsServer")
    gateway: str | None = None
    id: str | None = None
    ip: str | None = None
    mac: str | None = None
    name: str | None = None
    subnet: str | None = None


class GetNetworkSmDevicePerformanceHistoryResponse(
    RootModel[list["GetNetworkSmDevicePerformanceHistoryResponseItem"]]
):
    """Response for getNetworkSmDevicePerformanceHistory operation."""


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

    cpu_percent_used: float | None = Field(default=None, alias="cpuPercentUsed")
    mem_free: int | None = Field(default=None, alias="memFree")
    mem_wired: int | None = Field(default=None, alias="memWired")
    mem_active: int | None = Field(default=None, alias="memActive")
    mem_inactive: int | None = Field(default=None, alias="memInactive")
    network_sent: int | None = Field(default=None, alias="networkSent")
    network_received: int | None = Field(default=None, alias="networkReceived")
    swap_used: int | None = Field(default=None, alias="swapUsed")
    disk_usage: SmDiskUsage | None = Field(default=None, alias="diskUsage")
    ts: str | None = None


class GetNetworkSmDeviceRestrictionsResponse(_BaseSchema):
    """Response for getNetworkSmDeviceRestrictions operation."""

    restrictions: list[GetNetworkSmDeviceRestrictionsResponseRestrictionsItem] | None = None


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

    profile: str | None = None
    restrictions: dict[str, Any] | None = None


class GetNetworkSmDeviceSecurityCentersResponse(
    RootModel[list["GetNetworkSmDeviceSecurityCentersResponseItem"]]
):
    """Response for getNetworkSmDeviceSecurityCenters operation."""


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

    is_rooted: bool | None = Field(default=None, alias="isRooted")
    has_anti_virus: bool | None = Field(default=None, alias="hasAntiVirus")
    anti_virus_name: str | None = Field(default=None, alias="antiVirusName")
    is_fire_wall_enabled: bool | None = Field(default=None, alias="isFireWallEnabled")
    has_fire_wall_installed: bool | None = Field(default=None, alias="hasFireWallInstalled")
    fire_wall_name: str | None = Field(default=None, alias="fireWallName")
    is_disk_encrypted: bool | None = Field(default=None, alias="isDiskEncrypted")
    is_auto_login_disabled: bool | None = Field(default=None, alias="isAutoLoginDisabled")
    id: str | None = None
    running_procs: str | None = Field(default=None, alias="runningProcs")


class GetNetworkSmDeviceSoftwaresResponse(
    RootModel[list["GetNetworkSmDeviceSoftwaresResponseItem"]]
):
    """Response for getNetworkSmDeviceSoftwares operation."""


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

    app_id: str | None = Field(default=None, alias="appId")
    bundle_size: int | None = Field(default=None, alias="bundleSize")
    created_at: str | None = Field(default=None, alias="createdAt")
    device_id: str | None = Field(default=None, alias="deviceId")
    dynamic_size: int | None = Field(default=None, alias="dynamicSize")
    id: str | None = None
    identifier: str | None = None
    installed_at: str | None = Field(default=None, alias="installedAt")
    to_install: bool | None = Field(default=None, alias="toInstall")
    ios_redemption_code: bool | None = Field(default=None, alias="iosRedemptionCode")
    is_managed: bool | None = Field(default=None, alias="isManaged")
    itunes_id: str | None = Field(default=None, alias="itunesId")
    license_key: str | None = Field(default=None, alias="licenseKey")
    name: str | None = None
    path: str | None = None
    redemption_code: int | None = Field(default=None, alias="redemptionCode")
    short_version: str | None = Field(default=None, alias="shortVersion")
    status: str | None = None
    to_uninstall: bool | None = Field(default=None, alias="toUninstall")
    uninstalled_at: str | None = Field(default=None, alias="uninstalledAt")
    updated_at: str | None = Field(default=None, alias="updatedAt")
    vendor: str | None = None
    version: str | None = None


class GetNetworkSmDeviceWlanListsResponse(
    RootModel[list["GetNetworkSmDeviceWlanListsResponseItem"]]
):
    """Response for getNetworkSmDeviceWlanLists operation."""


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

    created_at: str | None = Field(default=None, alias="createdAt")
    id: str | None = None
    xml: str | None = None


class GetNetworkSmDevicesResponse(RootModel[list["GetNetworkSmDevicesResponseItem"]]):
    """Response for getNetworkSmDevices operation."""


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

    id: str | None = None
    name: str | None = None
    tags: list[str] | None = None
    ssid: str | None = None
    wifi_mac: str | None = Field(default=None, alias="wifiMac")
    os_name: str | None = Field(default=None, alias="osName")
    system_model: str | None = Field(default=None, alias="systemModel")
    uuid: str | None = None
    serial_number: str | None = Field(default=None, alias="serialNumber")
    serial: str | None = None
    ip: str | None = None
    notes: str | None = None


class GetNetworkSmProfilesResponse(RootModel[list["GetNetworkSmProfilesResponseItem"]]):
    """Response for getNetworkSmProfiles operation."""


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

    id: str | None = None
    name: str | None = None
    description: str | None = None
    scope: str | None = None
    tags: list[str] | None = None
    payload_types: list[str] | None = Field(default=None, alias="payloadTypes")


class GetNetworkSmTargetGroupResponse(_BaseSchema):
    """Response for getNetworkSmTargetGroup operation."""

    id: str | None = None
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None


class GetNetworkSmTargetGroupsResponse(RootModel[list["GetNetworkSmTargetGroupsResponseItem"]]):
    """Response for getNetworkSmTargetGroups operation."""


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

    id: str | None = None
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None


class GetNetworkSmTrustedAccessConfigsResponse(
    RootModel[list["GetNetworkSmTrustedAccessConfigsResponseItem"]]
):
    """Response for getNetworkSmTrustedAccessConfigs operation."""


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

    id: str | None = None
    ssid_name: str | None = Field(default=None, alias="ssidName")
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None
    timebound_type: str | None = Field(default=None, alias="timeboundType")
    send_expiration_emails: bool | None = Field(default=None, alias="sendExpirationEmails")
    notify_time_before_access_ends: int | None = Field(
        default=None, alias="notifyTimeBeforeAccessEnds"
    )
    additional_email_text: str | None = Field(default=None, alias="additionalEmailText")
    access_start_at: datetime | None = Field(default=None, alias="accessStartAt")
    access_end_at: datetime | None = Field(default=None, alias="accessEndAt")


class GetNetworkSmUserAccessDevicesResponse(
    RootModel[list["GetNetworkSmUserAccessDevicesResponseItem"]]
):
    """Response for getNetworkSmUserAccessDevices operation."""


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

    id: str | None = None
    name: str | None = None
    system_type: str | None = Field(default=None, alias="systemType")
    mac: str | None = None
    username: str | None = None
    email: str | None = None
    tags: list[str] | None = None
    trusted_access_connections: list[SmTrustedAccessConnectionsItem] | None = Field(
        default=None, alias="trustedAccessConnections"
    )


class GetNetworkSmUserDeviceProfilesResponse(
    RootModel[list["GetNetworkSmUserDeviceProfilesResponseItem"]]
):
    """Response for getNetworkSmUserDeviceProfiles operation."""


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

    device_id: str | None = Field(default=None, alias="deviceId")
    id: str | None = None
    is_encrypted: bool | None = Field(default=None, alias="isEncrypted")
    is_managed: bool | None = Field(default=None, alias="isManaged")
    profile_data: str | None = Field(default=None, alias="profileData")
    profile_identifier: str | None = Field(default=None, alias="profileIdentifier")
    name: str | None = None
    version: str | None = None


class GetNetworkSmUserSoftwaresResponse(RootModel[list["GetNetworkSmUserSoftwaresResponseItem"]]):
    """Response for getNetworkSmUserSoftwares operation."""


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

    app_id: str | None = Field(default=None, alias="appId")
    bundle_size: int | None = Field(default=None, alias="bundleSize")
    created_at: str | None = Field(default=None, alias="createdAt")
    device_id: str | None = Field(default=None, alias="deviceId")
    dynamic_size: int | None = Field(default=None, alias="dynamicSize")
    id: str | None = None
    identifier: str | None = None
    installed_at: str | None = Field(default=None, alias="installedAt")
    to_install: bool | None = Field(default=None, alias="toInstall")
    ios_redemption_code: bool | None = Field(default=None, alias="iosRedemptionCode")
    is_managed: bool | None = Field(default=None, alias="isManaged")
    itunes_id: str | None = Field(default=None, alias="itunesId")
    license_key: str | None = Field(default=None, alias="licenseKey")
    name: str | None = None
    path: str | None = None
    redemption_code: int | None = Field(default=None, alias="redemptionCode")
    short_version: str | None = Field(default=None, alias="shortVersion")
    status: str | None = None
    to_uninstall: bool | None = Field(default=None, alias="toUninstall")
    uninstalled_at: str | None = Field(default=None, alias="uninstalledAt")
    updated_at: str | None = Field(default=None, alias="updatedAt")
    vendor: str | None = None
    version: str | None = None


class GetNetworkSmUsersResponse(RootModel[list["GetNetworkSmUsersResponseItem"]]):
    """Response for getNetworkSmUsers operation."""


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

    id: str | None = None
    email: str | None = None
    full_name: str | None = Field(default=None, alias="fullName")
    username: str | None = None
    has_password: bool | None = Field(default=None, alias="hasPassword")
    tags: str | None = None
    ad_groups: list[str] | None = Field(default=None, alias="adGroups")
    azure_ad_groups: list[str] | None = Field(default=None, alias="azureAdGroups")
    saml_groups: list[str] | None = Field(default=None, alias="samlGroups")
    asm_groups: list[str] | None = Field(default=None, alias="asmGroups")
    is_external: bool | None = Field(default=None, alias="isExternal")
    display_name: str | None = Field(default=None, alias="displayName")
    has_identity_certificate: bool | None = Field(default=None, alias="hasIdentityCertificate")
    user_thumbnail: str | None = Field(default=None, alias="userThumbnail")


class GetOrganizationSmAdminsRoleResponse(_BaseSchema):
    """Response for getOrganizationSmAdminsRole operation."""

    role_id: str | None = Field(default=None, alias="roleId")
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None


class GetOrganizationSmAdminsRolesResponse(_BaseSchema):
    """Response for getOrganizationSmAdminsRoles operation."""

    items: list[GetOrganizationSmAdminsRolesResponseItemsItem] | None = None
    meta: GetOrganizationSmAdminsRolesResponseMeta | None = None


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

    role_id: str | None = Field(default=None, alias="roleId")
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None


class GetOrganizationSmAdminsRolesResponseMeta(_BaseSchema):
    """Metadata relevant to the paginated dataset."""

    counts: SmMetaCounts | None = None


class GetOrganizationSmApnsCertResponse(_BaseSchema):
    """Response for getOrganizationSmApnsCert operation."""

    certificate: str | None = None


class GetOrganizationSmSentryPoliciesAssignmentsByNetworkResponse(
    RootModel[list["GetOrganizationSmSentryPoliciesAssignmentsByNetworkResponseItem"]]
):
    """Response for getOrganizationSmSentryPoliciesAssignmentsByNetwork operation."""


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

    items: list[UpdateOrganizationSmSentryPoliciesAssignmentsResponseItemsItem] | None = None
    meta: GetOrganizationSmAdminsRolesResponseMeta | None = None


class GetOrganizationSmVppAccountResponse(_BaseSchema):
    """Response for getOrganizationSmVppAccount operation."""

    vpp_account_id: str | None = Field(default=None, alias="vppAccountId")
    content_token: str | None = Field(default=None, alias="contentToken")
    email: str | None = None
    name: str | None = None
    allowed_admins: str | None = Field(default=None, alias="allowedAdmins")
    network_id_admins: str | None = Field(default=None, alias="networkIdAdmins")
    assignable_networks: str | None = Field(default=None, alias="assignableNetworks")
    assignable_network_ids: list[str] | None = Field(default=None, alias="assignableNetworkIds")
    vpp_location_id: str | None = Field(default=None, alias="vppLocationId")
    vpp_location_name: str | None = Field(default=None, alias="vppLocationName")
    last_synced_at: str | None = Field(default=None, alias="lastSyncedAt")
    last_force_synced_at: str | None = Field(default=None, alias="lastForceSyncedAt")
    parsed_token: SmParsedToken | None = Field(default=None, alias="parsedToken")
    id: str | None = None
    vpp_service_token: str | None = Field(default=None, alias="vppServiceToken")


class GetOrganizationSmVppAccountsResponse(
    RootModel[list["GetOrganizationSmVppAccountsResponseItem"]]
):
    """Response for getOrganizationSmVppAccounts operation."""


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

    vpp_account_id: str | None = Field(default=None, alias="vppAccountId")
    content_token: str | None = Field(default=None, alias="contentToken")
    email: str | None = None
    name: str | None = None
    allowed_admins: str | None = Field(default=None, alias="allowedAdmins")
    network_id_admins: str | None = Field(default=None, alias="networkIdAdmins")
    assignable_networks: str | None = Field(default=None, alias="assignableNetworks")
    assignable_network_ids: list[str] | None = Field(default=None, alias="assignableNetworkIds")
    vpp_location_id: str | None = Field(default=None, alias="vppLocationId")
    vpp_location_name: str | None = Field(default=None, alias="vppLocationName")
    last_synced_at: str | None = Field(default=None, alias="lastSyncedAt")
    last_force_synced_at: str | None = Field(default=None, alias="lastForceSyncedAt")
    parsed_token: SmParsedToken | None = Field(default=None, alias="parsedToken")
    id: str | None = None
    vpp_service_token: str | None = Field(default=None, alias="vppServiceToken")


class LockNetworkSmDevicesResponse(_BaseSchema):
    """Response for lockNetworkSmDevices operation."""

    ids: list[str] | None = None


class ModifyNetworkSmDevicesTagsResponse(RootModel[list["ModifyNetworkSmDevicesTagsResponseItem"]]):
    """Response for modifyNetworkSmDevicesTags operation."""


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

    id: str | None = None
    tags: list[str] | None = None
    wifi_mac: str | None = Field(default=None, alias="wifiMac")
    serial: str | None = None


class MoveNetworkSmDevicesResponse(_BaseSchema):
    """Response for moveNetworkSmDevices operation."""

    ids: list[str] | None = None
    new_network: str | None = Field(default=None, alias="newNetwork")


class RebootNetworkSmDevicesResponse(_BaseSchema):
    """Response for rebootNetworkSmDevices operation."""

    ids: list[str] | None = None


class ShutdownNetworkSmDevicesResponse(_BaseSchema):
    """Response for shutdownNetworkSmDevices operation."""

    ids: list[str] | None = None


class SmC(_BaseSchema):
    """An object containing current disk usage details."""

    used: int | None = None
    space: int | None = None


class SmDiskUsage(_BaseSchema):
    """An object containing disk usage details."""

    c: SmC | None = None


class SmItems(_BaseSchema):
    """Counts relating to the paginated items."""

    total: int | None = None
    remaining: int | None = None


class SmMetaCounts(_BaseSchema):
    """Counts relating to the paginated dataset."""

    items: SmItems | None = None


class SmParsedToken(_BaseSchema):
    """The parsed VPP service token."""

    org_name: str | None = Field(default=None, alias="orgName")
    hashed_token: str | None = Field(default=None, alias="hashedToken")
    expires_at: str | None = Field(default=None, alias="expiresAt")


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

    policy_id: str | None = Field(default=None, alias="policyId")
    network_id: str | None = Field(default=None, alias="networkId")
    sm_network_id: str | None = Field(default=None, alias="smNetworkId")
    tags: list[str] | None = None
    scope: str | None = None
    group_number: str | None = Field(default=None, alias="groupNumber")
    group_policy_id: str | None = Field(default=None, alias="groupPolicyId")
    priority: str | None = None
    created_at: str | None = Field(default=None, alias="createdAt")
    last_updated_at: str | None = Field(default=None, alias="lastUpdatedAt")


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

    trusted_access_config_id: str | None = Field(default=None, alias="trustedAccessConfigId")
    downloaded_at: str | None = Field(default=None, alias="downloadedAt")
    scep_completed_at: datetime | None = Field(default=None, alias="scepCompletedAt")
    last_connected_at: datetime | None = Field(default=None, alias="lastConnectedAt")


class UnenrollNetworkSmDeviceResponse(_BaseSchema):
    """Response for unenrollNetworkSmDevice operation."""

    success: bool | None = None


class UpdateNetworkSmDevicesFieldsDeviceFields(_BaseSchema):
    """The new fields of the device. Each field of this object is optional."""

    name: str | None = None
    notes: str | None = None


class UpdateNetworkSmDevicesFieldsResponse(
    RootModel[list["UpdateNetworkSmDevicesFieldsResponseItem"]]
):
    """Response for updateNetworkSmDevicesFields operation."""


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

    id: str | None = None
    name: str | None = None
    wifi_mac: str | None = Field(default=None, alias="wifiMac")
    serial: str | None = None
    notes: str | None = None


class UpdateNetworkSmTargetGroupResponse(_BaseSchema):
    """Response for updateNetworkSmTargetGroup operation."""

    id: str | None = None
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None


class UpdateOrganizationSmAdminsRoleResponse(_BaseSchema):
    """Response for updateOrganizationSmAdminsRole operation."""

    role_id: str | None = Field(default=None, alias="roleId")
    name: str | None = None
    scope: str | None = None
    tags: list[str] | None = None


class UpdateOrganizationSmSentryPoliciesAssignmentsItemsItem(_BaseSchema):
    """Item schema for items."""

    network_id: str = Field(alias="networkId")
    policies: list[UpdateOrganizationSmSentryPoliciesAssignmentsItemsItemPoliciesItem] | None = None


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

    policy_id: str | None = Field(default=None, alias="policyId")
    sm_network_id: str = Field(alias="smNetworkId")
    scope: str
    tags: list[str]
    group_policy_id: str = Field(alias="groupPolicyId")


class UpdateOrganizationSmSentryPoliciesAssignmentsResponse(_BaseSchema):
    """Response for updateOrganizationSmSentryPoliciesAssignments operation."""

    items: list[UpdateOrganizationSmSentryPoliciesAssignmentsResponseItemsItem] | None = None


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

    network_id: str | None = Field(default=None, alias="networkId")
    policies: list[SmPoliciesItem] | None = None


class WipeNetworkSmDevicesResponse(_BaseSchema):
    """Response for wipeNetworkSmDevices operation."""

    id: str | None = None
