zscaler-sdk-python 1.9.10__tar.gz → 1.9.11__tar.gz
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.
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/PKG-INFO +4 -2
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/pyproject.toml +6 -4
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/__init__.py +1 -1
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/oneapi_oauth_client.py +14 -3
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/cyber_security.py +28 -17
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/firewall.py +29 -25
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/iot.py +13 -1
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/models/common.py +0 -41
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/saas_security.py +27 -9
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/shadow_it.py +38 -9
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/web_traffic.py +46 -36
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/LICENSE.md +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/README.md +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/api_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/cache/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/cache/cache.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/cache/no_op_cache.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/cache/zscaler_cache.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/config/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/config/config_setter.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/config/config_validator.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/constants.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/error_messages.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/errors/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/errors/error.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/errors/graphql_error.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/errors/http_error.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/errors/response_checker.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/errors/zscaler_api_error.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/exceptions/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/exceptions/exceptions.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/helpers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/logger.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/oneapi_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/oneapi_collection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/oneapi_http_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/oneapi_object.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/oneapi_response.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ratelimiter/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ratelimiter/ratelimiter.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/request_executor.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/types.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/user_agent.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/utils.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/admin_user.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/company.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/entitlements.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/fail_open_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/forwarding_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/admin_user.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/failopenpolicy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/forwardingprofile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/getcompanyinfo.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/manage_pass.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/secrets_otp.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/secrets_passwords.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/trustednetworks.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/webappservice.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/webpolicy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/webprivacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/secrets.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/web_app_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/web_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/web_privacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zcc/zcc_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/admin.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/alerts.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/apps.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/inventory.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/administration.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/alerts.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/application_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/applications.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/call_quality_metrics.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/snapshot.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/software_inventory.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/models/users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/snapshot.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zdx/zdx_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/findings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/lookalike_domains.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/models/findings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/models/lookalike_domains.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/models/organizations.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/organizations.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zeasm/zeasm_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/activate.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/apptotal.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/atp_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_applications.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_firewall.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_firewall_dns.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_firewall_ips.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloud_to_cloud_ir.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/device_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/dns_gatways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/end_user_notification.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/file_type_control_rule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/forwarding_control.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/gre_tunnel.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/iot_report.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/locations.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/malware_protection_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/activation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/advanced_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/apptotal.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_app_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloud_to_cloud_ir.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/device_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/dns_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/endusernotification.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/filetyperules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/forwarding_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/gre_recommended_list.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/gre_tunnel_info.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/gre_tunnels.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/gre_vips.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/iotreport.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/location_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/location_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/malware_protection_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/nss_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/organization_information.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/pac_files.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/proxies.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/proxy_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/remoteassistance.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/rule_labels.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/sandboxrules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/subclouds.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/system_audit.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/time_intervals.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/traffic_capture.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/url_filtering_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/urlcategory.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/user_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/vzen_nodes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/models/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/nss_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/organization_information.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/pac_files.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/policy_export.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/proxies.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/remote_assistance.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/rule_labels.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/sandbox.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/sandbox_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/sub_clouds.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/system_audit.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/time_intervals.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/traffic_capture.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/url_categories.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/url_filtering.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/user_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/vzen_nodes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/workload_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/zia_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zia/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/api_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/models/api_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/models/groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/models/resource_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/models/user_entitlement.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/models/users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/resource_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/user_entitlement.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zidentity/zidentity_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/models/enums.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/models/inputs.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zinsights/zinsights_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/admin_sso_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_connectors.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_protection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_segment_by_type.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_segments_ba.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_segments_ba_v2.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_segments_inspection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/app_segments_pra.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/application_segment.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/branch_connector_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/branch_connectors.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/browser_protection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/c2c_ip_ranges.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/cbi_region.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/client_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/cloud_connector_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/config_override_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/customer_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/customer_domain.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/customer_dr_tool.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/emergency_access.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/extranet_resource.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/idp.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/location_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/lss.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/machine_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/managed_browser_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/microtenants.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/app_connectors.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/app_protection_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/application_segment.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/application_segment_lb.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/application_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/branch_connectors.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/browser_protection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/c2c_ip_ranges.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/cbi_region.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/client_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/cloud_connector_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/config_override_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/customer_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/customer_domain.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/customer_dr_tool.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/emergency_access.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/idp.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/lss.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/machine_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/managed_browser_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/microtenants.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/npn_client_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/oauth2_user_code.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/pra_approval.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/pra_console.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/pra_credential.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/pra_portal.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/private_cloud_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/private_cloud_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/provisioning_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/role_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/scim_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/segment_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/server_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/service_edge_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/service_edges.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/stepup_auth_level.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/trusted_network.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/user_portal_aup.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/user_portal_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/user_portal_link.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/models/zia_customer_config.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/npn_client_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/oauth2_user_code.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/policies.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/pra_approval.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/pra_console.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/pra_credential.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/pra_credential_pool.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/pra_portal.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/private_cloud_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/private_cloud_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/provisioning.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/role_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/scim_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/segment_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/server_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/service_edge_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/service_edges.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/stepup_auth_level.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/user_portal_aup.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/user_portal_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/user_portal_link.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/workload_tag_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/zia_customer_config.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zpa/zpa_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/account_details.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/account_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/activation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/discovery_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/ec_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/ip_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/location_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/location_template.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/account_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/activation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/discovery_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/ec_group_vm.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/ecgroup.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/ip_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/location_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/location_templates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/nw_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/public_cloud_info.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/models/zpa_resources.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/nw_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/public_cloud_info.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/ztw/ztw_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/dlp_incidents.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/change_history.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/generated_tickets.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/incident_details.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/incident_evidence.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/incident_group_search.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/incident_search.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/models/incident_trigger.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.11}/zscaler/zwa/zwa_service.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: zscaler-sdk-python
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.11
|
|
4
4
|
Summary: Official Python SDK for the Zscaler Products
|
|
5
5
|
Home-page: https://github.com/zscaler/zscaler-sdk-python
|
|
6
6
|
License: MIT
|
|
@@ -20,17 +20,19 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
20
20
|
Classifier: Topic :: Security
|
|
21
21
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
22
|
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: PyJWT (>=2.10.1)
|
|
23
24
|
Requires-Dist: aenum (>=3.1.11)
|
|
24
25
|
Requires-Dist: arrow (>=1.3.0)
|
|
25
26
|
Requires-Dist: cryptography (>=45.0.2)
|
|
26
27
|
Requires-Dist: flatdict (>=4.0.0)
|
|
28
|
+
Requires-Dist: jwcrypto (>=1.5.6)
|
|
27
29
|
Requires-Dist: pydash (>=8.0.3)
|
|
28
30
|
Requires-Dist: python-box (>=7.3.0)
|
|
29
31
|
Requires-Dist: python-dateutil (>=2.9.0)
|
|
30
|
-
Requires-Dist: python-jose[cryptography] (>=3.5.0)
|
|
31
32
|
Requires-Dist: pytz (>=2024.2)
|
|
32
33
|
Requires-Dist: pyyaml (>=6.0.0)
|
|
33
34
|
Requires-Dist: requests (>=2.32.3)
|
|
35
|
+
Requires-Dist: urllib3 (>=2.6.0)
|
|
34
36
|
Project-URL: Bug Tracker, https://github.com/zscaler/zscaler-sdk-python/issues
|
|
35
37
|
Project-URL: Documentation, https://zscaler-sdk-python.readthedocs.io
|
|
36
38
|
Project-URL: Repository, https://github.com/zscaler/zscaler-sdk-python
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "zscaler-sdk-python"
|
|
3
|
-
version = "1.9.
|
|
3
|
+
version = "1.9.11"
|
|
4
4
|
description = "Official Python SDK for the Zscaler Products"
|
|
5
5
|
authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -30,13 +30,15 @@ packages = [
|
|
|
30
30
|
[tool.poetry.dependencies]
|
|
31
31
|
python = ">=3.9.2,<4.0"
|
|
32
32
|
requests = ">=2.32.3"
|
|
33
|
+
urllib3 = ">=2.6.0"
|
|
33
34
|
cryptography = ">=45.0.2"
|
|
34
35
|
pyyaml = ">=6.0.0"
|
|
35
36
|
pytz = ">=2024.2"
|
|
36
37
|
python-box = ">=7.3.0"
|
|
37
38
|
python-dateutil = ">=2.9.0"
|
|
38
39
|
flatdict = ">=4.0.0"
|
|
39
|
-
|
|
40
|
+
PyJWT = ">=2.10.1"
|
|
41
|
+
jwcrypto = ">=1.5.6"
|
|
40
42
|
aenum = ">=3.1.11"
|
|
41
43
|
pydash = ">=8.0.3"
|
|
42
44
|
arrow = ">=1.3.0"
|
|
@@ -50,7 +52,7 @@ pytest-mock = ">=3.12.0"
|
|
|
50
52
|
pytest-asyncio = ">=0.23.0"
|
|
51
53
|
pytest-cov = ">=6.2.1"
|
|
52
54
|
pytest-recording = ">=0.13.1"
|
|
53
|
-
vcrpy = ">=
|
|
55
|
+
vcrpy = {version = ">=8.1.0", python = ">=3.10"}
|
|
54
56
|
pyfakefs = ">=5.7.0"
|
|
55
57
|
responses = ">=0.25.7"
|
|
56
58
|
sphinx = ">=7.2.0"
|
|
@@ -59,7 +61,7 @@ sphinx_rtd_theme = ">=1.3.0"
|
|
|
59
61
|
wheel = ">=0.42.0"
|
|
60
62
|
|
|
61
63
|
[tool.poetry.extras]
|
|
62
|
-
dev = ["black", "pytest", "pytest-asyncio", "pytest-mock", "pytest-recording", "pytest-cov", "pyfakefs", "
|
|
64
|
+
dev = ["black", "pytest", "pytest-asyncio", "pytest-mock", "pytest-recording", "pytest-cov", "pyfakefs", "isort", "wheel"]
|
|
63
65
|
|
|
64
66
|
[build-system]
|
|
65
67
|
requires = ["poetry-core>=1.0.0"]
|
|
@@ -3,11 +3,15 @@ import logging
|
|
|
3
3
|
import json
|
|
4
4
|
import os
|
|
5
5
|
import requests
|
|
6
|
-
from jose import jwt
|
|
7
6
|
import time
|
|
8
7
|
from cryptography.hazmat.backends import default_backend
|
|
9
8
|
from cryptography.hazmat.primitives import serialization
|
|
10
9
|
from cryptography.hazmat.primitives.asymmetric import rsa
|
|
10
|
+
|
|
11
|
+
# JWT handling - using PyJWT instead of python-jose to avoid ecdsa dependency (CVE-2024-23342)
|
|
12
|
+
import jwt as pyjwt
|
|
13
|
+
from jwcrypto.jwk import JWK
|
|
14
|
+
|
|
11
15
|
from zscaler.user_agent import UserAgent
|
|
12
16
|
from zscaler.oneapi_http_client import HTTPClient
|
|
13
17
|
from zscaler.errors.response_checker import check_response_for_error
|
|
@@ -335,9 +339,15 @@ class OAuth:
|
|
|
335
339
|
private_key_obj: Union[rsa.RSAPrivateKey, Any]
|
|
336
340
|
if private_key.strip().startswith("{"):
|
|
337
341
|
# **JWK JSON Format**
|
|
342
|
+
# Using jwcrypto instead of python-jose to avoid ecdsa dependency (CVE-2024-23342)
|
|
338
343
|
logging.info("Using JWK JSON format for private key.")
|
|
339
344
|
jwk_key: Dict[str, Any] = json.loads(private_key.strip()) # Convert JWK string to dict
|
|
340
|
-
|
|
345
|
+
# Convert JWK to PEM using jwcrypto, then load with cryptography
|
|
346
|
+
jwk_obj = JWK.from_json(json.dumps(jwk_key))
|
|
347
|
+
pem_bytes = jwk_obj.export_to_pem(private_key=True, password=None)
|
|
348
|
+
private_key_obj = serialization.load_pem_private_key(
|
|
349
|
+
pem_bytes, password=None, backend=default_backend()
|
|
350
|
+
)
|
|
341
351
|
|
|
342
352
|
elif "BEGIN PRIVATE KEY" in private_key:
|
|
343
353
|
# **Raw PEM Private Key**
|
|
@@ -365,7 +375,8 @@ class OAuth:
|
|
|
365
375
|
}
|
|
366
376
|
|
|
367
377
|
# **Generate the JWT assertion using the private key**
|
|
368
|
-
|
|
378
|
+
# Using PyJWT instead of python-jose to avoid ecdsa dependency (CVE-2024-23342)
|
|
379
|
+
assertion: str = pyjwt.encode(payload, private_key_obj, algorithm="RS256")
|
|
369
380
|
|
|
370
381
|
# **Step 3: Prepare OAuth Request**
|
|
371
382
|
form_data: Dict[str, str] = {
|
|
@@ -14,11 +14,12 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
14
14
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
from typing import Optional, List
|
|
17
|
+
from typing import Optional, List, Tuple, Any, Dict
|
|
18
18
|
|
|
19
19
|
from zscaler.api_client import APIClient
|
|
20
20
|
from zscaler.request_executor import RequestExecutor
|
|
21
21
|
from zscaler.utils import format_url
|
|
22
|
+
from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
class CyberSecurityAPI(APIClient):
|
|
@@ -37,6 +38,30 @@ class CyberSecurityAPI(APIClient):
|
|
|
37
38
|
super().__init__()
|
|
38
39
|
self._request_executor = request_executor
|
|
39
40
|
|
|
41
|
+
def _extract_graphql_response(
|
|
42
|
+
self,
|
|
43
|
+
response,
|
|
44
|
+
api_url: str,
|
|
45
|
+
domain: str,
|
|
46
|
+
field: str,
|
|
47
|
+
) -> Tuple[Optional[List[Dict[str, Any]]], Any, Optional[Exception]]:
|
|
48
|
+
"""Extract data from GraphQL response and handle errors."""
|
|
49
|
+
try:
|
|
50
|
+
body = response.get_body() if response else {}
|
|
51
|
+
if is_graphql_error_response(body):
|
|
52
|
+
error = GraphQLAPIError(
|
|
53
|
+
url=api_url,
|
|
54
|
+
response_details=response._response,
|
|
55
|
+
response_body=body,
|
|
56
|
+
service_type="zins"
|
|
57
|
+
)
|
|
58
|
+
return (None, response, error)
|
|
59
|
+
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
60
|
+
entries = data.get(domain, {}).get(field, {}).get("entries", [])
|
|
61
|
+
return (entries, response, None)
|
|
62
|
+
except Exception as ex:
|
|
63
|
+
return (None, response, ex)
|
|
64
|
+
|
|
40
65
|
def get_incidents(
|
|
41
66
|
self,
|
|
42
67
|
start_time: int,
|
|
@@ -124,14 +149,7 @@ class CyberSecurityAPI(APIClient):
|
|
|
124
149
|
if error:
|
|
125
150
|
return (None, response, error)
|
|
126
151
|
|
|
127
|
-
|
|
128
|
-
body = response.get_body() if response else {}
|
|
129
|
-
# GraphQL responses have data wrapped in "data" key
|
|
130
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
131
|
-
entries = data.get("CYBER_SECURITY", {}).get("incidents", {}).get("entries", [])
|
|
132
|
-
return (entries, response, None)
|
|
133
|
-
except Exception as ex:
|
|
134
|
-
return (None, response, ex)
|
|
152
|
+
return self._extract_graphql_response(response, api_url, "CYBER_SECURITY", "incidents")
|
|
135
153
|
|
|
136
154
|
def get_incidents_by_location(
|
|
137
155
|
self,
|
|
@@ -210,11 +228,4 @@ class CyberSecurityAPI(APIClient):
|
|
|
210
228
|
if error:
|
|
211
229
|
return (None, response, error)
|
|
212
230
|
|
|
213
|
-
|
|
214
|
-
body = response.get_body() if response else {}
|
|
215
|
-
# GraphQL responses have data wrapped in "data" key
|
|
216
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
217
|
-
entries = data.get("CYBER_SECURITY", {}).get("cyber_security_location", {}).get("entries", [])
|
|
218
|
-
return (entries, response, None)
|
|
219
|
-
except Exception as ex:
|
|
220
|
-
return (None, response, ex)
|
|
231
|
+
return self._extract_graphql_response(response, api_url, "CYBER_SECURITY", "cyber_security_location")
|
|
@@ -14,12 +14,13 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
14
14
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
from typing import Optional, List
|
|
17
|
+
from typing import Optional, List, Tuple, Any, Dict
|
|
18
18
|
|
|
19
19
|
from zscaler.api_client import APIClient
|
|
20
20
|
from zscaler.request_executor import RequestExecutor
|
|
21
21
|
from zscaler.utils import format_url
|
|
22
22
|
from zscaler.zinsights.models.inputs import FirewallEntriesFilterBy, FirewallEntryOrderBy
|
|
23
|
+
from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class FirewallAPI(APIClient):
|
|
@@ -38,6 +39,30 @@ class FirewallAPI(APIClient):
|
|
|
38
39
|
super().__init__()
|
|
39
40
|
self._request_executor = request_executor
|
|
40
41
|
|
|
42
|
+
def _extract_graphql_response(
|
|
43
|
+
self,
|
|
44
|
+
response,
|
|
45
|
+
api_url: str,
|
|
46
|
+
domain: str,
|
|
47
|
+
field: str,
|
|
48
|
+
) -> Tuple[Optional[List[Dict[str, Any]]], Any, Optional[Exception]]:
|
|
49
|
+
"""Extract data from GraphQL response and handle errors."""
|
|
50
|
+
try:
|
|
51
|
+
body = response.get_body() if response else {}
|
|
52
|
+
if is_graphql_error_response(body):
|
|
53
|
+
error = GraphQLAPIError(
|
|
54
|
+
url=api_url,
|
|
55
|
+
response_details=response._response,
|
|
56
|
+
response_body=body,
|
|
57
|
+
service_type="zins"
|
|
58
|
+
)
|
|
59
|
+
return (None, response, error)
|
|
60
|
+
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
61
|
+
entries = data.get(domain, {}).get(field, {}).get("entries", [])
|
|
62
|
+
return (entries, response, None)
|
|
63
|
+
except Exception as ex:
|
|
64
|
+
return (None, response, ex)
|
|
65
|
+
|
|
41
66
|
def get_traffic_by_action(
|
|
42
67
|
self,
|
|
43
68
|
start_time: int,
|
|
@@ -108,14 +133,7 @@ class FirewallAPI(APIClient):
|
|
|
108
133
|
if error:
|
|
109
134
|
return (None, response, error)
|
|
110
135
|
|
|
111
|
-
|
|
112
|
-
body = response.get_body() if response else {}
|
|
113
|
-
# GraphQL responses have data wrapped in "data" key
|
|
114
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
115
|
-
entries = data.get("ZERO_TRUST_FIREWALL", {}).get("action", {}).get("entries", [])
|
|
116
|
-
return (entries, response, None)
|
|
117
|
-
except Exception as ex:
|
|
118
|
-
return (None, response, ex)
|
|
136
|
+
return self._extract_graphql_response(response, api_url, "ZERO_TRUST_FIREWALL", "action")
|
|
119
137
|
|
|
120
138
|
def get_traffic_by_location(
|
|
121
139
|
self,
|
|
@@ -209,14 +227,7 @@ class FirewallAPI(APIClient):
|
|
|
209
227
|
if error:
|
|
210
228
|
return (None, response, error)
|
|
211
229
|
|
|
212
|
-
|
|
213
|
-
body = response.get_body() if response else {}
|
|
214
|
-
# GraphQL responses have data wrapped in "data" key
|
|
215
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
216
|
-
entries = data.get("ZERO_TRUST_FIREWALL", {}).get("location_firewall", {}).get("entries", [])
|
|
217
|
-
return (entries, response, None)
|
|
218
|
-
except Exception as ex:
|
|
219
|
-
return (None, response, ex)
|
|
230
|
+
return self._extract_graphql_response(response, api_url, "ZERO_TRUST_FIREWALL", "location_firewall")
|
|
220
231
|
|
|
221
232
|
def get_network_services(
|
|
222
233
|
self,
|
|
@@ -281,11 +292,4 @@ class FirewallAPI(APIClient):
|
|
|
281
292
|
if error:
|
|
282
293
|
return (None, response, error)
|
|
283
294
|
|
|
284
|
-
|
|
285
|
-
body = response.get_body() if response else {}
|
|
286
|
-
# GraphQL responses have data wrapped in "data" key
|
|
287
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
288
|
-
entries = data.get("ZERO_TRUST_FIREWALL", {}).get("network_service", {}).get("entries", [])
|
|
289
|
-
return (entries, response, None)
|
|
290
|
-
except Exception as ex:
|
|
291
|
-
return (None, response, ex)
|
|
295
|
+
return self._extract_graphql_response(response, api_url, "ZERO_TRUST_FIREWALL", "network_service")
|
|
@@ -14,12 +14,13 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
14
14
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
from typing import Optional, List
|
|
17
|
+
from typing import Optional, List, Tuple, Any, Dict
|
|
18
18
|
|
|
19
19
|
from zscaler.api_client import APIClient
|
|
20
20
|
from zscaler.request_executor import RequestExecutor
|
|
21
21
|
from zscaler.utils import format_url
|
|
22
22
|
from zscaler.zinsights.models.inputs import IoTDeviceFilterBy, IoTDeviceOrderBy
|
|
23
|
+
from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class IotAPI(APIClient):
|
|
@@ -127,6 +128,17 @@ class IotAPI(APIClient):
|
|
|
127
128
|
|
|
128
129
|
try:
|
|
129
130
|
body = response.get_body() if response else {}
|
|
131
|
+
|
|
132
|
+
# Check for GraphQL errors in the response
|
|
133
|
+
if is_graphql_error_response(body):
|
|
134
|
+
error = GraphQLAPIError(
|
|
135
|
+
url=api_url,
|
|
136
|
+
response_details=response._response,
|
|
137
|
+
response_body=body,
|
|
138
|
+
service_type="zins"
|
|
139
|
+
)
|
|
140
|
+
return (None, response, error)
|
|
141
|
+
|
|
130
142
|
# GraphQL responses have data wrapped in "data" key
|
|
131
143
|
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
132
144
|
device_stats = data.get("IOT", {}).get("device_stats", {})
|
|
@@ -271,46 +271,6 @@ class FirewallReportEntry(ZscalerObject):
|
|
|
271
271
|
return parent_req_format
|
|
272
272
|
|
|
273
273
|
|
|
274
|
-
class RiskScoreEvent(ZscalerObject):
|
|
275
|
-
"""
|
|
276
|
-
A risk score event entry.
|
|
277
|
-
|
|
278
|
-
Attributes:
|
|
279
|
-
time_stamp: The timestamp in epoch milliseconds.
|
|
280
|
-
threats_blocked_count: Number of threats blocked.
|
|
281
|
-
suspicious_activity_count: Number of suspicious activities.
|
|
282
|
-
active_infection_count: Number of active infections.
|
|
283
|
-
score: The calculated risk score.
|
|
284
|
-
"""
|
|
285
|
-
|
|
286
|
-
def __init__(self, config: Optional[Dict[str, Any]] = None) -> None:
|
|
287
|
-
super().__init__(config)
|
|
288
|
-
if config:
|
|
289
|
-
self.time_stamp: Optional[int] = config.get("time_stamp")
|
|
290
|
-
self.threats_blocked_count: Optional[int] = config.get("threats_blocked_count")
|
|
291
|
-
self.suspicious_activity_count: Optional[int] = config.get("suspicious_activity_count")
|
|
292
|
-
self.active_infection_count: Optional[int] = config.get("active_infection_count")
|
|
293
|
-
self.score: Optional[int] = config.get("score")
|
|
294
|
-
else:
|
|
295
|
-
self.time_stamp = None
|
|
296
|
-
self.threats_blocked_count = None
|
|
297
|
-
self.suspicious_activity_count = None
|
|
298
|
-
self.active_infection_count = None
|
|
299
|
-
self.score = None
|
|
300
|
-
|
|
301
|
-
def request_format(self) -> Dict[str, Any]:
|
|
302
|
-
parent_req_format = super().request_format()
|
|
303
|
-
current_obj_format = {
|
|
304
|
-
"time_stamp": self.time_stamp,
|
|
305
|
-
"threats_blocked_count": self.threats_blocked_count,
|
|
306
|
-
"suspicious_activity_count": self.suspicious_activity_count,
|
|
307
|
-
"active_infection_count": self.active_infection_count,
|
|
308
|
-
"score": self.score,
|
|
309
|
-
}
|
|
310
|
-
parent_req_format.update(current_obj_format)
|
|
311
|
-
return parent_req_format
|
|
312
|
-
|
|
313
|
-
|
|
314
274
|
# Export all common types
|
|
315
275
|
__all__ = [
|
|
316
276
|
"WebReportEntry",
|
|
@@ -321,5 +281,4 @@ __all__ = [
|
|
|
321
281
|
"IoTDeviceStat",
|
|
322
282
|
"ShadowITApp",
|
|
323
283
|
"FirewallReportEntry",
|
|
324
|
-
"RiskScoreEvent",
|
|
325
284
|
]
|
|
@@ -14,12 +14,13 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
14
14
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
from typing import Optional, List
|
|
17
|
+
from typing import Optional, List, Tuple, Any, Dict
|
|
18
18
|
|
|
19
19
|
from zscaler.api_client import APIClient
|
|
20
20
|
from zscaler.request_executor import RequestExecutor
|
|
21
21
|
from zscaler.utils import format_url
|
|
22
22
|
from zscaler.zinsights.models.inputs import CasbEntriesFilterBy, CasbEntryOrderBy
|
|
23
|
+
from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class SaasSecurityAPI(APIClient):
|
|
@@ -36,6 +37,30 @@ class SaasSecurityAPI(APIClient):
|
|
|
36
37
|
super().__init__()
|
|
37
38
|
self._request_executor = request_executor
|
|
38
39
|
|
|
40
|
+
def _extract_graphql_response(
|
|
41
|
+
self,
|
|
42
|
+
response,
|
|
43
|
+
api_url: str,
|
|
44
|
+
domain: str,
|
|
45
|
+
field: str,
|
|
46
|
+
) -> Tuple[Optional[List[Dict[str, Any]]], Any, Optional[Exception]]:
|
|
47
|
+
"""Extract data from GraphQL response and handle errors."""
|
|
48
|
+
try:
|
|
49
|
+
body = response.get_body() if response else {}
|
|
50
|
+
if is_graphql_error_response(body):
|
|
51
|
+
error = GraphQLAPIError(
|
|
52
|
+
url=api_url,
|
|
53
|
+
response_details=response._response,
|
|
54
|
+
response_body=body,
|
|
55
|
+
service_type="zins"
|
|
56
|
+
)
|
|
57
|
+
return (None, response, error)
|
|
58
|
+
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
59
|
+
entries = data.get(domain, {}).get(field, {}).get("entries", [])
|
|
60
|
+
return (entries, response, None)
|
|
61
|
+
except Exception as ex:
|
|
62
|
+
return (None, response, ex)
|
|
63
|
+
|
|
39
64
|
def get_casb_app_report(
|
|
40
65
|
self,
|
|
41
66
|
start_time: int,
|
|
@@ -116,11 +141,4 @@ class SaasSecurityAPI(APIClient):
|
|
|
116
141
|
if error:
|
|
117
142
|
return (None, response, error)
|
|
118
143
|
|
|
119
|
-
|
|
120
|
-
body = response.get_body() if response else {}
|
|
121
|
-
# GraphQL responses have data wrapped in "data" key
|
|
122
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
123
|
-
entries = data.get("SAAS_SECURITY", {}).get("casb_app", {}).get("entries", [])
|
|
124
|
-
return (entries, response, None)
|
|
125
|
-
except Exception as ex:
|
|
126
|
-
return (None, response, ex)
|
|
144
|
+
return self._extract_graphql_response(response, api_url, "SAAS_SECURITY", "casb_app")
|
|
@@ -14,12 +14,13 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
14
14
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
from typing import Optional, List
|
|
17
|
+
from typing import Optional, List, Tuple, Any, Dict
|
|
18
18
|
|
|
19
19
|
from zscaler.api_client import APIClient
|
|
20
20
|
from zscaler.request_executor import RequestExecutor
|
|
21
21
|
from zscaler.utils import format_url
|
|
22
22
|
from zscaler.zinsights.models.inputs import ShadowITAppsFilterBy, ShadowITAppsOrderBy
|
|
23
|
+
from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class ShadowItAPI(APIClient):
|
|
@@ -36,6 +37,30 @@ class ShadowItAPI(APIClient):
|
|
|
36
37
|
super().__init__()
|
|
37
38
|
self._request_executor = request_executor
|
|
38
39
|
|
|
40
|
+
def _extract_graphql_response(
|
|
41
|
+
self,
|
|
42
|
+
response,
|
|
43
|
+
api_url: str,
|
|
44
|
+
domain: str,
|
|
45
|
+
field: str,
|
|
46
|
+
) -> Tuple[Optional[List[Dict[str, Any]]], Any, Optional[Exception]]:
|
|
47
|
+
"""Extract data from GraphQL response and handle errors."""
|
|
48
|
+
try:
|
|
49
|
+
body = response.get_body() if response else {}
|
|
50
|
+
if is_graphql_error_response(body):
|
|
51
|
+
error = GraphQLAPIError(
|
|
52
|
+
url=api_url,
|
|
53
|
+
response_details=response._response,
|
|
54
|
+
response_body=body,
|
|
55
|
+
service_type="zins"
|
|
56
|
+
)
|
|
57
|
+
return (None, response, error)
|
|
58
|
+
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
59
|
+
entries = data.get(domain, {}).get(field, {}).get("entries", [])
|
|
60
|
+
return (entries, response, None)
|
|
61
|
+
except Exception as ex:
|
|
62
|
+
return (None, response, ex)
|
|
63
|
+
|
|
39
64
|
def get_apps(
|
|
40
65
|
self,
|
|
41
66
|
start_time: int,
|
|
@@ -147,14 +172,7 @@ class ShadowItAPI(APIClient):
|
|
|
147
172
|
if error:
|
|
148
173
|
return (None, response, error)
|
|
149
174
|
|
|
150
|
-
|
|
151
|
-
body = response.get_body() if response else {}
|
|
152
|
-
# GraphQL responses have data wrapped in "data" key
|
|
153
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
154
|
-
entries = data.get("SHADOW_IT", {}).get("apps", {}).get("entries", [])
|
|
155
|
-
return (entries, response, None)
|
|
156
|
-
except Exception as ex:
|
|
157
|
-
return (None, response, ex)
|
|
175
|
+
return self._extract_graphql_response(response, api_url, "SHADOW_IT", "apps")
|
|
158
176
|
|
|
159
177
|
def get_shadow_it_summary(
|
|
160
178
|
self,
|
|
@@ -307,6 +325,17 @@ class ShadowItAPI(APIClient):
|
|
|
307
325
|
|
|
308
326
|
try:
|
|
309
327
|
body = response.get_body() if response else {}
|
|
328
|
+
|
|
329
|
+
# Check for GraphQL errors in the response
|
|
330
|
+
if is_graphql_error_response(body):
|
|
331
|
+
error = GraphQLAPIError(
|
|
332
|
+
url=api_url,
|
|
333
|
+
response_details=response._response,
|
|
334
|
+
response_body=body,
|
|
335
|
+
service_type="zins"
|
|
336
|
+
)
|
|
337
|
+
return (None, response, error)
|
|
338
|
+
|
|
310
339
|
# GraphQL responses have data wrapped in "data" key
|
|
311
340
|
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
312
341
|
summary = data.get("SHADOW_IT", {}).get("shadow_it_summary", {})
|
|
@@ -14,12 +14,13 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
14
14
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
15
15
|
"""
|
|
16
16
|
|
|
17
|
-
from typing import Optional, List
|
|
17
|
+
from typing import Optional, List, Tuple, Any, Dict
|
|
18
18
|
|
|
19
19
|
from zscaler.api_client import APIClient
|
|
20
20
|
from zscaler.request_executor import RequestExecutor
|
|
21
21
|
from zscaler.utils import format_url
|
|
22
22
|
from zscaler.zinsights.models.inputs import WebEntriesFilterBy, WebOrderBy
|
|
23
|
+
from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class WebTrafficAPI(APIClient):
|
|
@@ -39,6 +40,45 @@ class WebTrafficAPI(APIClient):
|
|
|
39
40
|
super().__init__()
|
|
40
41
|
self._request_executor = request_executor
|
|
41
42
|
|
|
43
|
+
def _extract_graphql_response(
|
|
44
|
+
self,
|
|
45
|
+
response,
|
|
46
|
+
api_url: str,
|
|
47
|
+
domain: str,
|
|
48
|
+
field: str,
|
|
49
|
+
) -> Tuple[Optional[List[Dict[str, Any]]], Any, Optional[Exception]]:
|
|
50
|
+
"""
|
|
51
|
+
Extract data from GraphQL response and handle errors.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
response: The HTTP response object
|
|
55
|
+
api_url: The API URL for error reporting
|
|
56
|
+
domain: The GraphQL domain (e.g., "WEB_TRAFFIC")
|
|
57
|
+
field: The field to extract (e.g., "location", "protocols")
|
|
58
|
+
|
|
59
|
+
Returns:
|
|
60
|
+
Tuple of (entries, response, error)
|
|
61
|
+
"""
|
|
62
|
+
try:
|
|
63
|
+
body = response.get_body() if response else {}
|
|
64
|
+
|
|
65
|
+
# Check for GraphQL errors in the response
|
|
66
|
+
if is_graphql_error_response(body):
|
|
67
|
+
error = GraphQLAPIError(
|
|
68
|
+
url=api_url,
|
|
69
|
+
response_details=response._response,
|
|
70
|
+
response_body=body,
|
|
71
|
+
service_type="zins"
|
|
72
|
+
)
|
|
73
|
+
return (None, response, error)
|
|
74
|
+
|
|
75
|
+
# Extract the data
|
|
76
|
+
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
77
|
+
entries = data.get(domain, {}).get(field, {}).get("entries", [])
|
|
78
|
+
return (entries, response, None)
|
|
79
|
+
except Exception as ex:
|
|
80
|
+
return (None, response, ex)
|
|
81
|
+
|
|
42
82
|
def get_traffic_by_location(
|
|
43
83
|
self,
|
|
44
84
|
start_time: int,
|
|
@@ -140,13 +180,7 @@ class WebTrafficAPI(APIClient):
|
|
|
140
180
|
if error:
|
|
141
181
|
return (None, response, error)
|
|
142
182
|
|
|
143
|
-
|
|
144
|
-
body = response.get_body() if response else {}
|
|
145
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
146
|
-
entries = data.get("WEB_TRAFFIC", {}).get("location", {}).get("entries", [])
|
|
147
|
-
return (entries, response, None)
|
|
148
|
-
except Exception as ex:
|
|
149
|
-
return (None, response, ex)
|
|
183
|
+
return self._extract_graphql_response(response, api_url, "WEB_TRAFFIC", "location")
|
|
150
184
|
|
|
151
185
|
def get_no_grouping(
|
|
152
186
|
self,
|
|
@@ -241,13 +275,7 @@ class WebTrafficAPI(APIClient):
|
|
|
241
275
|
if error:
|
|
242
276
|
return (None, response, error)
|
|
243
277
|
|
|
244
|
-
|
|
245
|
-
body = response.get_body() if response else {}
|
|
246
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
247
|
-
entries = data.get("WEB_TRAFFIC", {}).get("no_grouping", {}).get("entries", [])
|
|
248
|
-
return (entries, response, None)
|
|
249
|
-
except Exception as ex:
|
|
250
|
-
return (None, response, ex)
|
|
278
|
+
return self._extract_graphql_response(response, api_url, "WEB_TRAFFIC", "no_grouping")
|
|
251
279
|
|
|
252
280
|
def get_protocols(
|
|
253
281
|
self,
|
|
@@ -315,13 +343,7 @@ class WebTrafficAPI(APIClient):
|
|
|
315
343
|
if error:
|
|
316
344
|
return (None, response, error)
|
|
317
345
|
|
|
318
|
-
|
|
319
|
-
body = response.get_body() if response else {}
|
|
320
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
321
|
-
entries = data.get("WEB_TRAFFIC", {}).get("protocols", {}).get("entries", [])
|
|
322
|
-
return (entries, response, None)
|
|
323
|
-
except Exception as ex:
|
|
324
|
-
return (None, response, ex)
|
|
346
|
+
return self._extract_graphql_response(response, api_url, "WEB_TRAFFIC", "protocols")
|
|
325
347
|
|
|
326
348
|
def get_threat_super_categories(
|
|
327
349
|
self,
|
|
@@ -391,13 +413,7 @@ class WebTrafficAPI(APIClient):
|
|
|
391
413
|
if error:
|
|
392
414
|
return (None, response, error)
|
|
393
415
|
|
|
394
|
-
|
|
395
|
-
body = response.get_body() if response else {}
|
|
396
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
397
|
-
entries = data.get("WEB_TRAFFIC", {}).get("threat_super_categories", {}).get("entries", [])
|
|
398
|
-
return (entries, response, None)
|
|
399
|
-
except Exception as ex:
|
|
400
|
-
return (None, response, ex)
|
|
416
|
+
return self._extract_graphql_response(response, api_url, "WEB_TRAFFIC", "threat_super_categories")
|
|
401
417
|
|
|
402
418
|
def get_threat_class(
|
|
403
419
|
self,
|
|
@@ -467,10 +483,4 @@ class WebTrafficAPI(APIClient):
|
|
|
467
483
|
if error:
|
|
468
484
|
return (None, response, error)
|
|
469
485
|
|
|
470
|
-
|
|
471
|
-
body = response.get_body() if response else {}
|
|
472
|
-
data = body.get("data", {}) if isinstance(body, dict) else {}
|
|
473
|
-
entries = data.get("WEB_TRAFFIC", {}).get("threat_class", {}).get("entries", [])
|
|
474
|
-
return (entries, response, None)
|
|
475
|
-
except Exception as ex:
|
|
476
|
-
return (None, response, ex)
|
|
486
|
+
return self._extract_graphql_response(response, api_url, "WEB_TRAFFIC", "threat_class")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|