extremecloudiq-api 24.5.0.51__py3-none-any.whl → 25.1.0.147__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- extremecloudiq/__init__.py +7 -727
- extremecloudiq/api_client.py +1319 -486
- extremecloudiq/apis/__init__.py +3 -0
- extremecloudiq/apis/path_to_api.py +1001 -0
- extremecloudiq/apis/paths/__init__.py +3 -0
- extremecloudiq/apis/paths/account_external.py +7 -0
- extremecloudiq/apis/paths/account_home.py +7 -0
- extremecloudiq/apis/paths/account_switch.py +7 -0
- extremecloudiq/apis/paths/account_viq.py +7 -0
- extremecloudiq/apis/paths/account_viq_backup.py +7 -0
- extremecloudiq/apis/paths/account_viq_default_device_password.py +9 -0
- extremecloudiq/apis/paths/account_viq_download.py +7 -0
- extremecloudiq/apis/paths/account_viq_export.py +7 -0
- extremecloudiq/apis/paths/account_viq_export_import_status.py +7 -0
- extremecloudiq/apis/paths/account_viq_import.py +7 -0
- extremecloudiq/apis/paths/ad_servers.py +7 -0
- extremecloudiq/apis/paths/afcserver.py +7 -0
- extremecloudiq/apis/paths/afcserver_server_id.py +7 -0
- extremecloudiq/apis/paths/afcserver_statistics_server_id.py +7 -0
- extremecloudiq/apis/paths/alert_policies.py +9 -0
- extremecloudiq/apis/paths/alert_policies_available_sites.py +7 -0
- extremecloudiq/apis/paths/alert_policies_id.py +11 -0
- extremecloudiq/apis/paths/alert_policies_policy_id_rules_rule_id.py +9 -0
- extremecloudiq/apis/paths/alert_policies_policy_id_rules_rule_id_disable.py +7 -0
- extremecloudiq/apis/paths/alert_policies_policy_id_rules_rule_id_enable.py +7 -0
- extremecloudiq/apis/paths/alert_subscriptions_emails.py +9 -0
- extremecloudiq/apis/paths/alert_subscriptions_emails_delete.py +7 -0
- extremecloudiq/apis/paths/alert_subscriptions_emails_id.py +11 -0
- extremecloudiq/apis/paths/alert_subscriptions_emails_id_verify.py +7 -0
- extremecloudiq/apis/paths/alert_subscriptions_webhooks.py +9 -0
- extremecloudiq/apis/paths/alert_subscriptions_webhooks_delete.py +7 -0
- extremecloudiq/apis/paths/alert_subscriptions_webhooks_id.py +11 -0
- extremecloudiq/apis/paths/alerts.py +7 -0
- extremecloudiq/apis/paths/alerts_acknowledge.py +7 -0
- extremecloudiq/apis/paths/alerts_count_by_group.py +7 -0
- extremecloudiq/apis/paths/alerts_reports.py +7 -0
- extremecloudiq/apis/paths/alerts_reports_id.py +7 -0
- extremecloudiq/apis/paths/ap_afc_diagnostics_id.py +7 -0
- extremecloudiq/apis/paths/ap_afc_interface_details_sn.py +7 -0
- extremecloudiq/apis/paths/ap_spectrum_.py +7 -0
- extremecloudiq/apis/paths/applications.py +7 -0
- extremecloudiq/apis/paths/applications_id_clients_topn.py +7 -0
- extremecloudiq/apis/paths/applications_topn.py +7 -0
- extremecloudiq/apis/paths/aps_afc_query_.py +7 -0
- extremecloudiq/apis/paths/aps_afc_update.py +7 -0
- extremecloudiq/apis/paths/auth_apitoken.py +7 -0
- extremecloudiq/apis/paths/auth_apitoken_info.py +7 -0
- extremecloudiq/apis/paths/auth_apitoken_validate.py +7 -0
- extremecloudiq/apis/paths/auth_permissions.py +7 -0
- extremecloudiq/apis/paths/auth_permissions_check.py +7 -0
- extremecloudiq/apis/paths/ccgs.py +9 -0
- extremecloudiq/apis/paths/ccgs_id.py +11 -0
- extremecloudiq/apis/paths/certificates.py +7 -0
- extremecloudiq/apis/paths/classification_rules.py +9 -0
- extremecloudiq/apis/paths/classification_rules_id.py +11 -0
- extremecloudiq/apis/paths/client_monitor_profiles.py +9 -0
- extremecloudiq/apis/paths/client_monitor_profiles_id.py +11 -0
- extremecloudiq/apis/paths/clients_active.py +7 -0
- extremecloudiq/apis/paths/clients_active_count.py +7 -0
- extremecloudiq/apis/paths/clients_alias.py +7 -0
- extremecloudiq/apis/paths/clients_by_mac_client_mac.py +9 -0
- extremecloudiq/apis/paths/clients_id.py +7 -0
- extremecloudiq/apis/paths/clients_summary.py +7 -0
- extremecloudiq/apis/paths/clients_usage.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_adverse_traffic_device_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_adverse_traffic_packet_counts.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_anomalies_by_category.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_devices_by_location.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_devices_feedback.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_devices_update_action.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_devices_with_locations.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_dfs_recurrence_channel_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_dfs_recurrence_count_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_exclude_vlans.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_exclude_vlans_csv.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_excluded_vlans_list.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_hardware_health_client_list.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_hardware_health_cpu_mem_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_hardware_health_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_locations.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_missing_vlan_count.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_notifications.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_poeflapping_lldp_cdp_info.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_poeflapping_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_poeflapping_trends.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_port_efficiency_speed_duplex_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_port_efficiency_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_report.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_update_action.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_update_device_action.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_wifi_capacity_client_list.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_wifi_capacity_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_wifi_efficiency_client_list.py +7 -0
- extremecloudiq/apis/paths/copilot_anomalies_wifi_efficiency_stats.py +7 -0
- extremecloudiq/apis/paths/copilot_assurance_scans_overview.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_client_type.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_locations.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wired_events.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wired_experience.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wired_hardware.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wired_locations_hardware.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wired_quality_index.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_apps.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_events.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_experience.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_locations_events.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_locations_performance.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_locations_quality_index.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_locations_time_to_connect.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_performance.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_quality_index.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_time_to_connect.py +7 -0
- extremecloudiq/apis/paths/copilot_connectivity_wireless_views.py +7 -0
- extremecloudiq/apis/paths/countries.py +7 -0
- extremecloudiq/apis/paths/countries_country_alpha2_code_states.py +7 -0
- extremecloudiq/apis/paths/countries_country_code_validate.py +7 -0
- extremecloudiq/apis/paths/cwps.py +7 -0
- extremecloudiq/apis/paths/deployments.py +9 -0
- extremecloudiq/apis/paths/deployments_deployment_id.py +11 -0
- extremecloudiq/apis/paths/deployments_deployment_id_status.py +7 -0
- extremecloudiq/apis/paths/deployments_firmware_metadatas.py +7 -0
- extremecloudiq/apis/paths/deployments_overview.py +7 -0
- extremecloudiq/apis/paths/deployments_status.py +7 -0
- extremecloudiq/apis/paths/devices.py +7 -0
- extremecloudiq/apis/paths/devices_advanced_onboard.py +7 -0
- extremecloudiq/apis/paths/devices_check_ownership.py +7 -0
- extremecloudiq/apis/paths/devices_cli.py +7 -0
- extremecloudiq/apis/paths/devices_client_monitor_assign.py +7 -0
- extremecloudiq/apis/paths/devices_client_monitor_query.py +7 -0
- extremecloudiq/apis/paths/devices_client_monitor_revoke.py +7 -0
- extremecloudiq/apis/paths/devices_country_code_assign.py +7 -0
- extremecloudiq/apis/paths/devices_delete.py +7 -0
- extremecloudiq/apis/paths/devices_digital_twin.py +7 -0
- extremecloudiq/apis/paths/devices_ibeacon.py +7 -0
- extremecloudiq/apis/paths/devices_id.py +9 -0
- extremecloudiq/apis/paths/devices_id_alarms.py +7 -0
- extremecloudiq/apis/paths/devices_id_bounce_port.py +7 -0
- extremecloudiq/apis/paths/devices_id_cli.py +7 -0
- extremecloudiq/apis/paths/devices_id_client_monitor.py +11 -0
- extremecloudiq/apis/paths/devices_id_description.py +7 -0
- extremecloudiq/apis/paths/devices_id_ftm_settings.py +11 -0
- extremecloudiq/apis/paths/devices_id_gallery_image.py +7 -0
- extremecloudiq/apis/paths/devices_id_geolocation.py +7 -0
- extremecloudiq/apis/paths/devices_id_history_cpu_mem.py +7 -0
- extremecloudiq/apis/paths/devices_id_hostname.py +7 -0
- extremecloudiq/apis/paths/devices_id_ibeacon.py +7 -0
- extremecloudiq/apis/paths/devices_id_installation_report.py +7 -0
- extremecloudiq/apis/paths/devices_id_interfaces_wifi.py +7 -0
- extremecloudiq/apis/paths/devices_id_iot.py +7 -0
- extremecloudiq/apis/paths/devices_id_iot_disable.py +7 -0
- extremecloudiq/apis/paths/devices_id_iot_enable.py +7 -0
- extremecloudiq/apis/paths/devices_id_location.py +11 -0
- extremecloudiq/apis/paths/devices_id_manage.py +7 -0
- extremecloudiq/apis/paths/devices_id_monitor_refresh.py +7 -0
- extremecloudiq/apis/paths/devices_id_monitor_refresh_status.py +7 -0
- extremecloudiq/apis/paths/devices_id_network_policy.py +11 -0
- extremecloudiq/apis/paths/devices_id_radio_operating_mode.py +9 -0
- extremecloudiq/apis/paths/devices_id_reboot.py +7 -0
- extremecloudiq/apis/paths/devices_id_reset.py +7 -0
- extremecloudiq/apis/paths/devices_id_ssid_override.py +7 -0
- extremecloudiq/apis/paths/devices_id_ssid_status.py +7 -0
- extremecloudiq/apis/paths/devices_id_ssid_status_change.py +7 -0
- extremecloudiq/apis/paths/devices_id_thread_commissioner_start.py +7 -0
- extremecloudiq/apis/paths/devices_id_thread_commissioner_stop.py +7 -0
- extremecloudiq/apis/paths/devices_id_unmanage.py +7 -0
- extremecloudiq/apis/paths/devices_location_assign.py +7 -0
- extremecloudiq/apis/paths/devices_location_query.py +7 -0
- extremecloudiq/apis/paths/devices_location_revoke.py +7 -0
- extremecloudiq/apis/paths/devices_manage.py +7 -0
- extremecloudiq/apis/paths/devices_network_policy_assign.py +7 -0
- extremecloudiq/apis/paths/devices_network_policy_policy_id.py +7 -0
- extremecloudiq/apis/paths/devices_network_policy_query.py +7 -0
- extremecloudiq/apis/paths/devices_network_policy_revoke.py +7 -0
- extremecloudiq/apis/paths/devices_onboard.py +7 -0
- extremecloudiq/apis/paths/devices_os_change.py +7 -0
- extremecloudiq/apis/paths/devices_radio_information.py +7 -0
- extremecloudiq/apis/paths/devices_radius_proxy_assign.py +7 -0
- extremecloudiq/apis/paths/devices_radius_proxy_revoke.py +7 -0
- extremecloudiq/apis/paths/devices_reboot.py +7 -0
- extremecloudiq/apis/paths/devices_stats.py +7 -0
- extremecloudiq/apis/paths/devices_unmanage.py +7 -0
- extremecloudiq/apis/paths/email_templates.py +7 -0
- extremecloudiq/apis/paths/endusers.py +9 -0
- extremecloudiq/apis/paths/endusers_id.py +9 -0
- extremecloudiq/apis/paths/endusers_id_regenerate_password.py +7 -0
- extremecloudiq/apis/paths/essentials_eloc_clients_client_mac_last_known_location.py +7 -0
- extremecloudiq/apis/paths/hiq_context.py +9 -0
- extremecloudiq/apis/paths/hiq_context_creating.py +9 -0
- extremecloudiq/apis/paths/hiq_context_reading.py +9 -0
- extremecloudiq/apis/paths/hiq_organizations.py +9 -0
- extremecloudiq/apis/paths/hiq_organizations_id.py +7 -0
- extremecloudiq/apis/paths/hiq_organizations_id_rename.py +7 -0
- extremecloudiq/apis/paths/hiq_status.py +7 -0
- extremecloudiq/apis/paths/hotspot_profiles.py +9 -0
- extremecloudiq/apis/paths/hotspot_profiles_id.py +11 -0
- extremecloudiq/apis/paths/hotspot_service_provider_profiles.py +9 -0
- extremecloudiq/apis/paths/hotspot_service_provider_profiles_id.py +11 -0
- extremecloudiq/apis/paths/iot_profiles.py +9 -0
- extremecloudiq/apis/paths/iot_profiles_id.py +11 -0
- extremecloudiq/apis/paths/ip_firewall_policies.py +9 -0
- extremecloudiq/apis/paths/ip_firewall_policies_id.py +11 -0
- extremecloudiq/apis/paths/ip_firewall_policies_id_ip_firewall_rule_attach.py +7 -0
- extremecloudiq/apis/paths/ip_firewall_policies_id_ip_firewall_rule_detach.py +7 -0
- extremecloudiq/apis/paths/l3_address_profiles.py +9 -0
- extremecloudiq/apis/paths/l3_address_profiles_id.py +11 -0
- extremecloudiq/apis/paths/ldap_servers.py +9 -0
- extremecloudiq/apis/paths/ldap_servers_id.py +11 -0
- extremecloudiq/apis/paths/locations.py +7 -0
- extremecloudiq/apis/paths/locations_building.py +9 -0
- extremecloudiq/apis/paths/locations_building_id.py +11 -0
- extremecloudiq/apis/paths/locations_floor.py +9 -0
- extremecloudiq/apis/paths/locations_floor_id.py +11 -0
- extremecloudiq/apis/paths/locations_floorplan.py +7 -0
- extremecloudiq/apis/paths/locations_id.py +9 -0
- extremecloudiq/apis/paths/locations_import_ekahau.py +7 -0
- extremecloudiq/apis/paths/locations_init.py +7 -0
- extremecloudiq/apis/paths/locations_site.py +9 -0
- extremecloudiq/apis/paths/locations_site_id.py +11 -0
- extremecloudiq/apis/paths/locations_tree.py +7 -0
- extremecloudiq/apis/paths/locations_tree_devices.py +7 -0
- extremecloudiq/apis/paths/locations_tree_maps.py +7 -0
- extremecloudiq/apis/paths/login.py +7 -0
- extremecloudiq/apis/paths/logout.py +7 -0
- extremecloudiq/apis/paths/logs_accounting.py +7 -0
- extremecloudiq/apis/paths/logs_audit.py +7 -0
- extremecloudiq/apis/paths/logs_audit_full_descriptions_id.py +7 -0
- extremecloudiq/apis/paths/logs_audit_reports.py +7 -0
- extremecloudiq/apis/paths/logs_audit_reports_id.py +7 -0
- extremecloudiq/apis/paths/logs_auth.py +7 -0
- extremecloudiq/apis/paths/logs_credential.py +7 -0
- extremecloudiq/apis/paths/logs_email.py +7 -0
- extremecloudiq/apis/paths/logs_sms.py +7 -0
- extremecloudiq/apis/paths/mac_firewall_policies.py +9 -0
- extremecloudiq/apis/paths/mac_firewall_policies_id.py +11 -0
- extremecloudiq/apis/paths/mac_firewall_policies_id_mac_firewall_rule_attach.py +7 -0
- extremecloudiq/apis/paths/mac_firewall_policies_id_mac_firewall_rule_detach.py +7 -0
- extremecloudiq/apis/paths/mac_object_profiles.py +9 -0
- extremecloudiq/apis/paths/mac_object_profiles_id.py +11 -0
- extremecloudiq/apis/paths/network_policies.py +9 -0
- extremecloudiq/apis/paths/network_policies_id.py +11 -0
- extremecloudiq/apis/paths/network_policies_id_ssids.py +7 -0
- extremecloudiq/apis/paths/network_policies_id_ssids_add.py +7 -0
- extremecloudiq/apis/paths/network_policies_id_ssids_remove.py +7 -0
- extremecloudiq/apis/paths/network_scorecard_client_health_location_id.py +7 -0
- extremecloudiq/apis/paths/network_scorecard_device_health_location_id.py +7 -0
- extremecloudiq/apis/paths/network_scorecard_network_health_location_id.py +7 -0
- extremecloudiq/apis/paths/network_scorecard_services_health_location_id.py +7 -0
- extremecloudiq/apis/paths/network_scorecard_wifi_health_location_id.py +7 -0
- extremecloudiq/apis/paths/network_services.py +9 -0
- extremecloudiq/apis/paths/network_services_id.py +7 -0
- extremecloudiq/apis/paths/nos_device_device_id_nos_api.py +7 -0
- extremecloudiq/apis/paths/operations_operation_id.py +9 -0
- extremecloudiq/apis/paths/operations_operation_id_cancel.py +7 -0
- extremecloudiq/apis/paths/packetcaptures.py +9 -0
- extremecloudiq/apis/paths/packetcaptures_files.py +7 -0
- extremecloudiq/apis/paths/packetcaptures_id.py +9 -0
- extremecloudiq/apis/paths/packetcaptures_id_stop.py +7 -0
- extremecloudiq/apis/paths/packetcaptures_id_upload.py +7 -0
- extremecloudiq/apis/paths/pcgs_key_based.py +9 -0
- extremecloudiq/apis/paths/pcgs_key_based_network_policy_policy_id.py +7 -0
- extremecloudiq/apis/paths/pcgs_key_based_network_policy_policy_id_keys_email.py +7 -0
- extremecloudiq/apis/paths/pcgs_key_based_network_policy_policy_id_keys_generate.py +7 -0
- extremecloudiq/apis/paths/pcgs_key_based_network_policy_policy_id_onboard.py +7 -0
- extremecloudiq/apis/paths/pcgs_key_based_network_policy_policy_id_port_assignments.py +9 -0
- extremecloudiq/apis/paths/pcgs_key_based_network_policy_policy_id_users.py +13 -0
- extremecloudiq/apis/paths/radio_operating_modes_product_type.py +7 -0
- extremecloudiq/apis/paths/radio_profiles.py +9 -0
- extremecloudiq/apis/paths/radio_profiles_channel_selection_id.py +9 -0
- extremecloudiq/apis/paths/radio_profiles_id.py +11 -0
- extremecloudiq/apis/paths/radio_profiles_mac_ouis.py +9 -0
- extremecloudiq/apis/paths/radio_profiles_mac_ouis_id.py +11 -0
- extremecloudiq/apis/paths/radio_profiles_miscellaneous_id.py +9 -0
- extremecloudiq/apis/paths/radio_profiles_neighborhood_analysis_id.py +9 -0
- extremecloudiq/apis/paths/radio_profiles_radio_usage_opt_id.py +9 -0
- extremecloudiq/apis/paths/radio_profiles_sensor_scan_id.py +9 -0
- extremecloudiq/apis/paths/radio_profiles_wmm_qos_id.py +9 -0
- extremecloudiq/apis/paths/radius_client_objects.py +9 -0
- extremecloudiq/apis/paths/radius_client_objects_id.py +11 -0
- extremecloudiq/apis/paths/radius_proxies.py +9 -0
- extremecloudiq/apis/paths/radius_proxies_devices.py +7 -0
- extremecloudiq/apis/paths/radius_proxies_id.py +11 -0
- extremecloudiq/apis/paths/radius_servers_external.py +9 -0
- extremecloudiq/apis/paths/radius_servers_external_id.py +11 -0
- extremecloudiq/apis/paths/radius_servers_internal.py +11 -0
- extremecloudiq/apis/paths/radius_servers_internal_devices.py +7 -0
- extremecloudiq/apis/paths/radius_servers_internal_id.py +11 -0
- extremecloudiq/apis/paths/rtts.py +7 -0
- extremecloudiq/apis/paths/rtts_id.py +7 -0
- extremecloudiq/apis/paths/site_afc_schedule.py +11 -0
- extremecloudiq/apis/paths/site_spectrum_.py +7 -0
- extremecloudiq/apis/paths/sms_templates.py +7 -0
- extremecloudiq/apis/paths/ssids.py +7 -0
- extremecloudiq/apis/paths/ssids_advanced_settings_id.py +9 -0
- extremecloudiq/apis/paths/ssids_id_client_monitor_profile_attach.py +7 -0
- extremecloudiq/apis/paths/ssids_id_cwp_attach.py +7 -0
- extremecloudiq/apis/paths/ssids_id_cwp_disable.py +7 -0
- extremecloudiq/apis/paths/ssids_id_cwp_enable.py +7 -0
- extremecloudiq/apis/paths/ssids_id_mode_dot1x.py +7 -0
- extremecloudiq/apis/paths/ssids_id_mode_open.py +7 -0
- extremecloudiq/apis/paths/ssids_id_mode_ppsk.py +7 -0
- extremecloudiq/apis/paths/ssids_id_mode_psk.py +7 -0
- extremecloudiq/apis/paths/ssids_id_mode_wep.py +7 -0
- extremecloudiq/apis/paths/ssids_id_psk_password.py +7 -0
- extremecloudiq/apis/paths/ssids_id_radius_client_profile_attach.py +7 -0
- extremecloudiq/apis/paths/ssids_id_radius_server_group_attach.py +7 -0
- extremecloudiq/apis/paths/ssids_id_rename.py +7 -0
- extremecloudiq/apis/paths/ssids_id_user_profile_assignment_attach.py +7 -0
- extremecloudiq/apis/paths/ssids_id_user_profile_attach.py +7 -0
- extremecloudiq/apis/paths/subscriptions_webhook.py +9 -0
- extremecloudiq/apis/paths/subscriptions_webhook_id.py +7 -0
- extremecloudiq/apis/paths/thread_networks.py +7 -0
- extremecloudiq/apis/paths/thread_routers.py +7 -0
- extremecloudiq/apis/paths/thread_topology.py +7 -0
- extremecloudiq/apis/paths/tunnel_concentrators.py +9 -0
- extremecloudiq/apis/paths/tunnel_concentrators_id.py +11 -0
- extremecloudiq/apis/paths/ucp_id_engines_installed.py +7 -0
- extremecloudiq/apis/paths/user_profile_assignments.py +9 -0
- extremecloudiq/apis/paths/user_profile_assignments_id.py +9 -0
- extremecloudiq/apis/paths/user_profiles.py +9 -0
- extremecloudiq/apis/paths/user_profiles_id.py +11 -0
- extremecloudiq/apis/paths/user_profiles_id_ip_firewall_policies_attach.py +7 -0
- extremecloudiq/apis/paths/user_profiles_id_ip_firewall_policies_detach.py +7 -0
- extremecloudiq/apis/paths/user_profiles_id_mac_firewall_policies_attach.py +7 -0
- extremecloudiq/apis/paths/user_profiles_id_mac_firewall_policies_detach.py +7 -0
- extremecloudiq/apis/paths/usergroups.py +9 -0
- extremecloudiq/apis/paths/usergroups_id.py +9 -0
- extremecloudiq/apis/paths/users.py +9 -0
- extremecloudiq/apis/paths/users_external.py +9 -0
- extremecloudiq/apis/paths/users_external_id.py +11 -0
- extremecloudiq/apis/paths/users_id.py +11 -0
- extremecloudiq/apis/paths/users_me.py +7 -0
- extremecloudiq/apis/paths/vlan_profiles.py +9 -0
- extremecloudiq/apis/paths/vlan_profiles_delete.py +7 -0
- extremecloudiq/apis/paths/vlan_profiles_id.py +11 -0
- extremecloudiq/apis/tag_to_api.py +110 -0
- extremecloudiq/apis/tags/__init__.py +40 -0
- extremecloudiq/apis/tags/account_api.py +44 -0
- extremecloudiq/apis/tags/afc_endpoint_api.py +46 -0
- extremecloudiq/apis/tags/alert_api.py +78 -0
- extremecloudiq/apis/tags/application_api.py +28 -0
- extremecloudiq/apis/tags/authentication_api.py +26 -0
- extremecloudiq/apis/tags/authorization_api.py +32 -0
- extremecloudiq/apis/tags/client_api.py +38 -0
- extremecloudiq/apis/tags/configuration_authentication_api.py +82 -0
- extremecloudiq/apis/tags/configuration_basic_api.py +34 -0
- extremecloudiq/apis/tags/configuration_certificate_api.py +24 -0
- extremecloudiq/apis/tags/configuration_deployment_api.py +40 -0
- extremecloudiq/apis/tags/configuration_network_api.py +38 -0
- extremecloudiq/apis/tags/configuration_policy_api.py +238 -0
- extremecloudiq/apis/tags/configuration_user_management_api.py +68 -0
- extremecloudiq/apis/tags/copilot_anomalies_api.py +84 -0
- extremecloudiq/apis/tags/copilot_connectivity_experience_api.py +58 -0
- extremecloudiq/apis/tags/device_api.py +158 -0
- extremecloudiq/apis/tags/essentials_extreme_location_api.py +24 -0
- extremecloudiq/apis/tags/hiq_api.py +44 -0
- extremecloudiq/apis/tags/location_api.py +70 -0
- extremecloudiq/apis/tags/log_api.py +40 -0
- extremecloudiq/apis/tags/misc_api.py +28 -0
- extremecloudiq/apis/tags/network_policy_api.py +38 -0
- extremecloudiq/apis/tags/network_scorecard_api.py +32 -0
- extremecloudiq/apis/tags/nos_api.py +24 -0
- extremecloudiq/apis/tags/notification_api.py +28 -0
- extremecloudiq/apis/tags/operation_api.py +28 -0
- extremecloudiq/apis/tags/packet_capture_api.py +36 -0
- extremecloudiq/apis/tags/rtts_endpoint_api.py +26 -0
- extremecloudiq/apis/tags/thread_api.py +28 -0
- extremecloudiq/apis/tags/universal_compute_platform_api.py +24 -0
- extremecloudiq/apis/tags/user_api.py +44 -0
- extremecloudiq/configuration.py +98 -47
- extremecloudiq/exceptions.py +43 -16
- extremecloudiq/model/__init__.py +5 -0
- extremecloudiq/model/client_health.py +109 -0
- extremecloudiq/model/device_health.py +111 -0
- extremecloudiq/model/essentials_eloc_last_known_location.py +101 -0
- extremecloudiq/model/network_health.py +109 -0
- extremecloudiq/model/paged_xiq_accounting_log.py +157 -0
- extremecloudiq/model/paged_xiq_active_directory_server.py +157 -0
- extremecloudiq/model/paged_xiq_alert.py +157 -0
- extremecloudiq/model/paged_xiq_application.py +157 -0
- extremecloudiq/model/paged_xiq_audit_log.py +157 -0
- extremecloudiq/model/paged_xiq_auth_log.py +157 -0
- extremecloudiq/model/paged_xiq_building.py +157 -0
- extremecloudiq/model/paged_xiq_certificate.py +157 -0
- extremecloudiq/model/paged_xiq_classification_rule.py +157 -0
- extremecloudiq/model/paged_xiq_client.py +157 -0
- extremecloudiq/model/paged_xiq_client_monitor_profile.py +157 -0
- extremecloudiq/model/paged_xiq_cloud_config_group.py +157 -0
- extremecloudiq/model/paged_xiq_connectivity_experience_data.py +157 -0
- extremecloudiq/model/paged_xiq_copilot_wireless_event.py +157 -0
- extremecloudiq/model/paged_xiq_credential_log.py +157 -0
- extremecloudiq/model/paged_xiq_cwp.py +157 -0
- extremecloudiq/model/paged_xiq_deployment_details_response.py +157 -0
- extremecloudiq/model/paged_xiq_device.py +157 -0
- extremecloudiq/model/paged_xiq_device_alarm.py +157 -0
- extremecloudiq/model/paged_xiq_digital_twin_products.py +157 -0
- extremecloudiq/model/paged_xiq_email_log.py +157 -0
- extremecloudiq/model/paged_xiq_end_user.py +157 -0
- extremecloudiq/model/paged_xiq_external_radius_server.py +157 -0
- extremecloudiq/model/paged_xiq_external_user.py +157 -0
- extremecloudiq/model/paged_xiq_floor.py +157 -0
- extremecloudiq/model/paged_xiq_hotspot_profile.py +157 -0
- extremecloudiq/model/paged_xiq_hotspot_service_provider_profile.py +157 -0
- extremecloudiq/model/paged_xiq_internal_radius_device.py +157 -0
- extremecloudiq/model/paged_xiq_internal_radius_server.py +157 -0
- extremecloudiq/model/paged_xiq_iot_profile.py +157 -0
- extremecloudiq/model/paged_xiq_ip_firewall.py +157 -0
- extremecloudiq/model/paged_xiq_ldap_server.py +157 -0
- extremecloudiq/model/paged_xiq_location_tree_device.py +157 -0
- extremecloudiq/model/paged_xiq_location_tree_map.py +157 -0
- extremecloudiq/model/paged_xiq_mac_firewall.py +157 -0
- extremecloudiq/model/paged_xiq_mac_object.py +157 -0
- extremecloudiq/model/paged_xiq_network_policy.py +157 -0
- extremecloudiq/model/paged_xiq_network_service.py +157 -0
- extremecloudiq/model/paged_xiq_packet_capture.py +157 -0
- extremecloudiq/model/paged_xiq_radio_entity.py +157 -0
- extremecloudiq/model/paged_xiq_radio_profile.py +157 -0
- extremecloudiq/model/paged_xiq_radius_client_object.py +157 -0
- extremecloudiq/model/paged_xiq_radius_proxy.py +157 -0
- extremecloudiq/model/paged_xiq_rp_mac_oui_profile.py +157 -0
- extremecloudiq/model/paged_xiq_site.py +157 -0
- extremecloudiq/model/paged_xiq_sms_log.py +157 -0
- extremecloudiq/model/paged_xiq_ssid.py +157 -0
- extremecloudiq/model/paged_xiq_thread_router.py +157 -0
- extremecloudiq/model/paged_xiq_tunnel_concentrator.py +157 -0
- extremecloudiq/model/paged_xiq_user.py +157 -0
- extremecloudiq/model/paged_xiq_user_group.py +157 -0
- extremecloudiq/model/paged_xiq_user_profile.py +157 -0
- extremecloudiq/model/paged_xiq_user_profile_assignment.py +157 -0
- extremecloudiq/model/paged_xiq_vlan_profile.py +157 -0
- extremecloudiq/model/paged_xiq_wired_event_entity.py +157 -0
- extremecloudiq/model/rtts_session_devices.py +173 -0
- extremecloudiq/model/services_health.py +109 -0
- extremecloudiq/model/wifi_health.py +109 -0
- extremecloudiq/model/xiq_account.py +237 -0
- extremecloudiq/model/xiq_account_mode.py +52 -0
- extremecloudiq/model/xiq_account_type.py +62 -0
- extremecloudiq/model/xiq_accounting_log.py +406 -0
- extremecloudiq/model/xiq_acknowledge_alerts_request.py +108 -0
- extremecloudiq/model/xiq_action_type.py +67 -0
- extremecloudiq/model/xiq_active_directory_server.py +285 -0
- extremecloudiq/model/xiq_active_directory_server_base_dn_fetch_mode.py +52 -0
- extremecloudiq/model/xiq_address.py +128 -0
- extremecloudiq/model/xiq_address_profile_classified_entry.py +131 -0
- extremecloudiq/model/xiq_advanced_onboard_device_request.py +298 -0
- extremecloudiq/model/xiq_advanced_onboard_device_response.py +144 -0
- extremecloudiq/model/xiq_afc_ap_detail.py +164 -0
- extremecloudiq/model/xiq_afc_ap_diagnostics.py +79 -0
- extremecloudiq/model/xiq_afc_ap_manual_spectrum.py +101 -0
- extremecloudiq/model/xiq_afc_aps_info_element.py +112 -0
- extremecloudiq/model/xiq_afc_available_spectrum.py +126 -0
- extremecloudiq/model/xiq_afc_geolocation_summary.py +89 -0
- extremecloudiq/model/xiq_afc_input_info.py +157 -0
- extremecloudiq/model/xiq_afc_server.py +114 -0
- extremecloudiq/model/xiq_afc_server_state.py +100 -0
- extremecloudiq/model/xiq_afc_server_statistics.py +128 -0
- extremecloudiq/model/xiq_afc_servers_statistics.py +106 -0
- extremecloudiq/model/xiq_afc_status_summary.py +99 -0
- extremecloudiq/model/xiq_affected_downlink_device.py +121 -0
- extremecloudiq/model/xiq_alert.py +361 -0
- extremecloudiq/model/xiq_alert_email_subscription.py +190 -0
- extremecloudiq/model/xiq_alert_event_rules_by_category.py +137 -0
- extremecloudiq/model/xiq_alert_group_count.py +108 -0
- extremecloudiq/model/xiq_alert_group_query.py +55 -0
- extremecloudiq/model/xiq_alert_metric_rules_by_metricset.py +137 -0
- extremecloudiq/model/xiq_alert_policy.py +225 -0
- extremecloudiq/model/xiq_alert_policy_filter.py +118 -0
- extremecloudiq/model/xiq_alert_policy_type.py +50 -0
- extremecloudiq/model/xiq_alert_report.py +86 -0
- extremecloudiq/model/xiq_alert_rule.py +234 -0
- extremecloudiq/model/xiq_alert_rule_overview.py +110 -0
- extremecloudiq/model/xiq_alert_site.py +96 -0
- extremecloudiq/model/xiq_alert_sort_field.py +52 -0
- extremecloudiq/model/xiq_alert_source.py +111 -0
- extremecloudiq/model/xiq_alert_tag.py +116 -0
- extremecloudiq/model/xiq_alert_webhook_subscription.py +190 -0
- extremecloudiq/model/xiq_anomalies_count_vo_entity.py +176 -0
- extremecloudiq/model/xiq_anomalies_device_update_action_request.py +120 -0
- extremecloudiq/model/xiq_anomalies_feedback_request.py +120 -0
- extremecloudiq/model/xiq_anomalies_notifications_response.py +118 -0
- extremecloudiq/model/xiq_anomalies_severity_entity.py +111 -0
- extremecloudiq/model/xiq_anomalies_site_entity.py +101 -0
- extremecloudiq/model/xiq_anomalies_type_entity.py +96 -0
- extremecloudiq/model/xiq_anomalies_update_action_request.py +110 -0
- extremecloudiq/model/xiq_anomaly_affected_count.py +110 -0
- extremecloudiq/model/xiq_anomaly_device_entity.py +226 -0
- extremecloudiq/model/xiq_anomaly_device_with_location.py +357 -0
- extremecloudiq/model/xiq_anomaly_devices_by_location_response.py +122 -0
- extremecloudiq/model/xiq_anomaly_health_type.py +62 -0
- extremecloudiq/model/xiq_anomaly_hh_stats_type.py +50 -0
- extremecloudiq/model/xiq_anomaly_location_entity.py +226 -0
- extremecloudiq/model/xiq_anomaly_severity.py +60 -0
- extremecloudiq/model/xiq_anomaly_sort_field.py +75 -0
- extremecloudiq/model/xiq_anomaly_type.py +82 -0
- extremecloudiq/model/xiq_ap_coordinates.py +99 -0
- extremecloudiq/model/xiq_api_token_info.py +198 -0
- extremecloudiq/model/xiq_application.py +207 -0
- extremecloudiq/model/xiq_application_detection_protocol.py +52 -0
- extremecloudiq/model/xiq_application_detection_rule.py +110 -0
- extremecloudiq/model/xiq_application_detection_type.py +57 -0
- extremecloudiq/model/xiq_application_service.py +116 -0
- extremecloudiq/model/xiq_application_sort_field.py +50 -0
- extremecloudiq/model/xiq_application_top_clients_usage.py +121 -0
- extremecloudiq/model/xiq_assign_devices_client_monitor_request.py +107 -0
- extremecloudiq/model/xiq_assign_devices_country_code_request.py +107 -0
- extremecloudiq/model/xiq_assign_devices_location_request.py +107 -0
- extremecloudiq/model/xiq_assign_devices_network_policy_request.py +103 -0
- extremecloudiq/model/xiq_assurance_scans_overview_response.py +118 -0
- extremecloudiq/model/xiq_atp_device_stats_entity.py +116 -0
- extremecloudiq/model/xiq_atp_device_stats_response.py +118 -0
- extremecloudiq/model/xiq_atp_packet_counts_entity.py +146 -0
- extremecloudiq/model/xiq_atp_packet_counts_response.py +118 -0
- extremecloudiq/model/xiq_attach_client_monitor_profile_request.py +79 -0
- extremecloudiq/model/xiq_attach_ip_firewall_policy_to_user_profile_request.py +101 -0
- extremecloudiq/model/xiq_attach_mac_firewall_policy_to_user_profile_request.py +101 -0
- extremecloudiq/model/xiq_attach_up_assignment_entry.py +91 -0
- extremecloudiq/model/xiq_attach_up_assignment_request.py +160 -0
- extremecloudiq/model/xiq_attribute_type.py +57 -0
- extremecloudiq/model/xiq_audit_log.py +191 -0
- extremecloudiq/model/xiq_audit_log_category.py +70 -0
- extremecloudiq/model/xiq_audit_log_full_descriptions.py +116 -0
- extremecloudiq/model/xiq_audit_log_report.py +86 -0
- extremecloudiq/model/xiq_audit_log_sort_field.py +47 -0
- extremecloudiq/model/xiq_auth_log.py +246 -0
- extremecloudiq/model/xiq_available_channel_info.py +143 -0
- extremecloudiq/model/xiq_bounce_device_port_data.py +128 -0
- extremecloudiq/model/xiq_bounce_device_port_operation_result.py +91 -0
- extremecloudiq/model/xiq_bounce_device_port_request.py +101 -0
- extremecloudiq/model/xiq_bounce_device_port_response.py +86 -0
- extremecloudiq/model/xiq_building.py +179 -0
- extremecloudiq/model/xiq_bulk_delete_email_subscription_result.py +91 -0
- extremecloudiq/model/xiq_bulk_delete_webhook_subscription_result.py +91 -0
- extremecloudiq/model/xiq_bulk_operation_result.py +50 -0
- extremecloudiq/model/xiq_capture_band_selection.py +62 -0
- extremecloudiq/model/xiq_capture_direction_selection.py +57 -0
- extremecloudiq/model/xiq_capture_filter.py +200 -0
- extremecloudiq/model/xiq_capture_identifier_type.py +57 -0
- extremecloudiq/model/xiq_capture_location.py +200 -0
- extremecloudiq/model/xiq_capture_radio_selection.py +62 -0
- extremecloudiq/model/xiq_capture_result.py +236 -0
- extremecloudiq/model/xiq_capture_stop_request.py +103 -0
- extremecloudiq/model/xiq_capture_wired_selection.py +67 -0
- extremecloudiq/model/xiq_certificate.py +171 -0
- extremecloudiq/model/xiq_certificate_type.py +50 -0
- extremecloudiq/model/xiq_change_devices_ibeacon_request.py +228 -0
- extremecloudiq/model/xiq_change_devices_os_mode_request.py +122 -0
- extremecloudiq/model/xiq_check_permission_request.py +96 -0
- extremecloudiq/model/xiq_check_permission_response.py +146 -0
- extremecloudiq/model/xiq_classification.py +163 -0
- extremecloudiq/model/xiq_classification_rule.py +179 -0
- extremecloudiq/model/xiq_classification_type.py +67 -0
- extremecloudiq/model/xiq_cli_output.py +113 -0
- extremecloudiq/model/xiq_cli_response_code.py +122 -0
- extremecloudiq/model/xiq_client.py +683 -0
- extremecloudiq/model/xiq_client_field.py +315 -0
- extremecloudiq/model/xiq_client_mac_address_alias.py +114 -0
- extremecloudiq/model/xiq_client_monitor_parameters.py +111 -0
- extremecloudiq/model/xiq_client_monitor_profile.py +195 -0
- extremecloudiq/model/xiq_client_monitor_profile_request.py +153 -0
- extremecloudiq/model/xiq_client_sort_field.py +145 -0
- extremecloudiq/model/xiq_client_stats_entity.py +166 -0
- extremecloudiq/model/xiq_client_summary.py +101 -0
- extremecloudiq/model/xiq_client_type.py +57 -0
- extremecloudiq/model/xiq_client_usage.py +91 -0
- extremecloudiq/model/xiq_client_view.py +82 -0
- extremecloudiq/model/xiq_cloud_config_group.py +226 -0
- extremecloudiq/model/xiq_cloud_config_group_sort_field.py +60 -0
- extremecloudiq/model/xiq_cloud_shark_storage.py +91 -0
- extremecloudiq/model/xiq_connectivity_details_by_client_type_response.py +100 -0
- extremecloudiq/model/xiq_connectivity_experience_data.py +205 -0
- extremecloudiq/model/xiq_connectivity_experience_view_type.py +55 -0
- extremecloudiq/model/xiq_copilot_anomalies_action_response.py +81 -0
- extremecloudiq/model/xiq_copilot_anomalies_by_category.py +158 -0
- extremecloudiq/model/xiq_copilot_events_wired_sort_field.py +45 -0
- extremecloudiq/model/xiq_copilot_events_wireless_sort_field.py +55 -0
- extremecloudiq/model/xiq_copilot_lldp_cdp_info.py +86 -0
- extremecloudiq/model/xiq_copilot_missing_vlan_paged_xiq_missing_vlan_excluded_vlan_list.py +157 -0
- extremecloudiq/model/xiq_copilot_missing_vlan_site_details.py +91 -0
- extremecloudiq/model/xiq_copilot_paged_xiq_anomaly_device_with_location.py +181 -0
- extremecloudiq/model/xiq_copilot_paged_xiq_anomaly_location_entity.py +181 -0
- extremecloudiq/model/xiq_copilot_wired_events_score_type.py +45 -0
- extremecloudiq/model/xiq_copilot_wireless_event.py +173 -0
- extremecloudiq/model/xiq_copilot_wireless_events_score_type.py +65 -0
- extremecloudiq/model/xiq_country.py +241 -0
- extremecloudiq/model/xiq_country_code.py +1127 -0
- extremecloudiq/model/xiq_country_state.py +99 -0
- extremecloudiq/model/xiq_create_alert_email_subscription_request.py +142 -0
- extremecloudiq/model/xiq_create_alert_webhook_subscription_request.py +152 -0
- extremecloudiq/model/xiq_create_building_request.py +133 -0
- extremecloudiq/model/xiq_create_classification_request.py +155 -0
- extremecloudiq/model/xiq_create_classification_rule_request.py +133 -0
- extremecloudiq/model/xiq_create_cloud_config_group_request.py +126 -0
- extremecloudiq/model/xiq_create_end_user_request.py +186 -0
- extremecloudiq/model/xiq_create_external_radius_server_request.py +179 -0
- extremecloudiq/model/xiq_create_floor_request.py +185 -0
- extremecloudiq/model/xiq_create_internal_radius_server_request.py +399 -0
- extremecloudiq/model/xiq_create_key_based_pcg_users_request.py +113 -0
- extremecloudiq/model/xiq_create_key_based_pcg_users_response.py +135 -0
- extremecloudiq/model/xiq_create_l3_address_profile_request.py +199 -0
- extremecloudiq/model/xiq_create_ldap_server_request.py +260 -0
- extremecloudiq/model/xiq_create_location_request.py +96 -0
- extremecloudiq/model/xiq_create_mac_object_request.py +133 -0
- extremecloudiq/model/xiq_create_network_policy_request.py +111 -0
- extremecloudiq/model/xiq_create_organization_request.py +94 -0
- extremecloudiq/model/xiq_create_radio_profile_request.py +249 -0
- extremecloudiq/model/xiq_create_radius_client.py +101 -0
- extremecloudiq/model/xiq_create_radius_client_object_request.py +215 -0
- extremecloudiq/model/xiq_create_radius_proxy_realm.py +101 -0
- extremecloudiq/model/xiq_create_radius_proxy_request.py +269 -0
- extremecloudiq/model/xiq_create_rp_mac_oui_profile_request.py +126 -0
- extremecloudiq/model/xiq_create_site_request.py +141 -0
- extremecloudiq/model/xiq_create_user_group_request.py +239 -0
- extremecloudiq/model/xiq_create_user_profile_assignment_request.py +136 -0
- extremecloudiq/model/xiq_create_user_profile_request.py +96 -0
- extremecloudiq/model/xiq_create_user_request.py +157 -0
- extremecloudiq/model/xiq_create_vlan_object_classified_entry_request.py +98 -0
- extremecloudiq/model/xiq_create_vlan_profile_request.py +145 -0
- extremecloudiq/model/xiq_create_webhook_subscription_request.py +125 -0
- extremecloudiq/model/xiq_credential_log.py +126 -0
- extremecloudiq/model/xiq_cwp.py +130 -0
- extremecloudiq/model/xiq_data_point.py +96 -0
- extremecloudiq/model/xiq_date_time_type.py +134 -0
- extremecloudiq/model/xiq_date_time_unit_type.py +62 -0
- extremecloudiq/model/xiq_default_device_password.py +86 -0
- extremecloudiq/model/xiq_delete_bulk_alert_subscription_email_response.py +132 -0
- extremecloudiq/model/xiq_delete_bulk_alert_subscription_request.py +108 -0
- extremecloudiq/model/xiq_delete_bulk_alert_subscription_webhook_response.py +132 -0
- extremecloudiq/model/xiq_delete_key_based_pcg_users_request.py +108 -0
- extremecloudiq/model/xiq_delivery_settings.py +91 -0
- extremecloudiq/model/xiq_dell_device.py +135 -0
- extremecloudiq/model/xiq_dell_devices.py +114 -0
- extremecloudiq/model/xiq_deploy_device_filter.py +135 -0
- extremecloudiq/model/xiq_deployment_by_id_status_response.py +208 -0
- extremecloudiq/model/xiq_deployment_details_response.py +152 -0
- extremecloudiq/model/xiq_deployment_overview.py +98 -0
- extremecloudiq/model/xiq_deployment_overview_details.py +101 -0
- extremecloudiq/model/xiq_deployment_policy.py +146 -0
- extremecloudiq/model/xiq_deployment_request.py +114 -0
- extremecloudiq/model/xiq_deployment_response.py +124 -0
- extremecloudiq/model/xiq_deployment_schedule_action_response.py +81 -0
- extremecloudiq/model/xiq_deployment_status.py +156 -0
- extremecloudiq/model/xiq_deployments_policy_response.py +146 -0
- extremecloudiq/model/xiq_destination_type.py +52 -0
- extremecloudiq/model/xiq_device.py +501 -0
- extremecloudiq/model/xiq_device_admin_state.py +65 -0
- extremecloudiq/model/xiq_device_alarm.py +141 -0
- extremecloudiq/model/xiq_device_category.py +52 -0
- extremecloudiq/model/xiq_device_client_monitor.py +91 -0
- extremecloudiq/model/xiq_device_cpu_memory_usage.py +101 -0
- extremecloudiq/model/xiq_device_field.py +220 -0
- extremecloudiq/model/xiq_device_filter.py +103 -0
- extremecloudiq/model/xiq_device_firmware_metadata.py +200 -0
- extremecloudiq/model/xiq_device_function.py +87 -0
- extremecloudiq/model/xiq_device_geolocation.py +152 -0
- extremecloudiq/model/xiq_device_ibeacon.py +206 -0
- extremecloudiq/model/xiq_device_installation_report.py +211 -0
- extremecloudiq/model/xiq_device_interface_radio_mode.py +160 -0
- extremecloudiq/model/xiq_device_iot_interface_settings_entry.py +96 -0
- extremecloudiq/model/xiq_device_level_ssid.py +106 -0
- extremecloudiq/model/xiq_device_level_ssid_status.py +98 -0
- extremecloudiq/model/xiq_device_lldp_cdp_info.py +131 -0
- extremecloudiq/model/xiq_device_location.py +214 -0
- extremecloudiq/model/xiq_device_location_assignment.py +126 -0
- extremecloudiq/model/xiq_device_monitor_refresh_response.py +86 -0
- extremecloudiq/model/xiq_device_monitor_refresh_status_response.py +150 -0
- extremecloudiq/model/xiq_device_null_field.py +50 -0
- extremecloudiq/model/xiq_device_radio_operating_mode.py +122 -0
- extremecloudiq/model/xiq_device_sort_field.py +52 -0
- extremecloudiq/model/xiq_device_stats.py +99 -0
- extremecloudiq/model/xiq_device_stats_entity.py +146 -0
- extremecloudiq/model/xiq_device_type.py +55 -0
- extremecloudiq/model/xiq_device_view.py +72 -0
- extremecloudiq/model/xiq_device_wifi_interface.py +361 -0
- extremecloudiq/model/xiq_device_wireless_interface_entry.py +101 -0
- extremecloudiq/model/xiq_devices.py +135 -0
- extremecloudiq/model/xiq_dfs_channel_changes_entity.py +96 -0
- extremecloudiq/model/xiq_dfs_channel_stats_entity.py +96 -0
- extremecloudiq/model/xiq_dfs_recurence_channel_stats_response.py +128 -0
- extremecloudiq/model/xiq_dfs_recurence_count_stats_response.py +118 -0
- extremecloudiq/model/xiq_digital_twin_device.py +201 -0
- extremecloudiq/model/xiq_digital_twin_devices.py +110 -0
- extremecloudiq/model/xiq_digital_twin_feat_license.py +72 -0
- extremecloudiq/model/xiq_digital_twin_make.py +52 -0
- extremecloudiq/model/xiq_digital_twin_model.py +237 -0
- extremecloudiq/model/xiq_digital_twin_onboard_device.py +127 -0
- extremecloudiq/model/xiq_digital_twin_products.py +142 -0
- extremecloudiq/model/xiq_digital_twin_vim_module.py +67 -0
- extremecloudiq/model/xiq_duplex_data_rate_entity.py +106 -0
- extremecloudiq/model/xiq_ekahau_floor_import_result.py +119 -0
- extremecloudiq/model/xiq_ekahau_floor_import_status.py +52 -0
- extremecloudiq/model/xiq_ekahau_floor_to_floor_association.py +98 -0
- extremecloudiq/model/xiq_ekahau_floor_to_outdoor_site_association.py +110 -0
- extremecloudiq/model/xiq_ekahau_import_details.py +113 -0
- extremecloudiq/model/xiq_ekahau_import_issue.py +136 -0
- extremecloudiq/model/xiq_ekahau_import_issues.py +244 -0
- extremecloudiq/model/xiq_elevation.py +119 -0
- extremecloudiq/model/xiq_ellipse.py +99 -0
- extremecloudiq/model/xiq_email_log.py +156 -0
- extremecloudiq/model/xiq_email_template.py +211 -0
- extremecloudiq/model/xiq_end_user.py +274 -0
- extremecloudiq/model/xiq_entitlement_type.py +62 -0
- extremecloudiq/model/xiq_error.py +108 -0
- extremecloudiq/model/xiq_excluded_vlan_action_type.py +57 -0
- extremecloudiq/model/xiq_exos_device.py +123 -0
- extremecloudiq/model/xiq_exos_devices.py +108 -0
- extremecloudiq/model/xiq_expiration_action_type.py +52 -0
- extremecloudiq/model/xiq_expiration_settings.py +156 -0
- extremecloudiq/model/xiq_expiration_type.py +62 -0
- extremecloudiq/model/xiq_external_account.py +156 -0
- extremecloudiq/model/xiq_external_radius_server.py +207 -0
- extremecloudiq/model/xiq_external_user.py +189 -0
- extremecloudiq/model/xiq_external_user_directory.py +241 -0
- extremecloudiq/model/xiq_external_user_directory_entry.py +103 -0
- extremecloudiq/model/xiq_external_user_directory_type.py +52 -0
- extremecloudiq/model/xiq_extreme_device.py +123 -0
- extremecloudiq/model/xiq_extreme_devices.py +108 -0
- extremecloudiq/model/xiq_failure_onboard_device.py +101 -0
- extremecloudiq/model/xiq_feedback_type.py +52 -0
- extremecloudiq/model/xiq_firmware_activate_option.py +101 -0
- extremecloudiq/model/xiq_firmware_metadatas_request.py +135 -0
- extremecloudiq/model/xiq_firmware_metadatas_response.py +136 -0
- extremecloudiq/model/xiq_firmware_upgrade_policy.py +91 -0
- extremecloudiq/model/xiq_firmware_upgrade_version.py +106 -0
- extremecloudiq/model/xiq_flap_count_entity.py +116 -0
- extremecloudiq/model/xiq_floor.py +243 -0
- extremecloudiq/model/xiq_forensic_bucket.py +75 -0
- extremecloudiq/model/xiq_ftm_settings.py +185 -0
- extremecloudiq/model/xiq_ftm_settings_request.py +147 -0
- extremecloudiq/model/xiq_generate_api_token_request.py +126 -0
- extremecloudiq/model/xiq_generate_api_token_response.py +174 -0
- extremecloudiq/model/xiq_get_afc_spectrum_for_ap_request.py +161 -0
- extremecloudiq/model/xiq_get_afc_spectrum_for_site_aps_request.py +161 -0
- extremecloudiq/model/xiq_get_device_info_by_nos.py +106 -0
- extremecloudiq/model/xiq_get_device_infoby_nos_request.py +133 -0
- extremecloudiq/model/xiq_get_port_assignment_details_response.py +135 -0
- extremecloudiq/model/xiq_grant_external_user_request.py +143 -0
- extremecloudiq/model/xiq_hardware_health_client_list_response.py +108 -0
- extremecloudiq/model/xiq_hardware_health_cpu_mem_stats_response.py +108 -0
- extremecloudiq/model/xiq_hardware_health_device_stats_entity.py +136 -0
- extremecloudiq/model/xiq_hardware_health_packet_counts_entity.py +156 -0
- extremecloudiq/model/xiq_hardware_health_reboot_stats_entity.py +96 -0
- extremecloudiq/model/xiq_hardware_health_stats_response.py +180 -0
- extremecloudiq/model/xiq_hh_client_stats_entity.py +136 -0
- extremecloudiq/model/xiq_hh_cpu_mem_stats_entity.py +116 -0
- extremecloudiq/model/xiq_hiq_context.py +118 -0
- extremecloudiq/model/xiq_hiq_status.py +84 -0
- extremecloudiq/model/xiq_host_name_address_profile.py +223 -0
- extremecloudiq/model/xiq_hotspot_access_network_type.py +82 -0
- extremecloudiq/model/xiq_hotspot_cellular_network.py +128 -0
- extremecloudiq/model/xiq_hotspot_connection_capability.py +129 -0
- extremecloudiq/model/xiq_hotspot_connection_capability_protocol.py +62 -0
- extremecloudiq/model/xiq_hotspot_connection_capability_status.py +57 -0
- extremecloudiq/model/xiq_hotspot_eap_method.py +72 -0
- extremecloudiq/model/xiq_hotspot_ipv4_availability_type.py +82 -0
- extremecloudiq/model/xiq_hotspot_ipv6_availability_type.py +57 -0
- extremecloudiq/model/xiq_hotspot_localized_name.py +117 -0
- extremecloudiq/model/xiq_hotspot_nai_encoding_type.py +52 -0
- extremecloudiq/model/xiq_hotspot_nai_realm.py +147 -0
- extremecloudiq/model/xiq_hotspot_online_signup.py +120 -0
- extremecloudiq/model/xiq_hotspot_osu_network_auth_type.py +57 -0
- extremecloudiq/model/xiq_hotspot_profile.py +528 -0
- extremecloudiq/model/xiq_hotspot_profile_request.py +484 -0
- extremecloudiq/model/xiq_hotspot_qos_ah_class_to_dscp_range.py +140 -0
- extremecloudiq/model/xiq_hotspot_qos_dscp_exception.py +118 -0
- extremecloudiq/model/xiq_hotspot_qos_map.py +144 -0
- extremecloudiq/model/xiq_hotspot_roaming_consortium.py +106 -0
- extremecloudiq/model/xiq_hotspot_service_provider_icon_file.py +135 -0
- extremecloudiq/model/xiq_hotspot_service_provider_osu_method.py +52 -0
- extremecloudiq/model/xiq_hotspot_service_provider_profile.py +394 -0
- extremecloudiq/model/xiq_hotspot_service_provider_profile_request.py +366 -0
- extremecloudiq/model/xiq_hotspot_venue.py +136 -0
- extremecloudiq/model/xiq_hotspot_venue_group.py +102 -0
- extremecloudiq/model/xiq_hotspot_venue_type.py +317 -0
- extremecloudiq/model/xiq_hotspot_wan_link_status.py +57 -0
- extremecloudiq/model/xiq_hotspot_wan_metrics.py +135 -0
- extremecloudiq/model/xiq_http_method.py +62 -0
- extremecloudiq/model/xiq_http_server.py +110 -0
- extremecloudiq/model/xiq_init_key_based_pcg_network_policy_request.py +137 -0
- extremecloudiq/model/xiq_initialize_location_request.py +101 -0
- extremecloudiq/model/xiq_internal_radius_device.py +156 -0
- extremecloudiq/model/xiq_internal_radius_server.py +449 -0
- extremecloudiq/model/xiq_internal_radius_server_authentication_method.py +67 -0
- extremecloudiq/model/xiq_internal_radius_server_authentication_method_group.py +72 -0
- extremecloudiq/model/xiq_iot_application_id.py +47 -0
- extremecloudiq/model/xiq_iot_application_supported.py +52 -0
- extremecloudiq/model/xiq_iot_profile.py +193 -0
- extremecloudiq/model/xiq_iot_profile_request.py +159 -0
- extremecloudiq/model/xiq_iot_profile_thread_gateway.py +297 -0
- extremecloudiq/model/xiq_iotp_ma_ble_beacon.py +108 -0
- extremecloudiq/model/xiq_iotp_ma_ble_beacon_app_type.py +52 -0
- extremecloudiq/model/xiq_iotp_ma_ble_beacon_application.py +230 -0
- extremecloudiq/model/xiq_iotp_ma_ble_scan.py +122 -0
- extremecloudiq/model/xiq_iotp_ma_ble_scan_app_type.py +57 -0
- extremecloudiq/model/xiq_iotp_ma_ble_scan_application.py +167 -0
- extremecloudiq/model/xiq_iotp_ma_ble_scan_destination.py +106 -0
- extremecloudiq/model/xiq_iotp_ma_ble_scan_vendor.py +116 -0
- extremecloudiq/model/xiq_iotp_ma_ble_scan_vendor_type.py +57 -0
- extremecloudiq/model/xiq_iotp_tg_white_list_entry.py +118 -0
- extremecloudiq/model/xiq_ip_address_profile.py +223 -0
- extremecloudiq/model/xiq_ip_firewall.py +187 -0
- extremecloudiq/model/xiq_ip_firewall_action.py +67 -0
- extremecloudiq/model/xiq_ip_firewall_policy_request.py +128 -0
- extremecloudiq/model/xiq_ip_firewall_rule.py +204 -0
- extremecloudiq/model/xiq_ip_firewall_rule_request.py +130 -0
- extremecloudiq/model/xiq_ip_range_address_profile.py +233 -0
- extremecloudiq/model/xiq_key_based_pcg.py +205 -0
- extremecloudiq/model/xiq_key_based_pcg_user.py +156 -0
- extremecloudiq/model/xiq_key_based_pcg_user_base_info.py +110 -0
- extremecloudiq/model/xiq_l3_address_profile.py +225 -0
- extremecloudiq/model/xiq_l3_address_profile_response.py +156 -0
- extremecloudiq/model/xiq_l3_address_type.py +72 -0
- extremecloudiq/model/xiq_ldap_protocol_type.py +52 -0
- extremecloudiq/model/xiq_ldap_server.py +271 -0
- extremecloudiq/model/xiq_ldap_server_verification_mode.py +57 -0
- extremecloudiq/model/xiq_license_mode.py +67 -0
- extremecloudiq/model/xiq_license_status.py +72 -0
- extremecloudiq/model/xiq_list_afc_servers.py +106 -0
- extremecloudiq/model/xiq_list_alert_policies.py +121 -0
- extremecloudiq/model/xiq_location.py +211 -0
- extremecloudiq/model/xiq_location_legend.py +91 -0
- extremecloudiq/model/xiq_location_tree_device.py +198 -0
- extremecloudiq/model/xiq_location_tree_map.py +118 -0
- extremecloudiq/model/xiq_location_type.py +57 -0
- extremecloudiq/model/xiq_logging_type.py +67 -0
- extremecloudiq/model/xiq_login_request.py +96 -0
- extremecloudiq/model/xiq_login_response.py +108 -0
- extremecloudiq/model/xiq_mac_firewall.py +187 -0
- extremecloudiq/model/xiq_mac_firewall_action.py +52 -0
- extremecloudiq/model/xiq_mac_firewall_policy_request.py +128 -0
- extremecloudiq/model/xiq_mac_firewall_rule.py +176 -0
- extremecloudiq/model/xiq_mac_firewall_rule_request.py +120 -0
- extremecloudiq/model/xiq_mac_object.py +195 -0
- extremecloudiq/model/xiq_mac_object_type.py +57 -0
- extremecloudiq/model/xiq_measurement_unit.py +52 -0
- extremecloudiq/model/xiq_missing_vlan_affected_device_entity.py +133 -0
- extremecloudiq/model/xiq_missing_vlan_anomalies_count_response.py +118 -0
- extremecloudiq/model/xiq_missing_vlan_excluded_vlan_details.py +135 -0
- extremecloudiq/model/xiq_missing_vlan_excluded_vlan_details_list_request.py +149 -0
- extremecloudiq/model/xiq_missing_vlan_excluded_vlan_list.py +118 -0
- extremecloudiq/model/xiq_missing_vlan_info.py +138 -0
- extremecloudiq/model/xiq_missing_vlan_site_anomaly_count_details.py +101 -0
- extremecloudiq/model/xiq_network_alg_type.py +72 -0
- extremecloudiq/model/xiq_network_ip_protocol.py +62 -0
- extremecloudiq/model/xiq_network_policy.py +164 -0
- extremecloudiq/model/xiq_network_policy_field.py +80 -0
- extremecloudiq/model/xiq_network_policy_type.py +77 -0
- extremecloudiq/model/xiq_network_policy_view.py +52 -0
- extremecloudiq/model/xiq_network_service.py +221 -0
- extremecloudiq/model/xiq_network_service_request.py +138 -0
- extremecloudiq/model/xiq_onboard_device_request.py +156 -0
- extremecloudiq/model/xiq_onboard_error.py +257 -0
- extremecloudiq/model/xiq_onboard_key_based_pcg_request.py +132 -0
- extremecloudiq/model/xiq_onboard_key_based_pcg_response.py +110 -0
- extremecloudiq/model/xiq_operation_metadata.py +189 -0
- extremecloudiq/model/xiq_operation_object.py +139 -0
- extremecloudiq/model/xiq_operation_status.py +72 -0
- extremecloudiq/model/xiq_organization.py +157 -0
- extremecloudiq/model/xiq_organization_type.py +52 -0
- extremecloudiq/model/xiq_os_object.py +120 -0
- extremecloudiq/model/xiq_packet_capture.py +310 -0
- extremecloudiq/model/xiq_packet_capture_field.py +120 -0
- extremecloudiq/model/xiq_packet_capture_sort_field.py +55 -0
- extremecloudiq/model/xiq_packet_capture_status.py +67 -0
- extremecloudiq/model/xiq_password_character_type.py +57 -0
- extremecloudiq/model/xiq_password_db_location.py +52 -0
- extremecloudiq/model/xiq_password_settings.py +159 -0
- extremecloudiq/model/xiq_password_type.py +52 -0
- extremecloudiq/model/xiq_pcg_assign_ports_request.py +113 -0
- extremecloudiq/model/xiq_pcg_assign_ports_response.py +137 -0
- extremecloudiq/model/xiq_pcg_port_assignment.py +116 -0
- extremecloudiq/model/xiq_pcg_port_assignment_entry.py +162 -0
- extremecloudiq/model/xiq_pcg_port_assignment_entry_detail.py +175 -0
- extremecloudiq/model/xiq_pcg_port_assignment_entry_device_meta.py +156 -0
- extremecloudiq/model/xiq_pcg_port_assignment_entry_eth_user_meta.py +202 -0
- extremecloudiq/model/xiq_pcg_type.py +52 -0
- extremecloudiq/model/xiq_permission.py +110 -0
- extremecloudiq/model/xiq_poe_flapping_stats_response.py +118 -0
- extremecloudiq/model/xiq_poe_trend_graphs_response.py +108 -0
- extremecloudiq/model/xiq_policy_rule_protocol_type.py +87 -0
- extremecloudiq/model/xiq_port_efficiency_speed_duplex_stats_response.py +108 -0
- extremecloudiq/model/xiq_port_efficiency_stats_response.py +108 -0
- extremecloudiq/model/xiq_post_expiration_action.py +116 -0
- extremecloudiq/model/xiq_power_source_equipment.py +204 -0
- extremecloudiq/model/xiq_psk_generation_method.py +52 -0
- extremecloudiq/model/xiq_quality_index.py +62 -0
- extremecloudiq/model/xiq_radio.py +213 -0
- extremecloudiq/model/xiq_radio_bands.py +77 -0
- extremecloudiq/model/xiq_radio_entity.py +123 -0
- extremecloudiq/model/xiq_radio_mode.py +97 -0
- extremecloudiq/model/xiq_radio_operating_modes.py +120 -0
- extremecloudiq/model/xiq_radio_profile.py +295 -0
- extremecloudiq/model/xiq_radius_client.py +111 -0
- extremecloudiq/model/xiq_radius_client_object.py +253 -0
- extremecloudiq/model/xiq_radius_client_object_entry.py +119 -0
- extremecloudiq/model/xiq_radius_client_object_type.py +57 -0
- extremecloudiq/model/xiq_radius_client_profile.py +128 -0
- extremecloudiq/model/xiq_radius_client_profile_entry.py +91 -0
- extremecloudiq/model/xiq_radius_proxy.py +267 -0
- extremecloudiq/model/xiq_radius_proxy_format_type.py +62 -0
- extremecloudiq/model/xiq_radius_proxy_realm.py +111 -0
- extremecloudiq/model/xiq_radius_server_type.py +57 -0
- extremecloudiq/model/xiq_recurrence_type.py +52 -0
- extremecloudiq/model/xiq_regenerate_end_user_password_response.py +86 -0
- extremecloudiq/model/xiq_rf_environment_type.py +77 -0
- extremecloudiq/model/xiq_rp_channel_selection.py +330 -0
- extremecloudiq/model/xiq_rp_mac_oui_profile.py +180 -0
- extremecloudiq/model/xiq_rp_miscellaneous_settings.py +167 -0
- extremecloudiq/model/xiq_rp_neighborhood_analysis.py +160 -0
- extremecloudiq/model/xiq_rp_radio_usage_optimization.py +487 -0
- extremecloudiq/model/xiq_rp_sensor_scan_settings.py +140 -0
- extremecloudiq/model/xiq_rp_wmm_qos_settings.py +170 -0
- extremecloudiq/model/xiq_rtts_session_response.py +79 -0
- extremecloudiq/model/xiq_schedule.py +197 -0
- extremecloudiq/model/xiq_schedule_details.py +86 -0
- extremecloudiq/model/xiq_schedule_status.py +72 -0
- extremecloudiq/model/xiq_schedule_type.py +52 -0
- extremecloudiq/model/xiq_send_cli_request.py +125 -0
- extremecloudiq/model/xiq_send_cli_response.py +136 -0
- extremecloudiq/model/xiq_server_role.py +62 -0
- extremecloudiq/model/xiq_sessions_data_entity.py +116 -0
- extremecloudiq/model/xiq_set_ssid_mode_dot1x_request.py +181 -0
- extremecloudiq/model/xiq_set_ssid_mode_ppsk_request.py +215 -0
- extremecloudiq/model/xiq_set_ssid_mode_psk_request.py +178 -0
- extremecloudiq/model/xiq_set_ssid_mode_wep_request.py +235 -0
- extremecloudiq/model/xiq_site.py +223 -0
- extremecloudiq/model/xiq_site_afc_schedule.py +109 -0
- extremecloudiq/model/xiq_site_info.py +128 -0
- extremecloudiq/model/xiq_sites_by_wired_entity.py +111 -0
- extremecloudiq/model/xiq_sites_by_wireless_entity.py +111 -0
- extremecloudiq/model/xiq_sms_log.py +191 -0
- extremecloudiq/model/xiq_sms_log_status.py +62 -0
- extremecloudiq/model/xiq_sms_template.py +181 -0
- extremecloudiq/model/xiq_sort_field.py +50 -0
- extremecloudiq/model/xiq_sort_order.py +50 -0
- extremecloudiq/model/xiq_spectrum_mismatch_summary.py +99 -0
- extremecloudiq/model/xiq_speed_duplex_entity.py +106 -0
- extremecloudiq/model/xiq_ssid.py +305 -0
- extremecloudiq/model/xiq_ssid_access_security.py +168 -0
- extremecloudiq/model/xiq_ssid_access_security_type.py +72 -0
- extremecloudiq/model/xiq_ssid_advanced_settings.py +120 -0
- extremecloudiq/model/xiq_ssid_dot1x_encryption_method.py +62 -0
- extremecloudiq/model/xiq_ssid_dot1x_key_management.py +62 -0
- extremecloudiq/model/xiq_ssid_encryption_method.py +72 -0
- extremecloudiq/model/xiq_ssid_key_management.py +92 -0
- extremecloudiq/model/xiq_ssid_key_type.py +52 -0
- extremecloudiq/model/xiq_ssid_ppsk_key_management.py +57 -0
- extremecloudiq/model/xiq_ssid_psk_encryption_method.py +57 -0
- extremecloudiq/model/xiq_ssid_psk_key_management.py +62 -0
- extremecloudiq/model/xiq_ssid_sae_group.py +57 -0
- extremecloudiq/model/xiq_ssid_status.py +52 -0
- extremecloudiq/model/xiq_ssid_wep_authentication_method.py +52 -0
- extremecloudiq/model/xiq_ssid_wep_default_key.py +62 -0
- extremecloudiq/model/xiq_ssid_wep_encryption_method.py +52 -0
- extremecloudiq/model/xiq_ssid_wep_key_management.py +52 -0
- extremecloudiq/model/xiq_storage.py +96 -0
- extremecloudiq/model/xiq_subnet_address_profile.py +233 -0
- extremecloudiq/model/xiq_subscription_data_type.py +82 -0
- extremecloudiq/model/xiq_subscription_message_type.py +87 -0
- extremecloudiq/model/xiq_subscription_status.py +52 -0
- extremecloudiq/model/xiq_success_onboard_device.py +98 -0
- extremecloudiq/model/xiq_thread_backbone_border_router_service.py +81 -0
- extremecloudiq/model/xiq_thread_border_agent_service.py +91 -0
- extremecloudiq/model/xiq_thread_border_router_service.py +171 -0
- extremecloudiq/model/xiq_thread_commissioner_service.py +81 -0
- extremecloudiq/model/xiq_thread_ipv6_setting.py +111 -0
- extremecloudiq/model/xiq_thread_leader_service.py +111 -0
- extremecloudiq/model/xiq_thread_mle_link_mode.py +101 -0
- extremecloudiq/model/xiq_thread_nat64_service.py +101 -0
- extremecloudiq/model/xiq_thread_net_data_prefix.py +199 -0
- extremecloudiq/model/xiq_thread_net_data_route.py +129 -0
- extremecloudiq/model/xiq_thread_net_data_service.py +129 -0
- extremecloudiq/model/xiq_thread_network_config.py +261 -0
- extremecloudiq/model/xiq_thread_network_data.py +200 -0
- extremecloudiq/model/xiq_thread_network_interface.py +268 -0
- extremecloudiq/model/xiq_thread_network_topology.py +180 -0
- extremecloudiq/model/xiq_thread_networks.py +108 -0
- extremecloudiq/model/xiq_thread_router.py +438 -0
- extremecloudiq/model/xiq_thread_router_neighbor.py +111 -0
- extremecloudiq/model/xiq_thread_start_commissioner_request.py +116 -0
- extremecloudiq/model/xiq_thread_stop_commissioner_request.py +96 -0
- extremecloudiq/model/xiq_thread_version.py +111 -0
- extremecloudiq/model/xiq_top_applications_usage.py +121 -0
- extremecloudiq/model/xiq_traffic.py +52 -0
- extremecloudiq/model/xiq_trend_graph_entity.py +96 -0
- extremecloudiq/model/xiq_trend_indicator.py +62 -0
- extremecloudiq/model/xiq_tunnel_concentrator.py +398 -0
- extremecloudiq/model/xiq_tunnel_concentrator_request.py +360 -0
- extremecloudiq/model/xiq_ucp_engine.py +193 -0
- extremecloudiq/model/xiq_ucp_engine_instance.py +98 -0
- extremecloudiq/model/xiq_ucp_engines.py +113 -0
- extremecloudiq/model/xiq_unaffected_downlink_device.py +111 -0
- extremecloudiq/model/xiq_update_action_anomaly_details.py +123 -0
- extremecloudiq/model/xiq_update_alert_email_subscription_request.py +138 -0
- extremecloudiq/model/xiq_update_alert_rule_request.py +149 -0
- extremecloudiq/model/xiq_update_alert_webhook_subscription_request.py +148 -0
- extremecloudiq/model/xiq_update_anomalies_and_devices_request.py +129 -0
- extremecloudiq/model/xiq_update_building_request.py +133 -0
- extremecloudiq/model/xiq_update_classification_request.py +155 -0
- extremecloudiq/model/xiq_update_classification_rule_request.py +133 -0
- extremecloudiq/model/xiq_update_client_monitor_profile_request.py +148 -0
- extremecloudiq/model/xiq_update_cloud_config_group_request.py +121 -0
- extremecloudiq/model/xiq_update_device_level_ssid_status.py +159 -0
- extremecloudiq/model/xiq_update_end_user_request.py +159 -0
- extremecloudiq/model/xiq_update_external_radius_server_request.py +167 -0
- extremecloudiq/model/xiq_update_external_user_request.py +126 -0
- extremecloudiq/model/xiq_update_firmware_upgrade_request.py +114 -0
- extremecloudiq/model/xiq_update_floor_request.py +185 -0
- extremecloudiq/model/xiq_update_internal_radius_server_request.py +349 -0
- extremecloudiq/model/xiq_update_key_based_pcg_users_request.py +113 -0
- extremecloudiq/model/xiq_update_l3_address_profile_request.py +171 -0
- extremecloudiq/model/xiq_update_ldap_server_request.py +227 -0
- extremecloudiq/model/xiq_update_location_request.py +96 -0
- extremecloudiq/model/xiq_update_mac_object_request.py +109 -0
- extremecloudiq/model/xiq_update_missing_vlan_excluded_vlan_response.py +81 -0
- extremecloudiq/model/xiq_update_network_policy_request.py +104 -0
- extremecloudiq/model/xiq_update_radio_profile_request.py +244 -0
- extremecloudiq/model/xiq_update_radius_client.py +111 -0
- extremecloudiq/model/xiq_update_radius_client_object_request.py +174 -0
- extremecloudiq/model/xiq_update_radius_proxy_realm.py +111 -0
- extremecloudiq/model/xiq_update_radius_proxy_request.py +220 -0
- extremecloudiq/model/xiq_update_rp_channel_selection_request.py +329 -0
- extremecloudiq/model/xiq_update_rp_mac_oui_profile_request.py +119 -0
- extremecloudiq/model/xiq_update_rp_miscellaneous_settings_request.py +99 -0
- extremecloudiq/model/xiq_update_rp_neighborhood_analysis_request.py +129 -0
- extremecloudiq/model/xiq_update_rp_radio_usage_optimization_request.py +581 -0
- extremecloudiq/model/xiq_update_rp_sensor_scan_settings_request.py +99 -0
- extremecloudiq/model/xiq_update_rp_wmm_qos_settings_request.py +159 -0
- extremecloudiq/model/xiq_update_site_request.py +141 -0
- extremecloudiq/model/xiq_update_ssid_advanced_settings_request.py +79 -0
- extremecloudiq/model/xiq_update_user_group_request.py +239 -0
- extremecloudiq/model/xiq_update_user_profile_request.py +89 -0
- extremecloudiq/model/xiq_update_user_request.py +146 -0
- extremecloudiq/model/xiq_update_vlan_object_classified_entry_request.py +98 -0
- extremecloudiq/model/xiq_update_vlan_profile_request.py +145 -0
- extremecloudiq/model/xiq_user.py +257 -0
- extremecloudiq/model/xiq_user_group.py +323 -0
- extremecloudiq/model/xiq_user_profile.py +137 -0
- extremecloudiq/model/xiq_user_profile_assignment.py +376 -0
- extremecloudiq/model/xiq_user_profile_assignment_radius_attribute.py +96 -0
- extremecloudiq/model/xiq_user_profile_assignment_rule.py +110 -0
- extremecloudiq/model/xiq_user_role.py +82 -0
- extremecloudiq/model/xiq_valid_daily_settings.py +122 -0
- extremecloudiq/model/xiq_valid_during_date_settings.py +118 -0
- extremecloudiq/model/xiq_valid_for_time_period_settings.py +119 -0
- extremecloudiq/model/xiq_valid_time_period_after_first_login.py +130 -0
- extremecloudiq/model/xiq_valid_time_period_after_id_creation.py +103 -0
- extremecloudiq/model/xiq_valid_time_period_after_type.py +52 -0
- extremecloudiq/model/xiq_viq.py +186 -0
- extremecloudiq/model/xiq_viq_export_import_status_response.py +158 -0
- extremecloudiq/model/xiq_viq_export_response.py +110 -0
- extremecloudiq/model/xiq_viq_import_response.py +98 -0
- extremecloudiq/model/xiq_viq_license.py +223 -0
- extremecloudiq/model/xiq_viq_operation_type.py +50 -0
- extremecloudiq/model/xiq_viq_task_progress.py +109 -0
- extremecloudiq/model/xiq_vlan_object_classified_entry.py +157 -0
- extremecloudiq/model/xiq_vlan_profile.py +203 -0
- extremecloudiq/model/xiq_vlan_profile_filter.py +103 -0
- extremecloudiq/model/xiq_voss_device.py +123 -0
- extremecloudiq/model/xiq_voss_devices.py +108 -0
- extremecloudiq/model/xiq_webhook_subscription.py +195 -0
- extremecloudiq/model/xiq_weekday.py +77 -0
- extremecloudiq/model/xiq_wgs84.py +110 -0
- extremecloudiq/model/xiq_wifi_capacity_client_list_response.py +108 -0
- extremecloudiq/model/xiq_wifi_capacity_stats_response.py +108 -0
- extremecloudiq/model/xiq_wifi_efficiency_client_list_response.py +108 -0
- extremecloudiq/model/xiq_wifi_efficiency_stats_response.py +128 -0
- extremecloudiq/model/xiq_wildcard_address_profile.py +233 -0
- extremecloudiq/model/xiq_wildcard_host_name_address_profile.py +223 -0
- extremecloudiq/model/xiq_wing_device.py +135 -0
- extremecloudiq/model/xiq_wing_devices.py +114 -0
- extremecloudiq/model/xiq_wired_event_entity.py +141 -0
- extremecloudiq/model/xiq_wired_filter_type.py +67 -0
- extremecloudiq/model/xiq_wired_hardware_by_location_response.py +128 -0
- extremecloudiq/model/xiq_wired_hardware_entity.py +126 -0
- extremecloudiq/model/xiq_wired_hardware_response.py +108 -0
- extremecloudiq/model/xiq_wired_quality_index_response.py +91 -0
- extremecloudiq/model/xiq_wired_view_type.py +45 -0
- extremecloudiq/model/xiq_wireless_apps_response.py +121 -0
- extremecloudiq/model/xiq_wireless_client.py +120 -0
- extremecloudiq/model/xiq_wireless_connectivity_performance_response.py +108 -0
- extremecloudiq/model/xiq_wireless_event_retries_entity.py +131 -0
- extremecloudiq/model/xiq_wireless_filter_type.py +72 -0
- extremecloudiq/model/xiq_wireless_if_name.py +57 -0
- extremecloudiq/model/xiq_wireless_performance_entity.py +151 -0
- extremecloudiq/model/xiq_wireless_performance_retries_entity.py +101 -0
- extremecloudiq/model/xiq_wireless_quality_index_by_location_response.py +111 -0
- extremecloudiq/model/xiq_wireless_quality_index_response.py +101 -0
- extremecloudiq/model/xiq_wireless_time_to_connect_entity.py +186 -0
- extremecloudiq/model/xiq_wireless_time_to_connect_response.py +108 -0
- extremecloudiq/model/xiq_wireless_views_list_type.py +50 -0
- extremecloudiq/model/xiq_wireless_views_type_response.py +103 -0
- extremecloudiq/model/xiq_wireless_wlan.py +130 -0
- extremecloudiq/model/xiq_zsubelement.py +113 -0
- extremecloudiq/model/xiq_zsubelement_above_floor.py +98 -0
- extremecloudiq/models/__init__.py +730 -700
- extremecloudiq/paths/__init__.py +337 -0
- extremecloudiq/paths/account_external/__init__.py +7 -0
- extremecloudiq/paths/account_external/get.py +329 -0
- extremecloudiq/paths/account_home/__init__.py +7 -0
- extremecloudiq/paths/account_home/get.py +304 -0
- extremecloudiq/paths/account_switch/__init__.py +7 -0
- extremecloudiq/paths/account_switch/post.py +358 -0
- extremecloudiq/paths/account_viq/__init__.py +7 -0
- extremecloudiq/paths/account_viq/get.py +304 -0
- extremecloudiq/paths/account_viq_backup/__init__.py +7 -0
- extremecloudiq/paths/account_viq_backup/post.py +296 -0
- extremecloudiq/paths/account_viq_default_device_password/__init__.py +7 -0
- extremecloudiq/paths/account_viq_default_device_password/get.py +304 -0
- extremecloudiq/paths/account_viq_default_device_password/put.py +390 -0
- extremecloudiq/paths/account_viq_download/__init__.py +7 -0
- extremecloudiq/paths/account_viq_download/get.py +380 -0
- extremecloudiq/paths/account_viq_export/__init__.py +7 -0
- extremecloudiq/paths/account_viq_export/post.py +367 -0
- extremecloudiq/paths/account_viq_export_import_status/__init__.py +7 -0
- extremecloudiq/paths/account_viq_export_import_status/get.py +360 -0
- extremecloudiq/paths/account_viq_import/__init__.py +7 -0
- extremecloudiq/paths/account_viq_import/post.py +515 -0
- extremecloudiq/paths/ad_servers/__init__.py +7 -0
- extremecloudiq/paths/ad_servers/get.py +386 -0
- extremecloudiq/paths/afcserver/__init__.py +7 -0
- extremecloudiq/paths/afcserver/get.py +359 -0
- extremecloudiq/paths/afcserver_server_id/__init__.py +7 -0
- extremecloudiq/paths/afcserver_server_id/get.py +358 -0
- extremecloudiq/paths/afcserver_statistics_server_id/__init__.py +7 -0
- extremecloudiq/paths/afcserver_statistics_server_id/get.py +432 -0
- extremecloudiq/paths/alert_policies/__init__.py +7 -0
- extremecloudiq/paths/alert_policies/get.py +368 -0
- extremecloudiq/paths/alert_policies/post.py +399 -0
- extremecloudiq/paths/alert_policies_available_sites/__init__.py +7 -0
- extremecloudiq/paths/alert_policies_available_sites/get.py +329 -0
- extremecloudiq/paths/alert_policies_id/__init__.py +7 -0
- extremecloudiq/paths/alert_policies_id/delete.py +350 -0
- extremecloudiq/paths/alert_policies_id/get.py +358 -0
- extremecloudiq/paths/alert_policies_id/put.py +456 -0
- extremecloudiq/paths/alert_policies_policy_id_rules_rule_id/__init__.py +7 -0
- extremecloudiq/paths/alert_policies_policy_id_rules_rule_id/get.py +367 -0
- extremecloudiq/paths/alert_policies_policy_id_rules_rule_id/put.py +465 -0
- extremecloudiq/paths/alert_policies_policy_id_rules_rule_id_disable/__init__.py +7 -0
- extremecloudiq/paths/alert_policies_policy_id_rules_rule_id_disable/post.py +367 -0
- extremecloudiq/paths/alert_policies_policy_id_rules_rule_id_enable/__init__.py +7 -0
- extremecloudiq/paths/alert_policies_policy_id_rules_rule_id_enable/post.py +367 -0
- extremecloudiq/paths/alert_subscriptions_emails/__init__.py +7 -0
- extremecloudiq/paths/alert_subscriptions_emails/get.py +329 -0
- extremecloudiq/paths/alert_subscriptions_emails/post.py +399 -0
- extremecloudiq/paths/alert_subscriptions_emails_delete/__init__.py +7 -0
- extremecloudiq/paths/alert_subscriptions_emails_delete/post.py +456 -0
- extremecloudiq/paths/alert_subscriptions_emails_id/__init__.py +7 -0
- extremecloudiq/paths/alert_subscriptions_emails_id/delete.py +350 -0
- extremecloudiq/paths/alert_subscriptions_emails_id/get.py +358 -0
- extremecloudiq/paths/alert_subscriptions_emails_id/put.py +456 -0
- extremecloudiq/paths/alert_subscriptions_emails_id_verify/__init__.py +7 -0
- extremecloudiq/paths/alert_subscriptions_emails_id_verify/post.py +350 -0
- extremecloudiq/paths/alert_subscriptions_webhooks/__init__.py +7 -0
- extremecloudiq/paths/alert_subscriptions_webhooks/get.py +329 -0
- extremecloudiq/paths/alert_subscriptions_webhooks/post.py +399 -0
- extremecloudiq/paths/alert_subscriptions_webhooks_delete/__init__.py +7 -0
- extremecloudiq/paths/alert_subscriptions_webhooks_delete/post.py +456 -0
- extremecloudiq/paths/alert_subscriptions_webhooks_id/__init__.py +7 -0
- extremecloudiq/paths/alert_subscriptions_webhooks_id/delete.py +350 -0
- extremecloudiq/paths/alert_subscriptions_webhooks_id/get.py +358 -0
- extremecloudiq/paths/alert_subscriptions_webhooks_id/put.py +456 -0
- extremecloudiq/paths/alerts/__init__.py +7 -0
- extremecloudiq/paths/alerts/get.py +564 -0
- extremecloudiq/paths/alerts_acknowledge/__init__.py +7 -0
- extremecloudiq/paths/alerts_acknowledge/post.py +424 -0
- extremecloudiq/paths/alerts_count_by_group/__init__.py +7 -0
- extremecloudiq/paths/alerts_count_by_group/get.py +467 -0
- extremecloudiq/paths/alerts_reports/__init__.py +7 -0
- extremecloudiq/paths/alerts_reports/post.py +527 -0
- extremecloudiq/paths/alerts_reports_id/__init__.py +7 -0
- extremecloudiq/paths/alerts_reports_id/get.py +379 -0
- extremecloudiq/paths/ap_afc_diagnostics_id/__init__.py +7 -0
- extremecloudiq/paths/ap_afc_diagnostics_id/get.py +412 -0
- extremecloudiq/paths/ap_afc_interface_details_sn/__init__.py +7 -0
- extremecloudiq/paths/ap_afc_interface_details_sn/get.py +358 -0
- extremecloudiq/paths/ap_spectrum_/__init__.py +7 -0
- extremecloudiq/paths/ap_spectrum_/post.py +481 -0
- extremecloudiq/paths/applications/__init__.py +7 -0
- extremecloudiq/paths/applications/get.py +444 -0
- extremecloudiq/paths/applications_id_clients_topn/__init__.py +7 -0
- extremecloudiq/paths/applications_id_clients_topn/get.py +467 -0
- extremecloudiq/paths/applications_topn/__init__.py +7 -0
- extremecloudiq/paths/applications_topn/get.py +458 -0
- extremecloudiq/paths/aps_afc_query_/__init__.py +7 -0
- extremecloudiq/paths/aps_afc_query_/get.py +358 -0
- extremecloudiq/paths/aps_afc_update/__init__.py +7 -0
- extremecloudiq/paths/aps_afc_update/post.py +391 -0
- extremecloudiq/paths/auth_apitoken/__init__.py +7 -0
- extremecloudiq/paths/auth_apitoken/post.py +399 -0
- extremecloudiq/paths/auth_apitoken_info/__init__.py +7 -0
- extremecloudiq/paths/auth_apitoken_info/get.py +304 -0
- extremecloudiq/paths/auth_apitoken_validate/__init__.py +7 -0
- extremecloudiq/paths/auth_apitoken_validate/post.py +386 -0
- extremecloudiq/paths/auth_permissions/__init__.py +7 -0
- extremecloudiq/paths/auth_permissions/get.py +323 -0
- extremecloudiq/paths/auth_permissions_check/__init__.py +7 -0
- extremecloudiq/paths/auth_permissions_check/post.py +419 -0
- extremecloudiq/paths/ccgs/__init__.py +7 -0
- extremecloudiq/paths/ccgs/get.py +415 -0
- extremecloudiq/paths/ccgs/post.py +399 -0
- extremecloudiq/paths/ccgs_id/__init__.py +7 -0
- extremecloudiq/paths/ccgs_id/delete.py +350 -0
- extremecloudiq/paths/ccgs_id/get.py +358 -0
- extremecloudiq/paths/ccgs_id/put.py +456 -0
- extremecloudiq/paths/certificates/__init__.py +7 -0
- extremecloudiq/paths/certificates/get.py +396 -0
- extremecloudiq/paths/classification_rules/__init__.py +7 -0
- extremecloudiq/paths/classification_rules/get.py +386 -0
- extremecloudiq/paths/classification_rules/post.py +399 -0
- extremecloudiq/paths/classification_rules_id/__init__.py +7 -0
- extremecloudiq/paths/classification_rules_id/delete.py +350 -0
- extremecloudiq/paths/classification_rules_id/get.py +358 -0
- extremecloudiq/paths/classification_rules_id/put.py +456 -0
- extremecloudiq/paths/client_monitor_profiles/__init__.py +7 -0
- extremecloudiq/paths/client_monitor_profiles/get.py +386 -0
- extremecloudiq/paths/client_monitor_profiles/post.py +399 -0
- extremecloudiq/paths/client_monitor_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/client_monitor_profiles_id/delete.py +350 -0
- extremecloudiq/paths/client_monitor_profiles_id/get.py +358 -0
- extremecloudiq/paths/client_monitor_profiles_id/put.py +456 -0
- extremecloudiq/paths/clients_active/__init__.py +7 -0
- extremecloudiq/paths/clients_active/get.py +751 -0
- extremecloudiq/paths/clients_active_count/__init__.py +7 -0
- extremecloudiq/paths/clients_active_count/get.py +592 -0
- extremecloudiq/paths/clients_alias/__init__.py +7 -0
- extremecloudiq/paths/clients_alias/put.py +416 -0
- extremecloudiq/paths/clients_by_mac_client_mac/__init__.py +7 -0
- extremecloudiq/paths/clients_by_mac_client_mac/delete.py +350 -0
- extremecloudiq/paths/clients_by_mac_client_mac/get.py +473 -0
- extremecloudiq/paths/clients_id/__init__.py +7 -0
- extremecloudiq/paths/clients_id/get.py +473 -0
- extremecloudiq/paths/clients_summary/__init__.py +7 -0
- extremecloudiq/paths/clients_summary/get.py +562 -0
- extremecloudiq/paths/clients_usage/__init__.py +7 -0
- extremecloudiq/paths/clients_usage/get.py +426 -0
- extremecloudiq/paths/copilot_anomalies_adverse_traffic_device_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_adverse_traffic_device_stats/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_adverse_traffic_packet_counts/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_adverse_traffic_packet_counts/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_anomalies_by_category/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_anomalies_by_category/get.py +406 -0
- extremecloudiq/paths/copilot_anomalies_devices_by_location/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_devices_by_location/get.py +390 -0
- extremecloudiq/paths/copilot_anomalies_devices_feedback/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_devices_feedback/put.py +398 -0
- extremecloudiq/paths/copilot_anomalies_devices_update_action/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_devices_update_action/put.py +398 -0
- extremecloudiq/paths/copilot_anomalies_devices_with_locations/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_devices_with_locations/get.py +472 -0
- extremecloudiq/paths/copilot_anomalies_dfs_recurrence_channel_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_dfs_recurrence_channel_stats/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_dfs_recurrence_count_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_dfs_recurrence_count_stats/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_exclude_vlans/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_exclude_vlans/post.py +398 -0
- extremecloudiq/paths/copilot_anomalies_exclude_vlans_csv/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_exclude_vlans_csv/post.py +715 -0
- extremecloudiq/paths/copilot_anomalies_excluded_vlans_list/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_excluded_vlans_list/get.py +385 -0
- extremecloudiq/paths/copilot_anomalies_hardware_health_client_list/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_hardware_health_client_list/get.py +368 -0
- extremecloudiq/paths/copilot_anomalies_hardware_health_cpu_mem_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_hardware_health_cpu_mem_stats/get.py +379 -0
- extremecloudiq/paths/copilot_anomalies_hardware_health_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_hardware_health_stats/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_locations/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_locations/get.py +424 -0
- extremecloudiq/paths/copilot_anomalies_missing_vlan_count/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_missing_vlan_count/get.py +432 -0
- extremecloudiq/paths/copilot_anomalies_notifications/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_notifications/get.py +303 -0
- extremecloudiq/paths/copilot_anomalies_poeflapping_lldp_cdp_info/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_poeflapping_lldp_cdp_info/get.py +389 -0
- extremecloudiq/paths/copilot_anomalies_poeflapping_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_poeflapping_stats/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_poeflapping_trends/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_poeflapping_trends/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_port_efficiency_speed_duplex_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_port_efficiency_speed_duplex_stats/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_port_efficiency_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_port_efficiency_stats/get.py +367 -0
- extremecloudiq/paths/copilot_anomalies_report/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_report/get.py +453 -0
- extremecloudiq/paths/copilot_anomalies_update_action/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_update_action/put.py +398 -0
- extremecloudiq/paths/copilot_anomalies_update_device_action/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_update_device_action/put.py +448 -0
- extremecloudiq/paths/copilot_anomalies_wifi_capacity_client_list/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_wifi_capacity_client_list/get.py +378 -0
- extremecloudiq/paths/copilot_anomalies_wifi_capacity_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_wifi_capacity_stats/get.py +358 -0
- extremecloudiq/paths/copilot_anomalies_wifi_efficiency_client_list/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_wifi_efficiency_client_list/get.py +378 -0
- extremecloudiq/paths/copilot_anomalies_wifi_efficiency_stats/__init__.py +7 -0
- extremecloudiq/paths/copilot_anomalies_wifi_efficiency_stats/get.py +358 -0
- extremecloudiq/paths/copilot_assurance_scans_overview/__init__.py +7 -0
- extremecloudiq/paths/copilot_assurance_scans_overview/get.py +303 -0
- extremecloudiq/paths/copilot_connectivity_client_type/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_client_type/get.py +397 -0
- extremecloudiq/paths/copilot_connectivity_locations/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_locations/get.py +454 -0
- extremecloudiq/paths/copilot_connectivity_wired_events/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wired_events/get.py +484 -0
- extremecloudiq/paths/copilot_connectivity_wired_experience/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wired_experience/get.py +417 -0
- extremecloudiq/paths/copilot_connectivity_wired_hardware/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wired_hardware/get.py +399 -0
- extremecloudiq/paths/copilot_connectivity_wired_locations_hardware/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wired_locations_hardware/get.py +398 -0
- extremecloudiq/paths/copilot_connectivity_wired_quality_index/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wired_quality_index/get.py +397 -0
- extremecloudiq/paths/copilot_connectivity_wireless_apps/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_apps/get.py +416 -0
- extremecloudiq/paths/copilot_connectivity_wireless_events/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_events/get.py +502 -0
- extremecloudiq/paths/copilot_connectivity_wireless_experience/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_experience/get.py +436 -0
- extremecloudiq/paths/copilot_connectivity_wireless_locations_events/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_locations_events/get.py +492 -0
- extremecloudiq/paths/copilot_connectivity_wireless_locations_performance/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_locations_performance/get.py +406 -0
- extremecloudiq/paths/copilot_connectivity_wireless_locations_quality_index/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_locations_quality_index/get.py +406 -0
- extremecloudiq/paths/copilot_connectivity_wireless_locations_time_to_connect/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_locations_time_to_connect/get.py +406 -0
- extremecloudiq/paths/copilot_connectivity_wireless_performance/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_performance/get.py +416 -0
- extremecloudiq/paths/copilot_connectivity_wireless_quality_index/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_quality_index/get.py +416 -0
- extremecloudiq/paths/copilot_connectivity_wireless_time_to_connect/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_time_to_connect/get.py +416 -0
- extremecloudiq/paths/copilot_connectivity_wireless_views/__init__.py +7 -0
- extremecloudiq/paths/copilot_connectivity_wireless_views/get.py +359 -0
- extremecloudiq/paths/countries/__init__.py +7 -0
- extremecloudiq/paths/countries/get.py +325 -0
- extremecloudiq/paths/countries_country_alpha2_code_states/__init__.py +7 -0
- extremecloudiq/paths/countries_country_alpha2_code_states/get.py +379 -0
- extremecloudiq/paths/countries_country_code_validate/__init__.py +7 -0
- extremecloudiq/paths/countries_country_code_validate/get.py +353 -0
- extremecloudiq/paths/cwps/__init__.py +7 -0
- extremecloudiq/paths/cwps/get.py +386 -0
- extremecloudiq/paths/deployments/__init__.py +7 -0
- extremecloudiq/paths/deployments/get.py +386 -0
- extremecloudiq/paths/deployments/post.py +456 -0
- extremecloudiq/paths/deployments_deployment_id/__init__.py +7 -0
- extremecloudiq/paths/deployments_deployment_id/delete.py +358 -0
- extremecloudiq/paths/deployments_deployment_id/get.py +358 -0
- extremecloudiq/paths/deployments_deployment_id/put.py +456 -0
- extremecloudiq/paths/deployments_deployment_id_status/__init__.py +7 -0
- extremecloudiq/paths/deployments_deployment_id_status/get.py +412 -0
- extremecloudiq/paths/deployments_firmware_metadatas/__init__.py +7 -0
- extremecloudiq/paths/deployments_firmware_metadatas/post.py +399 -0
- extremecloudiq/paths/deployments_overview/__init__.py +7 -0
- extremecloudiq/paths/deployments_overview/get.py +304 -0
- extremecloudiq/paths/deployments_status/__init__.py +7 -0
- extremecloudiq/paths/deployments_status/get.py +413 -0
- extremecloudiq/paths/devices/__init__.py +7 -0
- extremecloudiq/paths/devices/get.py +716 -0
- extremecloudiq/paths/devices_advanced_onboard/__init__.py +7 -0
- extremecloudiq/paths/devices_advanced_onboard/post.py +456 -0
- extremecloudiq/paths/devices_check_ownership/__init__.py +7 -0
- extremecloudiq/paths/devices_check_ownership/post.py +397 -0
- extremecloudiq/paths/devices_cli/__init__.py +7 -0
- extremecloudiq/paths/devices_cli/post.py +456 -0
- extremecloudiq/paths/devices_client_monitor_assign/__init__.py +7 -0
- extremecloudiq/paths/devices_client_monitor_assign/post.py +391 -0
- extremecloudiq/paths/devices_client_monitor_query/__init__.py +7 -0
- extremecloudiq/paths/devices_client_monitor_query/post.py +430 -0
- extremecloudiq/paths/devices_client_monitor_revoke/__init__.py +7 -0
- extremecloudiq/paths/devices_client_monitor_revoke/post.py +391 -0
- extremecloudiq/paths/devices_country_code_assign/__init__.py +7 -0
- extremecloudiq/paths/devices_country_code_assign/post.py +391 -0
- extremecloudiq/paths/devices_delete/__init__.py +7 -0
- extremecloudiq/paths/devices_delete/post.py +448 -0
- extremecloudiq/paths/devices_digital_twin/__init__.py +7 -0
- extremecloudiq/paths/devices_digital_twin/get.py +456 -0
- extremecloudiq/paths/devices_ibeacon/__init__.py +7 -0
- extremecloudiq/paths/devices_ibeacon/put.py +391 -0
- extremecloudiq/paths/devices_id/__init__.py +7 -0
- extremecloudiq/paths/devices_id/delete.py +404 -0
- extremecloudiq/paths/devices_id/get.py +473 -0
- extremecloudiq/paths/devices_id_alarms/__init__.py +7 -0
- extremecloudiq/paths/devices_id_alarms/get.py +460 -0
- extremecloudiq/paths/devices_id_bounce_port/__init__.py +7 -0
- extremecloudiq/paths/devices_id_bounce_port/post.py +456 -0
- extremecloudiq/paths/devices_id_cli/__init__.py +7 -0
- extremecloudiq/paths/devices_id_cli/post.py +477 -0
- extremecloudiq/paths/devices_id_client_monitor/__init__.py +7 -0
- extremecloudiq/paths/devices_id_client_monitor/delete.py +350 -0
- extremecloudiq/paths/devices_id_client_monitor/get.py +358 -0
- extremecloudiq/paths/devices_id_client_monitor/put.py +448 -0
- extremecloudiq/paths/devices_id_description/__init__.py +7 -0
- extremecloudiq/paths/devices_id_description/put.py +456 -0
- extremecloudiq/paths/devices_id_ftm_settings/__init__.py +7 -0
- extremecloudiq/paths/devices_id_ftm_settings/delete.py +350 -0
- extremecloudiq/paths/devices_id_ftm_settings/get.py +358 -0
- extremecloudiq/paths/devices_id_ftm_settings/put.py +456 -0
- extremecloudiq/paths/devices_id_gallery_image/__init__.py +7 -0
- extremecloudiq/paths/devices_id_gallery_image/get.py +413 -0
- extremecloudiq/paths/devices_id_geolocation/__init__.py +7 -0
- extremecloudiq/paths/devices_id_geolocation/get.py +358 -0
- extremecloudiq/paths/devices_id_history_cpu_mem/__init__.py +7 -0
- extremecloudiq/paths/devices_id_history_cpu_mem/get.py +466 -0
- extremecloudiq/paths/devices_id_hostname/__init__.py +7 -0
- extremecloudiq/paths/devices_id_hostname/put.py +405 -0
- extremecloudiq/paths/devices_id_ibeacon/__init__.py +7 -0
- extremecloudiq/paths/devices_id_ibeacon/get.py +358 -0
- extremecloudiq/paths/devices_id_installation_report/__init__.py +7 -0
- extremecloudiq/paths/devices_id_installation_report/get.py +358 -0
- extremecloudiq/paths/devices_id_interfaces_wifi/__init__.py +7 -0
- extremecloudiq/paths/devices_id_interfaces_wifi/get.py +448 -0
- extremecloudiq/paths/devices_id_iot/__init__.py +7 -0
- extremecloudiq/paths/devices_id_iot/get.py +358 -0
- extremecloudiq/paths/devices_id_iot_disable/__init__.py +7 -0
- extremecloudiq/paths/devices_id_iot_disable/post.py +350 -0
- extremecloudiq/paths/devices_id_iot_enable/__init__.py +7 -0
- extremecloudiq/paths/devices_id_iot_enable/post.py +447 -0
- extremecloudiq/paths/devices_id_location/__init__.py +7 -0
- extremecloudiq/paths/devices_id_location/delete.py +350 -0
- extremecloudiq/paths/devices_id_location/get.py +358 -0
- extremecloudiq/paths/devices_id_location/put.py +448 -0
- extremecloudiq/paths/devices_id_manage/__init__.py +7 -0
- extremecloudiq/paths/devices_id_manage/post.py +350 -0
- extremecloudiq/paths/devices_id_monitor_refresh/__init__.py +7 -0
- extremecloudiq/paths/devices_id_monitor_refresh/post.py +437 -0
- extremecloudiq/paths/devices_id_monitor_refresh_status/__init__.py +7 -0
- extremecloudiq/paths/devices_id_monitor_refresh_status/get.py +413 -0
- extremecloudiq/paths/devices_id_network_policy/__init__.py +7 -0
- extremecloudiq/paths/devices_id_network_policy/delete.py +350 -0
- extremecloudiq/paths/devices_id_network_policy/get.py +358 -0
- extremecloudiq/paths/devices_id_network_policy/put.py +405 -0
- extremecloudiq/paths/devices_id_radio_operating_mode/__init__.py +7 -0
- extremecloudiq/paths/devices_id_radio_operating_mode/get.py +358 -0
- extremecloudiq/paths/devices_id_radio_operating_mode/put.py +448 -0
- extremecloudiq/paths/devices_id_reboot/__init__.py +7 -0
- extremecloudiq/paths/devices_id_reboot/post.py +350 -0
- extremecloudiq/paths/devices_id_reset/__init__.py +7 -0
- extremecloudiq/paths/devices_id_reset/post.py +404 -0
- extremecloudiq/paths/devices_id_ssid_override/__init__.py +7 -0
- extremecloudiq/paths/devices_id_ssid_override/post.py +448 -0
- extremecloudiq/paths/devices_id_ssid_status/__init__.py +7 -0
- extremecloudiq/paths/devices_id_ssid_status/get.py +389 -0
- extremecloudiq/paths/devices_id_ssid_status_change/__init__.py +7 -0
- extremecloudiq/paths/devices_id_ssid_status_change/post.py +448 -0
- extremecloudiq/paths/devices_id_thread_commissioner_start/__init__.py +7 -0
- extremecloudiq/paths/devices_id_thread_commissioner_start/post.py +448 -0
- extremecloudiq/paths/devices_id_thread_commissioner_stop/__init__.py +7 -0
- extremecloudiq/paths/devices_id_thread_commissioner_stop/post.py +448 -0
- extremecloudiq/paths/devices_id_unmanage/__init__.py +7 -0
- extremecloudiq/paths/devices_id_unmanage/post.py +350 -0
- extremecloudiq/paths/devices_location_assign/__init__.py +7 -0
- extremecloudiq/paths/devices_location_assign/post.py +391 -0
- extremecloudiq/paths/devices_location_query/__init__.py +7 -0
- extremecloudiq/paths/devices_location_query/post.py +430 -0
- extremecloudiq/paths/devices_location_revoke/__init__.py +7 -0
- extremecloudiq/paths/devices_location_revoke/post.py +391 -0
- extremecloudiq/paths/devices_manage/__init__.py +7 -0
- extremecloudiq/paths/devices_manage/post.py +391 -0
- extremecloudiq/paths/devices_network_policy_assign/__init__.py +7 -0
- extremecloudiq/paths/devices_network_policy_assign/post.py +391 -0
- extremecloudiq/paths/devices_network_policy_policy_id/__init__.py +7 -0
- extremecloudiq/paths/devices_network_policy_policy_id/get.py +440 -0
- extremecloudiq/paths/devices_network_policy_query/__init__.py +7 -0
- extremecloudiq/paths/devices_network_policy_query/post.py +430 -0
- extremecloudiq/paths/devices_network_policy_revoke/__init__.py +7 -0
- extremecloudiq/paths/devices_network_policy_revoke/post.py +391 -0
- extremecloudiq/paths/devices_onboard/__init__.py +7 -0
- extremecloudiq/paths/devices_onboard/post.py +391 -0
- extremecloudiq/paths/devices_os_change/__init__.py +7 -0
- extremecloudiq/paths/devices_os_change/post.py +391 -0
- extremecloudiq/paths/devices_radio_information/__init__.py +7 -0
- extremecloudiq/paths/devices_radio_information/get.py +427 -0
- extremecloudiq/paths/devices_radius_proxy_assign/__init__.py +7 -0
- extremecloudiq/paths/devices_radius_proxy_assign/put.py +383 -0
- extremecloudiq/paths/devices_radius_proxy_revoke/__init__.py +7 -0
- extremecloudiq/paths/devices_radius_proxy_revoke/delete.py +373 -0
- extremecloudiq/paths/devices_reboot/__init__.py +7 -0
- extremecloudiq/paths/devices_reboot/post.py +391 -0
- extremecloudiq/paths/devices_stats/__init__.py +7 -0
- extremecloudiq/paths/devices_stats/get.py +358 -0
- extremecloudiq/paths/devices_unmanage/__init__.py +7 -0
- extremecloudiq/paths/devices_unmanage/post.py +391 -0
- extremecloudiq/paths/email_templates/__init__.py +7 -0
- extremecloudiq/paths/email_templates/get.py +384 -0
- extremecloudiq/paths/endusers/__init__.py +7 -0
- extremecloudiq/paths/endusers/get.py +448 -0
- extremecloudiq/paths/endusers/post.py +399 -0
- extremecloudiq/paths/endusers_id/__init__.py +7 -0
- extremecloudiq/paths/endusers_id/delete.py +350 -0
- extremecloudiq/paths/endusers_id/put.py +456 -0
- extremecloudiq/paths/endusers_id_regenerate_password/__init__.py +7 -0
- extremecloudiq/paths/endusers_id_regenerate_password/post.py +358 -0
- extremecloudiq/paths/essentials_eloc_clients_client_mac_last_known_location/__init__.py +7 -0
- extremecloudiq/paths/essentials_eloc_clients_client_mac_last_known_location/get.py +423 -0
- extremecloudiq/paths/hiq_context/__init__.py +7 -0
- extremecloudiq/paths/hiq_context/get.py +304 -0
- extremecloudiq/paths/hiq_context/put.py +391 -0
- extremecloudiq/paths/hiq_context_creating/__init__.py +7 -0
- extremecloudiq/paths/hiq_context_creating/get.py +303 -0
- extremecloudiq/paths/hiq_context_creating/put.py +390 -0
- extremecloudiq/paths/hiq_context_reading/__init__.py +7 -0
- extremecloudiq/paths/hiq_context_reading/get.py +325 -0
- extremecloudiq/paths/hiq_context_reading/put.py +412 -0
- extremecloudiq/paths/hiq_organizations/__init__.py +7 -0
- extremecloudiq/paths/hiq_organizations/get.py +329 -0
- extremecloudiq/paths/hiq_organizations/post.py +399 -0
- extremecloudiq/paths/hiq_organizations_id/__init__.py +7 -0
- extremecloudiq/paths/hiq_organizations_id/delete.py +350 -0
- extremecloudiq/paths/hiq_organizations_id_rename/__init__.py +7 -0
- extremecloudiq/paths/hiq_organizations_id_rename/post.py +447 -0
- extremecloudiq/paths/hiq_status/__init__.py +7 -0
- extremecloudiq/paths/hiq_status/get.py +304 -0
- extremecloudiq/paths/hotspot_profiles/__init__.py +7 -0
- extremecloudiq/paths/hotspot_profiles/get.py +386 -0
- extremecloudiq/paths/hotspot_profiles/post.py +399 -0
- extremecloudiq/paths/hotspot_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/hotspot_profiles_id/delete.py +350 -0
- extremecloudiq/paths/hotspot_profiles_id/get.py +358 -0
- extremecloudiq/paths/hotspot_profiles_id/put.py +456 -0
- extremecloudiq/paths/hotspot_service_provider_profiles/__init__.py +7 -0
- extremecloudiq/paths/hotspot_service_provider_profiles/get.py +386 -0
- extremecloudiq/paths/hotspot_service_provider_profiles/post.py +399 -0
- extremecloudiq/paths/hotspot_service_provider_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/hotspot_service_provider_profiles_id/delete.py +350 -0
- extremecloudiq/paths/hotspot_service_provider_profiles_id/get.py +358 -0
- extremecloudiq/paths/hotspot_service_provider_profiles_id/put.py +456 -0
- extremecloudiq/paths/iot_profiles/__init__.py +7 -0
- extremecloudiq/paths/iot_profiles/get.py +406 -0
- extremecloudiq/paths/iot_profiles/post.py +399 -0
- extremecloudiq/paths/iot_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/iot_profiles_id/delete.py +350 -0
- extremecloudiq/paths/iot_profiles_id/get.py +358 -0
- extremecloudiq/paths/iot_profiles_id/put.py +456 -0
- extremecloudiq/paths/ip_firewall_policies/__init__.py +7 -0
- extremecloudiq/paths/ip_firewall_policies/get.py +386 -0
- extremecloudiq/paths/ip_firewall_policies/post.py +399 -0
- extremecloudiq/paths/ip_firewall_policies_id/__init__.py +7 -0
- extremecloudiq/paths/ip_firewall_policies_id/delete.py +350 -0
- extremecloudiq/paths/ip_firewall_policies_id/get.py +358 -0
- extremecloudiq/paths/ip_firewall_policies_id/put.py +456 -0
- extremecloudiq/paths/ip_firewall_policies_id_ip_firewall_rule_attach/__init__.py +7 -0
- extremecloudiq/paths/ip_firewall_policies_id_ip_firewall_rule_attach/post.py +448 -0
- extremecloudiq/paths/ip_firewall_policies_id_ip_firewall_rule_detach/__init__.py +7 -0
- extremecloudiq/paths/ip_firewall_policies_id_ip_firewall_rule_detach/post.py +447 -0
- extremecloudiq/paths/l3_address_profiles/__init__.py +7 -0
- extremecloudiq/paths/l3_address_profiles/get.py +434 -0
- extremecloudiq/paths/l3_address_profiles/post.py +399 -0
- extremecloudiq/paths/l3_address_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/l3_address_profiles_id/delete.py +350 -0
- extremecloudiq/paths/l3_address_profiles_id/get.py +358 -0
- extremecloudiq/paths/l3_address_profiles_id/put.py +456 -0
- extremecloudiq/paths/ldap_servers/__init__.py +7 -0
- extremecloudiq/paths/ldap_servers/get.py +386 -0
- extremecloudiq/paths/ldap_servers/post.py +399 -0
- extremecloudiq/paths/ldap_servers_id/__init__.py +7 -0
- extremecloudiq/paths/ldap_servers_id/delete.py +350 -0
- extremecloudiq/paths/ldap_servers_id/get.py +358 -0
- extremecloudiq/paths/ldap_servers_id/put.py +456 -0
- extremecloudiq/paths/locations/__init__.py +7 -0
- extremecloudiq/paths/locations/post.py +399 -0
- extremecloudiq/paths/locations_building/__init__.py +7 -0
- extremecloudiq/paths/locations_building/get.py +436 -0
- extremecloudiq/paths/locations_building/post.py +399 -0
- extremecloudiq/paths/locations_building_id/__init__.py +7 -0
- extremecloudiq/paths/locations_building_id/delete.py +404 -0
- extremecloudiq/paths/locations_building_id/get.py +358 -0
- extremecloudiq/paths/locations_building_id/put.py +456 -0
- extremecloudiq/paths/locations_floor/__init__.py +7 -0
- extremecloudiq/paths/locations_floor/get.py +436 -0
- extremecloudiq/paths/locations_floor/post.py +399 -0
- extremecloudiq/paths/locations_floor_id/__init__.py +7 -0
- extremecloudiq/paths/locations_floor_id/delete.py +350 -0
- extremecloudiq/paths/locations_floor_id/get.py +358 -0
- extremecloudiq/paths/locations_floor_id/put.py +456 -0
- extremecloudiq/paths/locations_floorplan/__init__.py +7 -0
- extremecloudiq/paths/locations_floorplan/post.py +441 -0
- extremecloudiq/paths/locations_id/__init__.py +7 -0
- extremecloudiq/paths/locations_id/delete.py +404 -0
- extremecloudiq/paths/locations_id/put.py +456 -0
- extremecloudiq/paths/locations_import_ekahau/__init__.py +7 -0
- extremecloudiq/paths/locations_import_ekahau/post.py +587 -0
- extremecloudiq/paths/locations_init/__init__.py +7 -0
- extremecloudiq/paths/locations_init/post.py +399 -0
- extremecloudiq/paths/locations_site/__init__.py +7 -0
- extremecloudiq/paths/locations_site/get.py +436 -0
- extremecloudiq/paths/locations_site/post.py +399 -0
- extremecloudiq/paths/locations_site_id/__init__.py +7 -0
- extremecloudiq/paths/locations_site_id/delete.py +404 -0
- extremecloudiq/paths/locations_site_id/get.py +358 -0
- extremecloudiq/paths/locations_site_id/put.py +456 -0
- extremecloudiq/paths/locations_tree/__init__.py +7 -0
- extremecloudiq/paths/locations_tree/get.py +392 -0
- extremecloudiq/paths/locations_tree_devices/__init__.py +7 -0
- extremecloudiq/paths/locations_tree_devices/get.py +404 -0
- extremecloudiq/paths/locations_tree_maps/__init__.py +7 -0
- extremecloudiq/paths/locations_tree_maps/get.py +404 -0
- extremecloudiq/paths/login/__init__.py +7 -0
- extremecloudiq/paths/login/post.py +395 -0
- extremecloudiq/paths/logout/__init__.py +7 -0
- extremecloudiq/paths/logout/post.py +296 -0
- extremecloudiq/paths/logs_accounting/__init__.py +7 -0
- extremecloudiq/paths/logs_accounting/get.py +422 -0
- extremecloudiq/paths/logs_audit/__init__.py +7 -0
- extremecloudiq/paths/logs_audit/get.py +479 -0
- extremecloudiq/paths/logs_audit_full_descriptions_id/__init__.py +7 -0
- extremecloudiq/paths/logs_audit_full_descriptions_id/get.py +358 -0
- extremecloudiq/paths/logs_audit_reports/__init__.py +7 -0
- extremecloudiq/paths/logs_audit_reports/post.py +458 -0
- extremecloudiq/paths/logs_audit_reports_id/__init__.py +7 -0
- extremecloudiq/paths/logs_audit_reports_id/get.py +379 -0
- extremecloudiq/paths/logs_auth/__init__.py +7 -0
- extremecloudiq/paths/logs_auth/get.py +422 -0
- extremecloudiq/paths/logs_credential/__init__.py +7 -0
- extremecloudiq/paths/logs_credential/get.py +413 -0
- extremecloudiq/paths/logs_email/__init__.py +7 -0
- extremecloudiq/paths/logs_email/get.py +413 -0
- extremecloudiq/paths/logs_sms/__init__.py +7 -0
- extremecloudiq/paths/logs_sms/get.py +413 -0
- extremecloudiq/paths/mac_firewall_policies/__init__.py +7 -0
- extremecloudiq/paths/mac_firewall_policies/get.py +386 -0
- extremecloudiq/paths/mac_firewall_policies/post.py +399 -0
- extremecloudiq/paths/mac_firewall_policies_id/__init__.py +7 -0
- extremecloudiq/paths/mac_firewall_policies_id/delete.py +350 -0
- extremecloudiq/paths/mac_firewall_policies_id/get.py +358 -0
- extremecloudiq/paths/mac_firewall_policies_id/put.py +456 -0
- extremecloudiq/paths/mac_firewall_policies_id_mac_firewall_rule_attach/__init__.py +7 -0
- extremecloudiq/paths/mac_firewall_policies_id_mac_firewall_rule_attach/post.py +448 -0
- extremecloudiq/paths/mac_firewall_policies_id_mac_firewall_rule_detach/__init__.py +7 -0
- extremecloudiq/paths/mac_firewall_policies_id_mac_firewall_rule_detach/post.py +447 -0
- extremecloudiq/paths/mac_object_profiles/__init__.py +7 -0
- extremecloudiq/paths/mac_object_profiles/get.py +386 -0
- extremecloudiq/paths/mac_object_profiles/post.py +399 -0
- extremecloudiq/paths/mac_object_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/mac_object_profiles_id/delete.py +350 -0
- extremecloudiq/paths/mac_object_profiles_id/get.py +358 -0
- extremecloudiq/paths/mac_object_profiles_id/put.py +456 -0
- extremecloudiq/paths/network_policies/__init__.py +7 -0
- extremecloudiq/paths/network_policies/get.py +471 -0
- extremecloudiq/paths/network_policies/post.py +399 -0
- extremecloudiq/paths/network_policies_id/__init__.py +7 -0
- extremecloudiq/paths/network_policies_id/delete.py +350 -0
- extremecloudiq/paths/network_policies_id/get.py +358 -0
- extremecloudiq/paths/network_policies_id/put.py +456 -0
- extremecloudiq/paths/network_policies_id_ssids/__init__.py +7 -0
- extremecloudiq/paths/network_policies_id_ssids/get.py +440 -0
- extremecloudiq/paths/network_policies_id_ssids_add/__init__.py +7 -0
- extremecloudiq/paths/network_policies_id_ssids_add/post.py +469 -0
- extremecloudiq/paths/network_policies_id_ssids_remove/__init__.py +7 -0
- extremecloudiq/paths/network_policies_id_ssids_remove/post.py +469 -0
- extremecloudiq/paths/network_scorecard_client_health_location_id/__init__.py +7 -0
- extremecloudiq/paths/network_scorecard_client_health_location_id/get.py +421 -0
- extremecloudiq/paths/network_scorecard_device_health_location_id/__init__.py +7 -0
- extremecloudiq/paths/network_scorecard_device_health_location_id/get.py +421 -0
- extremecloudiq/paths/network_scorecard_network_health_location_id/__init__.py +7 -0
- extremecloudiq/paths/network_scorecard_network_health_location_id/get.py +421 -0
- extremecloudiq/paths/network_scorecard_services_health_location_id/__init__.py +7 -0
- extremecloudiq/paths/network_scorecard_services_health_location_id/get.py +421 -0
- extremecloudiq/paths/network_scorecard_wifi_health_location_id/__init__.py +7 -0
- extremecloudiq/paths/network_scorecard_wifi_health_location_id/get.py +421 -0
- extremecloudiq/paths/network_services/__init__.py +7 -0
- extremecloudiq/paths/network_services/get.py +415 -0
- extremecloudiq/paths/network_services/post.py +399 -0
- extremecloudiq/paths/network_services_id/__init__.py +7 -0
- extremecloudiq/paths/network_services_id/delete.py +350 -0
- extremecloudiq/paths/nos_device_device_id_nos_api/__init__.py +7 -0
- extremecloudiq/paths/nos_device_device_id_nos_api/post.py +456 -0
- extremecloudiq/paths/operations_operation_id/__init__.py +7 -0
- extremecloudiq/paths/operations_operation_id/delete.py +350 -0
- extremecloudiq/paths/operations_operation_id/get.py +358 -0
- extremecloudiq/paths/operations_operation_id_cancel/__init__.py +7 -0
- extremecloudiq/paths/operations_operation_id_cancel/post.py +350 -0
- extremecloudiq/paths/packetcaptures/__init__.py +7 -0
- extremecloudiq/paths/packetcaptures/get.py +450 -0
- extremecloudiq/paths/packetcaptures/post.py +398 -0
- extremecloudiq/paths/packetcaptures_files/__init__.py +7 -0
- extremecloudiq/paths/packetcaptures_files/get.py +381 -0
- extremecloudiq/paths/packetcaptures_id/__init__.py +7 -0
- extremecloudiq/paths/packetcaptures_id/delete.py +350 -0
- extremecloudiq/paths/packetcaptures_id/get.py +438 -0
- extremecloudiq/paths/packetcaptures_id_stop/__init__.py +7 -0
- extremecloudiq/paths/packetcaptures_id_stop/post.py +448 -0
- extremecloudiq/paths/packetcaptures_id_upload/__init__.py +7 -0
- extremecloudiq/paths/packetcaptures_id_upload/post.py +350 -0
- extremecloudiq/paths/pcgs_key_based/__init__.py +7 -0
- extremecloudiq/paths/pcgs_key_based/get.py +329 -0
- extremecloudiq/paths/pcgs_key_based/post.py +456 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id/__init__.py +7 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id/delete.py +427 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_keys_email/__init__.py +7 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_keys_email/post.py +427 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_keys_generate/__init__.py +7 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_keys_generate/post.py +427 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_onboard/__init__.py +7 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_onboard/post.py +513 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_port_assignments/__init__.py +7 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_port_assignments/get.py +358 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_port_assignments/post.py +456 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_users/__init__.py +7 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_users/delete.py +448 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_users/get.py +383 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_users/post.py +513 -0
- extremecloudiq/paths/pcgs_key_based_network_policy_policy_id_users/put.py +448 -0
- extremecloudiq/paths/radio_operating_modes_product_type/__init__.py +7 -0
- extremecloudiq/paths/radio_operating_modes_product_type/get.py +383 -0
- extremecloudiq/paths/radio_profiles/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles/get.py +386 -0
- extremecloudiq/paths/radio_profiles/post.py +399 -0
- extremecloudiq/paths/radio_profiles_channel_selection_id/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_channel_selection_id/get.py +358 -0
- extremecloudiq/paths/radio_profiles_channel_selection_id/put.py +456 -0
- extremecloudiq/paths/radio_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_id/delete.py +350 -0
- extremecloudiq/paths/radio_profiles_id/get.py +358 -0
- extremecloudiq/paths/radio_profiles_id/put.py +456 -0
- extremecloudiq/paths/radio_profiles_mac_ouis/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_mac_ouis/get.py +386 -0
- extremecloudiq/paths/radio_profiles_mac_ouis/post.py +399 -0
- extremecloudiq/paths/radio_profiles_mac_ouis_id/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_mac_ouis_id/delete.py +350 -0
- extremecloudiq/paths/radio_profiles_mac_ouis_id/get.py +358 -0
- extremecloudiq/paths/radio_profiles_mac_ouis_id/put.py +456 -0
- extremecloudiq/paths/radio_profiles_miscellaneous_id/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_miscellaneous_id/get.py +358 -0
- extremecloudiq/paths/radio_profiles_miscellaneous_id/put.py +456 -0
- extremecloudiq/paths/radio_profiles_neighborhood_analysis_id/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_neighborhood_analysis_id/get.py +358 -0
- extremecloudiq/paths/radio_profiles_neighborhood_analysis_id/put.py +456 -0
- extremecloudiq/paths/radio_profiles_radio_usage_opt_id/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_radio_usage_opt_id/get.py +358 -0
- extremecloudiq/paths/radio_profiles_radio_usage_opt_id/put.py +456 -0
- extremecloudiq/paths/radio_profiles_sensor_scan_id/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_sensor_scan_id/get.py +358 -0
- extremecloudiq/paths/radio_profiles_sensor_scan_id/put.py +456 -0
- extremecloudiq/paths/radio_profiles_wmm_qos_id/__init__.py +7 -0
- extremecloudiq/paths/radio_profiles_wmm_qos_id/get.py +358 -0
- extremecloudiq/paths/radio_profiles_wmm_qos_id/put.py +456 -0
- extremecloudiq/paths/radius_client_objects/__init__.py +7 -0
- extremecloudiq/paths/radius_client_objects/get.py +386 -0
- extremecloudiq/paths/radius_client_objects/post.py +399 -0
- extremecloudiq/paths/radius_client_objects_id/__init__.py +7 -0
- extremecloudiq/paths/radius_client_objects_id/delete.py +350 -0
- extremecloudiq/paths/radius_client_objects_id/get.py +358 -0
- extremecloudiq/paths/radius_client_objects_id/put.py +448 -0
- extremecloudiq/paths/radius_proxies/__init__.py +7 -0
- extremecloudiq/paths/radius_proxies/get.py +386 -0
- extremecloudiq/paths/radius_proxies/post.py +399 -0
- extremecloudiq/paths/radius_proxies_devices/__init__.py +7 -0
- extremecloudiq/paths/radius_proxies_devices/get.py +386 -0
- extremecloudiq/paths/radius_proxies_id/__init__.py +7 -0
- extremecloudiq/paths/radius_proxies_id/delete.py +350 -0
- extremecloudiq/paths/radius_proxies_id/get.py +358 -0
- extremecloudiq/paths/radius_proxies_id/put.py +456 -0
- extremecloudiq/paths/radius_servers_external/__init__.py +7 -0
- extremecloudiq/paths/radius_servers_external/get.py +386 -0
- extremecloudiq/paths/radius_servers_external/post.py +399 -0
- extremecloudiq/paths/radius_servers_external_id/__init__.py +7 -0
- extremecloudiq/paths/radius_servers_external_id/delete.py +350 -0
- extremecloudiq/paths/radius_servers_external_id/get.py +358 -0
- extremecloudiq/paths/radius_servers_external_id/put.py +448 -0
- extremecloudiq/paths/radius_servers_internal/__init__.py +7 -0
- extremecloudiq/paths/radius_servers_internal/delete.py +382 -0
- extremecloudiq/paths/radius_servers_internal/get.py +386 -0
- extremecloudiq/paths/radius_servers_internal/post.py +399 -0
- extremecloudiq/paths/radius_servers_internal_devices/__init__.py +7 -0
- extremecloudiq/paths/radius_servers_internal_devices/get.py +386 -0
- extremecloudiq/paths/radius_servers_internal_id/__init__.py +7 -0
- extremecloudiq/paths/radius_servers_internal_id/delete.py +350 -0
- extremecloudiq/paths/radius_servers_internal_id/get.py +358 -0
- extremecloudiq/paths/radius_servers_internal_id/put.py +456 -0
- extremecloudiq/paths/rtts/__init__.py +7 -0
- extremecloudiq/paths/rtts/post.py +457 -0
- extremecloudiq/paths/rtts_id/__init__.py +7 -0
- extremecloudiq/paths/rtts_id/delete.py +404 -0
- extremecloudiq/paths/site_afc_schedule/__init__.py +7 -0
- extremecloudiq/paths/site_afc_schedule/get.py +368 -0
- extremecloudiq/paths/site_afc_schedule/post.py +390 -0
- extremecloudiq/paths/site_afc_schedule/put.py +390 -0
- extremecloudiq/paths/site_spectrum_/__init__.py +7 -0
- extremecloudiq/paths/site_spectrum_/post.py +481 -0
- extremecloudiq/paths/sms_templates/__init__.py +7 -0
- extremecloudiq/paths/sms_templates/get.py +384 -0
- extremecloudiq/paths/ssids/__init__.py +7 -0
- extremecloudiq/paths/ssids/get.py +386 -0
- extremecloudiq/paths/ssids_advanced_settings_id/__init__.py +7 -0
- extremecloudiq/paths/ssids_advanced_settings_id/get.py +358 -0
- extremecloudiq/paths/ssids_advanced_settings_id/put.py +456 -0
- extremecloudiq/paths/ssids_id_client_monitor_profile_attach/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_client_monitor_profile_attach/post.py +448 -0
- extremecloudiq/paths/ssids_id_cwp_attach/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_cwp_attach/post.py +447 -0
- extremecloudiq/paths/ssids_id_cwp_disable/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_cwp_disable/post.py +350 -0
- extremecloudiq/paths/ssids_id_cwp_enable/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_cwp_enable/post.py +447 -0
- extremecloudiq/paths/ssids_id_mode_dot1x/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_mode_dot1x/put.py +448 -0
- extremecloudiq/paths/ssids_id_mode_open/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_mode_open/put.py +350 -0
- extremecloudiq/paths/ssids_id_mode_ppsk/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_mode_ppsk/put.py +448 -0
- extremecloudiq/paths/ssids_id_mode_psk/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_mode_psk/put.py +448 -0
- extremecloudiq/paths/ssids_id_mode_wep/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_mode_wep/put.py +448 -0
- extremecloudiq/paths/ssids_id_psk_password/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_psk_password/put.py +447 -0
- extremecloudiq/paths/ssids_id_radius_client_profile_attach/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_radius_client_profile_attach/post.py +447 -0
- extremecloudiq/paths/ssids_id_radius_server_group_attach/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_radius_server_group_attach/post.py +447 -0
- extremecloudiq/paths/ssids_id_rename/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_rename/post.py +447 -0
- extremecloudiq/paths/ssids_id_user_profile_assignment_attach/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_user_profile_assignment_attach/post.py +448 -0
- extremecloudiq/paths/ssids_id_user_profile_attach/__init__.py +7 -0
- extremecloudiq/paths/ssids_id_user_profile_attach/post.py +447 -0
- extremecloudiq/paths/subscriptions_webhook/__init__.py +7 -0
- extremecloudiq/paths/subscriptions_webhook/get.py +329 -0
- extremecloudiq/paths/subscriptions_webhook/post.py +416 -0
- extremecloudiq/paths/subscriptions_webhook_id/__init__.py +7 -0
- extremecloudiq/paths/subscriptions_webhook_id/delete.py +350 -0
- extremecloudiq/paths/thread_networks/__init__.py +7 -0
- extremecloudiq/paths/thread_networks/get.py +583 -0
- extremecloudiq/paths/thread_routers/__init__.py +7 -0
- extremecloudiq/paths/thread_routers/get.py +1059 -0
- extremecloudiq/paths/thread_topology/__init__.py +7 -0
- extremecloudiq/paths/thread_topology/get.py +703 -0
- extremecloudiq/paths/tunnel_concentrators/__init__.py +7 -0
- extremecloudiq/paths/tunnel_concentrators/get.py +386 -0
- extremecloudiq/paths/tunnel_concentrators/post.py +399 -0
- extremecloudiq/paths/tunnel_concentrators_id/__init__.py +7 -0
- extremecloudiq/paths/tunnel_concentrators_id/delete.py +350 -0
- extremecloudiq/paths/tunnel_concentrators_id/get.py +358 -0
- extremecloudiq/paths/tunnel_concentrators_id/put.py +456 -0
- extremecloudiq/paths/ucp_id_engines_installed/__init__.py +7 -0
- extremecloudiq/paths/ucp_id_engines_installed/get.py +358 -0
- extremecloudiq/paths/user_profile_assignments/__init__.py +7 -0
- extremecloudiq/paths/user_profile_assignments/get.py +386 -0
- extremecloudiq/paths/user_profile_assignments/post.py +399 -0
- extremecloudiq/paths/user_profile_assignments_id/__init__.py +7 -0
- extremecloudiq/paths/user_profile_assignments_id/delete.py +350 -0
- extremecloudiq/paths/user_profile_assignments_id/get.py +358 -0
- extremecloudiq/paths/user_profiles/__init__.py +7 -0
- extremecloudiq/paths/user_profiles/get.py +386 -0
- extremecloudiq/paths/user_profiles/post.py +399 -0
- extremecloudiq/paths/user_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/user_profiles_id/delete.py +350 -0
- extremecloudiq/paths/user_profiles_id/get.py +358 -0
- extremecloudiq/paths/user_profiles_id/put.py +456 -0
- extremecloudiq/paths/user_profiles_id_ip_firewall_policies_attach/__init__.py +7 -0
- extremecloudiq/paths/user_profiles_id_ip_firewall_policies_attach/post.py +448 -0
- extremecloudiq/paths/user_profiles_id_ip_firewall_policies_detach/__init__.py +7 -0
- extremecloudiq/paths/user_profiles_id_ip_firewall_policies_detach/post.py +448 -0
- extremecloudiq/paths/user_profiles_id_mac_firewall_policies_attach/__init__.py +7 -0
- extremecloudiq/paths/user_profiles_id_mac_firewall_policies_attach/post.py +448 -0
- extremecloudiq/paths/user_profiles_id_mac_firewall_policies_detach/__init__.py +7 -0
- extremecloudiq/paths/user_profiles_id_mac_firewall_policies_detach/post.py +448 -0
- extremecloudiq/paths/usergroups/__init__.py +7 -0
- extremecloudiq/paths/usergroups/get.py +406 -0
- extremecloudiq/paths/usergroups/post.py +399 -0
- extremecloudiq/paths/usergroups_id/__init__.py +7 -0
- extremecloudiq/paths/usergroups_id/delete.py +350 -0
- extremecloudiq/paths/usergroups_id/put.py +456 -0
- extremecloudiq/paths/users/__init__.py +7 -0
- extremecloudiq/paths/users/get.py +386 -0
- extremecloudiq/paths/users/post.py +399 -0
- extremecloudiq/paths/users_external/__init__.py +7 -0
- extremecloudiq/paths/users_external/get.py +386 -0
- extremecloudiq/paths/users_external/post.py +399 -0
- extremecloudiq/paths/users_external_id/__init__.py +7 -0
- extremecloudiq/paths/users_external_id/delete.py +350 -0
- extremecloudiq/paths/users_external_id/get.py +358 -0
- extremecloudiq/paths/users_external_id/patch.py +448 -0
- extremecloudiq/paths/users_id/__init__.py +7 -0
- extremecloudiq/paths/users_id/delete.py +350 -0
- extremecloudiq/paths/users_id/get.py +358 -0
- extremecloudiq/paths/users_id/patch.py +456 -0
- extremecloudiq/paths/users_me/__init__.py +7 -0
- extremecloudiq/paths/users_me/get.py +304 -0
- extremecloudiq/paths/vlan_profiles/__init__.py +7 -0
- extremecloudiq/paths/vlan_profiles/get.py +386 -0
- extremecloudiq/paths/vlan_profiles/post.py +399 -0
- extremecloudiq/paths/vlan_profiles_delete/__init__.py +7 -0
- extremecloudiq/paths/vlan_profiles_delete/post.py +448 -0
- extremecloudiq/paths/vlan_profiles_id/__init__.py +7 -0
- extremecloudiq/paths/vlan_profiles_id/delete.py +350 -0
- extremecloudiq/paths/vlan_profiles_id/get.py +358 -0
- extremecloudiq/paths/vlan_profiles_id/patch.py +456 -0
- extremecloudiq/rest.py +92 -126
- extremecloudiq/schemas.py +2476 -0
- extremecloudiq_api-25.1.0.147.dist-info/METADATA +21 -0
- extremecloudiq_api-25.1.0.147.dist-info/RECORD +1893 -0
- extremecloudiq/api/__init__.py +0 -35
- extremecloudiq/api/account_api.py +0 -1262
- extremecloudiq/api/afc_endpoint_api.py +0 -1301
- extremecloudiq/api/alert_api.py +0 -3494
- extremecloudiq/api/application_api.py +0 -470
- extremecloudiq/api/authentication_api.py +0 -261
- extremecloudiq/api/authorization_api.py +0 -602
- extremecloudiq/api/client_api.py +0 -1179
- extremecloudiq/api/configuration___authentication_api.py +0 -3612
- extremecloudiq/api/configuration___basic_api.py +0 -755
- extremecloudiq/api/configuration___certificate_api.py +0 -164
- extremecloudiq/api/configuration___deployment_api.py +0 -499
- extremecloudiq/api/configuration___network_api.py +0 -1000
- extremecloudiq/api/configuration___policy_api.py +0 -11859
- extremecloudiq/api/configuration___user_management_api.py +0 -2827
- extremecloudiq/api/copilot___anomalies_api.py +0 -2970
- extremecloudiq/api/copilot___connectivity_experience_api.py +0 -2791
- extremecloudiq/api/device_api.py +0 -10341
- extremecloudiq/api/essentials___extreme_location_api.py +0 -170
- extremecloudiq/api/hiq_api.py +0 -1276
- extremecloudiq/api/location_api.py +0 -3003
- extremecloudiq/api/log_api.py +0 -1272
- extremecloudiq/api/misc_api.py +0 -371
- extremecloudiq/api/network_policy_api.py +0 -1038
- extremecloudiq/api/network_scorecard_api.py +0 -658
- extremecloudiq/api/nos_api.py +0 -165
- extremecloudiq/api/notification_api.py +0 -375
- extremecloudiq/api/operation_api.py +0 -380
- extremecloudiq/api/packet_capture_api.py +0 -887
- extremecloudiq/api/thread_api.py +0 -472
- extremecloudiq/api/user_api.py +0 -1331
- extremecloudiq/models/client_health.py +0 -207
- extremecloudiq/models/device_health.py +0 -207
- extremecloudiq/models/essentials_eloc_last_known_location.py +0 -179
- extremecloudiq/models/inline_object.py +0 -124
- extremecloudiq/models/inline_object1.py +0 -124
- extremecloudiq/models/inline_object2.py +0 -124
- extremecloudiq/models/network_health.py +0 -207
- extremecloudiq/models/paged_xiq_accounting_log.py +0 -239
- extremecloudiq/models/paged_xiq_active_directory_server.py +0 -239
- extremecloudiq/models/paged_xiq_alert.py +0 -239
- extremecloudiq/models/paged_xiq_application.py +0 -239
- extremecloudiq/models/paged_xiq_audit_log.py +0 -239
- extremecloudiq/models/paged_xiq_auth_log.py +0 -239
- extremecloudiq/models/paged_xiq_building.py +0 -239
- extremecloudiq/models/paged_xiq_certificate.py +0 -239
- extremecloudiq/models/paged_xiq_classification_rule.py +0 -239
- extremecloudiq/models/paged_xiq_client.py +0 -239
- extremecloudiq/models/paged_xiq_client_monitor_profile.py +0 -239
- extremecloudiq/models/paged_xiq_cloud_config_group.py +0 -239
- extremecloudiq/models/paged_xiq_connectivity_experience_data.py +0 -239
- extremecloudiq/models/paged_xiq_copilot_wireless_event.py +0 -239
- extremecloudiq/models/paged_xiq_credential_log.py +0 -239
- extremecloudiq/models/paged_xiq_cwp.py +0 -239
- extremecloudiq/models/paged_xiq_device.py +0 -239
- extremecloudiq/models/paged_xiq_device_alarm.py +0 -239
- extremecloudiq/models/paged_xiq_device_configure_ipv4_interface.py +0 -239
- extremecloudiq/models/paged_xiq_device_configure_ipv4_static_route.py +0 -239
- extremecloudiq/models/paged_xiq_device_monitor_ipv4_routing.py +0 -239
- extremecloudiq/models/paged_xiq_device_monitor_vlan_attributes.py +0 -239
- extremecloudiq/models/paged_xiq_device_monitor_vlan_ipv4_interfaces.py +0 -239
- extremecloudiq/models/paged_xiq_device_vlan_attributes.py +0 -239
- extremecloudiq/models/paged_xiq_digital_twin_products.py +0 -239
- extremecloudiq/models/paged_xiq_email_log.py +0 -239
- extremecloudiq/models/paged_xiq_end_user.py +0 -239
- extremecloudiq/models/paged_xiq_external_radius_server.py +0 -239
- extremecloudiq/models/paged_xiq_external_user.py +0 -239
- extremecloudiq/models/paged_xiq_floor.py +0 -239
- extremecloudiq/models/paged_xiq_internal_radius_device.py +0 -239
- extremecloudiq/models/paged_xiq_internal_radius_server.py +0 -239
- extremecloudiq/models/paged_xiq_iot_profile.py +0 -239
- extremecloudiq/models/paged_xiq_ip_firewall.py +0 -239
- extremecloudiq/models/paged_xiq_ldap_server.py +0 -239
- extremecloudiq/models/paged_xiq_location_tree_device.py +0 -239
- extremecloudiq/models/paged_xiq_location_tree_map.py +0 -239
- extremecloudiq/models/paged_xiq_mac_firewall.py +0 -239
- extremecloudiq/models/paged_xiq_mac_object.py +0 -239
- extremecloudiq/models/paged_xiq_network_policy.py +0 -239
- extremecloudiq/models/paged_xiq_network_service.py +0 -239
- extremecloudiq/models/paged_xiq_packet_capture.py +0 -239
- extremecloudiq/models/paged_xiq_radio_entity.py +0 -239
- extremecloudiq/models/paged_xiq_radio_profile.py +0 -239
- extremecloudiq/models/paged_xiq_radius_client_object.py +0 -239
- extremecloudiq/models/paged_xiq_radius_proxy.py +0 -239
- extremecloudiq/models/paged_xiq_rp_mac_oui_profile.py +0 -239
- extremecloudiq/models/paged_xiq_site.py +0 -239
- extremecloudiq/models/paged_xiq_sms_log.py +0 -239
- extremecloudiq/models/paged_xiq_ssid.py +0 -239
- extremecloudiq/models/paged_xiq_thread_router.py +0 -239
- extremecloudiq/models/paged_xiq_tunnel_concentrator.py +0 -239
- extremecloudiq/models/paged_xiq_user.py +0 -239
- extremecloudiq/models/paged_xiq_user_group.py +0 -239
- extremecloudiq/models/paged_xiq_user_profile.py +0 -239
- extremecloudiq/models/paged_xiq_user_profile_assignment.py +0 -239
- extremecloudiq/models/paged_xiq_vlan_profile.py +0 -239
- extremecloudiq/models/paged_xiq_wired_event_entity.py +0 -239
- extremecloudiq/models/services_health.py +0 -207
- extremecloudiq/models/wifi_health.py +0 -207
- extremecloudiq/models/xiq_account.py +0 -491
- extremecloudiq/models/xiq_account_mode.py +0 -101
- extremecloudiq/models/xiq_account_type.py +0 -103
- extremecloudiq/models/xiq_accounting_log.py +0 -1020
- extremecloudiq/models/xiq_acknowledge_alerts_request.py +0 -124
- extremecloudiq/models/xiq_action_type.py +0 -104
- extremecloudiq/models/xiq_active_directory_server.py +0 -656
- extremecloudiq/models/xiq_active_directory_server_base_dn_fetch_mode.py +0 -101
- extremecloudiq/models/xiq_address.py +0 -238
- extremecloudiq/models/xiq_address_profile_classified_entry.py +0 -263
- extremecloudiq/models/xiq_advanced_onboard_device_request.py +0 -291
- extremecloudiq/models/xiq_advanced_onboard_device_response.py +0 -151
- extremecloudiq/models/xiq_afc_ap_detail.py +0 -231
- extremecloudiq/models/xiq_afc_aps_info_element.py +0 -173
- extremecloudiq/models/xiq_afc_available_spectrum.py +0 -173
- extremecloudiq/models/xiq_afc_geolocation_summary.py +0 -147
- extremecloudiq/models/xiq_afc_input_info.py +0 -231
- extremecloudiq/models/xiq_afc_server.py +0 -173
- extremecloudiq/models/xiq_afc_server_state.py +0 -111
- extremecloudiq/models/xiq_afc_status_summary.py +0 -173
- extremecloudiq/models/xiq_affected_downlink_device.py +0 -235
- extremecloudiq/models/xiq_alert.py +0 -768
- extremecloudiq/models/xiq_alert_email_subscription.py +0 -326
- extremecloudiq/models/xiq_alert_event_rules_by_category.py +0 -182
- extremecloudiq/models/xiq_alert_group_count.py +0 -181
- extremecloudiq/models/xiq_alert_group_query.py +0 -102
- extremecloudiq/models/xiq_alert_metric_rules_by_metricset.py +0 -182
- extremecloudiq/models/xiq_alert_policy.py +0 -292
- extremecloudiq/models/xiq_alert_policy_filter.py +0 -152
- extremecloudiq/models/xiq_alert_policy_type.py +0 -101
- extremecloudiq/models/xiq_alert_report.py +0 -124
- extremecloudiq/models/xiq_alert_rule.py +0 -520
- extremecloudiq/models/xiq_alert_rule_overview.py +0 -182
- extremecloudiq/models/xiq_alert_site.py +0 -152
- extremecloudiq/models/xiq_alert_sort_field.py +0 -101
- extremecloudiq/models/xiq_alert_source.py +0 -207
- extremecloudiq/models/xiq_alert_tag.py +0 -208
- extremecloudiq/models/xiq_alert_webhook_subscription.py +0 -326
- extremecloudiq/models/xiq_anomalies_count_vo_entity.py +0 -320
- extremecloudiq/models/xiq_anomalies_device_update_action_request.py +0 -203
- extremecloudiq/models/xiq_anomalies_feedback_request.py +0 -203
- extremecloudiq/models/xiq_anomalies_notifications_response.py +0 -151
- extremecloudiq/models/xiq_anomalies_severity_entity.py +0 -207
- extremecloudiq/models/xiq_anomalies_site_entity.py +0 -179
- extremecloudiq/models/xiq_anomalies_type_entity.py +0 -149
- extremecloudiq/models/xiq_anomalies_update_action_request.py +0 -175
- extremecloudiq/models/xiq_anomaly_affected_count.py +0 -182
- extremecloudiq/models/xiq_anomaly_device_entity.py +0 -513
- extremecloudiq/models/xiq_anomaly_device_with_location.py +0 -718
- extremecloudiq/models/xiq_anomaly_devices_by_location_response.py +0 -149
- extremecloudiq/models/xiq_anomaly_health_type.py +0 -103
- extremecloudiq/models/xiq_anomaly_location_entity.py +0 -425
- extremecloudiq/models/xiq_anomaly_severity.py +0 -103
- extremecloudiq/models/xiq_anomaly_sort_field.py +0 -106
- extremecloudiq/models/xiq_anomaly_type.py +0 -105
- extremecloudiq/models/xiq_ap_coordinates.py +0 -173
- extremecloudiq/models/xiq_api_token_info.py +0 -354
- extremecloudiq/models/xiq_application.py +0 -378
- extremecloudiq/models/xiq_application_detection_protocol.py +0 -101
- extremecloudiq/models/xiq_application_detection_rule.py +0 -175
- extremecloudiq/models/xiq_application_detection_type.py +0 -102
- extremecloudiq/models/xiq_application_service.py +0 -155
- extremecloudiq/models/xiq_application_sort_field.py +0 -101
- extremecloudiq/models/xiq_application_top_clients_usage.py +0 -235
- extremecloudiq/models/xiq_assign_devices_client_monitor_request.py +0 -149
- extremecloudiq/models/xiq_assign_devices_country_code_request.py +0 -149
- extremecloudiq/models/xiq_assign_devices_location_request.py +0 -149
- extremecloudiq/models/xiq_assign_devices_network_policy_request.py +0 -151
- extremecloudiq/models/xiq_assurance_scans_overview_response.py +0 -151
- extremecloudiq/models/xiq_atp_device_stats_entity.py +0 -208
- extremecloudiq/models/xiq_atp_device_stats_response.py +0 -151
- extremecloudiq/models/xiq_atp_packet_counts_entity.py +0 -292
- extremecloudiq/models/xiq_atp_packet_counts_response.py +0 -151
- extremecloudiq/models/xiq_attach_client_monitor_profile_request.py +0 -123
- extremecloudiq/models/xiq_attach_ip_firewall_policy_to_user_profile_request.py +0 -151
- extremecloudiq/models/xiq_attach_mac_firewall_policy_to_user_profile_request.py +0 -151
- extremecloudiq/models/xiq_attach_up_assignment_entry.py +0 -151
- extremecloudiq/models/xiq_attach_up_assignment_request.py +0 -261
- extremecloudiq/models/xiq_attribute_type.py +0 -102
- extremecloudiq/models/xiq_audit_log.py +0 -402
- extremecloudiq/models/xiq_audit_log_category.py +0 -105
- extremecloudiq/models/xiq_audit_log_full_descriptions.py +0 -208
- extremecloudiq/models/xiq_audit_log_report.py +0 -124
- extremecloudiq/models/xiq_audit_log_sort_field.py +0 -100
- extremecloudiq/models/xiq_auth_log.py +0 -572
- extremecloudiq/models/xiq_available_channel_info.py +0 -173
- extremecloudiq/models/xiq_bounce_device_port_data.py +0 -179
- extremecloudiq/models/xiq_bounce_device_port_operation_result.py +0 -151
- extremecloudiq/models/xiq_bounce_device_port_request.py +0 -179
- extremecloudiq/models/xiq_bounce_device_port_response.py +0 -121
- extremecloudiq/models/xiq_building.py +0 -350
- extremecloudiq/models/xiq_bulk_delete_email_subscription_result.py +0 -147
- extremecloudiq/models/xiq_bulk_delete_webhook_subscription_result.py +0 -147
- extremecloudiq/models/xiq_bulk_operation_result.py +0 -101
- extremecloudiq/models/xiq_capture_band_selection.py +0 -103
- extremecloudiq/models/xiq_capture_direction_selection.py +0 -102
- extremecloudiq/models/xiq_capture_filter.py +0 -295
- extremecloudiq/models/xiq_capture_identifier_type.py +0 -102
- extremecloudiq/models/xiq_capture_location.py +0 -255
- extremecloudiq/models/xiq_capture_radio_selection.py +0 -103
- extremecloudiq/models/xiq_capture_result.py +0 -455
- extremecloudiq/models/xiq_capture_stop_request.py +0 -123
- extremecloudiq/models/xiq_capture_wired_selection.py +0 -104
- extremecloudiq/models/xiq_certificate.py +0 -323
- extremecloudiq/models/xiq_certificate_type.py +0 -101
- extremecloudiq/models/xiq_change_devices_ibeacon_request.py +0 -338
- extremecloudiq/models/xiq_change_devices_os_mode_request.py +0 -153
- extremecloudiq/models/xiq_check_permission_request.py +0 -153
- extremecloudiq/models/xiq_check_permission_response.py +0 -153
- extremecloudiq/models/xiq_classification.py +0 -296
- extremecloudiq/models/xiq_classification_rule.py +0 -295
- extremecloudiq/models/xiq_classification_type.py +0 -104
- extremecloudiq/models/xiq_cli_output.py +0 -179
- extremecloudiq/models/xiq_cli_response_code.py +0 -115
- extremecloudiq/models/xiq_client.py +0 -1610
- extremecloudiq/models/xiq_client_field.py +0 -153
- extremecloudiq/models/xiq_client_mac_address_alias.py +0 -164
- extremecloudiq/models/xiq_client_monitor_parameters.py +0 -163
- extremecloudiq/models/xiq_client_monitor_profile.py +0 -374
- extremecloudiq/models/xiq_client_monitor_profile_request.py +0 -242
- extremecloudiq/models/xiq_client_sort_field.py +0 -120
- extremecloudiq/models/xiq_client_stats_entity.py +0 -345
- extremecloudiq/models/xiq_client_summary.py +0 -179
- extremecloudiq/models/xiq_client_type.py +0 -102
- extremecloudiq/models/xiq_client_usage.py +0 -151
- extremecloudiq/models/xiq_client_view.py +0 -107
- extremecloudiq/models/xiq_cloud_config_group.py +0 -436
- extremecloudiq/models/xiq_cloud_shark_storage.py +0 -151
- extremecloudiq/models/xiq_connectivity_details_by_client_type_response.py +0 -147
- extremecloudiq/models/xiq_connectivity_experience_data.py +0 -319
- extremecloudiq/models/xiq_connectivity_experience_view_type.py +0 -102
- extremecloudiq/models/xiq_copilot_anomalies_action_response.py +0 -123
- extremecloudiq/models/xiq_copilot_anomalies_by_category.py +0 -177
- extremecloudiq/models/xiq_copilot_events_wired_sort_field.py +0 -100
- extremecloudiq/models/xiq_copilot_events_wireless_sort_field.py +0 -102
- extremecloudiq/models/xiq_copilot_lldp_cdp_info.py +0 -121
- extremecloudiq/models/xiq_copilot_paged_xiq_anomaly_device_with_location.py +0 -293
- extremecloudiq/models/xiq_copilot_paged_xiq_anomaly_location_entity.py +0 -293
- extremecloudiq/models/xiq_copilot_wired_events_score_type.py +0 -100
- extremecloudiq/models/xiq_copilot_wireless_event.py +0 -347
- extremecloudiq/models/xiq_copilot_wireless_events_score_type.py +0 -104
- extremecloudiq/models/xiq_country.py +0 -493
- extremecloudiq/models/xiq_country_code.py +0 -226
- extremecloudiq/models/xiq_country_state.py +0 -179
- extremecloudiq/models/xiq_create_alert_email_subscription_request.py +0 -210
- extremecloudiq/models/xiq_create_alert_webhook_subscription_request.py +0 -238
- extremecloudiq/models/xiq_create_building_request.py +0 -236
- extremecloudiq/models/xiq_create_classification_request.py +0 -188
- extremecloudiq/models/xiq_create_classification_rule_request.py +0 -181
- extremecloudiq/models/xiq_create_cloud_config_group_request.py +0 -180
- extremecloudiq/models/xiq_create_end_user_request.py +0 -405
- extremecloudiq/models/xiq_create_external_radius_server_request.py +0 -307
- extremecloudiq/models/xiq_create_floor_request.py +0 -350
- extremecloudiq/models/xiq_create_internal_radius_server_request.py +0 -708
- extremecloudiq/models/xiq_create_key_based_pcg_users_request.py +0 -124
- extremecloudiq/models/xiq_create_key_based_pcg_users_response.py +0 -181
- extremecloudiq/models/xiq_create_l3_address_profile_request.py +0 -348
- extremecloudiq/models/xiq_create_ldap_server_request.py +0 -524
- extremecloudiq/models/xiq_create_location_request.py +0 -153
- extremecloudiq/models/xiq_create_mac_object_request.py +0 -236
- extremecloudiq/models/xiq_create_network_policy_request.py +0 -179
- extremecloudiq/models/xiq_create_organization_request.py +0 -152
- extremecloudiq/models/xiq_create_radio_profile_request.py +0 -438
- extremecloudiq/models/xiq_create_radius_client.py +0 -179
- extremecloudiq/models/xiq_create_radius_client_object_request.py +0 -338
- extremecloudiq/models/xiq_create_radius_proxy_realm.py +0 -179
- extremecloudiq/models/xiq_create_radius_proxy_request.py +0 -380
- extremecloudiq/models/xiq_create_rp_mac_oui_profile_request.py +0 -237
- extremecloudiq/models/xiq_create_site_request.py +0 -263
- extremecloudiq/models/xiq_create_user_group_request.py +0 -453
- extremecloudiq/models/xiq_create_user_profile_assignment_request.py +0 -205
- extremecloudiq/models/xiq_create_user_profile_request.py +0 -153
- extremecloudiq/models/xiq_create_user_request.py +0 -237
- extremecloudiq/models/xiq_create_vlan_object_classified_entry_request.py +0 -153
- extremecloudiq/models/xiq_create_vlan_profile_request.py +0 -210
- extremecloudiq/models/xiq_create_webhook_subscription_request.py +0 -208
- extremecloudiq/models/xiq_credential_log.py +0 -236
- extremecloudiq/models/xiq_cwp.py +0 -238
- extremecloudiq/models/xiq_data_point.py +0 -152
- extremecloudiq/models/xiq_date_time_type.py +0 -240
- extremecloudiq/models/xiq_date_time_unit_type.py +0 -103
- extremecloudiq/models/xiq_default_device_password.py +0 -124
- extremecloudiq/models/xiq_delete_bulk_alert_subscription_email_response.py +0 -173
- extremecloudiq/models/xiq_delete_bulk_alert_subscription_request.py +0 -124
- extremecloudiq/models/xiq_delete_bulk_alert_subscription_webhook_response.py +0 -173
- extremecloudiq/models/xiq_delete_key_based_pcg_users_request.py +0 -124
- extremecloudiq/models/xiq_delivery_settings.py +0 -151
- extremecloudiq/models/xiq_dell_device.py +0 -236
- extremecloudiq/models/xiq_dell_devices.py +0 -124
- extremecloudiq/models/xiq_deployment_overview.py +0 -153
- extremecloudiq/models/xiq_deployment_policy.py +0 -202
- extremecloudiq/models/xiq_deployment_request.py +0 -149
- extremecloudiq/models/xiq_deployment_response.py +0 -123
- extremecloudiq/models/xiq_deployment_status.py +0 -261
- extremecloudiq/models/xiq_destination_type.py +0 -101
- extremecloudiq/models/xiq_device.py +0 -1102
- extremecloudiq/models/xiq_device_admin_state.py +0 -104
- extremecloudiq/models/xiq_device_alarm.py +0 -291
- extremecloudiq/models/xiq_device_category.py +0 -101
- extremecloudiq/models/xiq_device_client_monitor.py +0 -151
- extremecloudiq/models/xiq_device_configure_ipv4_interface.py +0 -494
- extremecloudiq/models/xiq_device_configure_ipv4_interface_response.py +0 -467
- extremecloudiq/models/xiq_device_configure_ipv4_static_route.py +0 -382
- extremecloudiq/models/xiq_device_cpu_memory_usage.py +0 -179
- extremecloudiq/models/xiq_device_create_configure_ipv4_interface.py +0 -413
- extremecloudiq/models/xiq_device_create_configure_ipv4_static_route.py +0 -354
- extremecloudiq/models/xiq_device_create_vlan_attributes.py +0 -289
- extremecloudiq/models/xiq_device_dhcp_relay.py +0 -292
- extremecloudiq/models/xiq_device_field.py +0 -135
- extremecloudiq/models/xiq_device_filter.py +0 -123
- extremecloudiq/models/xiq_device_firmware_metadata.py +0 -434
- extremecloudiq/models/xiq_device_function.py +0 -108
- extremecloudiq/models/xiq_device_geolocation.py +0 -295
- extremecloudiq/models/xiq_device_ibeacon.py +0 -338
- extremecloudiq/models/xiq_device_installation_report.py +0 -407
- extremecloudiq/models/xiq_device_interface_radio_mode.py +0 -181
- extremecloudiq/models/xiq_device_iot_interface_settings_entry.py +0 -149
- extremecloudiq/models/xiq_device_ipv4_routing_route_origin_field.py +0 -103
- extremecloudiq/models/xiq_device_ipv4_routing_sort_field.py +0 -109
- extremecloudiq/models/xiq_device_ipv4_routing_status_field.py +0 -102
- extremecloudiq/models/xiq_device_level_ssid.py +0 -180
- extremecloudiq/models/xiq_device_level_ssid_status.py +0 -153
- extremecloudiq/models/xiq_device_lldp_cdp_info.py +0 -207
- extremecloudiq/models/xiq_device_location.py +0 -464
- extremecloudiq/models/xiq_device_location_assignment.py +0 -236
- extremecloudiq/models/xiq_device_monitor_ipv4_route_nexthop.py +0 -319
- extremecloudiq/models/xiq_device_monitor_ipv4_routing.py +0 -211
- extremecloudiq/models/xiq_device_monitor_ipv4_routing_detail.py +0 -375
- extremecloudiq/models/xiq_device_monitor_ipv4_routing_timeline.py +0 -269
- extremecloudiq/models/xiq_device_monitor_ipv4_routing_timeline_info.py +0 -235
- extremecloudiq/models/xiq_device_monitor_refresh_response.py +0 -124
- extremecloudiq/models/xiq_device_monitor_refresh_status_response.py +0 -188
- extremecloudiq/models/xiq_device_monitor_vlan_attributes.py +0 -211
- extremecloudiq/models/xiq_device_monitor_vlan_attributes_info.py +0 -488
- extremecloudiq/models/xiq_device_monitor_vlan_ipv4_interfaces.py +0 -211
- extremecloudiq/models/xiq_device_monitor_vlan_ipv4_interfaces_details.py +0 -376
- extremecloudiq/models/xiq_device_null_field.py +0 -101
- extremecloudiq/models/xiq_device_radio_operating_mode.py +0 -149
- extremecloudiq/models/xiq_device_sort_field.py +0 -101
- extremecloudiq/models/xiq_device_stats.py +0 -173
- extremecloudiq/models/xiq_device_stats_entity.py +0 -292
- extremecloudiq/models/xiq_device_subnetwork_ipv4.py +0 -350
- extremecloudiq/models/xiq_device_type.py +0 -102
- extremecloudiq/models/xiq_device_update_configure_ipv4_interface.py +0 -441
- extremecloudiq/models/xiq_device_update_configure_ipv4_static_route.py +0 -382
- extremecloudiq/models/xiq_device_update_vlan_attributes.py +0 -261
- extremecloudiq/models/xiq_device_view.py +0 -105
- extremecloudiq/models/xiq_device_vlan_attributes.py +0 -289
- extremecloudiq/models/xiq_device_vlan_attributes_dhcp_snooping_action.py +0 -101
- extremecloudiq/models/xiq_device_vlan_ipv4_interfaces_sort_field.py +0 -104
- extremecloudiq/models/xiq_device_vlan_sort_field.py +0 -104
- extremecloudiq/models/xiq_device_wifi_interface.py +0 -907
- extremecloudiq/models/xiq_device_wireless_interface_entry.py +0 -150
- extremecloudiq/models/xiq_dfs_channel_changes_entity.py +0 -152
- extremecloudiq/models/xiq_dfs_channel_stats_entity.py +0 -152
- extremecloudiq/models/xiq_dfs_recurence_channel_stats_response.py +0 -179
- extremecloudiq/models/xiq_dfs_recurence_count_stats_response.py +0 -151
- extremecloudiq/models/xiq_dhcp_platform.py +0 -101
- extremecloudiq/models/xiq_dhcp_service_type.py +0 -101
- extremecloudiq/models/xiq_digital_twin_device.py +0 -262
- extremecloudiq/models/xiq_digital_twin_devices.py +0 -123
- extremecloudiq/models/xiq_digital_twin_feat_license.py +0 -105
- extremecloudiq/models/xiq_digital_twin_make.py +0 -101
- extremecloudiq/models/xiq_digital_twin_model.py +0 -138
- extremecloudiq/models/xiq_digital_twin_onboard_device.py +0 -205
- extremecloudiq/models/xiq_digital_twin_products.py +0 -210
- extremecloudiq/models/xiq_digital_twin_vim_module.py +0 -104
- extremecloudiq/models/xiq_duplex_data_rate_entity.py +0 -180
- extremecloudiq/models/xiq_ekahau_floor_import_result.py +0 -178
- extremecloudiq/models/xiq_ekahau_floor_import_status.py +0 -101
- extremecloudiq/models/xiq_ekahau_floor_to_floor_association.py +0 -153
- extremecloudiq/models/xiq_ekahau_floor_to_outdoor_site_association.py +0 -182
- extremecloudiq/models/xiq_ekahau_import_details.py +0 -124
- extremecloudiq/models/xiq_ekahau_import_issue.py +0 -181
- extremecloudiq/models/xiq_ekahau_import_issues.py +0 -231
- extremecloudiq/models/xiq_elevation.py +0 -179
- extremecloudiq/models/xiq_ellipse.py +0 -173
- extremecloudiq/models/xiq_email_log.py +0 -320
- extremecloudiq/models/xiq_email_template.py +0 -435
- extremecloudiq/models/xiq_end_user.py +0 -610
- extremecloudiq/models/xiq_entitlement_type.py +0 -103
- extremecloudiq/models/xiq_error.py +0 -182
- extremecloudiq/models/xiq_exos_device.py +0 -207
- extremecloudiq/models/xiq_exos_devices.py +0 -124
- extremecloudiq/models/xiq_expiration_action_type.py +0 -101
- extremecloudiq/models/xiq_expiration_settings.py +0 -251
- extremecloudiq/models/xiq_expiration_type.py +0 -103
- extremecloudiq/models/xiq_external_account.py +0 -298
- extremecloudiq/models/xiq_external_radius_server.py +0 -410
- extremecloudiq/models/xiq_external_user.py +0 -322
- extremecloudiq/models/xiq_external_user_directory.py +0 -349
- extremecloudiq/models/xiq_external_user_directory_entry.py +0 -151
- extremecloudiq/models/xiq_external_user_directory_type.py +0 -101
- extremecloudiq/models/xiq_extreme_device.py +0 -207
- extremecloudiq/models/xiq_extreme_devices.py +0 -124
- extremecloudiq/models/xiq_failure_onboard_device.py +0 -150
- extremecloudiq/models/xiq_feedback_type.py +0 -101
- extremecloudiq/models/xiq_firmware_activate_option.py +0 -179
- extremecloudiq/models/xiq_firmware_metadatas_request.py +0 -123
- extremecloudiq/models/xiq_firmware_metadatas_response.py +0 -121
- extremecloudiq/models/xiq_firmware_upgrade_policy.py +0 -153
- extremecloudiq/models/xiq_firmware_upgrade_version.py +0 -153
- extremecloudiq/models/xiq_flap_count_entity.py +0 -208
- extremecloudiq/models/xiq_floor.py +0 -493
- extremecloudiq/models/xiq_forensic_bucket.py +0 -106
- extremecloudiq/models/xiq_ftm_settings.py +0 -349
- extremecloudiq/models/xiq_ftm_settings_request.py +0 -262
- extremecloudiq/models/xiq_gateway_ip_type.py +0 -101
- extremecloudiq/models/xiq_generate_api_token_request.py +0 -180
- extremecloudiq/models/xiq_generate_api_token_response.py +0 -296
- extremecloudiq/models/xiq_get_afc_spectrum_for_ap_request.py +0 -205
- extremecloudiq/models/xiq_get_afc_spectrum_for_site_aps_request.py +0 -205
- extremecloudiq/models/xiq_get_device_info_by_nos.py +0 -181
- extremecloudiq/models/xiq_get_device_infoby_nos_request.py +0 -179
- extremecloudiq/models/xiq_get_port_assignment_details_response.py +0 -181
- extremecloudiq/models/xiq_grant_external_user_request.py +0 -207
- extremecloudiq/models/xiq_hiq_context.py +0 -153
- extremecloudiq/models/xiq_hiq_status.py +0 -124
- extremecloudiq/models/xiq_host_name_address_profile.py +0 -406
- extremecloudiq/models/xiq_http_method.py +0 -103
- extremecloudiq/models/xiq_http_server.py +0 -163
- extremecloudiq/models/xiq_init_key_based_pcg_network_policy_request.py +0 -182
- extremecloudiq/models/xiq_initialize_location_request.py +0 -151
- extremecloudiq/models/xiq_internal_radius_device.py +0 -297
- extremecloudiq/models/xiq_internal_radius_server.py +0 -824
- extremecloudiq/models/xiq_internal_radius_server_authentication_method.py +0 -104
- extremecloudiq/models/xiq_internal_radius_server_authentication_method_group.py +0 -105
- extremecloudiq/models/xiq_iot_application_id.py +0 -100
- extremecloudiq/models/xiq_iot_application_supported.py +0 -101
- extremecloudiq/models/xiq_iot_profile.py +0 -341
- extremecloudiq/models/xiq_iot_profile_request.py +0 -256
- extremecloudiq/models/xiq_iot_profile_thread_gateway.py +0 -429
- extremecloudiq/models/xiq_iotp_ma_ble_beacon.py +0 -123
- extremecloudiq/models/xiq_iotp_ma_ble_beacon_app_type.py +0 -101
- extremecloudiq/models/xiq_iotp_ma_ble_beacon_application.py +0 -357
- extremecloudiq/models/xiq_iotp_ma_ble_scan.py +0 -149
- extremecloudiq/models/xiq_iotp_ma_ble_scan_app_type.py +0 -102
- extremecloudiq/models/xiq_iotp_ma_ble_scan_application.py +0 -215
- extremecloudiq/models/xiq_iotp_ma_ble_scan_destination.py +0 -155
- extremecloudiq/models/xiq_iotp_ma_ble_scan_vendor.py +0 -183
- extremecloudiq/models/xiq_iotp_ma_ble_scan_vendor_type.py +0 -102
- extremecloudiq/models/xiq_iotp_tg_white_list_entry.py +0 -165
- extremecloudiq/models/xiq_ip_address_profile.py +0 -406
- extremecloudiq/models/xiq_ip_firewall.py +0 -322
- extremecloudiq/models/xiq_ip_firewall_action.py +0 -104
- extremecloudiq/models/xiq_ip_firewall_policy_request.py +0 -179
- extremecloudiq/models/xiq_ip_firewall_rule.py +0 -366
- extremecloudiq/models/xiq_ip_firewall_rule_request.py +0 -231
- extremecloudiq/models/xiq_ip_range_address_profile.py +0 -434
- extremecloudiq/models/xiq_key_based_pcg.py +0 -354
- extremecloudiq/models/xiq_key_based_pcg_user.py +0 -297
- extremecloudiq/models/xiq_key_based_pcg_user_base_info.py +0 -182
- extremecloudiq/models/xiq_l3_address_profile.py +0 -406
- extremecloudiq/models/xiq_l3_address_profile_response.py +0 -251
- extremecloudiq/models/xiq_l3_address_type.py +0 -105
- extremecloudiq/models/xiq_ldap_protocol_type.py +0 -101
- extremecloudiq/models/xiq_ldap_server.py +0 -599
- extremecloudiq/models/xiq_ldap_server_verification_mode.py +0 -102
- extremecloudiq/models/xiq_license_mode.py +0 -104
- extremecloudiq/models/xiq_license_status.py +0 -105
- extremecloudiq/models/xiq_list_afc_servers.py +0 -121
- extremecloudiq/models/xiq_list_alert_policies.py +0 -149
- extremecloudiq/models/xiq_location.py +0 -381
- extremecloudiq/models/xiq_location_legend.py +0 -151
- extremecloudiq/models/xiq_location_tree_device.py +0 -433
- extremecloudiq/models/xiq_location_tree_map.py +0 -209
- extremecloudiq/models/xiq_location_type.py +0 -102
- extremecloudiq/models/xiq_logging_type.py +0 -104
- extremecloudiq/models/xiq_login_request.py +0 -153
- extremecloudiq/models/xiq_login_response.py +0 -182
- extremecloudiq/models/xiq_mac_firewall.py +0 -322
- extremecloudiq/models/xiq_mac_firewall_action.py +0 -101
- extremecloudiq/models/xiq_mac_firewall_policy_request.py +0 -179
- extremecloudiq/models/xiq_mac_firewall_rule.py +0 -314
- extremecloudiq/models/xiq_mac_firewall_rule_request.py +0 -203
- extremecloudiq/models/xiq_mac_object.py +0 -404
- extremecloudiq/models/xiq_mac_object_type.py +0 -102
- extremecloudiq/models/xiq_measurement_unit.py +0 -101
- extremecloudiq/models/xiq_network_alg_type.py +0 -105
- extremecloudiq/models/xiq_network_ip_protocol.py +0 -103
- extremecloudiq/models/xiq_network_policy.py +0 -325
- extremecloudiq/models/xiq_network_policy_field.py +0 -107
- extremecloudiq/models/xiq_network_policy_type.py +0 -106
- extremecloudiq/models/xiq_network_policy_view.py +0 -101
- extremecloudiq/models/xiq_network_service.py +0 -409
- extremecloudiq/models/xiq_network_service_request.py +0 -259
- extremecloudiq/models/xiq_onboard_device_request.py +0 -251
- extremecloudiq/models/xiq_onboard_error.py +0 -142
- extremecloudiq/models/xiq_onboard_key_based_pcg_request.py +0 -180
- extremecloudiq/models/xiq_onboard_key_based_pcg_response.py +0 -182
- extremecloudiq/models/xiq_operation_metadata.py +0 -356
- extremecloudiq/models/xiq_operation_object.py +0 -234
- extremecloudiq/models/xiq_operation_status.py +0 -105
- extremecloudiq/models/xiq_organization.py +0 -294
- extremecloudiq/models/xiq_organization_type.py +0 -101
- extremecloudiq/models/xiq_os_object.py +0 -210
- extremecloudiq/models/xiq_packet_capture.py +0 -539
- extremecloudiq/models/xiq_packet_capture_field.py +0 -115
- extremecloudiq/models/xiq_packet_capture_sort_field.py +0 -102
- extremecloudiq/models/xiq_packet_capture_status.py +0 -104
- extremecloudiq/models/xiq_password_character_type.py +0 -102
- extremecloudiq/models/xiq_password_db_location.py +0 -101
- extremecloudiq/models/xiq_password_settings.py +0 -290
- extremecloudiq/models/xiq_password_type.py +0 -101
- extremecloudiq/models/xiq_pcg_assign_ports_request.py +0 -124
- extremecloudiq/models/xiq_pcg_assign_ports_response.py +0 -182
- extremecloudiq/models/xiq_pcg_port_assignment.py +0 -208
- extremecloudiq/models/xiq_pcg_port_assignment_entry.py +0 -323
- extremecloudiq/models/xiq_pcg_port_assignment_entry_detail.py +0 -314
- extremecloudiq/models/xiq_pcg_port_assignment_entry_device_meta.py +0 -297
- extremecloudiq/models/xiq_pcg_port_assignment_entry_eth_user_meta.py +0 -355
- extremecloudiq/models/xiq_pcg_type.py +0 -101
- extremecloudiq/models/xiq_permission.py +0 -182
- extremecloudiq/models/xiq_poe_flapping_stats_response.py +0 -151
- extremecloudiq/models/xiq_poe_trend_graphs_response.py +0 -123
- extremecloudiq/models/xiq_policy_rule_protocol_type.py +0 -108
- extremecloudiq/models/xiq_port_efficiency_speed_duplex_stats_response.py +0 -123
- extremecloudiq/models/xiq_port_efficiency_stats_response.py +0 -123
- extremecloudiq/models/xiq_post_expiration_action.py +0 -205
- extremecloudiq/models/xiq_power_source_equipment.py +0 -319
- extremecloudiq/models/xiq_psk_generation_method.py +0 -101
- extremecloudiq/models/xiq_quality_index.py +0 -103
- extremecloudiq/models/xiq_radio.py +0 -294
- extremecloudiq/models/xiq_radio_bands.py +0 -106
- extremecloudiq/models/xiq_radio_entity.py +0 -152
- extremecloudiq/models/xiq_radio_mode.py +0 -110
- extremecloudiq/models/xiq_radio_operating_modes.py +0 -149
- extremecloudiq/models/xiq_radio_profile.py +0 -684
- extremecloudiq/models/xiq_radius_client.py +0 -207
- extremecloudiq/models/xiq_radius_client_object.py +0 -425
- extremecloudiq/models/xiq_radius_client_object_entry.py +0 -178
- extremecloudiq/models/xiq_radius_client_object_type.py +0 -102
- extremecloudiq/models/xiq_radius_client_profile.py +0 -179
- extremecloudiq/models/xiq_radius_client_profile_entry.py +0 -151
- extremecloudiq/models/xiq_radius_proxy.py +0 -460
- extremecloudiq/models/xiq_radius_proxy_format_type.py +0 -103
- extremecloudiq/models/xiq_radius_proxy_realm.py +0 -207
- extremecloudiq/models/xiq_radius_server_type.py +0 -102
- extremecloudiq/models/xiq_recurrence_type.py +0 -101
- extremecloudiq/models/xiq_regenerate_end_user_password_response.py +0 -124
- extremecloudiq/models/xiq_rf_environment_type.py +0 -106
- extremecloudiq/models/xiq_rp_channel_selection.py +0 -776
- extremecloudiq/models/xiq_rp_mac_oui_profile.py +0 -378
- extremecloudiq/models/xiq_rp_miscellaneous_settings.py +0 -266
- extremecloudiq/models/xiq_rp_neighborhood_analysis.py +0 -322
- extremecloudiq/models/xiq_rp_radio_usage_optimization.py +0 -1162
- extremecloudiq/models/xiq_rp_sensor_scan_settings.py +0 -266
- extremecloudiq/models/xiq_rp_wmm_qos_settings.py +0 -350
- extremecloudiq/models/xiq_schedule.py +0 -395
- extremecloudiq/models/xiq_schedule_type.py +0 -101
- extremecloudiq/models/xiq_send_cli_request.py +0 -151
- extremecloudiq/models/xiq_send_cli_response.py +0 -123
- extremecloudiq/models/xiq_server_role.py +0 -103
- extremecloudiq/models/xiq_sessions_data_entity.py +0 -208
- extremecloudiq/models/xiq_set_ssid_mode_dot1x_request.py +0 -290
- extremecloudiq/models/xiq_set_ssid_mode_ppsk_request.py +0 -332
- extremecloudiq/models/xiq_set_ssid_mode_psk_request.py +0 -293
- extremecloudiq/models/xiq_set_ssid_mode_wep_request.py +0 -391
- extremecloudiq/models/xiq_site.py +0 -464
- extremecloudiq/models/xiq_site_afc_schedule.py +0 -199
- extremecloudiq/models/xiq_sites_by_wired_entity.py +0 -207
- extremecloudiq/models/xiq_sites_by_wireless_entity.py +0 -207
- extremecloudiq/models/xiq_sms_log.py +0 -402
- extremecloudiq/models/xiq_sms_log_status.py +0 -103
- extremecloudiq/models/xiq_sms_template.py +0 -351
- extremecloudiq/models/xiq_sort_field.py +0 -101
- extremecloudiq/models/xiq_sort_order.py +0 -101
- extremecloudiq/models/xiq_spectrum_mismatch_summary.py +0 -173
- extremecloudiq/models/xiq_speed_duplex_entity.py +0 -180
- extremecloudiq/models/xiq_ssid.py +0 -599
- extremecloudiq/models/xiq_ssid_access_security.py +0 -311
- extremecloudiq/models/xiq_ssid_access_security_type.py +0 -105
- extremecloudiq/models/xiq_ssid_advanced_settings.py +0 -208
- extremecloudiq/models/xiq_ssid_dot1x_encryption_method.py +0 -103
- extremecloudiq/models/xiq_ssid_dot1x_key_management.py +0 -103
- extremecloudiq/models/xiq_ssid_encryption_method.py +0 -105
- extremecloudiq/models/xiq_ssid_key_management.py +0 -109
- extremecloudiq/models/xiq_ssid_key_type.py +0 -101
- extremecloudiq/models/xiq_ssid_ppsk_key_management.py +0 -102
- extremecloudiq/models/xiq_ssid_psk_encryption_method.py +0 -102
- extremecloudiq/models/xiq_ssid_psk_key_management.py +0 -103
- extremecloudiq/models/xiq_ssid_sae_group.py +0 -102
- extremecloudiq/models/xiq_ssid_status.py +0 -101
- extremecloudiq/models/xiq_ssid_wep_authentication_method.py +0 -101
- extremecloudiq/models/xiq_ssid_wep_default_key.py +0 -103
- extremecloudiq/models/xiq_ssid_wep_encryption_method.py +0 -101
- extremecloudiq/models/xiq_ssid_wep_key_management.py +0 -101
- extremecloudiq/models/xiq_storage.py +0 -149
- extremecloudiq/models/xiq_subnet_address_profile.py +0 -434
- extremecloudiq/models/xiq_subscription_data_type.py +0 -107
- extremecloudiq/models/xiq_subscription_message_type.py +0 -108
- extremecloudiq/models/xiq_subscription_status.py +0 -101
- extremecloudiq/models/xiq_success_onboard_device.py +0 -153
- extremecloudiq/models/xiq_thread_backbone_border_router_service.py +0 -121
- extremecloudiq/models/xiq_thread_border_agent_service.py +0 -147
- extremecloudiq/models/xiq_thread_border_router_service.py +0 -355
- extremecloudiq/models/xiq_thread_commissioner_service.py +0 -121
- extremecloudiq/models/xiq_thread_ipv6_setting.py +0 -199
- extremecloudiq/models/xiq_thread_leader_service.py +0 -199
- extremecloudiq/models/xiq_thread_mle_link_mode.py +0 -173
- extremecloudiq/models/xiq_thread_nat64_service.py +0 -173
- extremecloudiq/models/xiq_thread_net_data_prefix.py +0 -433
- extremecloudiq/models/xiq_thread_net_data_route.py +0 -251
- extremecloudiq/models/xiq_thread_net_data_service.py +0 -251
- extremecloudiq/models/xiq_thread_network_config.py +0 -607
- extremecloudiq/models/xiq_thread_network_data.py +0 -225
- extremecloudiq/models/xiq_thread_network_interface.py +0 -537
- extremecloudiq/models/xiq_thread_network_topology.py +0 -173
- extremecloudiq/models/xiq_thread_networks.py +0 -121
- extremecloudiq/models/xiq_thread_router.py +0 -942
- extremecloudiq/models/xiq_thread_router_neighbor.py +0 -199
- extremecloudiq/models/xiq_thread_start_commissioner_request.py +0 -186
- extremecloudiq/models/xiq_thread_stop_commissioner_request.py +0 -152
- extremecloudiq/models/xiq_thread_version.py +0 -199
- extremecloudiq/models/xiq_top_applications_usage.py +0 -235
- extremecloudiq/models/xiq_traffic.py +0 -101
- extremecloudiq/models/xiq_trend_graph_entity.py +0 -152
- extremecloudiq/models/xiq_trend_indicator.py +0 -103
- extremecloudiq/models/xiq_tunnel_concentrator.py +0 -768
- extremecloudiq/models/xiq_tunnel_concentrator_request.py +0 -681
- extremecloudiq/models/xiq_unaffected_downlink_device.py +0 -207
- extremecloudiq/models/xiq_update_action_anomaly_details.py +0 -209
- extremecloudiq/models/xiq_update_alert_email_subscription_request.py +0 -208
- extremecloudiq/models/xiq_update_alert_rule_request.py +0 -319
- extremecloudiq/models/xiq_update_alert_webhook_subscription_request.py +0 -236
- extremecloudiq/models/xiq_update_anomalies_and_devices_request.py +0 -151
- extremecloudiq/models/xiq_update_building_request.py +0 -236
- extremecloudiq/models/xiq_update_classification_request.py +0 -188
- extremecloudiq/models/xiq_update_classification_rule_request.py +0 -181
- extremecloudiq/models/xiq_update_client_monitor_profile_request.py +0 -241
- extremecloudiq/models/xiq_update_cloud_config_group_request.py +0 -179
- extremecloudiq/models/xiq_update_device_level_ssid_status.py +0 -182
- extremecloudiq/models/xiq_update_end_user_request.py +0 -347
- extremecloudiq/models/xiq_update_external_radius_server_request.py +0 -278
- extremecloudiq/models/xiq_update_external_user_request.py +0 -177
- extremecloudiq/models/xiq_update_floor_request.py +0 -350
- extremecloudiq/models/xiq_update_internal_radius_server_request.py +0 -652
- extremecloudiq/models/xiq_update_key_based_pcg_users_request.py +0 -124
- extremecloudiq/models/xiq_update_l3_address_profile_request.py +0 -292
- extremecloudiq/models/xiq_update_ldap_server_request.py +0 -486
- extremecloudiq/models/xiq_update_location_request.py +0 -153
- extremecloudiq/models/xiq_update_mac_object_request.py +0 -207
- extremecloudiq/models/xiq_update_network_policy_request.py +0 -177
- extremecloudiq/models/xiq_update_radio_profile_request.py +0 -437
- extremecloudiq/models/xiq_update_radius_client.py +0 -207
- extremecloudiq/models/xiq_update_radius_client_object_request.py +0 -309
- extremecloudiq/models/xiq_update_radius_proxy_realm.py +0 -207
- extremecloudiq/models/xiq_update_radius_proxy_request.py +0 -345
- extremecloudiq/models/xiq_update_rp_channel_selection_request.py +0 -713
- extremecloudiq/models/xiq_update_rp_mac_oui_profile_request.py +0 -235
- extremecloudiq/models/xiq_update_rp_miscellaneous_settings_request.py +0 -157
- extremecloudiq/models/xiq_update_rp_neighborhood_analysis_request.py +0 -241
- extremecloudiq/models/xiq_update_rp_radio_usage_optimization_request.py +0 -1159
- extremecloudiq/models/xiq_update_rp_sensor_scan_settings_request.py +0 -179
- extremecloudiq/models/xiq_update_rp_wmm_qos_settings_request.py +0 -259
- extremecloudiq/models/xiq_update_site_request.py +0 -263
- extremecloudiq/models/xiq_update_ssid_advanced_settings_request.py +0 -123
- extremecloudiq/models/xiq_update_user_group_request.py +0 -453
- extremecloudiq/models/xiq_update_user_profile_request.py +0 -151
- extremecloudiq/models/xiq_update_user_request.py +0 -233
- extremecloudiq/models/xiq_update_vlan_object_classified_entry_request.py +0 -153
- extremecloudiq/models/xiq_update_vlan_profile_request.py +0 -210
- extremecloudiq/models/xiq_user.py +0 -517
- extremecloudiq/models/xiq_user_group.py +0 -599
- extremecloudiq/models/xiq_user_profile.py +0 -237
- extremecloudiq/models/xiq_user_profile_assignment.py +0 -488
- extremecloudiq/models/xiq_user_profile_assignment_radius_attribute.py +0 -149
- extremecloudiq/models/xiq_user_profile_assignment_rule.py +0 -175
- extremecloudiq/models/xiq_user_role.py +0 -107
- extremecloudiq/models/xiq_valid_daily_settings.py +0 -211
- extremecloudiq/models/xiq_valid_during_date_settings.py +0 -178
- extremecloudiq/models/xiq_valid_for_time_period_settings.py +0 -174
- extremecloudiq/models/xiq_valid_time_period_after_first_login.py +0 -207
- extremecloudiq/models/xiq_valid_time_period_after_id_creation.py +0 -151
- extremecloudiq/models/xiq_valid_time_period_after_type.py +0 -101
- extremecloudiq/models/xiq_viq.py +0 -347
- extremecloudiq/models/xiq_viq_export_import_status_response.py +0 -261
- extremecloudiq/models/xiq_viq_export_response.py +0 -182
- extremecloudiq/models/xiq_viq_import_response.py +0 -153
- extremecloudiq/models/xiq_viq_license.py +0 -456
- extremecloudiq/models/xiq_viq_operation_type.py +0 -101
- extremecloudiq/models/xiq_viq_task_progress.py +0 -207
- extremecloudiq/models/xiq_vlan_object_classified_entry.py +0 -271
- extremecloudiq/models/xiq_vlan_profile.py +0 -331
- extremecloudiq/models/xiq_vlan_profile_filter.py +0 -123
- extremecloudiq/models/xiq_voss_device.py +0 -207
- extremecloudiq/models/xiq_voss_devices.py +0 -124
- extremecloudiq/models/xiq_webhook_subscription.py +0 -350
- extremecloudiq/models/xiq_weekday.py +0 -106
- extremecloudiq/models/xiq_wgs84.py +0 -182
- extremecloudiq/models/xiq_wifi_capacity_client_list_response.py +0 -123
- extremecloudiq/models/xiq_wifi_capacity_stats_response.py +0 -123
- extremecloudiq/models/xiq_wifi_efficiency_client_list_response.py +0 -123
- extremecloudiq/models/xiq_wifi_efficiency_stats_response.py +0 -179
- extremecloudiq/models/xiq_wildcard_address_profile.py +0 -434
- extremecloudiq/models/xiq_wildcard_host_name_address_profile.py +0 -406
- extremecloudiq/models/xiq_wing_device.py +0 -236
- extremecloudiq/models/xiq_wing_devices.py +0 -124
- extremecloudiq/models/xiq_wired_event_entity.py +0 -291
- extremecloudiq/models/xiq_wired_filter_type.py +0 -104
- extremecloudiq/models/xiq_wired_hardware_by_location_response.py +0 -179
- extremecloudiq/models/xiq_wired_hardware_entity.py +0 -236
- extremecloudiq/models/xiq_wired_hardware_response.py +0 -123
- extremecloudiq/models/xiq_wired_quality_index_response.py +0 -151
- extremecloudiq/models/xiq_wired_view_type.py +0 -100
- extremecloudiq/models/xiq_wireless_apps_response.py +0 -235
- extremecloudiq/models/xiq_wireless_client.py +0 -203
- extremecloudiq/models/xiq_wireless_connectivity_performance_response.py +0 -123
- extremecloudiq/models/xiq_wireless_event_retries_entity.py +0 -263
- extremecloudiq/models/xiq_wireless_filter_type.py +0 -105
- extremecloudiq/models/xiq_wireless_if_name.py +0 -102
- extremecloudiq/models/xiq_wireless_performance_entity.py +0 -290
- extremecloudiq/models/xiq_wireless_performance_retries_entity.py +0 -179
- extremecloudiq/models/xiq_wireless_quality_index_by_location_response.py +0 -207
- extremecloudiq/models/xiq_wireless_quality_index_response.py +0 -179
- extremecloudiq/models/xiq_wireless_time_to_connect_entity.py +0 -404
- extremecloudiq/models/xiq_wireless_time_to_connect_response.py +0 -123
- extremecloudiq/models/xiq_wireless_views_list_type.py +0 -101
- extremecloudiq/models/xiq_wireless_views_type_response.py +0 -123
- extremecloudiq/models/xiq_zsubelement.py +0 -179
- extremecloudiq/models/xiq_zsubelement_above_floor.py +0 -153
- extremecloudiq_api-24.5.0.51.dist-info/METADATA +0 -18
- extremecloudiq_api-24.5.0.51.dist-info/RECORD +0 -729
- {extremecloudiq_api-24.5.0.51.dist-info → extremecloudiq_api-25.1.0.147.dist-info}/WHEEL +0 -0
- {extremecloudiq_api-24.5.0.51.dist-info → extremecloudiq_api-25.1.0.147.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,2476 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
ExtremeCloud IQ API
|
5
|
+
|
6
|
+
ExtremeCloud IQ RESTful API for external and internal applications. # noqa: E501
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 25.1.0.147
|
9
|
+
Contact: support@extremenetworks.com
|
10
|
+
Generated by: https://openapi-generator.tech
|
11
|
+
"""
|
12
|
+
|
13
|
+
from collections import defaultdict
|
14
|
+
from datetime import date, datetime, timedelta # noqa: F401
|
15
|
+
import functools
|
16
|
+
import decimal
|
17
|
+
import io
|
18
|
+
import re
|
19
|
+
import types
|
20
|
+
import typing
|
21
|
+
import uuid
|
22
|
+
|
23
|
+
from dateutil.parser.isoparser import isoparser, _takes_ascii
|
24
|
+
import frozendict
|
25
|
+
|
26
|
+
from extremecloudiq.exceptions import (
|
27
|
+
ApiTypeError,
|
28
|
+
ApiValueError,
|
29
|
+
)
|
30
|
+
from extremecloudiq.configuration import (
|
31
|
+
Configuration,
|
32
|
+
)
|
33
|
+
|
34
|
+
|
35
|
+
class Unset(object):
|
36
|
+
"""
|
37
|
+
An instance of this class is set as the default value for object type(dict) properties that are optional
|
38
|
+
When a property has an unset value, that property will not be assigned in the dict
|
39
|
+
"""
|
40
|
+
pass
|
41
|
+
|
42
|
+
unset = Unset()
|
43
|
+
|
44
|
+
none_type = type(None)
|
45
|
+
file_type = io.IOBase
|
46
|
+
|
47
|
+
|
48
|
+
class FileIO(io.FileIO):
|
49
|
+
"""
|
50
|
+
A class for storing files
|
51
|
+
Note: this class is not immutable
|
52
|
+
"""
|
53
|
+
|
54
|
+
def __new__(cls, _arg: typing.Union[io.FileIO, io.BufferedReader]):
|
55
|
+
if isinstance(_arg, (io.FileIO, io.BufferedReader)):
|
56
|
+
if _arg.closed:
|
57
|
+
raise ApiValueError('Invalid file state; file is closed and must be open')
|
58
|
+
_arg.close()
|
59
|
+
inst = super(FileIO, cls).__new__(cls, _arg.name)
|
60
|
+
super(FileIO, inst).__init__(_arg.name)
|
61
|
+
return inst
|
62
|
+
raise ApiValueError('FileIO must be passed _arg which contains the open file')
|
63
|
+
|
64
|
+
def __init__(self, _arg: typing.Union[io.FileIO, io.BufferedReader]):
|
65
|
+
pass
|
66
|
+
|
67
|
+
|
68
|
+
def update(d: dict, u: dict):
|
69
|
+
"""
|
70
|
+
Adds u to d
|
71
|
+
Where each dict is defaultdict(set)
|
72
|
+
"""
|
73
|
+
if not u:
|
74
|
+
return d
|
75
|
+
for k, v in u.items():
|
76
|
+
if k not in d:
|
77
|
+
d[k] = v
|
78
|
+
else:
|
79
|
+
d[k] = d[k] | v
|
80
|
+
|
81
|
+
|
82
|
+
class ValidationMetadata(frozendict.frozendict):
|
83
|
+
"""
|
84
|
+
A class storing metadata that is needed to validate OpenApi Schema payloads
|
85
|
+
"""
|
86
|
+
def __new__(
|
87
|
+
cls,
|
88
|
+
path_to_item: typing.Tuple[typing.Union[str, int], ...] = tuple(['args[0]']),
|
89
|
+
from_server: bool = False,
|
90
|
+
configuration: typing.Optional[Configuration] = None,
|
91
|
+
seen_classes: typing.FrozenSet[typing.Type] = frozenset(),
|
92
|
+
validated_path_to_schemas: typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Set[typing.Type]] = frozendict.frozendict()
|
93
|
+
):
|
94
|
+
"""
|
95
|
+
Args:
|
96
|
+
path_to_item: the path to the current data being instantiated.
|
97
|
+
For {'a': [1]} if the code is handling, 1, then the path is ('args[0]', 'a', 0)
|
98
|
+
This changes from location to location
|
99
|
+
from_server: whether or not this data came form the server
|
100
|
+
True when receiving server data
|
101
|
+
False when instantiating model with client side data not form the server
|
102
|
+
This does not change from location to location
|
103
|
+
configuration: the Configuration instance to use
|
104
|
+
This is needed because in Configuration:
|
105
|
+
- one can disable validation checking
|
106
|
+
This does not change from location to location
|
107
|
+
seen_classes: when deserializing data that matches multiple schemas, this is used to store
|
108
|
+
the schemas that have been traversed. This is used to stop processing when a cycle is seen.
|
109
|
+
This changes from location to location
|
110
|
+
validated_path_to_schemas: stores the already validated schema classes for a given path location
|
111
|
+
This does not change from location to location
|
112
|
+
"""
|
113
|
+
return super().__new__(
|
114
|
+
cls,
|
115
|
+
path_to_item=path_to_item,
|
116
|
+
from_server=from_server,
|
117
|
+
configuration=configuration,
|
118
|
+
seen_classes=seen_classes,
|
119
|
+
validated_path_to_schemas=validated_path_to_schemas
|
120
|
+
)
|
121
|
+
|
122
|
+
def validation_ran_earlier(self, cls: type) -> bool:
|
123
|
+
validated_schemas = self.validated_path_to_schemas.get(self.path_to_item, set())
|
124
|
+
validation_ran_earlier = validated_schemas and cls in validated_schemas
|
125
|
+
if validation_ran_earlier:
|
126
|
+
return True
|
127
|
+
if cls in self.seen_classes:
|
128
|
+
return True
|
129
|
+
return False
|
130
|
+
|
131
|
+
@property
|
132
|
+
def path_to_item(self) -> typing.Tuple[typing.Union[str, int], ...]:
|
133
|
+
return self.get('path_to_item')
|
134
|
+
|
135
|
+
@property
|
136
|
+
def from_server(self) -> bool:
|
137
|
+
return self.get('from_server')
|
138
|
+
|
139
|
+
@property
|
140
|
+
def configuration(self) -> typing.Optional[Configuration]:
|
141
|
+
return self.get('configuration')
|
142
|
+
|
143
|
+
@property
|
144
|
+
def seen_classes(self) -> typing.FrozenSet[typing.Type]:
|
145
|
+
return self.get('seen_classes')
|
146
|
+
|
147
|
+
@property
|
148
|
+
def validated_path_to_schemas(self) -> typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Set[typing.Type]]:
|
149
|
+
return self.get('validated_path_to_schemas')
|
150
|
+
|
151
|
+
|
152
|
+
def add_deeper_validated_schemas(validation_metadata: ValidationMetadata, path_to_schemas: dict):
|
153
|
+
# this is called if validation_ran_earlier and current and deeper locations need to be added
|
154
|
+
current_path_to_item = validation_metadata.path_to_item
|
155
|
+
other_path_to_schemas = {}
|
156
|
+
for path_to_item, schemas in validation_metadata.validated_path_to_schemas.items():
|
157
|
+
if len(path_to_item) < len(current_path_to_item):
|
158
|
+
continue
|
159
|
+
path_begins_with_current_path = path_to_item[:len(current_path_to_item)] == current_path_to_item
|
160
|
+
if path_begins_with_current_path:
|
161
|
+
other_path_to_schemas[path_to_item] = schemas
|
162
|
+
update(path_to_schemas, other_path_to_schemas)
|
163
|
+
|
164
|
+
|
165
|
+
class Singleton:
|
166
|
+
"""
|
167
|
+
Enums and singletons are the same
|
168
|
+
The same instance is returned for a given key of (cls, _arg)
|
169
|
+
"""
|
170
|
+
_instances = {}
|
171
|
+
|
172
|
+
def __new__(cls, _arg: typing.Any, **kwargs):
|
173
|
+
"""
|
174
|
+
cls base classes: BoolClass, NoneClass, str, decimal.Decimal
|
175
|
+
The 3rd key is used in the tuple below for a corner case where an enum contains integer 1
|
176
|
+
However 1.0 can also be ingested into that enum schema because 1.0 == 1 and
|
177
|
+
Decimal('1.0') == Decimal('1')
|
178
|
+
But if we omitted the 3rd value in the key, then Decimal('1.0') would be stored as Decimal('1')
|
179
|
+
and json serializing that instance would be '1' rather than the expected '1.0'
|
180
|
+
Adding the 3rd value, the str of _arg ensures that 1.0 -> Decimal('1.0') which is serialized as 1.0
|
181
|
+
"""
|
182
|
+
key = (cls, _arg, str(_arg))
|
183
|
+
if key not in cls._instances:
|
184
|
+
if isinstance(_arg, (none_type, bool, BoolClass, NoneClass)):
|
185
|
+
inst = super().__new__(cls)
|
186
|
+
cls._instances[key] = inst
|
187
|
+
else:
|
188
|
+
cls._instances[key] = super().__new__(cls, _arg)
|
189
|
+
return cls._instances[key]
|
190
|
+
|
191
|
+
def __repr__(self):
|
192
|
+
if isinstance(self, NoneClass):
|
193
|
+
return f'<{self.__class__.__name__}: None>'
|
194
|
+
elif isinstance(self, BoolClass):
|
195
|
+
if bool(self):
|
196
|
+
return f'<{self.__class__.__name__}: True>'
|
197
|
+
return f'<{self.__class__.__name__}: False>'
|
198
|
+
return f'<{self.__class__.__name__}: {super().__repr__()}>'
|
199
|
+
|
200
|
+
|
201
|
+
class classproperty:
|
202
|
+
|
203
|
+
def __init__(self, fget):
|
204
|
+
self.fget = fget
|
205
|
+
|
206
|
+
def __get__(self, owner_self, owner_cls):
|
207
|
+
return self.fget(owner_cls)
|
208
|
+
|
209
|
+
|
210
|
+
class NoneClass(Singleton):
|
211
|
+
@classproperty
|
212
|
+
def NONE(cls):
|
213
|
+
return cls(None)
|
214
|
+
|
215
|
+
def __bool__(self) -> bool:
|
216
|
+
return False
|
217
|
+
|
218
|
+
|
219
|
+
class BoolClass(Singleton):
|
220
|
+
@classproperty
|
221
|
+
def TRUE(cls):
|
222
|
+
return cls(True)
|
223
|
+
|
224
|
+
@classproperty
|
225
|
+
def FALSE(cls):
|
226
|
+
return cls(False)
|
227
|
+
|
228
|
+
@functools.lru_cache()
|
229
|
+
def __bool__(self) -> bool:
|
230
|
+
for key, instance in self._instances.items():
|
231
|
+
if self is instance:
|
232
|
+
return bool(key[1])
|
233
|
+
raise ValueError('Unable to find the boolean value of this instance')
|
234
|
+
|
235
|
+
|
236
|
+
class MetaOapgTyped:
|
237
|
+
exclusive_maximum: typing.Union[int, float]
|
238
|
+
inclusive_maximum: typing.Union[int, float]
|
239
|
+
exclusive_minimum: typing.Union[int, float]
|
240
|
+
inclusive_minimum: typing.Union[int, float]
|
241
|
+
max_items: int
|
242
|
+
min_items: int
|
243
|
+
discriminator: typing.Dict[str, typing.Dict[str, typing.Type['Schema']]]
|
244
|
+
|
245
|
+
|
246
|
+
class properties:
|
247
|
+
# to hold object properties
|
248
|
+
pass
|
249
|
+
|
250
|
+
additional_properties: typing.Optional[typing.Type['Schema']]
|
251
|
+
max_properties: int
|
252
|
+
min_properties: int
|
253
|
+
all_of: typing.List[typing.Type['Schema']]
|
254
|
+
one_of: typing.List[typing.Type['Schema']]
|
255
|
+
any_of: typing.List[typing.Type['Schema']]
|
256
|
+
not_schema: typing.Type['Schema']
|
257
|
+
max_length: int
|
258
|
+
min_length: int
|
259
|
+
items: typing.Type['Schema']
|
260
|
+
|
261
|
+
|
262
|
+
class Schema:
|
263
|
+
"""
|
264
|
+
the base class of all swagger/openapi schemas/models
|
265
|
+
"""
|
266
|
+
__inheritable_primitive_types_set = {decimal.Decimal, str, tuple, frozendict.frozendict, FileIO, bytes, BoolClass, NoneClass}
|
267
|
+
_types: typing.Set[typing.Type]
|
268
|
+
MetaOapg = MetaOapgTyped
|
269
|
+
|
270
|
+
@staticmethod
|
271
|
+
def __get_valid_classes_phrase(input_classes):
|
272
|
+
"""Returns a string phrase describing what types are allowed"""
|
273
|
+
all_classes = list(input_classes)
|
274
|
+
all_classes = sorted(all_classes, key=lambda cls: cls.__name__)
|
275
|
+
all_class_names = [cls.__name__ for cls in all_classes]
|
276
|
+
if len(all_class_names) == 1:
|
277
|
+
return "is {0}".format(all_class_names[0])
|
278
|
+
return "is one of [{0}]".format(", ".join(all_class_names))
|
279
|
+
|
280
|
+
@staticmethod
|
281
|
+
def _get_class_oapg(item_cls: typing.Union[types.FunctionType, staticmethod, typing.Type['Schema']]) -> typing.Type['Schema']:
|
282
|
+
if isinstance(item_cls, types.FunctionType):
|
283
|
+
# referenced schema
|
284
|
+
return item_cls()
|
285
|
+
elif isinstance(item_cls, staticmethod):
|
286
|
+
# referenced schema
|
287
|
+
return item_cls.__func__()
|
288
|
+
return item_cls
|
289
|
+
|
290
|
+
@classmethod
|
291
|
+
def __type_error_message(
|
292
|
+
cls, var_value=None, var_name=None, valid_classes=None, key_type=None
|
293
|
+
):
|
294
|
+
"""
|
295
|
+
Keyword Args:
|
296
|
+
var_value (any): the variable which has the type_error
|
297
|
+
var_name (str): the name of the variable which has the typ error
|
298
|
+
valid_classes (tuple): the accepted classes for current_item's
|
299
|
+
value
|
300
|
+
key_type (bool): False if our value is a value in a dict
|
301
|
+
True if it is a key in a dict
|
302
|
+
False if our item is an item in a tuple
|
303
|
+
"""
|
304
|
+
key_or_value = "value"
|
305
|
+
if key_type:
|
306
|
+
key_or_value = "key"
|
307
|
+
valid_classes_phrase = cls.__get_valid_classes_phrase(valid_classes)
|
308
|
+
msg = "Invalid type. Required {1} type {2} and " "passed type was {3}".format(
|
309
|
+
var_name,
|
310
|
+
key_or_value,
|
311
|
+
valid_classes_phrase,
|
312
|
+
type(var_value).__name__,
|
313
|
+
)
|
314
|
+
return msg
|
315
|
+
|
316
|
+
@classmethod
|
317
|
+
def __get_type_error(cls, var_value, path_to_item, valid_classes, key_type=False):
|
318
|
+
error_msg = cls.__type_error_message(
|
319
|
+
var_name=path_to_item[-1],
|
320
|
+
var_value=var_value,
|
321
|
+
valid_classes=valid_classes,
|
322
|
+
key_type=key_type,
|
323
|
+
)
|
324
|
+
return ApiTypeError(
|
325
|
+
error_msg,
|
326
|
+
path_to_item=path_to_item,
|
327
|
+
valid_classes=valid_classes,
|
328
|
+
key_type=key_type,
|
329
|
+
)
|
330
|
+
|
331
|
+
@classmethod
|
332
|
+
def _validate_oapg(
|
333
|
+
cls,
|
334
|
+
arg,
|
335
|
+
validation_metadata: ValidationMetadata,
|
336
|
+
) -> typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Set[typing.Union['Schema', str, decimal.Decimal, BoolClass, NoneClass, frozendict.frozendict, tuple]]]:
|
337
|
+
"""
|
338
|
+
Schema _validate_oapg
|
339
|
+
All keyword validation except for type checking was done in calling stack frames
|
340
|
+
If those validations passed, the validated classes are collected in path_to_schemas
|
341
|
+
|
342
|
+
Returns:
|
343
|
+
path_to_schemas: a map of path to schemas
|
344
|
+
|
345
|
+
Raises:
|
346
|
+
ApiValueError: when a string can't be converted into a date or datetime and it must be one of those classes
|
347
|
+
ApiTypeError: when the input type is not in the list of allowed spec types
|
348
|
+
"""
|
349
|
+
base_class = type(arg)
|
350
|
+
if base_class not in cls._types:
|
351
|
+
raise cls.__get_type_error(
|
352
|
+
arg,
|
353
|
+
validation_metadata.path_to_item,
|
354
|
+
cls._types,
|
355
|
+
key_type=False,
|
356
|
+
)
|
357
|
+
|
358
|
+
path_to_schemas = {validation_metadata.path_to_item: set()}
|
359
|
+
path_to_schemas[validation_metadata.path_to_item].add(cls)
|
360
|
+
path_to_schemas[validation_metadata.path_to_item].add(base_class)
|
361
|
+
return path_to_schemas
|
362
|
+
|
363
|
+
@staticmethod
|
364
|
+
def _process_schema_classes_oapg(
|
365
|
+
schema_classes: typing.Set[typing.Union['Schema', str, decimal.Decimal, BoolClass, NoneClass, frozendict.frozendict, tuple]]
|
366
|
+
):
|
367
|
+
"""
|
368
|
+
Processes and mutates schema_classes
|
369
|
+
If a SomeSchema is a subclass of DictSchema then remove DictSchema because it is already included
|
370
|
+
"""
|
371
|
+
if len(schema_classes) < 2:
|
372
|
+
return
|
373
|
+
if len(schema_classes) > 2 and UnsetAnyTypeSchema in schema_classes:
|
374
|
+
schema_classes.remove(UnsetAnyTypeSchema)
|
375
|
+
x_schema = schema_type_classes & schema_classes
|
376
|
+
if not x_schema:
|
377
|
+
return
|
378
|
+
x_schema = x_schema.pop()
|
379
|
+
if any(c is not x_schema and issubclass(c, x_schema) for c in schema_classes):
|
380
|
+
# needed to not have a mro error in get_new_class
|
381
|
+
schema_classes.remove(x_schema)
|
382
|
+
|
383
|
+
@classmethod
|
384
|
+
def __get_new_cls(
|
385
|
+
cls,
|
386
|
+
arg,
|
387
|
+
validation_metadata: ValidationMetadata
|
388
|
+
) -> typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Type['Schema']]:
|
389
|
+
"""
|
390
|
+
Make a new dynamic class and return an instance of that class
|
391
|
+
We are making an instance of cls, but instead of making cls
|
392
|
+
make a new class, new_cls
|
393
|
+
which includes dynamic bases including cls
|
394
|
+
return an instance of that new class
|
395
|
+
|
396
|
+
Dict property + List Item Assignment Use cases:
|
397
|
+
1. value is NOT an instance of the required schema class
|
398
|
+
the value is validated by _validate_oapg
|
399
|
+
_validate_oapg returns a key value pair
|
400
|
+
where the key is the path to the item, and the value will be the required manufactured class
|
401
|
+
made out of the matching schemas
|
402
|
+
2. value is an instance of the correct schema type
|
403
|
+
the value is NOT validated by _validate_oapg, _validate_oapg only checks that the instance is of the correct schema type
|
404
|
+
for this value, _validate_oapg does NOT return an entry for it in _path_to_schemas
|
405
|
+
and in list/dict _get_items_oapg,_get_properties_oapg the value will be directly assigned
|
406
|
+
because value is of the correct type, and validation was run earlier when the instance was created
|
407
|
+
"""
|
408
|
+
_path_to_schemas = {}
|
409
|
+
if validation_metadata.validation_ran_earlier(cls):
|
410
|
+
add_deeper_validated_schemas(validation_metadata, _path_to_schemas)
|
411
|
+
else:
|
412
|
+
other_path_to_schemas = cls._validate_oapg(arg, validation_metadata=validation_metadata)
|
413
|
+
update(_path_to_schemas, other_path_to_schemas)
|
414
|
+
# loop through it make a new class for each entry
|
415
|
+
# do not modify the returned result because it is cached and we would be modifying the cached value
|
416
|
+
path_to_schemas = {}
|
417
|
+
for path, schema_classes in _path_to_schemas.items():
|
418
|
+
"""
|
419
|
+
Use cases
|
420
|
+
1. N number of schema classes + enum + type != bool/None, classes in path_to_schemas: tuple/frozendict.frozendict/str/Decimal/bytes/FileIo
|
421
|
+
needs Singleton added
|
422
|
+
2. N number of schema classes + enum + type == bool/None, classes in path_to_schemas: BoolClass/NoneClass
|
423
|
+
Singleton already added
|
424
|
+
3. N number of schema classes, classes in path_to_schemas: BoolClass/NoneClass/tuple/frozendict.frozendict/str/Decimal/bytes/FileIo
|
425
|
+
"""
|
426
|
+
cls._process_schema_classes_oapg(schema_classes)
|
427
|
+
enum_schema = any(
|
428
|
+
issubclass(this_cls, EnumBase) for this_cls in schema_classes)
|
429
|
+
inheritable_primitive_type = schema_classes.intersection(cls.__inheritable_primitive_types_set)
|
430
|
+
chosen_schema_classes = schema_classes - inheritable_primitive_type
|
431
|
+
suffix = tuple(inheritable_primitive_type)
|
432
|
+
if enum_schema and suffix[0] not in {NoneClass, BoolClass}:
|
433
|
+
suffix = (Singleton,) + suffix
|
434
|
+
|
435
|
+
used_classes = tuple(sorted(chosen_schema_classes, key=lambda a_cls: a_cls.__name__)) + suffix
|
436
|
+
mfg_cls = get_new_class(class_name='DynamicSchema', bases=used_classes)
|
437
|
+
path_to_schemas[path] = mfg_cls
|
438
|
+
|
439
|
+
return path_to_schemas
|
440
|
+
|
441
|
+
@classmethod
|
442
|
+
def _get_new_instance_without_conversion_oapg(
|
443
|
+
cls,
|
444
|
+
arg: typing.Any,
|
445
|
+
path_to_item: typing.Tuple[typing.Union[str, int], ...],
|
446
|
+
path_to_schemas: typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Type['Schema']]
|
447
|
+
):
|
448
|
+
# We have a Dynamic class and we are making an instance of it
|
449
|
+
if issubclass(cls, frozendict.frozendict) and issubclass(cls, DictBase):
|
450
|
+
properties = cls._get_properties_oapg(arg, path_to_item, path_to_schemas)
|
451
|
+
return super(Schema, cls).__new__(cls, properties)
|
452
|
+
elif issubclass(cls, tuple) and issubclass(cls, ListBase):
|
453
|
+
items = cls._get_items_oapg(arg, path_to_item, path_to_schemas)
|
454
|
+
return super(Schema, cls).__new__(cls, items)
|
455
|
+
"""
|
456
|
+
str = openapi str, date, and datetime
|
457
|
+
decimal.Decimal = openapi int and float
|
458
|
+
FileIO = openapi binary type and the user inputs a file
|
459
|
+
bytes = openapi binary type and the user inputs bytes
|
460
|
+
"""
|
461
|
+
return super(Schema, cls).__new__(cls, arg)
|
462
|
+
|
463
|
+
@classmethod
|
464
|
+
def from_openapi_data_oapg(
|
465
|
+
cls,
|
466
|
+
arg: typing.Union[
|
467
|
+
str,
|
468
|
+
date,
|
469
|
+
datetime,
|
470
|
+
int,
|
471
|
+
float,
|
472
|
+
decimal.Decimal,
|
473
|
+
bool,
|
474
|
+
None,
|
475
|
+
'Schema',
|
476
|
+
dict,
|
477
|
+
frozendict.frozendict,
|
478
|
+
tuple,
|
479
|
+
list,
|
480
|
+
io.FileIO,
|
481
|
+
io.BufferedReader,
|
482
|
+
bytes
|
483
|
+
],
|
484
|
+
_configuration: typing.Optional[Configuration]
|
485
|
+
):
|
486
|
+
"""
|
487
|
+
Schema from_openapi_data_oapg
|
488
|
+
"""
|
489
|
+
from_server = True
|
490
|
+
validated_path_to_schemas = {}
|
491
|
+
arg = cast_to_allowed_types(arg, from_server, validated_path_to_schemas)
|
492
|
+
validation_metadata = ValidationMetadata(
|
493
|
+
from_server=from_server, configuration=_configuration, validated_path_to_schemas=validated_path_to_schemas)
|
494
|
+
path_to_schemas = cls.__get_new_cls(arg, validation_metadata)
|
495
|
+
new_cls = path_to_schemas[validation_metadata.path_to_item]
|
496
|
+
new_inst = new_cls._get_new_instance_without_conversion_oapg(
|
497
|
+
arg,
|
498
|
+
validation_metadata.path_to_item,
|
499
|
+
path_to_schemas
|
500
|
+
)
|
501
|
+
return new_inst
|
502
|
+
|
503
|
+
@staticmethod
|
504
|
+
def __get_input_dict(*args, **kwargs) -> frozendict.frozendict:
|
505
|
+
input_dict = {}
|
506
|
+
if args and isinstance(args[0], (dict, frozendict.frozendict)):
|
507
|
+
input_dict.update(args[0])
|
508
|
+
if kwargs:
|
509
|
+
input_dict.update(kwargs)
|
510
|
+
return frozendict.frozendict(input_dict)
|
511
|
+
|
512
|
+
@staticmethod
|
513
|
+
def __remove_unsets(kwargs):
|
514
|
+
return {key: val for key, val in kwargs.items() if val is not unset}
|
515
|
+
|
516
|
+
def __new__(cls, *_args: typing.Union[dict, frozendict.frozendict, list, tuple, decimal.Decimal, float, int, str, date, datetime, bool, None, 'Schema'], _configuration: typing.Optional[Configuration] = None, **kwargs: typing.Union[dict, frozendict.frozendict, list, tuple, decimal.Decimal, float, int, str, date, datetime, bool, None, 'Schema', Unset]):
|
517
|
+
"""
|
518
|
+
Schema __new__
|
519
|
+
|
520
|
+
Args:
|
521
|
+
_args (int/float/decimal.Decimal/str/list/tuple/dict/frozendict.frozendict/bool/None): the value
|
522
|
+
kwargs (str, int/float/decimal.Decimal/str/list/tuple/dict/frozendict.frozendict/bool/None): dict values
|
523
|
+
_configuration: contains the Configuration that enables json schema validation keywords
|
524
|
+
like minItems, minLength etc
|
525
|
+
|
526
|
+
Note: double underscores are used here because pycharm thinks that these variables
|
527
|
+
are instance properties if they are named normally :(
|
528
|
+
"""
|
529
|
+
__kwargs = cls.__remove_unsets(kwargs)
|
530
|
+
if not _args and not __kwargs:
|
531
|
+
raise TypeError(
|
532
|
+
'No input given. args or kwargs must be given.'
|
533
|
+
)
|
534
|
+
if not __kwargs and _args and not isinstance(_args[0], dict):
|
535
|
+
__arg = _args[0]
|
536
|
+
else:
|
537
|
+
__arg = cls.__get_input_dict(*_args, **__kwargs)
|
538
|
+
__from_server = False
|
539
|
+
__validated_path_to_schemas = {}
|
540
|
+
__arg = cast_to_allowed_types(
|
541
|
+
__arg, __from_server, __validated_path_to_schemas)
|
542
|
+
__validation_metadata = ValidationMetadata(
|
543
|
+
configuration=_configuration, from_server=__from_server, validated_path_to_schemas=__validated_path_to_schemas)
|
544
|
+
__path_to_schemas = cls.__get_new_cls(__arg, __validation_metadata)
|
545
|
+
__new_cls = __path_to_schemas[__validation_metadata.path_to_item]
|
546
|
+
return __new_cls._get_new_instance_without_conversion_oapg(
|
547
|
+
__arg,
|
548
|
+
__validation_metadata.path_to_item,
|
549
|
+
__path_to_schemas
|
550
|
+
)
|
551
|
+
|
552
|
+
def __init__(
|
553
|
+
self,
|
554
|
+
*_args: typing.Union[
|
555
|
+
dict, frozendict.frozendict, list, tuple, decimal.Decimal, float, int, str, date, datetime, bool, None, 'Schema'],
|
556
|
+
_configuration: typing.Optional[Configuration] = None,
|
557
|
+
**kwargs: typing.Union[
|
558
|
+
dict, frozendict.frozendict, list, tuple, decimal.Decimal, float, int, str, date, datetime, bool, None, 'Schema', Unset
|
559
|
+
]
|
560
|
+
):
|
561
|
+
"""
|
562
|
+
this is needed to fix 'Unexpected argument' warning in pycharm
|
563
|
+
this code does nothing because all Schema instances are immutable
|
564
|
+
this means that all input data is passed into and used in new, and after the new instance is made
|
565
|
+
no new attributes are assigned and init is not used
|
566
|
+
"""
|
567
|
+
pass
|
568
|
+
|
569
|
+
"""
|
570
|
+
import itertools
|
571
|
+
data_types = ('None', 'FrozenDict', 'Tuple', 'Str', 'Decimal', 'Bool')
|
572
|
+
type_to_cls = {
|
573
|
+
'None': 'NoneClass',
|
574
|
+
'FrozenDict': 'frozendict.frozendict',
|
575
|
+
'Tuple': 'tuple',
|
576
|
+
'Str': 'str',
|
577
|
+
'Decimal': 'decimal.Decimal',
|
578
|
+
'Bool': 'BoolClass'
|
579
|
+
}
|
580
|
+
cls_tuples = [v for v in itertools.combinations(data_types, 5)]
|
581
|
+
typed_classes = [f"class {''.join(cls_tuple)}Mixin({', '.join(type_to_cls[typ] for typ in cls_tuple)}):\n pass" for cls_tuple in cls_tuples]
|
582
|
+
for cls in typed_classes:
|
583
|
+
print(cls)
|
584
|
+
object_classes = [f"{''.join(cls_tuple)}Mixin = object" for cls_tuple in cls_tuples]
|
585
|
+
for cls in object_classes:
|
586
|
+
print(cls)
|
587
|
+
"""
|
588
|
+
if typing.TYPE_CHECKING:
|
589
|
+
# qty 1
|
590
|
+
NoneMixin = NoneClass
|
591
|
+
FrozenDictMixin = frozendict.frozendict
|
592
|
+
TupleMixin = tuple
|
593
|
+
StrMixin = str
|
594
|
+
DecimalMixin = decimal.Decimal
|
595
|
+
BoolMixin = BoolClass
|
596
|
+
BytesMixin = bytes
|
597
|
+
FileMixin = FileIO
|
598
|
+
# qty 2
|
599
|
+
class BinaryMixin(bytes, FileIO):
|
600
|
+
pass
|
601
|
+
class NoneFrozenDictMixin(NoneClass, frozendict.frozendict):
|
602
|
+
pass
|
603
|
+
class NoneTupleMixin(NoneClass, tuple):
|
604
|
+
pass
|
605
|
+
class NoneStrMixin(NoneClass, str):
|
606
|
+
pass
|
607
|
+
class NoneDecimalMixin(NoneClass, decimal.Decimal):
|
608
|
+
pass
|
609
|
+
class NoneBoolMixin(NoneClass, BoolClass):
|
610
|
+
pass
|
611
|
+
class FrozenDictTupleMixin(frozendict.frozendict, tuple):
|
612
|
+
pass
|
613
|
+
class FrozenDictStrMixin(frozendict.frozendict, str):
|
614
|
+
pass
|
615
|
+
class FrozenDictDecimalMixin(frozendict.frozendict, decimal.Decimal):
|
616
|
+
pass
|
617
|
+
class FrozenDictBoolMixin(frozendict.frozendict, BoolClass):
|
618
|
+
pass
|
619
|
+
class TupleStrMixin(tuple, str):
|
620
|
+
pass
|
621
|
+
class TupleDecimalMixin(tuple, decimal.Decimal):
|
622
|
+
pass
|
623
|
+
class TupleBoolMixin(tuple, BoolClass):
|
624
|
+
pass
|
625
|
+
class StrDecimalMixin(str, decimal.Decimal):
|
626
|
+
pass
|
627
|
+
class StrBoolMixin(str, BoolClass):
|
628
|
+
pass
|
629
|
+
class DecimalBoolMixin(decimal.Decimal, BoolClass):
|
630
|
+
pass
|
631
|
+
# qty 3
|
632
|
+
class NoneFrozenDictTupleMixin(NoneClass, frozendict.frozendict, tuple):
|
633
|
+
pass
|
634
|
+
class NoneFrozenDictStrMixin(NoneClass, frozendict.frozendict, str):
|
635
|
+
pass
|
636
|
+
class NoneFrozenDictDecimalMixin(NoneClass, frozendict.frozendict, decimal.Decimal):
|
637
|
+
pass
|
638
|
+
class NoneFrozenDictBoolMixin(NoneClass, frozendict.frozendict, BoolClass):
|
639
|
+
pass
|
640
|
+
class NoneTupleStrMixin(NoneClass, tuple, str):
|
641
|
+
pass
|
642
|
+
class NoneTupleDecimalMixin(NoneClass, tuple, decimal.Decimal):
|
643
|
+
pass
|
644
|
+
class NoneTupleBoolMixin(NoneClass, tuple, BoolClass):
|
645
|
+
pass
|
646
|
+
class NoneStrDecimalMixin(NoneClass, str, decimal.Decimal):
|
647
|
+
pass
|
648
|
+
class NoneStrBoolMixin(NoneClass, str, BoolClass):
|
649
|
+
pass
|
650
|
+
class NoneDecimalBoolMixin(NoneClass, decimal.Decimal, BoolClass):
|
651
|
+
pass
|
652
|
+
class FrozenDictTupleStrMixin(frozendict.frozendict, tuple, str):
|
653
|
+
pass
|
654
|
+
class FrozenDictTupleDecimalMixin(frozendict.frozendict, tuple, decimal.Decimal):
|
655
|
+
pass
|
656
|
+
class FrozenDictTupleBoolMixin(frozendict.frozendict, tuple, BoolClass):
|
657
|
+
pass
|
658
|
+
class FrozenDictStrDecimalMixin(frozendict.frozendict, str, decimal.Decimal):
|
659
|
+
pass
|
660
|
+
class FrozenDictStrBoolMixin(frozendict.frozendict, str, BoolClass):
|
661
|
+
pass
|
662
|
+
class FrozenDictDecimalBoolMixin(frozendict.frozendict, decimal.Decimal, BoolClass):
|
663
|
+
pass
|
664
|
+
class TupleStrDecimalMixin(tuple, str, decimal.Decimal):
|
665
|
+
pass
|
666
|
+
class TupleStrBoolMixin(tuple, str, BoolClass):
|
667
|
+
pass
|
668
|
+
class TupleDecimalBoolMixin(tuple, decimal.Decimal, BoolClass):
|
669
|
+
pass
|
670
|
+
class StrDecimalBoolMixin(str, decimal.Decimal, BoolClass):
|
671
|
+
pass
|
672
|
+
# qty 4
|
673
|
+
class NoneFrozenDictTupleStrMixin(NoneClass, frozendict.frozendict, tuple, str):
|
674
|
+
pass
|
675
|
+
class NoneFrozenDictTupleDecimalMixin(NoneClass, frozendict.frozendict, tuple, decimal.Decimal):
|
676
|
+
pass
|
677
|
+
class NoneFrozenDictTupleBoolMixin(NoneClass, frozendict.frozendict, tuple, BoolClass):
|
678
|
+
pass
|
679
|
+
class NoneFrozenDictStrDecimalMixin(NoneClass, frozendict.frozendict, str, decimal.Decimal):
|
680
|
+
pass
|
681
|
+
class NoneFrozenDictStrBoolMixin(NoneClass, frozendict.frozendict, str, BoolClass):
|
682
|
+
pass
|
683
|
+
class NoneFrozenDictDecimalBoolMixin(NoneClass, frozendict.frozendict, decimal.Decimal, BoolClass):
|
684
|
+
pass
|
685
|
+
class NoneTupleStrDecimalMixin(NoneClass, tuple, str, decimal.Decimal):
|
686
|
+
pass
|
687
|
+
class NoneTupleStrBoolMixin(NoneClass, tuple, str, BoolClass):
|
688
|
+
pass
|
689
|
+
class NoneTupleDecimalBoolMixin(NoneClass, tuple, decimal.Decimal, BoolClass):
|
690
|
+
pass
|
691
|
+
class NoneStrDecimalBoolMixin(NoneClass, str, decimal.Decimal, BoolClass):
|
692
|
+
pass
|
693
|
+
class FrozenDictTupleStrDecimalMixin(frozendict.frozendict, tuple, str, decimal.Decimal):
|
694
|
+
pass
|
695
|
+
class FrozenDictTupleStrBoolMixin(frozendict.frozendict, tuple, str, BoolClass):
|
696
|
+
pass
|
697
|
+
class FrozenDictTupleDecimalBoolMixin(frozendict.frozendict, tuple, decimal.Decimal, BoolClass):
|
698
|
+
pass
|
699
|
+
class FrozenDictStrDecimalBoolMixin(frozendict.frozendict, str, decimal.Decimal, BoolClass):
|
700
|
+
pass
|
701
|
+
class TupleStrDecimalBoolMixin(tuple, str, decimal.Decimal, BoolClass):
|
702
|
+
pass
|
703
|
+
# qty 5
|
704
|
+
class NoneFrozenDictTupleStrDecimalMixin(NoneClass, frozendict.frozendict, tuple, str, decimal.Decimal):
|
705
|
+
pass
|
706
|
+
class NoneFrozenDictTupleStrBoolMixin(NoneClass, frozendict.frozendict, tuple, str, BoolClass):
|
707
|
+
pass
|
708
|
+
class NoneFrozenDictTupleDecimalBoolMixin(NoneClass, frozendict.frozendict, tuple, decimal.Decimal, BoolClass):
|
709
|
+
pass
|
710
|
+
class NoneFrozenDictStrDecimalBoolMixin(NoneClass, frozendict.frozendict, str, decimal.Decimal, BoolClass):
|
711
|
+
pass
|
712
|
+
class NoneTupleStrDecimalBoolMixin(NoneClass, tuple, str, decimal.Decimal, BoolClass):
|
713
|
+
pass
|
714
|
+
class FrozenDictTupleStrDecimalBoolMixin(frozendict.frozendict, tuple, str, decimal.Decimal, BoolClass):
|
715
|
+
pass
|
716
|
+
# qty 6
|
717
|
+
class NoneFrozenDictTupleStrDecimalBoolMixin(NoneClass, frozendict.frozendict, tuple, str, decimal.Decimal, BoolClass):
|
718
|
+
pass
|
719
|
+
# qty 8
|
720
|
+
class NoneFrozenDictTupleStrDecimalBoolFileBytesMixin(NoneClass, frozendict.frozendict, tuple, str, decimal.Decimal, BoolClass, FileIO, bytes):
|
721
|
+
pass
|
722
|
+
else:
|
723
|
+
# qty 1
|
724
|
+
class NoneMixin:
|
725
|
+
_types = {NoneClass}
|
726
|
+
class FrozenDictMixin:
|
727
|
+
_types = {frozendict.frozendict}
|
728
|
+
class TupleMixin:
|
729
|
+
_types = {tuple}
|
730
|
+
class StrMixin:
|
731
|
+
_types = {str}
|
732
|
+
class DecimalMixin:
|
733
|
+
_types = {decimal.Decimal}
|
734
|
+
class BoolMixin:
|
735
|
+
_types = {BoolClass}
|
736
|
+
class BytesMixin:
|
737
|
+
_types = {bytes}
|
738
|
+
class FileMixin:
|
739
|
+
_types = {FileIO}
|
740
|
+
# qty 2
|
741
|
+
class BinaryMixin:
|
742
|
+
_types = {bytes, FileIO}
|
743
|
+
class NoneFrozenDictMixin:
|
744
|
+
_types = {NoneClass, frozendict.frozendict}
|
745
|
+
class NoneTupleMixin:
|
746
|
+
_types = {NoneClass, tuple}
|
747
|
+
class NoneStrMixin:
|
748
|
+
_types = {NoneClass, str}
|
749
|
+
class NoneDecimalMixin:
|
750
|
+
_types = {NoneClass, decimal.Decimal}
|
751
|
+
class NoneBoolMixin:
|
752
|
+
_types = {NoneClass, BoolClass}
|
753
|
+
class FrozenDictTupleMixin:
|
754
|
+
_types = {frozendict.frozendict, tuple}
|
755
|
+
class FrozenDictStrMixin:
|
756
|
+
_types = {frozendict.frozendict, str}
|
757
|
+
class FrozenDictDecimalMixin:
|
758
|
+
_types = {frozendict.frozendict, decimal.Decimal}
|
759
|
+
class FrozenDictBoolMixin:
|
760
|
+
_types = {frozendict.frozendict, BoolClass}
|
761
|
+
class TupleStrMixin:
|
762
|
+
_types = {tuple, str}
|
763
|
+
class TupleDecimalMixin:
|
764
|
+
_types = {tuple, decimal.Decimal}
|
765
|
+
class TupleBoolMixin:
|
766
|
+
_types = {tuple, BoolClass}
|
767
|
+
class StrDecimalMixin:
|
768
|
+
_types = {str, decimal.Decimal}
|
769
|
+
class StrBoolMixin:
|
770
|
+
_types = {str, BoolClass}
|
771
|
+
class DecimalBoolMixin:
|
772
|
+
_types = {decimal.Decimal, BoolClass}
|
773
|
+
# qty 3
|
774
|
+
class NoneFrozenDictTupleMixin:
|
775
|
+
_types = {NoneClass, frozendict.frozendict, tuple}
|
776
|
+
class NoneFrozenDictStrMixin:
|
777
|
+
_types = {NoneClass, frozendict.frozendict, str}
|
778
|
+
class NoneFrozenDictDecimalMixin:
|
779
|
+
_types = {NoneClass, frozendict.frozendict, decimal.Decimal}
|
780
|
+
class NoneFrozenDictBoolMixin:
|
781
|
+
_types = {NoneClass, frozendict.frozendict, BoolClass}
|
782
|
+
class NoneTupleStrMixin:
|
783
|
+
_types = {NoneClass, tuple, str}
|
784
|
+
class NoneTupleDecimalMixin:
|
785
|
+
_types = {NoneClass, tuple, decimal.Decimal}
|
786
|
+
class NoneTupleBoolMixin:
|
787
|
+
_types = {NoneClass, tuple, BoolClass}
|
788
|
+
class NoneStrDecimalMixin:
|
789
|
+
_types = {NoneClass, str, decimal.Decimal}
|
790
|
+
class NoneStrBoolMixin:
|
791
|
+
_types = {NoneClass, str, BoolClass}
|
792
|
+
class NoneDecimalBoolMixin:
|
793
|
+
_types = {NoneClass, decimal.Decimal, BoolClass}
|
794
|
+
class FrozenDictTupleStrMixin:
|
795
|
+
_types = {frozendict.frozendict, tuple, str}
|
796
|
+
class FrozenDictTupleDecimalMixin:
|
797
|
+
_types = {frozendict.frozendict, tuple, decimal.Decimal}
|
798
|
+
class FrozenDictTupleBoolMixin:
|
799
|
+
_types = {frozendict.frozendict, tuple, BoolClass}
|
800
|
+
class FrozenDictStrDecimalMixin:
|
801
|
+
_types = {frozendict.frozendict, str, decimal.Decimal}
|
802
|
+
class FrozenDictStrBoolMixin:
|
803
|
+
_types = {frozendict.frozendict, str, BoolClass}
|
804
|
+
class FrozenDictDecimalBoolMixin:
|
805
|
+
_types = {frozendict.frozendict, decimal.Decimal, BoolClass}
|
806
|
+
class TupleStrDecimalMixin:
|
807
|
+
_types = {tuple, str, decimal.Decimal}
|
808
|
+
class TupleStrBoolMixin:
|
809
|
+
_types = {tuple, str, BoolClass}
|
810
|
+
class TupleDecimalBoolMixin:
|
811
|
+
_types = {tuple, decimal.Decimal, BoolClass}
|
812
|
+
class StrDecimalBoolMixin:
|
813
|
+
_types = {str, decimal.Decimal, BoolClass}
|
814
|
+
# qty 4
|
815
|
+
class NoneFrozenDictTupleStrMixin:
|
816
|
+
_types = {NoneClass, frozendict.frozendict, tuple, str}
|
817
|
+
class NoneFrozenDictTupleDecimalMixin:
|
818
|
+
_types = {NoneClass, frozendict.frozendict, tuple, decimal.Decimal}
|
819
|
+
class NoneFrozenDictTupleBoolMixin:
|
820
|
+
_types = {NoneClass, frozendict.frozendict, tuple, BoolClass}
|
821
|
+
class NoneFrozenDictStrDecimalMixin:
|
822
|
+
_types = {NoneClass, frozendict.frozendict, str, decimal.Decimal}
|
823
|
+
class NoneFrozenDictStrBoolMixin:
|
824
|
+
_types = {NoneClass, frozendict.frozendict, str, BoolClass}
|
825
|
+
class NoneFrozenDictDecimalBoolMixin:
|
826
|
+
_types = {NoneClass, frozendict.frozendict, decimal.Decimal, BoolClass}
|
827
|
+
class NoneTupleStrDecimalMixin:
|
828
|
+
_types = {NoneClass, tuple, str, decimal.Decimal}
|
829
|
+
class NoneTupleStrBoolMixin:
|
830
|
+
_types = {NoneClass, tuple, str, BoolClass}
|
831
|
+
class NoneTupleDecimalBoolMixin:
|
832
|
+
_types = {NoneClass, tuple, decimal.Decimal, BoolClass}
|
833
|
+
class NoneStrDecimalBoolMixin:
|
834
|
+
_types = {NoneClass, str, decimal.Decimal, BoolClass}
|
835
|
+
class FrozenDictTupleStrDecimalMixin:
|
836
|
+
_types = {frozendict.frozendict, tuple, str, decimal.Decimal}
|
837
|
+
class FrozenDictTupleStrBoolMixin:
|
838
|
+
_types = {frozendict.frozendict, tuple, str, BoolClass}
|
839
|
+
class FrozenDictTupleDecimalBoolMixin:
|
840
|
+
_types = {frozendict.frozendict, tuple, decimal.Decimal, BoolClass}
|
841
|
+
class FrozenDictStrDecimalBoolMixin:
|
842
|
+
_types = {frozendict.frozendict, str, decimal.Decimal, BoolClass}
|
843
|
+
class TupleStrDecimalBoolMixin:
|
844
|
+
_types = {tuple, str, decimal.Decimal, BoolClass}
|
845
|
+
# qty 5
|
846
|
+
class NoneFrozenDictTupleStrDecimalMixin:
|
847
|
+
_types = {NoneClass, frozendict.frozendict, tuple, str, decimal.Decimal}
|
848
|
+
class NoneFrozenDictTupleStrBoolMixin:
|
849
|
+
_types = {NoneClass, frozendict.frozendict, tuple, str, BoolClass}
|
850
|
+
class NoneFrozenDictTupleDecimalBoolMixin:
|
851
|
+
_types = {NoneClass, frozendict.frozendict, tuple, decimal.Decimal, BoolClass}
|
852
|
+
class NoneFrozenDictStrDecimalBoolMixin:
|
853
|
+
_types = {NoneClass, frozendict.frozendict, str, decimal.Decimal, BoolClass}
|
854
|
+
class NoneTupleStrDecimalBoolMixin:
|
855
|
+
_types = {NoneClass, tuple, str, decimal.Decimal, BoolClass}
|
856
|
+
class FrozenDictTupleStrDecimalBoolMixin:
|
857
|
+
_types = {frozendict.frozendict, tuple, str, decimal.Decimal, BoolClass}
|
858
|
+
# qty 6
|
859
|
+
class NoneFrozenDictTupleStrDecimalBoolMixin:
|
860
|
+
_types = {NoneClass, frozendict.frozendict, tuple, str, decimal.Decimal, BoolClass}
|
861
|
+
# qty 8
|
862
|
+
class NoneFrozenDictTupleStrDecimalBoolFileBytesMixin:
|
863
|
+
_types = {NoneClass, frozendict.frozendict, tuple, str, decimal.Decimal, BoolClass, FileIO, bytes}
|
864
|
+
|
865
|
+
|
866
|
+
class ValidatorBase:
|
867
|
+
@staticmethod
|
868
|
+
def _is_json_validation_enabled_oapg(schema_keyword, configuration=None):
|
869
|
+
"""Returns true if JSON schema validation is enabled for the specified
|
870
|
+
validation keyword. This can be used to skip JSON schema structural validation
|
871
|
+
as requested in the configuration.
|
872
|
+
Note: the suffix _oapg stands for openapi python (experimental) generator and
|
873
|
+
it has been added to prevent collisions with other methods and properties
|
874
|
+
|
875
|
+
Args:
|
876
|
+
schema_keyword (string): the name of a JSON schema validation keyword.
|
877
|
+
configuration (Configuration): the configuration class.
|
878
|
+
"""
|
879
|
+
|
880
|
+
return (configuration is None or
|
881
|
+
not hasattr(configuration, '_disabled_client_side_validations') or
|
882
|
+
schema_keyword not in configuration._disabled_client_side_validations)
|
883
|
+
|
884
|
+
@staticmethod
|
885
|
+
def _raise_validation_error_message_oapg(value, constraint_msg, constraint_value, path_to_item, additional_txt=""):
|
886
|
+
raise ApiValueError(
|
887
|
+
"Invalid value `{value}`, {constraint_msg} `{constraint_value}`{additional_txt} at {path_to_item}".format(
|
888
|
+
value=value,
|
889
|
+
constraint_msg=constraint_msg,
|
890
|
+
constraint_value=constraint_value,
|
891
|
+
additional_txt=additional_txt,
|
892
|
+
path_to_item=path_to_item,
|
893
|
+
)
|
894
|
+
)
|
895
|
+
|
896
|
+
|
897
|
+
class EnumBase:
|
898
|
+
@classmethod
|
899
|
+
def _validate_oapg(
|
900
|
+
cls,
|
901
|
+
arg,
|
902
|
+
validation_metadata: ValidationMetadata,
|
903
|
+
) -> typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Set[typing.Union['Schema', str, decimal.Decimal, BoolClass, NoneClass, frozendict.frozendict, tuple]]]:
|
904
|
+
"""
|
905
|
+
EnumBase _validate_oapg
|
906
|
+
Validates that arg is in the enum's allowed values
|
907
|
+
"""
|
908
|
+
try:
|
909
|
+
cls.MetaOapg.enum_value_to_name[arg]
|
910
|
+
except KeyError:
|
911
|
+
raise ApiValueError("Invalid value {} passed in to {}, allowed_values={}".format(arg, cls, cls.MetaOapg.enum_value_to_name.keys()))
|
912
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
913
|
+
|
914
|
+
|
915
|
+
class BoolBase:
|
916
|
+
def is_true_oapg(self) -> bool:
|
917
|
+
"""
|
918
|
+
A replacement for x is True
|
919
|
+
True if the instance is a BoolClass True Singleton
|
920
|
+
"""
|
921
|
+
if not issubclass(self.__class__, BoolClass):
|
922
|
+
return False
|
923
|
+
return bool(self)
|
924
|
+
|
925
|
+
def is_false_oapg(self) -> bool:
|
926
|
+
"""
|
927
|
+
A replacement for x is False
|
928
|
+
True if the instance is a BoolClass False Singleton
|
929
|
+
"""
|
930
|
+
if not issubclass(self.__class__, BoolClass):
|
931
|
+
return False
|
932
|
+
return bool(self) is False
|
933
|
+
|
934
|
+
|
935
|
+
class NoneBase:
|
936
|
+
def is_none_oapg(self) -> bool:
|
937
|
+
"""
|
938
|
+
A replacement for x is None
|
939
|
+
True if the instance is a NoneClass None Singleton
|
940
|
+
"""
|
941
|
+
if issubclass(self.__class__, NoneClass):
|
942
|
+
return True
|
943
|
+
return False
|
944
|
+
|
945
|
+
|
946
|
+
class StrBase(ValidatorBase):
|
947
|
+
MetaOapg: MetaOapgTyped
|
948
|
+
|
949
|
+
@property
|
950
|
+
def as_str_oapg(self) -> str:
|
951
|
+
return self
|
952
|
+
|
953
|
+
@property
|
954
|
+
def as_date_oapg(self) -> date:
|
955
|
+
raise Exception('not implemented')
|
956
|
+
|
957
|
+
@property
|
958
|
+
def as_datetime_oapg(self) -> datetime:
|
959
|
+
raise Exception('not implemented')
|
960
|
+
|
961
|
+
@property
|
962
|
+
def as_decimal_oapg(self) -> decimal.Decimal:
|
963
|
+
raise Exception('not implemented')
|
964
|
+
|
965
|
+
@property
|
966
|
+
def as_uuid_oapg(self) -> uuid.UUID:
|
967
|
+
raise Exception('not implemented')
|
968
|
+
|
969
|
+
@classmethod
|
970
|
+
def __check_str_validations(
|
971
|
+
cls,
|
972
|
+
arg: str,
|
973
|
+
validation_metadata: ValidationMetadata
|
974
|
+
):
|
975
|
+
if not hasattr(cls, 'MetaOapg'):
|
976
|
+
return
|
977
|
+
if (cls._is_json_validation_enabled_oapg('maxLength', validation_metadata.configuration) and
|
978
|
+
hasattr(cls.MetaOapg, 'max_length') and
|
979
|
+
len(arg) > cls.MetaOapg.max_length):
|
980
|
+
cls._raise_validation_error_message_oapg(
|
981
|
+
value=arg,
|
982
|
+
constraint_msg="length must be less than or equal to",
|
983
|
+
constraint_value=cls.MetaOapg.max_length,
|
984
|
+
path_to_item=validation_metadata.path_to_item
|
985
|
+
)
|
986
|
+
|
987
|
+
if (cls._is_json_validation_enabled_oapg('minLength', validation_metadata.configuration) and
|
988
|
+
hasattr(cls.MetaOapg, 'min_length') and
|
989
|
+
len(arg) < cls.MetaOapg.min_length):
|
990
|
+
cls._raise_validation_error_message_oapg(
|
991
|
+
value=arg,
|
992
|
+
constraint_msg="length must be greater than or equal to",
|
993
|
+
constraint_value=cls.MetaOapg.min_length,
|
994
|
+
path_to_item=validation_metadata.path_to_item
|
995
|
+
)
|
996
|
+
|
997
|
+
if (cls._is_json_validation_enabled_oapg('pattern', validation_metadata.configuration) and
|
998
|
+
hasattr(cls.MetaOapg, 'regex')):
|
999
|
+
for regex_dict in cls.MetaOapg.regex:
|
1000
|
+
flags = regex_dict.get('flags', 0)
|
1001
|
+
if not re.search(regex_dict['pattern'], arg, flags=flags):
|
1002
|
+
if flags != 0:
|
1003
|
+
# Don't print the regex flags if the flags are not
|
1004
|
+
# specified in the OAS document.
|
1005
|
+
cls._raise_validation_error_message_oapg(
|
1006
|
+
value=arg,
|
1007
|
+
constraint_msg="must match regular expression",
|
1008
|
+
constraint_value=regex_dict['pattern'],
|
1009
|
+
path_to_item=validation_metadata.path_to_item,
|
1010
|
+
additional_txt=" with flags=`{}`".format(flags)
|
1011
|
+
)
|
1012
|
+
cls._raise_validation_error_message_oapg(
|
1013
|
+
value=arg,
|
1014
|
+
constraint_msg="must match regular expression",
|
1015
|
+
constraint_value=regex_dict['pattern'],
|
1016
|
+
path_to_item=validation_metadata.path_to_item
|
1017
|
+
)
|
1018
|
+
|
1019
|
+
@classmethod
|
1020
|
+
def _validate_oapg(
|
1021
|
+
cls,
|
1022
|
+
arg,
|
1023
|
+
validation_metadata: ValidationMetadata,
|
1024
|
+
) -> typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Set[typing.Union['Schema', str, decimal.Decimal, BoolClass, NoneClass, frozendict.frozendict, tuple]]]:
|
1025
|
+
"""
|
1026
|
+
StrBase _validate_oapg
|
1027
|
+
Validates that validations pass
|
1028
|
+
"""
|
1029
|
+
if isinstance(arg, str):
|
1030
|
+
cls.__check_str_validations(arg, validation_metadata)
|
1031
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1032
|
+
|
1033
|
+
|
1034
|
+
class UUIDBase:
|
1035
|
+
@property
|
1036
|
+
@functools.lru_cache()
|
1037
|
+
def as_uuid_oapg(self) -> uuid.UUID:
|
1038
|
+
return uuid.UUID(self)
|
1039
|
+
|
1040
|
+
@classmethod
|
1041
|
+
def __validate_format(cls, arg: typing.Optional[str], validation_metadata: ValidationMetadata):
|
1042
|
+
if isinstance(arg, str):
|
1043
|
+
try:
|
1044
|
+
uuid.UUID(arg)
|
1045
|
+
return True
|
1046
|
+
except ValueError:
|
1047
|
+
raise ApiValueError(
|
1048
|
+
"Invalid value '{}' for type UUID at {}".format(arg, validation_metadata.path_to_item)
|
1049
|
+
)
|
1050
|
+
|
1051
|
+
@classmethod
|
1052
|
+
def _validate_oapg(
|
1053
|
+
cls,
|
1054
|
+
arg,
|
1055
|
+
validation_metadata: typing.Optional[ValidationMetadata] = None,
|
1056
|
+
):
|
1057
|
+
"""
|
1058
|
+
UUIDBase _validate_oapg
|
1059
|
+
"""
|
1060
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
1061
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1062
|
+
|
1063
|
+
|
1064
|
+
class CustomIsoparser(isoparser):
|
1065
|
+
|
1066
|
+
@_takes_ascii
|
1067
|
+
def parse_isodatetime(self, dt_str):
|
1068
|
+
components, pos = self._parse_isodate(dt_str)
|
1069
|
+
if len(dt_str) > pos:
|
1070
|
+
if self._sep is None or dt_str[pos:pos + 1] == self._sep:
|
1071
|
+
components += self._parse_isotime(dt_str[pos + 1:])
|
1072
|
+
else:
|
1073
|
+
raise ValueError('String contains unknown ISO components')
|
1074
|
+
|
1075
|
+
if len(components) > 3 and components[3] == 24:
|
1076
|
+
components[3] = 0
|
1077
|
+
return datetime(*components) + timedelta(days=1)
|
1078
|
+
|
1079
|
+
if len(components) <= 3:
|
1080
|
+
raise ValueError('Value is not a datetime')
|
1081
|
+
|
1082
|
+
return datetime(*components)
|
1083
|
+
|
1084
|
+
@_takes_ascii
|
1085
|
+
def parse_isodate(self, datestr):
|
1086
|
+
components, pos = self._parse_isodate(datestr)
|
1087
|
+
|
1088
|
+
if len(datestr) > pos:
|
1089
|
+
raise ValueError('String contains invalid time components')
|
1090
|
+
|
1091
|
+
if len(components) > 3:
|
1092
|
+
raise ValueError('String contains invalid time components')
|
1093
|
+
|
1094
|
+
return date(*components)
|
1095
|
+
|
1096
|
+
|
1097
|
+
DEFAULT_ISOPARSER = CustomIsoparser()
|
1098
|
+
|
1099
|
+
|
1100
|
+
class DateBase:
|
1101
|
+
@property
|
1102
|
+
@functools.lru_cache()
|
1103
|
+
def as_date_oapg(self) -> date:
|
1104
|
+
return DEFAULT_ISOPARSER.parse_isodate(self)
|
1105
|
+
|
1106
|
+
@classmethod
|
1107
|
+
def __validate_format(cls, arg: typing.Optional[str], validation_metadata: ValidationMetadata):
|
1108
|
+
if isinstance(arg, str):
|
1109
|
+
try:
|
1110
|
+
DEFAULT_ISOPARSER.parse_isodate(arg)
|
1111
|
+
return True
|
1112
|
+
except ValueError:
|
1113
|
+
raise ApiValueError(
|
1114
|
+
"Value does not conform to the required ISO-8601 date format. "
|
1115
|
+
"Invalid value '{}' for type date at {}".format(arg, validation_metadata.path_to_item)
|
1116
|
+
)
|
1117
|
+
|
1118
|
+
@classmethod
|
1119
|
+
def _validate_oapg(
|
1120
|
+
cls,
|
1121
|
+
arg,
|
1122
|
+
validation_metadata: typing.Optional[ValidationMetadata] = None,
|
1123
|
+
):
|
1124
|
+
"""
|
1125
|
+
DateBase _validate_oapg
|
1126
|
+
"""
|
1127
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
1128
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1129
|
+
|
1130
|
+
|
1131
|
+
class DateTimeBase:
|
1132
|
+
@property
|
1133
|
+
@functools.lru_cache()
|
1134
|
+
def as_datetime_oapg(self) -> datetime:
|
1135
|
+
return DEFAULT_ISOPARSER.parse_isodatetime(self)
|
1136
|
+
|
1137
|
+
@classmethod
|
1138
|
+
def __validate_format(cls, arg: typing.Optional[str], validation_metadata: ValidationMetadata):
|
1139
|
+
if isinstance(arg, str):
|
1140
|
+
try:
|
1141
|
+
DEFAULT_ISOPARSER.parse_isodatetime(arg)
|
1142
|
+
return True
|
1143
|
+
except ValueError:
|
1144
|
+
raise ApiValueError(
|
1145
|
+
"Value does not conform to the required ISO-8601 datetime format. "
|
1146
|
+
"Invalid value '{}' for type datetime at {}".format(arg, validation_metadata.path_to_item)
|
1147
|
+
)
|
1148
|
+
|
1149
|
+
@classmethod
|
1150
|
+
def _validate_oapg(
|
1151
|
+
cls,
|
1152
|
+
arg,
|
1153
|
+
validation_metadata: ValidationMetadata,
|
1154
|
+
):
|
1155
|
+
"""
|
1156
|
+
DateTimeBase _validate_oapg
|
1157
|
+
"""
|
1158
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
1159
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1160
|
+
|
1161
|
+
|
1162
|
+
class DecimalBase:
|
1163
|
+
"""
|
1164
|
+
A class for storing decimals that are sent over the wire as strings
|
1165
|
+
These schemas must remain based on StrBase rather than NumberBase
|
1166
|
+
because picking base classes must be deterministic
|
1167
|
+
"""
|
1168
|
+
|
1169
|
+
@property
|
1170
|
+
@functools.lru_cache()
|
1171
|
+
def as_decimal_oapg(self) -> decimal.Decimal:
|
1172
|
+
return decimal.Decimal(self)
|
1173
|
+
|
1174
|
+
@classmethod
|
1175
|
+
def __validate_format(cls, arg: typing.Optional[str], validation_metadata: ValidationMetadata):
|
1176
|
+
if isinstance(arg, str):
|
1177
|
+
try:
|
1178
|
+
decimal.Decimal(arg)
|
1179
|
+
return True
|
1180
|
+
except decimal.InvalidOperation:
|
1181
|
+
raise ApiValueError(
|
1182
|
+
"Value cannot be converted to a decimal. "
|
1183
|
+
"Invalid value '{}' for type decimal at {}".format(arg, validation_metadata.path_to_item)
|
1184
|
+
)
|
1185
|
+
|
1186
|
+
@classmethod
|
1187
|
+
def _validate_oapg(
|
1188
|
+
cls,
|
1189
|
+
arg,
|
1190
|
+
validation_metadata: ValidationMetadata,
|
1191
|
+
):
|
1192
|
+
"""
|
1193
|
+
DecimalBase _validate_oapg
|
1194
|
+
"""
|
1195
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
1196
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1197
|
+
|
1198
|
+
|
1199
|
+
class NumberBase(ValidatorBase):
|
1200
|
+
MetaOapg: MetaOapgTyped
|
1201
|
+
|
1202
|
+
@property
|
1203
|
+
def as_int_oapg(self) -> int:
|
1204
|
+
try:
|
1205
|
+
return self._as_int
|
1206
|
+
except AttributeError:
|
1207
|
+
"""
|
1208
|
+
Note: for some numbers like 9.0 they could be represented as an
|
1209
|
+
integer but our code chooses to store them as
|
1210
|
+
>>> Decimal('9.0').as_tuple()
|
1211
|
+
DecimalTuple(sign=0, digits=(9, 0), exponent=-1)
|
1212
|
+
so we can tell that the value came from a float and convert it back to a float
|
1213
|
+
during later serialization
|
1214
|
+
"""
|
1215
|
+
if self.as_tuple().exponent < 0:
|
1216
|
+
# this could be represented as an integer but should be represented as a float
|
1217
|
+
# because that's what it was serialized from
|
1218
|
+
raise ApiValueError(f'{self} is not an integer')
|
1219
|
+
self._as_int = int(self)
|
1220
|
+
return self._as_int
|
1221
|
+
|
1222
|
+
@property
|
1223
|
+
def as_float_oapg(self) -> float:
|
1224
|
+
try:
|
1225
|
+
return self._as_float
|
1226
|
+
except AttributeError:
|
1227
|
+
if self.as_tuple().exponent >= 0:
|
1228
|
+
raise ApiValueError(f'{self} is not a float')
|
1229
|
+
self._as_float = float(self)
|
1230
|
+
return self._as_float
|
1231
|
+
|
1232
|
+
@classmethod
|
1233
|
+
def __check_numeric_validations(
|
1234
|
+
cls,
|
1235
|
+
arg,
|
1236
|
+
validation_metadata: ValidationMetadata
|
1237
|
+
):
|
1238
|
+
if not hasattr(cls, 'MetaOapg'):
|
1239
|
+
return
|
1240
|
+
if cls._is_json_validation_enabled_oapg('multipleOf',
|
1241
|
+
validation_metadata.configuration) and hasattr(cls.MetaOapg, 'multiple_of'):
|
1242
|
+
multiple_of_value = cls.MetaOapg.multiple_of
|
1243
|
+
if (not (float(arg) / multiple_of_value).is_integer()):
|
1244
|
+
# Note 'multipleOf' will be as good as the floating point arithmetic.
|
1245
|
+
cls._raise_validation_error_message_oapg(
|
1246
|
+
value=arg,
|
1247
|
+
constraint_msg="value must be a multiple of",
|
1248
|
+
constraint_value=multiple_of_value,
|
1249
|
+
path_to_item=validation_metadata.path_to_item
|
1250
|
+
)
|
1251
|
+
|
1252
|
+
checking_max_or_min_values = any(
|
1253
|
+
hasattr(cls.MetaOapg, validation_key) for validation_key in {
|
1254
|
+
'exclusive_maximum',
|
1255
|
+
'inclusive_maximum',
|
1256
|
+
'exclusive_minimum',
|
1257
|
+
'inclusive_minimum',
|
1258
|
+
}
|
1259
|
+
)
|
1260
|
+
if not checking_max_or_min_values:
|
1261
|
+
return
|
1262
|
+
|
1263
|
+
if (cls._is_json_validation_enabled_oapg('exclusiveMaximum', validation_metadata.configuration) and
|
1264
|
+
hasattr(cls.MetaOapg, 'exclusive_maximum') and
|
1265
|
+
arg >= cls.MetaOapg.exclusive_maximum):
|
1266
|
+
cls._raise_validation_error_message_oapg(
|
1267
|
+
value=arg,
|
1268
|
+
constraint_msg="must be a value less than",
|
1269
|
+
constraint_value=cls.MetaOapg.exclusive_maximum,
|
1270
|
+
path_to_item=validation_metadata.path_to_item
|
1271
|
+
)
|
1272
|
+
|
1273
|
+
if (cls._is_json_validation_enabled_oapg('maximum', validation_metadata.configuration) and
|
1274
|
+
hasattr(cls.MetaOapg, 'inclusive_maximum') and
|
1275
|
+
arg > cls.MetaOapg.inclusive_maximum):
|
1276
|
+
cls._raise_validation_error_message_oapg(
|
1277
|
+
value=arg,
|
1278
|
+
constraint_msg="must be a value less than or equal to",
|
1279
|
+
constraint_value=cls.MetaOapg.inclusive_maximum,
|
1280
|
+
path_to_item=validation_metadata.path_to_item
|
1281
|
+
)
|
1282
|
+
|
1283
|
+
if (cls._is_json_validation_enabled_oapg('exclusiveMinimum', validation_metadata.configuration) and
|
1284
|
+
hasattr(cls.MetaOapg, 'exclusive_minimum') and
|
1285
|
+
arg <= cls.MetaOapg.exclusive_minimum):
|
1286
|
+
cls._raise_validation_error_message_oapg(
|
1287
|
+
value=arg,
|
1288
|
+
constraint_msg="must be a value greater than",
|
1289
|
+
constraint_value=cls.MetaOapg.exclusive_maximum,
|
1290
|
+
path_to_item=validation_metadata.path_to_item
|
1291
|
+
)
|
1292
|
+
|
1293
|
+
if (cls._is_json_validation_enabled_oapg('minimum', validation_metadata.configuration) and
|
1294
|
+
hasattr(cls.MetaOapg, 'inclusive_minimum') and
|
1295
|
+
arg < cls.MetaOapg.inclusive_minimum):
|
1296
|
+
cls._raise_validation_error_message_oapg(
|
1297
|
+
value=arg,
|
1298
|
+
constraint_msg="must be a value greater than or equal to",
|
1299
|
+
constraint_value=cls.MetaOapg.inclusive_minimum,
|
1300
|
+
path_to_item=validation_metadata.path_to_item
|
1301
|
+
)
|
1302
|
+
|
1303
|
+
@classmethod
|
1304
|
+
def _validate_oapg(
|
1305
|
+
cls,
|
1306
|
+
arg,
|
1307
|
+
validation_metadata: ValidationMetadata,
|
1308
|
+
) -> typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Set[typing.Union['Schema', str, decimal.Decimal, BoolClass, NoneClass, frozendict.frozendict, tuple]]]:
|
1309
|
+
"""
|
1310
|
+
NumberBase _validate_oapg
|
1311
|
+
Validates that validations pass
|
1312
|
+
"""
|
1313
|
+
if isinstance(arg, decimal.Decimal):
|
1314
|
+
cls.__check_numeric_validations(arg, validation_metadata)
|
1315
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1316
|
+
|
1317
|
+
|
1318
|
+
class ListBase(ValidatorBase):
|
1319
|
+
MetaOapg: MetaOapgTyped
|
1320
|
+
|
1321
|
+
@classmethod
|
1322
|
+
def __validate_items(cls, list_items, validation_metadata: ValidationMetadata):
|
1323
|
+
"""
|
1324
|
+
Ensures that:
|
1325
|
+
- values passed in for items are valid
|
1326
|
+
Exceptions will be raised if:
|
1327
|
+
- invalid arguments were passed in
|
1328
|
+
|
1329
|
+
Args:
|
1330
|
+
list_items: the input list of items
|
1331
|
+
|
1332
|
+
Raises:
|
1333
|
+
ApiTypeError - for missing required arguments, or for invalid properties
|
1334
|
+
"""
|
1335
|
+
|
1336
|
+
# if we have definitions for an items schema, use it
|
1337
|
+
# otherwise accept anything
|
1338
|
+
item_cls = getattr(cls.MetaOapg, 'items', UnsetAnyTypeSchema)
|
1339
|
+
item_cls = cls._get_class_oapg(item_cls)
|
1340
|
+
path_to_schemas = {}
|
1341
|
+
for i, value in enumerate(list_items):
|
1342
|
+
item_validation_metadata = ValidationMetadata(
|
1343
|
+
from_server=validation_metadata.from_server,
|
1344
|
+
configuration=validation_metadata.configuration,
|
1345
|
+
path_to_item=validation_metadata.path_to_item+(i,),
|
1346
|
+
validated_path_to_schemas=validation_metadata.validated_path_to_schemas
|
1347
|
+
)
|
1348
|
+
if item_validation_metadata.validation_ran_earlier(item_cls):
|
1349
|
+
add_deeper_validated_schemas(item_validation_metadata, path_to_schemas)
|
1350
|
+
continue
|
1351
|
+
other_path_to_schemas = item_cls._validate_oapg(
|
1352
|
+
value, validation_metadata=item_validation_metadata)
|
1353
|
+
update(path_to_schemas, other_path_to_schemas)
|
1354
|
+
return path_to_schemas
|
1355
|
+
|
1356
|
+
@classmethod
|
1357
|
+
def __check_tuple_validations(
|
1358
|
+
cls, arg,
|
1359
|
+
validation_metadata: ValidationMetadata):
|
1360
|
+
if not hasattr(cls, 'MetaOapg'):
|
1361
|
+
return
|
1362
|
+
if (cls._is_json_validation_enabled_oapg('maxItems', validation_metadata.configuration) and
|
1363
|
+
hasattr(cls.MetaOapg, 'max_items') and
|
1364
|
+
len(arg) > cls.MetaOapg.max_items):
|
1365
|
+
cls._raise_validation_error_message_oapg(
|
1366
|
+
value=arg,
|
1367
|
+
constraint_msg="number of items must be less than or equal to",
|
1368
|
+
constraint_value=cls.MetaOapg.max_items,
|
1369
|
+
path_to_item=validation_metadata.path_to_item
|
1370
|
+
)
|
1371
|
+
|
1372
|
+
if (cls._is_json_validation_enabled_oapg('minItems', validation_metadata.configuration) and
|
1373
|
+
hasattr(cls.MetaOapg, 'min_items') and
|
1374
|
+
len(arg) < cls.MetaOapg.min_items):
|
1375
|
+
cls._raise_validation_error_message_oapg(
|
1376
|
+
value=arg,
|
1377
|
+
constraint_msg="number of items must be greater than or equal to",
|
1378
|
+
constraint_value=cls.MetaOapg.min_items,
|
1379
|
+
path_to_item=validation_metadata.path_to_item
|
1380
|
+
)
|
1381
|
+
|
1382
|
+
if (cls._is_json_validation_enabled_oapg('uniqueItems', validation_metadata.configuration) and
|
1383
|
+
hasattr(cls.MetaOapg, 'unique_items') and cls.MetaOapg.unique_items and arg):
|
1384
|
+
unique_items = set(arg)
|
1385
|
+
if len(arg) > len(unique_items):
|
1386
|
+
cls._raise_validation_error_message_oapg(
|
1387
|
+
value=arg,
|
1388
|
+
constraint_msg="duplicate items were found, and the tuple must not contain duplicates because",
|
1389
|
+
constraint_value='unique_items==True',
|
1390
|
+
path_to_item=validation_metadata.path_to_item
|
1391
|
+
)
|
1392
|
+
|
1393
|
+
@classmethod
|
1394
|
+
def _validate_oapg(
|
1395
|
+
cls,
|
1396
|
+
arg,
|
1397
|
+
validation_metadata: ValidationMetadata,
|
1398
|
+
):
|
1399
|
+
"""
|
1400
|
+
ListBase _validate_oapg
|
1401
|
+
We return dynamic classes of different bases depending upon the inputs
|
1402
|
+
This makes it so:
|
1403
|
+
- the returned instance is always a subclass of our defining schema
|
1404
|
+
- this allows us to check type based on whether an instance is a subclass of a schema
|
1405
|
+
- the returned instance is a serializable type (except for None, True, and False) which are enums
|
1406
|
+
|
1407
|
+
Returns:
|
1408
|
+
new_cls (type): the new class
|
1409
|
+
|
1410
|
+
Raises:
|
1411
|
+
ApiValueError: when a string can't be converted into a date or datetime and it must be one of those classes
|
1412
|
+
ApiTypeError: when the input type is not in the list of allowed spec types
|
1413
|
+
"""
|
1414
|
+
if isinstance(arg, tuple):
|
1415
|
+
cls.__check_tuple_validations(arg, validation_metadata)
|
1416
|
+
_path_to_schemas = super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1417
|
+
if not isinstance(arg, tuple):
|
1418
|
+
return _path_to_schemas
|
1419
|
+
updated_vm = ValidationMetadata(
|
1420
|
+
configuration=validation_metadata.configuration,
|
1421
|
+
from_server=validation_metadata.from_server,
|
1422
|
+
path_to_item=validation_metadata.path_to_item,
|
1423
|
+
seen_classes=validation_metadata.seen_classes | frozenset({cls}),
|
1424
|
+
validated_path_to_schemas=validation_metadata.validated_path_to_schemas
|
1425
|
+
)
|
1426
|
+
other_path_to_schemas = cls.__validate_items(arg, validation_metadata=updated_vm)
|
1427
|
+
update(_path_to_schemas, other_path_to_schemas)
|
1428
|
+
return _path_to_schemas
|
1429
|
+
|
1430
|
+
@classmethod
|
1431
|
+
def _get_items_oapg(
|
1432
|
+
cls: 'Schema',
|
1433
|
+
arg: typing.List[typing.Any],
|
1434
|
+
path_to_item: typing.Tuple[typing.Union[str, int], ...],
|
1435
|
+
path_to_schemas: typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Type['Schema']]
|
1436
|
+
):
|
1437
|
+
'''
|
1438
|
+
ListBase _get_items_oapg
|
1439
|
+
'''
|
1440
|
+
cast_items = []
|
1441
|
+
|
1442
|
+
for i, value in enumerate(arg):
|
1443
|
+
item_path_to_item = path_to_item + (i,)
|
1444
|
+
item_cls = path_to_schemas[item_path_to_item]
|
1445
|
+
new_value = item_cls._get_new_instance_without_conversion_oapg(
|
1446
|
+
value,
|
1447
|
+
item_path_to_item,
|
1448
|
+
path_to_schemas
|
1449
|
+
)
|
1450
|
+
cast_items.append(new_value)
|
1451
|
+
|
1452
|
+
return cast_items
|
1453
|
+
|
1454
|
+
|
1455
|
+
class Discriminable:
|
1456
|
+
MetaOapg: MetaOapgTyped
|
1457
|
+
|
1458
|
+
@classmethod
|
1459
|
+
def _ensure_discriminator_value_present_oapg(cls, disc_property_name: str, validation_metadata: ValidationMetadata, *args):
|
1460
|
+
if not args or args and disc_property_name not in args[0]:
|
1461
|
+
# The input data does not contain the discriminator property
|
1462
|
+
raise ApiValueError(
|
1463
|
+
"Cannot deserialize input data due to missing discriminator. "
|
1464
|
+
"The discriminator property '{}' is missing at path: {}".format(disc_property_name, validation_metadata.path_to_item)
|
1465
|
+
)
|
1466
|
+
|
1467
|
+
@classmethod
|
1468
|
+
def get_discriminated_class_oapg(cls, disc_property_name: str, disc_payload_value: str):
|
1469
|
+
"""
|
1470
|
+
Used in schemas with discriminators
|
1471
|
+
"""
|
1472
|
+
if not hasattr(cls.MetaOapg, 'discriminator'):
|
1473
|
+
return None
|
1474
|
+
disc = cls.MetaOapg.discriminator()
|
1475
|
+
if disc_property_name not in disc:
|
1476
|
+
return None
|
1477
|
+
discriminated_cls = disc[disc_property_name].get(disc_payload_value)
|
1478
|
+
if discriminated_cls is not None:
|
1479
|
+
return discriminated_cls
|
1480
|
+
if not hasattr(cls, 'MetaOapg'):
|
1481
|
+
return None
|
1482
|
+
elif not (
|
1483
|
+
hasattr(cls.MetaOapg, 'all_of') or
|
1484
|
+
hasattr(cls.MetaOapg, 'one_of') or
|
1485
|
+
hasattr(cls.MetaOapg, 'any_of')
|
1486
|
+
):
|
1487
|
+
return None
|
1488
|
+
# TODO stop traveling if a cycle is hit
|
1489
|
+
if hasattr(cls.MetaOapg, 'all_of'):
|
1490
|
+
for allof_cls in cls.MetaOapg.all_of():
|
1491
|
+
discriminated_cls = allof_cls.get_discriminated_class_oapg(
|
1492
|
+
disc_property_name=disc_property_name, disc_payload_value=disc_payload_value)
|
1493
|
+
if discriminated_cls is not None:
|
1494
|
+
return discriminated_cls
|
1495
|
+
if hasattr(cls.MetaOapg, 'one_of'):
|
1496
|
+
for oneof_cls in cls.MetaOapg.one_of():
|
1497
|
+
discriminated_cls = oneof_cls.get_discriminated_class_oapg(
|
1498
|
+
disc_property_name=disc_property_name, disc_payload_value=disc_payload_value)
|
1499
|
+
if discriminated_cls is not None:
|
1500
|
+
return discriminated_cls
|
1501
|
+
if hasattr(cls.MetaOapg, 'any_of'):
|
1502
|
+
for anyof_cls in cls.MetaOapg.any_of():
|
1503
|
+
discriminated_cls = anyof_cls.get_discriminated_class_oapg(
|
1504
|
+
disc_property_name=disc_property_name, disc_payload_value=disc_payload_value)
|
1505
|
+
if discriminated_cls is not None:
|
1506
|
+
return discriminated_cls
|
1507
|
+
return None
|
1508
|
+
|
1509
|
+
|
1510
|
+
class DictBase(Discriminable, ValidatorBase):
|
1511
|
+
|
1512
|
+
@classmethod
|
1513
|
+
def __validate_arg_presence(cls, arg):
|
1514
|
+
"""
|
1515
|
+
Ensures that:
|
1516
|
+
- all required arguments are passed in
|
1517
|
+
- the input variable names are valid
|
1518
|
+
- present in properties or
|
1519
|
+
- accepted because additionalProperties exists
|
1520
|
+
Exceptions will be raised if:
|
1521
|
+
- invalid arguments were passed in
|
1522
|
+
- a var_name is invalid if additional_properties == NotAnyTypeSchema
|
1523
|
+
and var_name not in properties.__annotations__
|
1524
|
+
- required properties were not passed in
|
1525
|
+
|
1526
|
+
Args:
|
1527
|
+
arg: the input dict
|
1528
|
+
|
1529
|
+
Raises:
|
1530
|
+
ApiTypeError - for missing required arguments, or for invalid properties
|
1531
|
+
"""
|
1532
|
+
seen_required_properties = set()
|
1533
|
+
invalid_arguments = []
|
1534
|
+
required_property_names = getattr(cls.MetaOapg, 'required', set())
|
1535
|
+
additional_properties = getattr(cls.MetaOapg, 'additional_properties', UnsetAnyTypeSchema)
|
1536
|
+
properties = getattr(cls.MetaOapg, 'properties', {})
|
1537
|
+
property_annotations = getattr(properties, '__annotations__', {})
|
1538
|
+
for property_name in arg:
|
1539
|
+
if property_name in required_property_names:
|
1540
|
+
seen_required_properties.add(property_name)
|
1541
|
+
elif property_name in property_annotations:
|
1542
|
+
continue
|
1543
|
+
elif additional_properties is not NotAnyTypeSchema:
|
1544
|
+
continue
|
1545
|
+
else:
|
1546
|
+
invalid_arguments.append(property_name)
|
1547
|
+
missing_required_arguments = list(required_property_names - seen_required_properties)
|
1548
|
+
if missing_required_arguments:
|
1549
|
+
missing_required_arguments.sort()
|
1550
|
+
raise ApiTypeError(
|
1551
|
+
"{} is missing {} required argument{}: {}".format(
|
1552
|
+
cls.__name__,
|
1553
|
+
len(missing_required_arguments),
|
1554
|
+
"s" if len(missing_required_arguments) > 1 else "",
|
1555
|
+
missing_required_arguments
|
1556
|
+
)
|
1557
|
+
)
|
1558
|
+
if invalid_arguments:
|
1559
|
+
invalid_arguments.sort()
|
1560
|
+
raise ApiTypeError(
|
1561
|
+
"{} was passed {} invalid argument{}: {}".format(
|
1562
|
+
cls.__name__,
|
1563
|
+
len(invalid_arguments),
|
1564
|
+
"s" if len(invalid_arguments) > 1 else "",
|
1565
|
+
invalid_arguments
|
1566
|
+
)
|
1567
|
+
)
|
1568
|
+
|
1569
|
+
@classmethod
|
1570
|
+
def __validate_args(cls, arg, validation_metadata: ValidationMetadata):
|
1571
|
+
"""
|
1572
|
+
Ensures that:
|
1573
|
+
- values passed in for properties are valid
|
1574
|
+
Exceptions will be raised if:
|
1575
|
+
- invalid arguments were passed in
|
1576
|
+
|
1577
|
+
Args:
|
1578
|
+
arg: the input dict
|
1579
|
+
|
1580
|
+
Raises:
|
1581
|
+
ApiTypeError - for missing required arguments, or for invalid properties
|
1582
|
+
"""
|
1583
|
+
path_to_schemas = {}
|
1584
|
+
additional_properties = getattr(cls.MetaOapg, 'additional_properties', UnsetAnyTypeSchema)
|
1585
|
+
properties = getattr(cls.MetaOapg, 'properties', {})
|
1586
|
+
property_annotations = getattr(properties, '__annotations__', {})
|
1587
|
+
for property_name, value in arg.items():
|
1588
|
+
path_to_item = validation_metadata.path_to_item+(property_name,)
|
1589
|
+
if property_name in property_annotations:
|
1590
|
+
schema = property_annotations[property_name]
|
1591
|
+
elif additional_properties is not NotAnyTypeSchema:
|
1592
|
+
if additional_properties is UnsetAnyTypeSchema:
|
1593
|
+
"""
|
1594
|
+
If additionalProperties is unset and this path_to_item does not yet have
|
1595
|
+
any validations on it, validate it.
|
1596
|
+
If it already has validations on it, skip this validation.
|
1597
|
+
"""
|
1598
|
+
if path_to_item in path_to_schemas:
|
1599
|
+
continue
|
1600
|
+
schema = additional_properties
|
1601
|
+
else:
|
1602
|
+
raise ApiTypeError('Unable to find schema for value={} in class={} at path_to_item={}'.format(
|
1603
|
+
value, cls, validation_metadata.path_to_item+(property_name,)
|
1604
|
+
))
|
1605
|
+
schema = cls._get_class_oapg(schema)
|
1606
|
+
arg_validation_metadata = ValidationMetadata(
|
1607
|
+
from_server=validation_metadata.from_server,
|
1608
|
+
configuration=validation_metadata.configuration,
|
1609
|
+
path_to_item=path_to_item,
|
1610
|
+
validated_path_to_schemas=validation_metadata.validated_path_to_schemas
|
1611
|
+
)
|
1612
|
+
if arg_validation_metadata.validation_ran_earlier(schema):
|
1613
|
+
add_deeper_validated_schemas(arg_validation_metadata, path_to_schemas)
|
1614
|
+
continue
|
1615
|
+
other_path_to_schemas = schema._validate_oapg(value, validation_metadata=arg_validation_metadata)
|
1616
|
+
update(path_to_schemas, other_path_to_schemas)
|
1617
|
+
return path_to_schemas
|
1618
|
+
|
1619
|
+
@classmethod
|
1620
|
+
def __check_dict_validations(
|
1621
|
+
cls,
|
1622
|
+
arg,
|
1623
|
+
validation_metadata: ValidationMetadata
|
1624
|
+
):
|
1625
|
+
if not hasattr(cls, 'MetaOapg'):
|
1626
|
+
return
|
1627
|
+
if (cls._is_json_validation_enabled_oapg('maxProperties', validation_metadata.configuration) and
|
1628
|
+
hasattr(cls.MetaOapg, 'max_properties') and
|
1629
|
+
len(arg) > cls.MetaOapg.max_properties):
|
1630
|
+
cls._raise_validation_error_message_oapg(
|
1631
|
+
value=arg,
|
1632
|
+
constraint_msg="number of properties must be less than or equal to",
|
1633
|
+
constraint_value=cls.MetaOapg.max_properties,
|
1634
|
+
path_to_item=validation_metadata.path_to_item
|
1635
|
+
)
|
1636
|
+
|
1637
|
+
if (cls._is_json_validation_enabled_oapg('minProperties', validation_metadata.configuration) and
|
1638
|
+
hasattr(cls.MetaOapg, 'min_properties') and
|
1639
|
+
len(arg) < cls.MetaOapg.min_properties):
|
1640
|
+
cls._raise_validation_error_message_oapg(
|
1641
|
+
value=arg,
|
1642
|
+
constraint_msg="number of properties must be greater than or equal to",
|
1643
|
+
constraint_value=cls.MetaOapg.min_properties,
|
1644
|
+
path_to_item=validation_metadata.path_to_item
|
1645
|
+
)
|
1646
|
+
|
1647
|
+
@classmethod
|
1648
|
+
def _validate_oapg(
|
1649
|
+
cls,
|
1650
|
+
arg,
|
1651
|
+
validation_metadata: ValidationMetadata,
|
1652
|
+
):
|
1653
|
+
"""
|
1654
|
+
DictBase _validate_oapg
|
1655
|
+
We return dynamic classes of different bases depending upon the inputs
|
1656
|
+
This makes it so:
|
1657
|
+
- the returned instance is always a subclass of our defining schema
|
1658
|
+
- this allows us to check type based on whether an instance is a subclass of a schema
|
1659
|
+
- the returned instance is a serializable type (except for None, True, and False) which are enums
|
1660
|
+
|
1661
|
+
Returns:
|
1662
|
+
new_cls (type): the new class
|
1663
|
+
|
1664
|
+
Raises:
|
1665
|
+
ApiValueError: when a string can't be converted into a date or datetime and it must be one of those classes
|
1666
|
+
ApiTypeError: when the input type is not in the list of allowed spec types
|
1667
|
+
"""
|
1668
|
+
if isinstance(arg, frozendict.frozendict):
|
1669
|
+
cls.__check_dict_validations(arg, validation_metadata)
|
1670
|
+
_path_to_schemas = super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1671
|
+
if not isinstance(arg, frozendict.frozendict):
|
1672
|
+
return _path_to_schemas
|
1673
|
+
cls.__validate_arg_presence(arg)
|
1674
|
+
other_path_to_schemas = cls.__validate_args(arg, validation_metadata=validation_metadata)
|
1675
|
+
update(_path_to_schemas, other_path_to_schemas)
|
1676
|
+
try:
|
1677
|
+
discriminator = cls.MetaOapg.discriminator()
|
1678
|
+
except AttributeError:
|
1679
|
+
return _path_to_schemas
|
1680
|
+
# discriminator exists
|
1681
|
+
disc_prop_name = list(discriminator.keys())[0]
|
1682
|
+
cls._ensure_discriminator_value_present_oapg(disc_prop_name, validation_metadata, arg)
|
1683
|
+
discriminated_cls = cls.get_discriminated_class_oapg(
|
1684
|
+
disc_property_name=disc_prop_name, disc_payload_value=arg[disc_prop_name])
|
1685
|
+
if discriminated_cls is None:
|
1686
|
+
raise ApiValueError(
|
1687
|
+
"Invalid discriminator value was passed in to {}.{} Only the values {} are allowed at {}".format(
|
1688
|
+
cls.__name__,
|
1689
|
+
disc_prop_name,
|
1690
|
+
list(discriminator[disc_prop_name].keys()),
|
1691
|
+
validation_metadata.path_to_item + (disc_prop_name,)
|
1692
|
+
)
|
1693
|
+
)
|
1694
|
+
updated_vm = ValidationMetadata(
|
1695
|
+
configuration=validation_metadata.configuration,
|
1696
|
+
from_server=validation_metadata.from_server,
|
1697
|
+
path_to_item=validation_metadata.path_to_item,
|
1698
|
+
seen_classes=validation_metadata.seen_classes | frozenset({cls}),
|
1699
|
+
validated_path_to_schemas=validation_metadata.validated_path_to_schemas
|
1700
|
+
)
|
1701
|
+
if updated_vm.validation_ran_earlier(discriminated_cls):
|
1702
|
+
add_deeper_validated_schemas(updated_vm, _path_to_schemas)
|
1703
|
+
return _path_to_schemas
|
1704
|
+
other_path_to_schemas = discriminated_cls._validate_oapg(arg, validation_metadata=updated_vm)
|
1705
|
+
update(_path_to_schemas, other_path_to_schemas)
|
1706
|
+
return _path_to_schemas
|
1707
|
+
|
1708
|
+
@classmethod
|
1709
|
+
def _get_properties_oapg(
|
1710
|
+
cls,
|
1711
|
+
arg: typing.Dict[str, typing.Any],
|
1712
|
+
path_to_item: typing.Tuple[typing.Union[str, int], ...],
|
1713
|
+
path_to_schemas: typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Type['Schema']]
|
1714
|
+
):
|
1715
|
+
"""
|
1716
|
+
DictBase _get_properties_oapg, this is how properties are set
|
1717
|
+
These values already passed validation
|
1718
|
+
"""
|
1719
|
+
dict_items = {}
|
1720
|
+
|
1721
|
+
for property_name_js, value in arg.items():
|
1722
|
+
property_path_to_item = path_to_item + (property_name_js,)
|
1723
|
+
property_cls = path_to_schemas[property_path_to_item]
|
1724
|
+
new_value = property_cls._get_new_instance_without_conversion_oapg(
|
1725
|
+
value,
|
1726
|
+
property_path_to_item,
|
1727
|
+
path_to_schemas
|
1728
|
+
)
|
1729
|
+
dict_items[property_name_js] = new_value
|
1730
|
+
|
1731
|
+
return dict_items
|
1732
|
+
|
1733
|
+
def __setattr__(self, name: str, value: typing.Any):
|
1734
|
+
if not isinstance(self, FileIO):
|
1735
|
+
raise AttributeError('property setting not supported on immutable instances')
|
1736
|
+
|
1737
|
+
def __getattr__(self, name: str):
|
1738
|
+
"""
|
1739
|
+
for instance.name access
|
1740
|
+
Properties are only type hinted for required properties
|
1741
|
+
so that hasattr(instance, 'optionalProp') is False when that key is not present
|
1742
|
+
"""
|
1743
|
+
if not isinstance(self, frozendict.frozendict):
|
1744
|
+
return super().__getattr__(name)
|
1745
|
+
if name not in self.__class__.__annotations__:
|
1746
|
+
raise AttributeError(f"{self} has no attribute '{name}'")
|
1747
|
+
try:
|
1748
|
+
value = self[name]
|
1749
|
+
return value
|
1750
|
+
except KeyError as ex:
|
1751
|
+
raise AttributeError(str(ex))
|
1752
|
+
|
1753
|
+
def __getitem__(self, name: str):
|
1754
|
+
"""
|
1755
|
+
dict_instance[name] accessor
|
1756
|
+
key errors thrown
|
1757
|
+
"""
|
1758
|
+
if not isinstance(self, frozendict.frozendict):
|
1759
|
+
return super().__getattr__(name)
|
1760
|
+
return super().__getitem__(name)
|
1761
|
+
|
1762
|
+
def get_item_oapg(self, name: str) -> typing.Union['AnyTypeSchema', Unset]:
|
1763
|
+
# dict_instance[name] accessor
|
1764
|
+
if not isinstance(self, frozendict.frozendict):
|
1765
|
+
raise NotImplementedError()
|
1766
|
+
try:
|
1767
|
+
return super().__getitem__(name)
|
1768
|
+
except KeyError:
|
1769
|
+
return unset
|
1770
|
+
|
1771
|
+
|
1772
|
+
def cast_to_allowed_types(
|
1773
|
+
arg: typing.Union[str, date, datetime, uuid.UUID, decimal.Decimal, int, float, None, dict, frozendict.frozendict, list, tuple, bytes, Schema, io.FileIO, io.BufferedReader],
|
1774
|
+
from_server: bool,
|
1775
|
+
validated_path_to_schemas: typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Set[typing.Union['Schema', str, decimal.Decimal, BoolClass, NoneClass, frozendict.frozendict, tuple]]],
|
1776
|
+
path_to_item: typing.Tuple[typing.Union[str, int], ...] = tuple(['args[0]']),
|
1777
|
+
) -> typing.Union[frozendict.frozendict, tuple, decimal.Decimal, str, bytes, BoolClass, NoneClass, FileIO]:
|
1778
|
+
"""
|
1779
|
+
Casts the input payload arg into the allowed types
|
1780
|
+
The input validated_path_to_schemas is mutated by running this function
|
1781
|
+
|
1782
|
+
When from_server is False then
|
1783
|
+
- date/datetime is cast to str
|
1784
|
+
- int/float is cast to Decimal
|
1785
|
+
|
1786
|
+
If a Schema instance is passed in it is converted back to a primitive instance because
|
1787
|
+
One may need to validate that data to the original Schema class AND additional different classes
|
1788
|
+
those additional classes will need to be added to the new manufactured class for that payload
|
1789
|
+
If the code didn't do this and kept the payload as a Schema instance it would fail to validate to other
|
1790
|
+
Schema classes and the code wouldn't be able to mfg a new class that includes all valid schemas
|
1791
|
+
TODO: store the validated schema classes in validation_metadata
|
1792
|
+
|
1793
|
+
Args:
|
1794
|
+
arg: the payload
|
1795
|
+
from_server: whether this payload came from the server or not
|
1796
|
+
validated_path_to_schemas: a dict that stores the validated classes at any path location in the payload
|
1797
|
+
"""
|
1798
|
+
if isinstance(arg, Schema):
|
1799
|
+
# store the already run validations
|
1800
|
+
schema_classes = set()
|
1801
|
+
for cls in arg.__class__.__bases__:
|
1802
|
+
if cls is Singleton:
|
1803
|
+
# Skip Singleton
|
1804
|
+
continue
|
1805
|
+
schema_classes.add(cls)
|
1806
|
+
validated_path_to_schemas[path_to_item] = schema_classes
|
1807
|
+
|
1808
|
+
type_error = ApiTypeError(f"Invalid type. Required value type is str and passed type was {type(arg)} at {path_to_item}")
|
1809
|
+
if isinstance(arg, str):
|
1810
|
+
return str(arg)
|
1811
|
+
elif isinstance(arg, (dict, frozendict.frozendict)):
|
1812
|
+
return frozendict.frozendict({key: cast_to_allowed_types(val, from_server, validated_path_to_schemas, path_to_item + (key,)) for key, val in arg.items()})
|
1813
|
+
elif isinstance(arg, (bool, BoolClass)):
|
1814
|
+
"""
|
1815
|
+
this check must come before isinstance(arg, (int, float))
|
1816
|
+
because isinstance(True, int) is True
|
1817
|
+
"""
|
1818
|
+
if arg:
|
1819
|
+
return BoolClass.TRUE
|
1820
|
+
return BoolClass.FALSE
|
1821
|
+
elif isinstance(arg, int):
|
1822
|
+
return decimal.Decimal(arg)
|
1823
|
+
elif isinstance(arg, float):
|
1824
|
+
decimal_from_float = decimal.Decimal(arg)
|
1825
|
+
if decimal_from_float.as_integer_ratio()[1] == 1:
|
1826
|
+
# 9.0 -> Decimal('9.0')
|
1827
|
+
# 3.4028234663852886e+38 -> Decimal('340282346638528859811704183484516925440.0')
|
1828
|
+
return decimal.Decimal(str(decimal_from_float)+'.0')
|
1829
|
+
return decimal_from_float
|
1830
|
+
elif isinstance(arg, (tuple, list)):
|
1831
|
+
return tuple([cast_to_allowed_types(item, from_server, validated_path_to_schemas, path_to_item + (i,)) for i, item in enumerate(arg)])
|
1832
|
+
elif isinstance(arg, (none_type, NoneClass)):
|
1833
|
+
return NoneClass.NONE
|
1834
|
+
elif isinstance(arg, (date, datetime)):
|
1835
|
+
if not from_server:
|
1836
|
+
return arg.isoformat()
|
1837
|
+
raise type_error
|
1838
|
+
elif isinstance(arg, uuid.UUID):
|
1839
|
+
if not from_server:
|
1840
|
+
return str(arg)
|
1841
|
+
raise type_error
|
1842
|
+
elif isinstance(arg, decimal.Decimal):
|
1843
|
+
return decimal.Decimal(arg)
|
1844
|
+
elif isinstance(arg, bytes):
|
1845
|
+
return bytes(arg)
|
1846
|
+
elif isinstance(arg, (io.FileIO, io.BufferedReader)):
|
1847
|
+
return FileIO(arg)
|
1848
|
+
raise ValueError('Invalid type passed in got input={} type={}'.format(arg, type(arg)))
|
1849
|
+
|
1850
|
+
|
1851
|
+
class ComposedBase(Discriminable):
|
1852
|
+
|
1853
|
+
@classmethod
|
1854
|
+
def __get_allof_classes(cls, arg, validation_metadata: ValidationMetadata):
|
1855
|
+
path_to_schemas = defaultdict(set)
|
1856
|
+
for allof_cls in cls.MetaOapg.all_of():
|
1857
|
+
if validation_metadata.validation_ran_earlier(allof_cls):
|
1858
|
+
add_deeper_validated_schemas(validation_metadata, path_to_schemas)
|
1859
|
+
continue
|
1860
|
+
other_path_to_schemas = allof_cls._validate_oapg(arg, validation_metadata=validation_metadata)
|
1861
|
+
update(path_to_schemas, other_path_to_schemas)
|
1862
|
+
return path_to_schemas
|
1863
|
+
|
1864
|
+
@classmethod
|
1865
|
+
def __get_oneof_class(
|
1866
|
+
cls,
|
1867
|
+
arg,
|
1868
|
+
discriminated_cls,
|
1869
|
+
validation_metadata: ValidationMetadata,
|
1870
|
+
):
|
1871
|
+
oneof_classes = []
|
1872
|
+
path_to_schemas = defaultdict(set)
|
1873
|
+
for oneof_cls in cls.MetaOapg.one_of():
|
1874
|
+
if oneof_cls in path_to_schemas[validation_metadata.path_to_item]:
|
1875
|
+
oneof_classes.append(oneof_cls)
|
1876
|
+
continue
|
1877
|
+
if validation_metadata.validation_ran_earlier(oneof_cls):
|
1878
|
+
oneof_classes.append(oneof_cls)
|
1879
|
+
add_deeper_validated_schemas(validation_metadata, path_to_schemas)
|
1880
|
+
continue
|
1881
|
+
try:
|
1882
|
+
path_to_schemas = oneof_cls._validate_oapg(arg, validation_metadata=validation_metadata)
|
1883
|
+
except (ApiValueError, ApiTypeError) as ex:
|
1884
|
+
if discriminated_cls is not None and oneof_cls is discriminated_cls:
|
1885
|
+
raise ex
|
1886
|
+
continue
|
1887
|
+
oneof_classes.append(oneof_cls)
|
1888
|
+
if not oneof_classes:
|
1889
|
+
raise ApiValueError(
|
1890
|
+
"Invalid inputs given to generate an instance of {}. None "
|
1891
|
+
"of the oneOf schemas matched the input data.".format(cls)
|
1892
|
+
)
|
1893
|
+
elif len(oneof_classes) > 1:
|
1894
|
+
raise ApiValueError(
|
1895
|
+
"Invalid inputs given to generate an instance of {}. Multiple "
|
1896
|
+
"oneOf schemas {} matched the inputs, but a max of one is allowed.".format(cls, oneof_classes)
|
1897
|
+
)
|
1898
|
+
# exactly one class matches
|
1899
|
+
return path_to_schemas
|
1900
|
+
|
1901
|
+
@classmethod
|
1902
|
+
def __get_anyof_classes(
|
1903
|
+
cls,
|
1904
|
+
arg,
|
1905
|
+
discriminated_cls,
|
1906
|
+
validation_metadata: ValidationMetadata
|
1907
|
+
):
|
1908
|
+
anyof_classes = []
|
1909
|
+
path_to_schemas = defaultdict(set)
|
1910
|
+
for anyof_cls in cls.MetaOapg.any_of():
|
1911
|
+
if validation_metadata.validation_ran_earlier(anyof_cls):
|
1912
|
+
anyof_classes.append(anyof_cls)
|
1913
|
+
add_deeper_validated_schemas(validation_metadata, path_to_schemas)
|
1914
|
+
continue
|
1915
|
+
|
1916
|
+
try:
|
1917
|
+
other_path_to_schemas = anyof_cls._validate_oapg(arg, validation_metadata=validation_metadata)
|
1918
|
+
except (ApiValueError, ApiTypeError) as ex:
|
1919
|
+
if discriminated_cls is not None and anyof_cls is discriminated_cls:
|
1920
|
+
raise ex
|
1921
|
+
continue
|
1922
|
+
anyof_classes.append(anyof_cls)
|
1923
|
+
update(path_to_schemas, other_path_to_schemas)
|
1924
|
+
if not anyof_classes:
|
1925
|
+
raise ApiValueError(
|
1926
|
+
"Invalid inputs given to generate an instance of {}. None "
|
1927
|
+
"of the anyOf schemas matched the input data.".format(cls)
|
1928
|
+
)
|
1929
|
+
return path_to_schemas
|
1930
|
+
|
1931
|
+
@classmethod
|
1932
|
+
def _validate_oapg(
|
1933
|
+
cls,
|
1934
|
+
arg,
|
1935
|
+
validation_metadata: ValidationMetadata,
|
1936
|
+
) -> typing.Dict[typing.Tuple[typing.Union[str, int], ...], typing.Set[typing.Union['Schema', str, decimal.Decimal, BoolClass, NoneClass, frozendict.frozendict, tuple]]]:
|
1937
|
+
"""
|
1938
|
+
ComposedBase _validate_oapg
|
1939
|
+
We return dynamic classes of different bases depending upon the inputs
|
1940
|
+
This makes it so:
|
1941
|
+
- the returned instance is always a subclass of our defining schema
|
1942
|
+
- this allows us to check type based on whether an instance is a subclass of a schema
|
1943
|
+
- the returned instance is a serializable type (except for None, True, and False) which are enums
|
1944
|
+
|
1945
|
+
Returns:
|
1946
|
+
new_cls (type): the new class
|
1947
|
+
|
1948
|
+
Raises:
|
1949
|
+
ApiValueError: when a string can't be converted into a date or datetime and it must be one of those classes
|
1950
|
+
ApiTypeError: when the input type is not in the list of allowed spec types
|
1951
|
+
"""
|
1952
|
+
# validation checking on types, validations, and enums
|
1953
|
+
path_to_schemas = super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
1954
|
+
|
1955
|
+
updated_vm = ValidationMetadata(
|
1956
|
+
configuration=validation_metadata.configuration,
|
1957
|
+
from_server=validation_metadata.from_server,
|
1958
|
+
path_to_item=validation_metadata.path_to_item,
|
1959
|
+
seen_classes=validation_metadata.seen_classes | frozenset({cls}),
|
1960
|
+
validated_path_to_schemas=validation_metadata.validated_path_to_schemas
|
1961
|
+
)
|
1962
|
+
|
1963
|
+
# process composed schema
|
1964
|
+
discriminator = None
|
1965
|
+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'discriminator'):
|
1966
|
+
discriminator = cls.MetaOapg.discriminator()
|
1967
|
+
discriminated_cls = None
|
1968
|
+
if discriminator and arg and isinstance(arg, frozendict.frozendict):
|
1969
|
+
disc_property_name = list(discriminator.keys())[0]
|
1970
|
+
cls._ensure_discriminator_value_present_oapg(disc_property_name, updated_vm, arg)
|
1971
|
+
# get discriminated_cls by looking at the dict in the current class
|
1972
|
+
discriminated_cls = cls.get_discriminated_class_oapg(
|
1973
|
+
disc_property_name=disc_property_name, disc_payload_value=arg[disc_property_name])
|
1974
|
+
if discriminated_cls is None:
|
1975
|
+
raise ApiValueError(
|
1976
|
+
"Invalid discriminator value '{}' was passed in to {}.{} Only the values {} are allowed at {}".format(
|
1977
|
+
arg[disc_property_name],
|
1978
|
+
cls.__name__,
|
1979
|
+
disc_property_name,
|
1980
|
+
list(discriminator[disc_property_name].keys()),
|
1981
|
+
updated_vm.path_to_item + (disc_property_name,)
|
1982
|
+
)
|
1983
|
+
)
|
1984
|
+
|
1985
|
+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'all_of'):
|
1986
|
+
other_path_to_schemas = cls.__get_allof_classes(arg, validation_metadata=updated_vm)
|
1987
|
+
update(path_to_schemas, other_path_to_schemas)
|
1988
|
+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'one_of'):
|
1989
|
+
other_path_to_schemas = cls.__get_oneof_class(
|
1990
|
+
arg,
|
1991
|
+
discriminated_cls=discriminated_cls,
|
1992
|
+
validation_metadata=updated_vm
|
1993
|
+
)
|
1994
|
+
update(path_to_schemas, other_path_to_schemas)
|
1995
|
+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'any_of'):
|
1996
|
+
other_path_to_schemas = cls.__get_anyof_classes(
|
1997
|
+
arg,
|
1998
|
+
discriminated_cls=discriminated_cls,
|
1999
|
+
validation_metadata=updated_vm
|
2000
|
+
)
|
2001
|
+
update(path_to_schemas, other_path_to_schemas)
|
2002
|
+
not_cls = None
|
2003
|
+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'not_schema'):
|
2004
|
+
not_cls = cls.MetaOapg.not_schema
|
2005
|
+
not_cls = cls._get_class_oapg(not_cls)
|
2006
|
+
if not_cls:
|
2007
|
+
other_path_to_schemas = None
|
2008
|
+
not_exception = ApiValueError(
|
2009
|
+
"Invalid value '{}' was passed in to {}. Value is invalid because it is disallowed by {}".format(
|
2010
|
+
arg,
|
2011
|
+
cls.__name__,
|
2012
|
+
not_cls.__name__,
|
2013
|
+
)
|
2014
|
+
)
|
2015
|
+
if updated_vm.validation_ran_earlier(not_cls):
|
2016
|
+
raise not_exception
|
2017
|
+
|
2018
|
+
try:
|
2019
|
+
other_path_to_schemas = not_cls._validate_oapg(arg, validation_metadata=updated_vm)
|
2020
|
+
except (ApiValueError, ApiTypeError):
|
2021
|
+
pass
|
2022
|
+
if other_path_to_schemas:
|
2023
|
+
raise not_exception
|
2024
|
+
|
2025
|
+
if discriminated_cls is not None and not updated_vm.validation_ran_earlier(discriminated_cls):
|
2026
|
+
# TODO use an exception from this package here
|
2027
|
+
add_deeper_validated_schemas(updated_vm, path_to_schemas)
|
2028
|
+
assert discriminated_cls in path_to_schemas[updated_vm.path_to_item]
|
2029
|
+
return path_to_schemas
|
2030
|
+
|
2031
|
+
|
2032
|
+
# DictBase, ListBase, NumberBase, StrBase, BoolBase, NoneBase
|
2033
|
+
class ComposedSchema(
|
2034
|
+
ComposedBase,
|
2035
|
+
DictBase,
|
2036
|
+
ListBase,
|
2037
|
+
NumberBase,
|
2038
|
+
StrBase,
|
2039
|
+
BoolBase,
|
2040
|
+
NoneBase,
|
2041
|
+
Schema,
|
2042
|
+
NoneFrozenDictTupleStrDecimalBoolMixin
|
2043
|
+
):
|
2044
|
+
@classmethod
|
2045
|
+
def from_openapi_data_oapg(cls, *args: typing.Any, _configuration: typing.Optional[Configuration] = None, **kwargs):
|
2046
|
+
if not args:
|
2047
|
+
if not kwargs:
|
2048
|
+
raise ApiTypeError('{} is missing required input data in args or kwargs'.format(cls.__name__))
|
2049
|
+
args = (kwargs, )
|
2050
|
+
return super().from_openapi_data_oapg(args[0], _configuration=_configuration)
|
2051
|
+
|
2052
|
+
|
2053
|
+
class ListSchema(
|
2054
|
+
ListBase,
|
2055
|
+
Schema,
|
2056
|
+
TupleMixin
|
2057
|
+
):
|
2058
|
+
|
2059
|
+
@classmethod
|
2060
|
+
def from_openapi_data_oapg(cls, arg: typing.List[typing.Any], _configuration: typing.Optional[Configuration] = None):
|
2061
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2062
|
+
|
2063
|
+
def __new__(cls, _arg: typing.Union[typing.List[typing.Any], typing.Tuple[typing.Any]], **kwargs: Configuration):
|
2064
|
+
return super().__new__(cls, _arg, **kwargs)
|
2065
|
+
|
2066
|
+
|
2067
|
+
class NoneSchema(
|
2068
|
+
NoneBase,
|
2069
|
+
Schema,
|
2070
|
+
NoneMixin
|
2071
|
+
):
|
2072
|
+
|
2073
|
+
@classmethod
|
2074
|
+
def from_openapi_data_oapg(cls, arg: None, _configuration: typing.Optional[Configuration] = None):
|
2075
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2076
|
+
|
2077
|
+
def __new__(cls, _arg: None, **kwargs: Configuration):
|
2078
|
+
return super().__new__(cls, _arg, **kwargs)
|
2079
|
+
|
2080
|
+
|
2081
|
+
class NumberSchema(
|
2082
|
+
NumberBase,
|
2083
|
+
Schema,
|
2084
|
+
DecimalMixin
|
2085
|
+
):
|
2086
|
+
"""
|
2087
|
+
This is used for type: number with no format
|
2088
|
+
Both integers AND floats are accepted
|
2089
|
+
"""
|
2090
|
+
|
2091
|
+
@classmethod
|
2092
|
+
def from_openapi_data_oapg(cls, arg: typing.Union[int, float], _configuration: typing.Optional[Configuration] = None):
|
2093
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2094
|
+
|
2095
|
+
def __new__(cls, _arg: typing.Union[decimal.Decimal, int, float], **kwargs: Configuration):
|
2096
|
+
return super().__new__(cls, _arg, **kwargs)
|
2097
|
+
|
2098
|
+
|
2099
|
+
class IntBase:
|
2100
|
+
@property
|
2101
|
+
def as_int_oapg(self) -> int:
|
2102
|
+
try:
|
2103
|
+
return self._as_int
|
2104
|
+
except AttributeError:
|
2105
|
+
self._as_int = int(self)
|
2106
|
+
return self._as_int
|
2107
|
+
|
2108
|
+
@classmethod
|
2109
|
+
def __validate_format(cls, arg: typing.Optional[decimal.Decimal], validation_metadata: ValidationMetadata):
|
2110
|
+
if isinstance(arg, decimal.Decimal):
|
2111
|
+
|
2112
|
+
denominator = arg.as_integer_ratio()[-1]
|
2113
|
+
if denominator != 1:
|
2114
|
+
raise ApiValueError(
|
2115
|
+
"Invalid value '{}' for type integer at {}".format(arg, validation_metadata.path_to_item)
|
2116
|
+
)
|
2117
|
+
|
2118
|
+
@classmethod
|
2119
|
+
def _validate_oapg(
|
2120
|
+
cls,
|
2121
|
+
arg,
|
2122
|
+
validation_metadata: ValidationMetadata,
|
2123
|
+
):
|
2124
|
+
"""
|
2125
|
+
IntBase _validate_oapg
|
2126
|
+
TODO what about types = (int, number) -> IntBase, NumberBase? We could drop int and keep number only
|
2127
|
+
"""
|
2128
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
2129
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
2130
|
+
|
2131
|
+
|
2132
|
+
class IntSchema(IntBase, NumberSchema):
|
2133
|
+
|
2134
|
+
@classmethod
|
2135
|
+
def from_openapi_data_oapg(cls, arg: int, _configuration: typing.Optional[Configuration] = None):
|
2136
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2137
|
+
|
2138
|
+
def __new__(cls, _arg: typing.Union[decimal.Decimal, int], **kwargs: Configuration):
|
2139
|
+
return super().__new__(cls, _arg, **kwargs)
|
2140
|
+
|
2141
|
+
|
2142
|
+
class Int32Base:
|
2143
|
+
__inclusive_minimum = decimal.Decimal(-2147483648)
|
2144
|
+
__inclusive_maximum = decimal.Decimal(2147483647)
|
2145
|
+
|
2146
|
+
@classmethod
|
2147
|
+
def __validate_format(cls, arg: typing.Optional[decimal.Decimal], validation_metadata: ValidationMetadata):
|
2148
|
+
if isinstance(arg, decimal.Decimal) and arg.as_tuple().exponent == 0:
|
2149
|
+
if not cls.__inclusive_minimum <= arg <= cls.__inclusive_maximum:
|
2150
|
+
raise ApiValueError(
|
2151
|
+
"Invalid value '{}' for type int32 at {}".format(arg, validation_metadata.path_to_item)
|
2152
|
+
)
|
2153
|
+
|
2154
|
+
@classmethod
|
2155
|
+
def _validate_oapg(
|
2156
|
+
cls,
|
2157
|
+
arg,
|
2158
|
+
validation_metadata: ValidationMetadata,
|
2159
|
+
):
|
2160
|
+
"""
|
2161
|
+
Int32Base _validate_oapg
|
2162
|
+
"""
|
2163
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
2164
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
2165
|
+
|
2166
|
+
|
2167
|
+
class Int32Schema(
|
2168
|
+
Int32Base,
|
2169
|
+
IntSchema
|
2170
|
+
):
|
2171
|
+
pass
|
2172
|
+
|
2173
|
+
|
2174
|
+
class Int64Base:
|
2175
|
+
__inclusive_minimum = decimal.Decimal(-9223372036854775808)
|
2176
|
+
__inclusive_maximum = decimal.Decimal(9223372036854775807)
|
2177
|
+
|
2178
|
+
@classmethod
|
2179
|
+
def __validate_format(cls, arg: typing.Optional[decimal.Decimal], validation_metadata: ValidationMetadata):
|
2180
|
+
if isinstance(arg, decimal.Decimal) and arg.as_tuple().exponent == 0:
|
2181
|
+
if not cls.__inclusive_minimum <= arg <= cls.__inclusive_maximum:
|
2182
|
+
raise ApiValueError(
|
2183
|
+
"Invalid value '{}' for type int64 at {}".format(arg, validation_metadata.path_to_item)
|
2184
|
+
)
|
2185
|
+
|
2186
|
+
@classmethod
|
2187
|
+
def _validate_oapg(
|
2188
|
+
cls,
|
2189
|
+
arg,
|
2190
|
+
validation_metadata: ValidationMetadata,
|
2191
|
+
):
|
2192
|
+
"""
|
2193
|
+
Int64Base _validate_oapg
|
2194
|
+
"""
|
2195
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
2196
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
2197
|
+
|
2198
|
+
|
2199
|
+
class Int64Schema(
|
2200
|
+
Int64Base,
|
2201
|
+
IntSchema
|
2202
|
+
):
|
2203
|
+
pass
|
2204
|
+
|
2205
|
+
|
2206
|
+
class Float32Base:
|
2207
|
+
__inclusive_minimum = decimal.Decimal(-3.4028234663852886e+38)
|
2208
|
+
__inclusive_maximum = decimal.Decimal(3.4028234663852886e+38)
|
2209
|
+
|
2210
|
+
@classmethod
|
2211
|
+
def __validate_format(cls, arg: typing.Optional[decimal.Decimal], validation_metadata: ValidationMetadata):
|
2212
|
+
if isinstance(arg, decimal.Decimal):
|
2213
|
+
if not cls.__inclusive_minimum <= arg <= cls.__inclusive_maximum:
|
2214
|
+
raise ApiValueError(
|
2215
|
+
"Invalid value '{}' for type float at {}".format(arg, validation_metadata.path_to_item)
|
2216
|
+
)
|
2217
|
+
|
2218
|
+
@classmethod
|
2219
|
+
def _validate_oapg(
|
2220
|
+
cls,
|
2221
|
+
arg,
|
2222
|
+
validation_metadata: ValidationMetadata,
|
2223
|
+
):
|
2224
|
+
"""
|
2225
|
+
Float32Base _validate_oapg
|
2226
|
+
"""
|
2227
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
2228
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
2229
|
+
|
2230
|
+
|
2231
|
+
class Float32Schema(
|
2232
|
+
Float32Base,
|
2233
|
+
NumberSchema
|
2234
|
+
):
|
2235
|
+
|
2236
|
+
@classmethod
|
2237
|
+
def from_openapi_data_oapg(cls, arg: float, _configuration: typing.Optional[Configuration] = None):
|
2238
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2239
|
+
|
2240
|
+
|
2241
|
+
class Float64Base:
|
2242
|
+
__inclusive_minimum = decimal.Decimal(-1.7976931348623157E+308)
|
2243
|
+
__inclusive_maximum = decimal.Decimal(1.7976931348623157E+308)
|
2244
|
+
|
2245
|
+
@classmethod
|
2246
|
+
def __validate_format(cls, arg: typing.Optional[decimal.Decimal], validation_metadata: ValidationMetadata):
|
2247
|
+
if isinstance(arg, decimal.Decimal):
|
2248
|
+
if not cls.__inclusive_minimum <= arg <= cls.__inclusive_maximum:
|
2249
|
+
raise ApiValueError(
|
2250
|
+
"Invalid value '{}' for type double at {}".format(arg, validation_metadata.path_to_item)
|
2251
|
+
)
|
2252
|
+
|
2253
|
+
@classmethod
|
2254
|
+
def _validate_oapg(
|
2255
|
+
cls,
|
2256
|
+
arg,
|
2257
|
+
validation_metadata: ValidationMetadata,
|
2258
|
+
):
|
2259
|
+
"""
|
2260
|
+
Float64Base _validate_oapg
|
2261
|
+
"""
|
2262
|
+
cls.__validate_format(arg, validation_metadata=validation_metadata)
|
2263
|
+
return super()._validate_oapg(arg, validation_metadata=validation_metadata)
|
2264
|
+
|
2265
|
+
class Float64Schema(
|
2266
|
+
Float64Base,
|
2267
|
+
NumberSchema
|
2268
|
+
):
|
2269
|
+
|
2270
|
+
@classmethod
|
2271
|
+
def from_openapi_data_oapg(cls, arg: float, _configuration: typing.Optional[Configuration] = None):
|
2272
|
+
# todo check format
|
2273
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2274
|
+
|
2275
|
+
|
2276
|
+
class StrSchema(
|
2277
|
+
StrBase,
|
2278
|
+
Schema,
|
2279
|
+
StrMixin
|
2280
|
+
):
|
2281
|
+
"""
|
2282
|
+
date + datetime string types must inherit from this class
|
2283
|
+
That is because one can validate a str payload as both:
|
2284
|
+
- type: string (format unset)
|
2285
|
+
- type: string, format: date
|
2286
|
+
"""
|
2287
|
+
|
2288
|
+
@classmethod
|
2289
|
+
def from_openapi_data_oapg(cls, arg: str, _configuration: typing.Optional[Configuration] = None) -> 'StrSchema':
|
2290
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2291
|
+
|
2292
|
+
def __new__(cls, _arg: typing.Union[str, date, datetime, uuid.UUID], **kwargs: Configuration):
|
2293
|
+
return super().__new__(cls, _arg, **kwargs)
|
2294
|
+
|
2295
|
+
|
2296
|
+
class UUIDSchema(UUIDBase, StrSchema):
|
2297
|
+
|
2298
|
+
def __new__(cls, _arg: typing.Union[str, uuid.UUID], **kwargs: Configuration):
|
2299
|
+
return super().__new__(cls, _arg, **kwargs)
|
2300
|
+
|
2301
|
+
|
2302
|
+
class DateSchema(DateBase, StrSchema):
|
2303
|
+
|
2304
|
+
def __new__(cls, _arg: typing.Union[str, date], **kwargs: Configuration):
|
2305
|
+
return super().__new__(cls, _arg, **kwargs)
|
2306
|
+
|
2307
|
+
|
2308
|
+
class DateTimeSchema(DateTimeBase, StrSchema):
|
2309
|
+
|
2310
|
+
def __new__(cls, _arg: typing.Union[str, datetime], **kwargs: Configuration):
|
2311
|
+
return super().__new__(cls, _arg, **kwargs)
|
2312
|
+
|
2313
|
+
|
2314
|
+
class DecimalSchema(DecimalBase, StrSchema):
|
2315
|
+
|
2316
|
+
def __new__(cls, _arg: str, **kwargs: Configuration):
|
2317
|
+
"""
|
2318
|
+
Note: Decimals may not be passed in because cast_to_allowed_types is only invoked once for payloads
|
2319
|
+
which can be simple (str) or complex (dicts or lists with nested values)
|
2320
|
+
Because casting is only done once and recursively casts all values prior to validation then for a potential
|
2321
|
+
client side Decimal input if Decimal was accepted as an input in DecimalSchema then one would not know
|
2322
|
+
if one was using it for a StrSchema (where it should be cast to str) or one is using it for NumberSchema
|
2323
|
+
where it should stay as Decimal.
|
2324
|
+
"""
|
2325
|
+
return super().__new__(cls, _arg, **kwargs)
|
2326
|
+
|
2327
|
+
|
2328
|
+
class BytesSchema(
|
2329
|
+
Schema,
|
2330
|
+
BytesMixin
|
2331
|
+
):
|
2332
|
+
"""
|
2333
|
+
this class will subclass bytes and is immutable
|
2334
|
+
"""
|
2335
|
+
def __new__(cls, _arg: bytes, **kwargs: Configuration):
|
2336
|
+
return super(Schema, cls).__new__(cls, _arg)
|
2337
|
+
|
2338
|
+
|
2339
|
+
class FileSchema(
|
2340
|
+
Schema,
|
2341
|
+
FileMixin
|
2342
|
+
):
|
2343
|
+
"""
|
2344
|
+
This class is NOT immutable
|
2345
|
+
Dynamic classes are built using it for example when AnyType allows in binary data
|
2346
|
+
Al other schema classes ARE immutable
|
2347
|
+
If one wanted to make this immutable one could make this a DictSchema with required properties:
|
2348
|
+
- data = BytesSchema (which would be an immutable bytes based schema)
|
2349
|
+
- file_name = StrSchema
|
2350
|
+
and cast_to_allowed_types would convert bytes and file instances into dicts containing data + file_name
|
2351
|
+
The downside would be that data would be stored in memory which one may not want to do for very large files
|
2352
|
+
|
2353
|
+
The developer is responsible for closing this file and deleting it
|
2354
|
+
|
2355
|
+
This class was kept as mutable:
|
2356
|
+
- to allow file reading and writing to disk
|
2357
|
+
- to be able to preserve file name info
|
2358
|
+
"""
|
2359
|
+
|
2360
|
+
def __new__(cls, _arg: typing.Union[io.FileIO, io.BufferedReader], **kwargs: Configuration):
|
2361
|
+
return super(Schema, cls).__new__(cls, _arg)
|
2362
|
+
|
2363
|
+
|
2364
|
+
class BinaryBase:
|
2365
|
+
pass
|
2366
|
+
|
2367
|
+
|
2368
|
+
class BinarySchema(
|
2369
|
+
ComposedBase,
|
2370
|
+
BinaryBase,
|
2371
|
+
Schema,
|
2372
|
+
BinaryMixin
|
2373
|
+
):
|
2374
|
+
class MetaOapg:
|
2375
|
+
@staticmethod
|
2376
|
+
def one_of():
|
2377
|
+
return [
|
2378
|
+
BytesSchema,
|
2379
|
+
FileSchema,
|
2380
|
+
]
|
2381
|
+
|
2382
|
+
def __new__(cls, _arg: typing.Union[io.FileIO, io.BufferedReader, bytes], **kwargs: Configuration):
|
2383
|
+
return super().__new__(cls, _arg)
|
2384
|
+
|
2385
|
+
|
2386
|
+
class BoolSchema(
|
2387
|
+
BoolBase,
|
2388
|
+
Schema,
|
2389
|
+
BoolMixin
|
2390
|
+
):
|
2391
|
+
|
2392
|
+
@classmethod
|
2393
|
+
def from_openapi_data_oapg(cls, arg: bool, _configuration: typing.Optional[Configuration] = None):
|
2394
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2395
|
+
|
2396
|
+
def __new__(cls, _arg: bool, **kwargs: ValidationMetadata):
|
2397
|
+
return super().__new__(cls, _arg, **kwargs)
|
2398
|
+
|
2399
|
+
|
2400
|
+
class AnyTypeSchema(
|
2401
|
+
DictBase,
|
2402
|
+
ListBase,
|
2403
|
+
NumberBase,
|
2404
|
+
StrBase,
|
2405
|
+
BoolBase,
|
2406
|
+
NoneBase,
|
2407
|
+
Schema,
|
2408
|
+
NoneFrozenDictTupleStrDecimalBoolFileBytesMixin
|
2409
|
+
):
|
2410
|
+
# Python representation of a schema defined as true or {}
|
2411
|
+
pass
|
2412
|
+
|
2413
|
+
|
2414
|
+
class UnsetAnyTypeSchema(AnyTypeSchema):
|
2415
|
+
# Used when additionalProperties/items was not explicitly defined and a defining schema is needed
|
2416
|
+
pass
|
2417
|
+
|
2418
|
+
|
2419
|
+
class NotAnyTypeSchema(
|
2420
|
+
ComposedSchema,
|
2421
|
+
):
|
2422
|
+
"""
|
2423
|
+
Python representation of a schema defined as false or {'not': {}}
|
2424
|
+
Does not allow inputs in of AnyType
|
2425
|
+
Note: validations on this class are never run because the code knows that no inputs will ever validate
|
2426
|
+
"""
|
2427
|
+
|
2428
|
+
class MetaOapg:
|
2429
|
+
not_schema = AnyTypeSchema
|
2430
|
+
|
2431
|
+
def __new__(
|
2432
|
+
cls,
|
2433
|
+
*_args,
|
2434
|
+
_configuration: typing.Optional[Configuration] = None,
|
2435
|
+
) -> 'NotAnyTypeSchema':
|
2436
|
+
return super().__new__(
|
2437
|
+
cls,
|
2438
|
+
*_args,
|
2439
|
+
_configuration=_configuration,
|
2440
|
+
)
|
2441
|
+
|
2442
|
+
|
2443
|
+
class DictSchema(
|
2444
|
+
DictBase,
|
2445
|
+
Schema,
|
2446
|
+
FrozenDictMixin
|
2447
|
+
):
|
2448
|
+
@classmethod
|
2449
|
+
def from_openapi_data_oapg(cls, arg: typing.Dict[str, typing.Any], _configuration: typing.Optional[Configuration] = None):
|
2450
|
+
return super().from_openapi_data_oapg(arg, _configuration=_configuration)
|
2451
|
+
|
2452
|
+
def __new__(cls, *_args: typing.Union[dict, frozendict.frozendict], **kwargs: typing.Union[dict, frozendict.frozendict, list, tuple, decimal.Decimal, float, int, str, date, datetime, bool, None, bytes, Schema, Unset, ValidationMetadata]):
|
2453
|
+
return super().__new__(cls, *_args, **kwargs)
|
2454
|
+
|
2455
|
+
|
2456
|
+
schema_type_classes = {NoneSchema, DictSchema, ListSchema, NumberSchema, StrSchema, BoolSchema, AnyTypeSchema}
|
2457
|
+
|
2458
|
+
|
2459
|
+
@functools.lru_cache()
|
2460
|
+
def get_new_class(
|
2461
|
+
class_name: str,
|
2462
|
+
bases: typing.Tuple[typing.Type[typing.Union[Schema, typing.Any]], ...]
|
2463
|
+
) -> typing.Type[Schema]:
|
2464
|
+
"""
|
2465
|
+
Returns a new class that is made with the subclass bases
|
2466
|
+
"""
|
2467
|
+
new_cls: typing.Type[Schema] = type(class_name, bases, {})
|
2468
|
+
return new_cls
|
2469
|
+
|
2470
|
+
|
2471
|
+
LOG_CACHE_USAGE = False
|
2472
|
+
|
2473
|
+
|
2474
|
+
def log_cache_usage(cache_fn):
|
2475
|
+
if LOG_CACHE_USAGE:
|
2476
|
+
print(cache_fn.__name__, cache_fn.cache_info())
|