zscaler-sdk-python 1.9.10__tar.gz → 1.9.12__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.12}/PKG-INFO +4 -2
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/pyproject.toml +27 -4
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/__init__.py +1 -1
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_oauth_client.py +14 -3
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/utils.py +1 -0
- zscaler_sdk_python-1.9.12/zscaler/zia/models/sandbox.py +86 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/sandbox.py +38 -10
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/url_filtering.py +15 -13
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/cyber_security.py +28 -17
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/firewall.py +29 -25
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/iot.py +13 -1
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/models/common.py +0 -41
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/saas_security.py +27 -9
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/shadow_it.py +38 -9
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/web_traffic.py +46 -36
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/forwarding_rules.py +5 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/legacy.py +10 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/forwarding_rules.py +6 -0
- zscaler_sdk_python-1.9.12/zscaler/ztw/models/workload_groups.py +210 -0
- zscaler_sdk_python-1.9.12/zscaler/ztw/workload_groups.py +92 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ztw_service.py +9 -1
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/LICENSE.md +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/README.md +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/api_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/cache/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/cache/cache.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/cache/no_op_cache.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/cache/zscaler_cache.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/config/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/config/config_setter.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/config/config_validator.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/constants.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/error_messages.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/error.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/graphql_error.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/http_error.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/response_checker.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/zscaler_api_error.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/exceptions/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/exceptions/exceptions.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/helpers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/logger.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_collection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_http_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_object.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_response.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ratelimiter/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ratelimiter/ratelimiter.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/request_executor.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/types.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/user_agent.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/admin_user.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/company.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/entitlements.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/fail_open_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/forwarding_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/admin_user.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/failopenpolicy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/forwardingprofile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/getcompanyinfo.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/manage_pass.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/secrets_otp.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/secrets_passwords.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/trustednetworks.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/webappservice.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/webpolicy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/webprivacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/secrets.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/web_app_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/web_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/web_privacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/zcc_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/admin.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/alerts.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/apps.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/inventory.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/administration.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/alerts.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/application_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/applications.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/call_quality_metrics.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/snapshot.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/software_inventory.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/snapshot.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/zdx_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/findings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/lookalike_domains.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/findings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/lookalike_domains.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/organizations.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/organizations.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/zeasm_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/activate.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/apptotal.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/atp_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_applications.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_firewall.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_firewall_dns.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_firewall_ips.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_to_cloud_ir.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/device_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dns_gatways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/end_user_notification.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/file_type_control_rule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/forwarding_control.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/gre_tunnel.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/iot_report.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/locations.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/malware_protection_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/activation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/advanced_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/apptotal.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_app_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_to_cloud_ir.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/device_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dns_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/endusernotification.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/filetyperules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/forwarding_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/gre_recommended_list.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/gre_tunnel_info.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/gre_tunnels.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/gre_vips.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/iotreport.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/location_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/location_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/malware_protection_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/nss_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/organization_information.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/pac_files.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/proxies.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/proxy_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/remoteassistance.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/rule_labels.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/sandboxrules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/subclouds.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/system_audit.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/time_intervals.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_capture.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/url_filtering_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/urlcategory.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/user_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/vzen_nodes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/nss_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/organization_information.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/pac_files.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/policy_export.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/proxies.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/remote_assistance.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/rule_labels.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/sandbox_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/sub_clouds.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/system_audit.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/time_intervals.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_capture.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/url_categories.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/user_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/vzen_nodes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/workload_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/zia_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/api_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/api_client.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/resource_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/user_entitlement.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/resource_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/user_entitlement.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/zidentity_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/models/enums.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/models/inputs.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/zinsights_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/admin_sso_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_connectors.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_protection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segment_by_type.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segments_ba.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segments_ba_v2.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segments_inspection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segments_pra.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/application_segment.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/branch_connector_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/branch_connectors.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/browser_protection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/c2c_ip_ranges.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_region.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/client_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cloud_connector_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/config_override_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/customer_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/customer_domain.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/customer_dr_tool.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/emergency_access.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/extranet_resource.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/idp.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/location_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/lss.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/machine_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/managed_browser_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/microtenants.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_connectors.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_protection_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/application_segment.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/application_segment_lb.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/application_servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/branch_connectors.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/browser_protection.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/c2c_ip_ranges.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_region.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/client_settings.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cloud_connector_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/config_override_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/customer_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/customer_domain.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/customer_dr_tool.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/emergency_access.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/idp.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/lss.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/machine_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/managed_browser_profile.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/microtenants.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/npn_client_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/oauth2_user_code.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_approval.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_console.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_credential.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_portal.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/private_cloud_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/private_cloud_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/provisioning_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/role_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/scim_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/segment_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/server_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/service_edge_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/service_edges.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/stepup_auth_level.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/trusted_network.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/user_portal_aup.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/user_portal_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/user_portal_link.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/zia_customer_config.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/npn_client_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/oauth2_user_code.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/policies.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_approval.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_console.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_credential.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_credential_pool.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_portal.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/private_cloud_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/private_cloud_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/provisioning.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/role_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/scim_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/segment_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/server_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/servers.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/service_edge_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/service_edges.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/stepup_auth_level.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/user_portal_aup.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/user_portal_controller.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/user_portal_link.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/workload_tag_group.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/zia_customer_config.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/zpa_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/account_details.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/account_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/activation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/discovery_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ec_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ip_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/location_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/location_template.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/account_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/activation.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/discovery_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ec_group_vm.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ecgroup.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ip_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/location_management.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/location_templates.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/nw_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/public_cloud_info.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/zpa_resources.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/nw_service.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/public_cloud_info.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/__init__.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/dlp_incidents.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/legacy.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/change_history.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/common.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/generated_tickets.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_details.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_evidence.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_group_search.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_search.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_trigger.py +0 -0
- {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/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.12
|
|
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.12"
|
|
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"]
|
|
@@ -85,3 +87,24 @@ max-line-length = 127
|
|
|
85
87
|
|
|
86
88
|
[tool.isort]
|
|
87
89
|
profile = "black"
|
|
90
|
+
|
|
91
|
+
[tool.coverage.run]
|
|
92
|
+
omit = [
|
|
93
|
+
"*/models/*",
|
|
94
|
+
"zscaler/*/models/*",
|
|
95
|
+
"tests/*",
|
|
96
|
+
"*/__init__.py",
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
[tool.coverage.report]
|
|
100
|
+
omit = [
|
|
101
|
+
"*/models/*",
|
|
102
|
+
"zscaler/*/models/*",
|
|
103
|
+
"tests/*",
|
|
104
|
+
"*/__init__.py",
|
|
105
|
+
]
|
|
106
|
+
exclude_lines = [
|
|
107
|
+
"pragma: no cover",
|
|
108
|
+
"def __repr__",
|
|
109
|
+
"raise NotImplementedError",
|
|
110
|
+
]
|
|
@@ -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] = {
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Copyright (c) 2023, Zscaler Inc.
|
|
3
|
+
|
|
4
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
5
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
6
|
+
copyright notice and this permission notice appear in all copies.
|
|
7
|
+
|
|
8
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
9
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
10
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
11
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
12
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
13
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
14
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from typing import Dict, List, Optional, Any, Union
|
|
18
|
+
from zscaler.oneapi_object import ZscalerObject
|
|
19
|
+
from zscaler.oneapi_collection import ZscalerCollection
|
|
20
|
+
from zscaler.zia.models import common
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class BehavioralAnalysisAdvancedSettings(ZscalerObject):
|
|
24
|
+
"""
|
|
25
|
+
A class for Behavioral Analysis Advanced Settings objects.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
def __init__(self, config: Optional[Dict[str, Any]] = None) -> None:
|
|
29
|
+
"""
|
|
30
|
+
Initialize the Behavioral Analysis Advanced Settings model based on API response.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
config (dict): A dictionary representing the configuration.
|
|
34
|
+
"""
|
|
35
|
+
super().__init__(config)
|
|
36
|
+
|
|
37
|
+
if config:
|
|
38
|
+
self.md5_hash_value_list = ZscalerCollection.form_list(
|
|
39
|
+
config["md5HashValueList"] if "md5HashValueList" in config else [], MD5HashValueList
|
|
40
|
+
)
|
|
41
|
+
else:
|
|
42
|
+
self.md5_hash_value_list = []
|
|
43
|
+
|
|
44
|
+
def request_format(self) -> Dict[str, Any]:
|
|
45
|
+
"""
|
|
46
|
+
Return the object as a dictionary in the format expected for API requests.
|
|
47
|
+
"""
|
|
48
|
+
parent_req_format = super().request_format()
|
|
49
|
+
current_obj_format = {
|
|
50
|
+
"md5HashValueList": self.md5_hash_value_list,
|
|
51
|
+
}
|
|
52
|
+
parent_req_format.update(current_obj_format)
|
|
53
|
+
return parent_req_format
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class MD5HashValueList(ZscalerObject):
|
|
57
|
+
"""
|
|
58
|
+
A class for MD5 Hash Value List objects.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def __init__(self, config: Optional[Dict[str, Any]] = None) -> None:
|
|
62
|
+
"""
|
|
63
|
+
Initialize the MD5 Hash Value List model based on API response.
|
|
64
|
+
"""
|
|
65
|
+
super().__init__(config)
|
|
66
|
+
if config:
|
|
67
|
+
self.url = config["url"] if "url" in config else None
|
|
68
|
+
self.url_comment = config["urlComment"] if "urlComment" in config else None
|
|
69
|
+
self.type = config["type"] if "type" in config else None
|
|
70
|
+
else:
|
|
71
|
+
self.url = None
|
|
72
|
+
self.url_comment = None
|
|
73
|
+
self.type = None
|
|
74
|
+
|
|
75
|
+
def request_format(self) -> Dict[str, Any]:
|
|
76
|
+
"""
|
|
77
|
+
Return the object as a dictionary in the format expected for API requests.
|
|
78
|
+
"""
|
|
79
|
+
parent_req_format = super().request_format()
|
|
80
|
+
current_obj_format = {
|
|
81
|
+
"url": self.url,
|
|
82
|
+
"urlComment": self.url_comment,
|
|
83
|
+
"type": self.type,
|
|
84
|
+
}
|
|
85
|
+
parent_req_format.update(current_obj_format)
|
|
86
|
+
return parent_req_format
|
|
@@ -19,10 +19,12 @@ import mimetypes
|
|
|
19
19
|
import time
|
|
20
20
|
from zscaler.request_executor import RequestExecutor
|
|
21
21
|
from zscaler.utils import format_url
|
|
22
|
+
from zscaler.api_client import APIClient
|
|
22
23
|
from zscaler.types import APIResult
|
|
24
|
+
from zscaler.zia.models.sandbox import BehavioralAnalysisAdvancedSettings
|
|
23
25
|
|
|
24
26
|
|
|
25
|
-
class CloudSandboxAPI:
|
|
27
|
+
class CloudSandboxAPI(APIClient):
|
|
26
28
|
"""
|
|
27
29
|
A Client object for the Cloud Sandbox resource.
|
|
28
30
|
"""
|
|
@@ -31,6 +33,7 @@ class CloudSandboxAPI:
|
|
|
31
33
|
_zia_base_endpoint = "/zia/api/v1"
|
|
32
34
|
|
|
33
35
|
def __init__(self, request_executor: "RequestExecutor") -> None:
|
|
36
|
+
super().__init__()
|
|
34
37
|
self._request_executor: RequestExecutor = request_executor
|
|
35
38
|
|
|
36
39
|
def submit_file(self, file_path: str, force: bool = False) -> APIResult[dict]:
|
|
@@ -268,10 +271,9 @@ class CloudSandboxAPI:
|
|
|
268
271
|
return (None, response, error)
|
|
269
272
|
|
|
270
273
|
try:
|
|
271
|
-
result = response.get_body()
|
|
274
|
+
result = BehavioralAnalysisAdvancedSettings(self.form_response_body(response.get_body()))
|
|
272
275
|
except Exception as error:
|
|
273
276
|
return (None, response, error)
|
|
274
|
-
|
|
275
277
|
return (result, response, None)
|
|
276
278
|
|
|
277
279
|
def get_file_hash_count(self) -> APIResult[dict]:
|
|
@@ -314,16 +316,37 @@ class CloudSandboxAPI:
|
|
|
314
316
|
|
|
315
317
|
return (result, response, None)
|
|
316
318
|
|
|
317
|
-
def add_hash_to_custom_list(
|
|
319
|
+
def add_hash_to_custom_list(
|
|
320
|
+
self,
|
|
321
|
+
md5_hash_value_list: List[Dict[str, str]],
|
|
322
|
+
) -> APIResult[BehavioralAnalysisAdvancedSettings]:
|
|
318
323
|
"""
|
|
319
324
|
Updates the custom list of MD5 file hashes that are blocked by Sandbox.
|
|
320
325
|
|
|
321
326
|
Args:
|
|
322
|
-
|
|
323
|
-
|
|
327
|
+
md5_hash_value_list (list[dict]): A list of MD5 hash entries to be blocked.
|
|
328
|
+
Each entry should be a dictionary with the following keys:
|
|
329
|
+
- url (str): The MD5 hash value.
|
|
330
|
+
- urlComment (str): A comment describing the hash.
|
|
331
|
+
- type (str): The type of threat, e.g., "MALWARE".
|
|
332
|
+
Pass an empty list to clear the blocklist.
|
|
324
333
|
|
|
325
334
|
Returns:
|
|
326
|
-
tuple: A tuple containing
|
|
335
|
+
tuple: A tuple containing (BehavioralAnalysisAdvancedSettings, Response, error).
|
|
336
|
+
|
|
337
|
+
Examples:
|
|
338
|
+
Add MD5 hashes to the sandbox blocklist:
|
|
339
|
+
|
|
340
|
+
>>> hash_list = [
|
|
341
|
+
... {
|
|
342
|
+
... "url": "42914d6d213a20a2684064be5c80ffa9",
|
|
343
|
+
... "urlComment": "Malicious file detected",
|
|
344
|
+
... "type": "MALWARE"
|
|
345
|
+
... }
|
|
346
|
+
... ]
|
|
347
|
+
>>> result, response, error = client.zia.sandbox.add_hash_to_custom_list(
|
|
348
|
+
... md5_hash_value_list=hash_list
|
|
349
|
+
... )
|
|
327
350
|
"""
|
|
328
351
|
http_method = "put".upper()
|
|
329
352
|
api_url = format_url(
|
|
@@ -333,7 +356,7 @@ class CloudSandboxAPI:
|
|
|
333
356
|
"""
|
|
334
357
|
)
|
|
335
358
|
|
|
336
|
-
payload = {"
|
|
359
|
+
payload = {"md5HashValueList": md5_hash_value_list}
|
|
337
360
|
|
|
338
361
|
request, error = self._request_executor.create_request(method=http_method, endpoint=api_url, body=payload)
|
|
339
362
|
|
|
@@ -344,5 +367,10 @@ class CloudSandboxAPI:
|
|
|
344
367
|
|
|
345
368
|
if error:
|
|
346
369
|
return (None, response, error)
|
|
347
|
-
|
|
348
|
-
|
|
370
|
+
|
|
371
|
+
try:
|
|
372
|
+
result = BehavioralAnalysisAdvancedSettings(self.form_response_body(response.get_body()))
|
|
373
|
+
except Exception as error:
|
|
374
|
+
return (None, response, error)
|
|
375
|
+
|
|
376
|
+
return (result, response, None)
|
|
@@ -62,11 +62,18 @@ class URLFilteringAPI(APIClient):
|
|
|
62
62
|
query_params {dict}: Map of query parameters for the request.
|
|
63
63
|
``[query_params.search]`` {str}: Search string for filtering results by rule name.
|
|
64
64
|
|
|
65
|
+
``[query_params.page]`` (int): Specifies the page offset.
|
|
66
|
+
|
|
67
|
+
``[query_params.page_size]`` (int): Specifies the page size.
|
|
68
|
+
The default size is 100, but the maximum size is 100.
|
|
69
|
+
|
|
65
70
|
Returns:
|
|
66
71
|
tuple: A tuple containing (list of url filtering rules instances, Response, error)
|
|
67
72
|
|
|
68
73
|
Examples:
|
|
69
|
-
>>> rules_list, _, error = client.zia.url_filtering.list_rules(
|
|
74
|
+
>>> rules_list, _, error = client.zia.url_filtering.list_rules(
|
|
75
|
+
... query_params={'page': 1, 'page_size': 10}
|
|
76
|
+
)
|
|
70
77
|
>>> if error:
|
|
71
78
|
... print(f"Error listing url filtering rules: {error}")
|
|
72
79
|
... return
|
|
@@ -84,31 +91,26 @@ class URLFilteringAPI(APIClient):
|
|
|
84
91
|
|
|
85
92
|
query_params = query_params or {}
|
|
86
93
|
|
|
87
|
-
local_search = query_params.pop("search", None)
|
|
88
|
-
|
|
89
94
|
body = {}
|
|
90
95
|
headers = {}
|
|
91
96
|
|
|
92
97
|
request, error = self._request_executor.create_request(http_method, api_url, body, headers, params=query_params)
|
|
98
|
+
|
|
93
99
|
if error:
|
|
94
100
|
return (None, None, error)
|
|
95
101
|
|
|
96
102
|
response, error = self._request_executor.execute(request)
|
|
103
|
+
|
|
97
104
|
if error:
|
|
98
105
|
return (None, response, error)
|
|
99
106
|
|
|
100
107
|
try:
|
|
101
|
-
|
|
108
|
+
result = []
|
|
102
109
|
for item in response.get_results():
|
|
103
|
-
|
|
104
|
-
except Exception as
|
|
105
|
-
return (None, response,
|
|
106
|
-
|
|
107
|
-
if local_search:
|
|
108
|
-
lower_search = local_search.lower()
|
|
109
|
-
results = [r for r in results if lower_search in (r.name.lower() if r.name else "")]
|
|
110
|
-
|
|
111
|
-
return (results, response, None)
|
|
110
|
+
result.append(URLFilteringRule(self.form_response_body(item)))
|
|
111
|
+
except Exception as error:
|
|
112
|
+
return (None, response, error)
|
|
113
|
+
return (result, response, None)
|
|
112
114
|
|
|
113
115
|
def get_rule(
|
|
114
116
|
self,
|
|
@@ -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
|
]
|