zscaler-sdk-python 1.5.8__tar.gz → 1.6.0__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.5.8 → zscaler_sdk_python-1.6.0}/PKG-INFO +150 -3
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/README.md +149 -2
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/pyproject.toml +1 -1
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/__init__.py +1 -1
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/helpers.py +12 -3
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_client.py +20 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_http_client.py +3 -3
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/request_executor.py +79 -29
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/utils.py +1 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/devices.py +2 -0
- zscaler_sdk_python-1.6.0/zscaler/zia/admin_roles.py +648 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/admin_users.py +133 -45
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/admin_roles.py +2 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/admin_users.py +5 -1
- zscaler_sdk_python-1.6.0/zscaler/zpa/admin_sso_controller.py +130 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/api_keys.py +307 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_connector_groups.py +0 -2
- zscaler_sdk_python-1.6.0/zscaler/zpa/c2c_ip_ranges.py +404 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/config_override_controller.py +215 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/customer_domain.py +164 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/legacy.py +104 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/microtenants.py +3 -3
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/api_keys.py +120 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_connector_groups.py +0 -1
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/c2c_ip_ranges.py +129 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/common.py +156 -1
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/config_override_controller.py +101 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/customer_domain.py +81 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/microtenants.py +82 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/npn_client_controller.py +87 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/private_cloud_controller.py +571 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/private_cloud_group.py +241 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/user_portal_controller.py +127 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/models/user_portal_link.py +151 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/npn_client_controller.py +88 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_console.py +1 -1
- zscaler_sdk_python-1.6.0/zscaler/zpa/private_cloud_controller.py +283 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/private_cloud_group.py +429 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/user_portal_controller.py +309 -0
- zscaler_sdk_python-1.6.0/zscaler/zpa/user_portal_link.py +469 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/zpa_service.py +100 -0
- zscaler_sdk_python-1.5.8/zscaler/zia/admin_roles.py +0 -350
- zscaler_sdk_python-1.5.8/zscaler/zpa/models/microtenants.py +0 -235
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/LICENSE.md +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/api_client.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/cache/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/cache/cache.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/cache/no_op_cache.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/cache/zscaler_cache.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/config/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/config/config_setter.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/config/config_validator.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/constants.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/error_messages.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/error.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/http_error.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/response_checker.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/zscaler_api_error.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/exceptions/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/exceptions/exceptions.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/logger.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_collection.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_oauth_client.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_object.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_response.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ratelimiter/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ratelimiter/ratelimiter.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/user_agent.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/admin_user.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/company.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/entitlements.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/fail_open_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/forwarding_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/admin_user.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/failopenpolicy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/forwardingprofile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/getcompanyinfo.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/manage_pass.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/secrets_otp.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/secrets_passwords.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/trustednetworks.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/webappservice.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/webpolicy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/webprivacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/secrets.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/web_app_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/web_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/web_privacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/zcc_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/admin.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/alerts.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/apps.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/inventory.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/activeapplications.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/administration.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/alerts.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/application_users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/applications.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/call_quality_metrics.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/software_inventory.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/zdx_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/activate.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/apptotal.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/atp_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/audit_logs.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_applications.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_firewall.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_firewall_dns.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_firewall_ips.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/device_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dns_gatways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/end_user_notification.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/file_type_control_rule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/forwarding_control.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/gre_tunnel.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/iot_report.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/locations.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/malware_protection_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/activation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/advanced_threat_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/apptotal.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_app_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/device_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dns_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/endusernotification.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/filetyperules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/forwarding_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/gre_recommended_list.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/gre_tunnel_info.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/gre_tunnels.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/gre_vips.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/iotreport.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/location_group.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/location_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/malware_protection_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/nss_servers.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/organization_information.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/pac_files.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/proxies.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/proxy_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/remoteassistance.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/rule_labels.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/sandboxrules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/subclouds.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/system_audit.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/time_intervals.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/url_filtering_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/urlcategory.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/user_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/nss_servers.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/organization_information.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/pac_files.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/policy_export.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/proxies.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/remote_assistance.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/rule_labels.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/sandbox.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/sandbox_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/sub_clouds.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/system_audit.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/time_intervals.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/url_categories.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/url_filtering.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/user_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/workload_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/zia_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_connectors.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_protection.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segment_by_type.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segments_ba.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segments_ba_v2.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segments_inspection.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segments_pra.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/application_segment.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_region.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/client_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/customer_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/emergency_access.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/idp.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/lss.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/machine_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_connectors.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_protection_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/application_segment.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/application_segment_lb.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/application_servers.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_region.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/client_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/customer_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/emergency_access.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/idp.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/lss.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/machine_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_approval.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_console.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_credential.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_portal.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/provisioning_keys.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/role_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/scim_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/segment_group.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/server_group.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/service_edge_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/service_edges.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/trusted_network.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/policies.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_approval.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_credential.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_credential_pool.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_portal.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/provisioning.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/role_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/scim_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/segment_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/server_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/servers.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/service_edge_group.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/service_edges.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/account_details.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/activation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/admin_roles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/admin_users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/api_keys.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ec_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ip_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/location_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/location_template.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/activation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ec_group_vm.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ecgroup.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ip_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/location_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/location_templates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/nw_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/zpa_resources.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/nw_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ztw_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/audit_logs.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/dlp_incidents.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/audit_logs.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/change_history.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/generated_tickets.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_details.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_evidence.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_group_search.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_search.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_trigger.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/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.
|
|
3
|
+
Version: 1.6.0
|
|
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
|
|
@@ -438,6 +438,81 @@ def main():
|
|
|
438
438
|
Note, that custom headers will be overwritten with default headers with the same name.
|
|
439
439
|
This doesn't allow breaking the client. Get default headers:
|
|
440
440
|
|
|
441
|
+
### ZIA and ZTW Context Manager
|
|
442
|
+
|
|
443
|
+
The Zscaler SDK provides a context manager pattern that automatically handles authentication and session cleanup for both ZIA and ZTW services. This pattern ensures that all configuration changes are properly activated when the context manager exits.
|
|
444
|
+
|
|
445
|
+
#### How Context Manager Works
|
|
446
|
+
|
|
447
|
+
When you use the `with` statement with a Zscaler client, the following happens automatically:
|
|
448
|
+
|
|
449
|
+
1. **Authentication**: The client authenticates when entering the context
|
|
450
|
+
2. **Session Management**: A session is established and maintained throughout the context
|
|
451
|
+
3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
|
|
452
|
+
|
|
453
|
+
#### Implicit Activation Process
|
|
454
|
+
|
|
455
|
+
The context manager implements an "implicit activation" approach where:
|
|
456
|
+
|
|
457
|
+
- **All changes are final**: Configuration changes are automatically activated when the context exits
|
|
458
|
+
- **No manual activation required**: You don't need to remember to call activation endpoints
|
|
459
|
+
- **Deterministic behavior**: You always know that exiting the context will activate changes
|
|
460
|
+
- **Automation-friendly**: Perfect for scripts and automation scenarios
|
|
461
|
+
|
|
462
|
+
#### Example Usage
|
|
463
|
+
|
|
464
|
+
```py
|
|
465
|
+
from zscaler import ZscalerClient
|
|
466
|
+
|
|
467
|
+
config = {
|
|
468
|
+
"clientId": '{yourClientId}',
|
|
469
|
+
"clientSecret": '{yourClientSecret}',
|
|
470
|
+
"vanityDomain": '{yourvanityDomain}',
|
|
471
|
+
"cloud": "beta", # Optional when authenticating to an alternative cloud environment
|
|
472
|
+
"customerId": "", # Optional parameter. Required only when using ZPA
|
|
473
|
+
"microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
|
|
474
|
+
"logging": {"enabled": False, "verbose": False},
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
def main():
|
|
478
|
+
with ZscalerClient(config) as client:
|
|
479
|
+
# Make ZIA configuration changes
|
|
480
|
+
added_role, response, error = client.zia.admin_roles.add_role(
|
|
481
|
+
name="New API Role",
|
|
482
|
+
description="Role created via API",
|
|
483
|
+
feature_permissions={"ZIA_ADMIN_ROLE": "READ"}
|
|
484
|
+
)
|
|
485
|
+
if error:
|
|
486
|
+
print(f"Error adding role: {error}")
|
|
487
|
+
return
|
|
488
|
+
|
|
489
|
+
# Make ZTW configuration changes
|
|
490
|
+
added_group, response, error = client.ztw.ip_destination_groups.add_group(
|
|
491
|
+
name="New IP Group",
|
|
492
|
+
description="IP group created via API"
|
|
493
|
+
)
|
|
494
|
+
if error:
|
|
495
|
+
print(f"Error adding IP group: {error}")
|
|
496
|
+
return
|
|
497
|
+
|
|
498
|
+
print("All changes made successfully")
|
|
499
|
+
|
|
500
|
+
# Context manager automatically deauthenticates here
|
|
501
|
+
# All staged changes are activated automatically for both ZIA and ZTW
|
|
502
|
+
print("Context exited - all changes have been activated")
|
|
503
|
+
|
|
504
|
+
if __name__ == "__main__":
|
|
505
|
+
main()
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
#### Benefits
|
|
509
|
+
|
|
510
|
+
- **Automatic cleanup**: No need to manually deauthenticate
|
|
511
|
+
- **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
|
|
512
|
+
- **Staged configuration activation**: All changes are activated when the context exits
|
|
513
|
+
- **Simplified code**: No need to remember activation steps
|
|
514
|
+
- **Multi-service support**: Works seamlessly with both ZIA and ZTW services
|
|
515
|
+
|
|
441
516
|
## Zscaler OneAPI Rate Limiting
|
|
442
517
|
|
|
443
518
|
Zscaler OneAPI provides unique rate limiting numbers for each individual product. Regardless of the product, a 429 response will be returned if too many requests are made within a given time.
|
|
@@ -730,7 +805,7 @@ Each one of the configuration values above can be turned into an environment var
|
|
|
730
805
|
|
|
731
806
|
## Zscaler Legacy API Framework
|
|
732
807
|
|
|
733
|
-
The legacy Zscaler API is still utilized by several customers, and will remain in place for the
|
|
808
|
+
The legacy Zscaler API is still utilized by several customers, and will remain in place for the foreseeable future with no specific announced deprecation date.
|
|
734
809
|
|
|
735
810
|
### ZIA Legacy Authentication
|
|
736
811
|
|
|
@@ -793,6 +868,78 @@ if __name__ == "__main__":
|
|
|
793
868
|
main()
|
|
794
869
|
```
|
|
795
870
|
|
|
871
|
+
### ZIA and ZTW Context Manager
|
|
872
|
+
|
|
873
|
+
The Zscaler SDK provides a context manager pattern that automatically handles authentication and session cleanup for both ZIA and ZTW services. This pattern ensures that all configuration changes are properly activated when the context manager exits.
|
|
874
|
+
|
|
875
|
+
#### How Context Manager Works
|
|
876
|
+
|
|
877
|
+
When you use the `with` statement with a Zscaler client, the following happens automatically:
|
|
878
|
+
|
|
879
|
+
1. **Authentication**: The client authenticates when entering the context
|
|
880
|
+
2. **Session Management**: A session is established and maintained throughout the context
|
|
881
|
+
3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
|
|
882
|
+
|
|
883
|
+
#### Implicit Activation Process
|
|
884
|
+
|
|
885
|
+
The context manager implements an "implicit activation" approach where:
|
|
886
|
+
|
|
887
|
+
- **All changes are final**: Configuration changes are automatically activated when the context exits
|
|
888
|
+
- **No manual activation required**: You don't need to remember to call activation endpoints
|
|
889
|
+
- **Deterministic behavior**: You always know that exiting the context will activate changes
|
|
890
|
+
- **Automation-friendly**: Perfect for scripts and automation scenarios
|
|
891
|
+
|
|
892
|
+
#### Example Usage
|
|
893
|
+
|
|
894
|
+
```py
|
|
895
|
+
import random
|
|
896
|
+
from zscaler.oneapi_client import LegacyZIAClient
|
|
897
|
+
|
|
898
|
+
config = {
|
|
899
|
+
"username": '{yourUsername}',
|
|
900
|
+
"password": '{yourPassword}',
|
|
901
|
+
"api_key": '{yourApiKey}',
|
|
902
|
+
"cloud": '{yourCloud}',
|
|
903
|
+
"logging": {"enabled": False, "verbose": False},
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
def main():
|
|
907
|
+
with LegacyZIAClient(config) as client:
|
|
908
|
+
# Make configuration changes
|
|
909
|
+
added_label, response, error = client.zia.rule_labels.add_label(
|
|
910
|
+
name=f"NewLabel_{random.randint(1000, 10000)}",
|
|
911
|
+
description=f"NewLabel_{random.randint(1000, 10000)}",
|
|
912
|
+
)
|
|
913
|
+
if error:
|
|
914
|
+
print(f"Error adding label: {error}")
|
|
915
|
+
return
|
|
916
|
+
|
|
917
|
+
# Make more changes
|
|
918
|
+
updated_role, response, error = client.zia.admin_roles.update_role(
|
|
919
|
+
role_id="12345",
|
|
920
|
+
name="Updated Role Name"
|
|
921
|
+
)
|
|
922
|
+
if error:
|
|
923
|
+
print(f"Error updating role: {error}")
|
|
924
|
+
return
|
|
925
|
+
|
|
926
|
+
print("All changes made successfully")
|
|
927
|
+
|
|
928
|
+
# Context manager automatically deauthenticates here
|
|
929
|
+
# All staged changes are activated automatically
|
|
930
|
+
print("Context exited - all changes have been activated")
|
|
931
|
+
|
|
932
|
+
if __name__ == "__main__":
|
|
933
|
+
main()
|
|
934
|
+
```
|
|
935
|
+
|
|
936
|
+
#### Benefits
|
|
937
|
+
|
|
938
|
+
- **Automatic cleanup**: No need to manually deauthenticate
|
|
939
|
+
- **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
|
|
940
|
+
- **Staged configuration activation**: All changes are activated when the context exits
|
|
941
|
+
- **Simplified code**: No need to remember activation steps
|
|
942
|
+
|
|
796
943
|
### ZTW Legacy Authentication
|
|
797
944
|
|
|
798
945
|
Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZTW API credentials.
|
|
@@ -930,7 +1077,7 @@ The ZCC Cloud is identified by several cloud name prefixes, which determines whi
|
|
|
930
1077
|
|
|
931
1078
|
### Environment variables
|
|
932
1079
|
|
|
933
|
-
You can provide credentials via the `ZCC_CLIENT_ID`, `
|
|
1080
|
+
You can provide credentials via the `ZCC_CLIENT_ID`, `ZCC_CLIENT_SECRET`, `ZCC_CLOUD` environment variables, representing your ZIA `api_key`, `secret_key`, and `cloud` respectively.
|
|
934
1081
|
|
|
935
1082
|
~> **NOTE** `ZCC_CLOUD` environment variable is required, and is used to identify the correct API gateway where the API requests should be forwarded to.
|
|
936
1083
|
|
|
@@ -399,6 +399,81 @@ def main():
|
|
|
399
399
|
Note, that custom headers will be overwritten with default headers with the same name.
|
|
400
400
|
This doesn't allow breaking the client. Get default headers:
|
|
401
401
|
|
|
402
|
+
### ZIA and ZTW Context Manager
|
|
403
|
+
|
|
404
|
+
The Zscaler SDK provides a context manager pattern that automatically handles authentication and session cleanup for both ZIA and ZTW services. This pattern ensures that all configuration changes are properly activated when the context manager exits.
|
|
405
|
+
|
|
406
|
+
#### How Context Manager Works
|
|
407
|
+
|
|
408
|
+
When you use the `with` statement with a Zscaler client, the following happens automatically:
|
|
409
|
+
|
|
410
|
+
1. **Authentication**: The client authenticates when entering the context
|
|
411
|
+
2. **Session Management**: A session is established and maintained throughout the context
|
|
412
|
+
3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
|
|
413
|
+
|
|
414
|
+
#### Implicit Activation Process
|
|
415
|
+
|
|
416
|
+
The context manager implements an "implicit activation" approach where:
|
|
417
|
+
|
|
418
|
+
- **All changes are final**: Configuration changes are automatically activated when the context exits
|
|
419
|
+
- **No manual activation required**: You don't need to remember to call activation endpoints
|
|
420
|
+
- **Deterministic behavior**: You always know that exiting the context will activate changes
|
|
421
|
+
- **Automation-friendly**: Perfect for scripts and automation scenarios
|
|
422
|
+
|
|
423
|
+
#### Example Usage
|
|
424
|
+
|
|
425
|
+
```py
|
|
426
|
+
from zscaler import ZscalerClient
|
|
427
|
+
|
|
428
|
+
config = {
|
|
429
|
+
"clientId": '{yourClientId}',
|
|
430
|
+
"clientSecret": '{yourClientSecret}',
|
|
431
|
+
"vanityDomain": '{yourvanityDomain}',
|
|
432
|
+
"cloud": "beta", # Optional when authenticating to an alternative cloud environment
|
|
433
|
+
"customerId": "", # Optional parameter. Required only when using ZPA
|
|
434
|
+
"microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
|
|
435
|
+
"logging": {"enabled": False, "verbose": False},
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
def main():
|
|
439
|
+
with ZscalerClient(config) as client:
|
|
440
|
+
# Make ZIA configuration changes
|
|
441
|
+
added_role, response, error = client.zia.admin_roles.add_role(
|
|
442
|
+
name="New API Role",
|
|
443
|
+
description="Role created via API",
|
|
444
|
+
feature_permissions={"ZIA_ADMIN_ROLE": "READ"}
|
|
445
|
+
)
|
|
446
|
+
if error:
|
|
447
|
+
print(f"Error adding role: {error}")
|
|
448
|
+
return
|
|
449
|
+
|
|
450
|
+
# Make ZTW configuration changes
|
|
451
|
+
added_group, response, error = client.ztw.ip_destination_groups.add_group(
|
|
452
|
+
name="New IP Group",
|
|
453
|
+
description="IP group created via API"
|
|
454
|
+
)
|
|
455
|
+
if error:
|
|
456
|
+
print(f"Error adding IP group: {error}")
|
|
457
|
+
return
|
|
458
|
+
|
|
459
|
+
print("All changes made successfully")
|
|
460
|
+
|
|
461
|
+
# Context manager automatically deauthenticates here
|
|
462
|
+
# All staged changes are activated automatically for both ZIA and ZTW
|
|
463
|
+
print("Context exited - all changes have been activated")
|
|
464
|
+
|
|
465
|
+
if __name__ == "__main__":
|
|
466
|
+
main()
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
#### Benefits
|
|
470
|
+
|
|
471
|
+
- **Automatic cleanup**: No need to manually deauthenticate
|
|
472
|
+
- **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
|
|
473
|
+
- **Staged configuration activation**: All changes are activated when the context exits
|
|
474
|
+
- **Simplified code**: No need to remember activation steps
|
|
475
|
+
- **Multi-service support**: Works seamlessly with both ZIA and ZTW services
|
|
476
|
+
|
|
402
477
|
## Zscaler OneAPI Rate Limiting
|
|
403
478
|
|
|
404
479
|
Zscaler OneAPI provides unique rate limiting numbers for each individual product. Regardless of the product, a 429 response will be returned if too many requests are made within a given time.
|
|
@@ -691,7 +766,7 @@ Each one of the configuration values above can be turned into an environment var
|
|
|
691
766
|
|
|
692
767
|
## Zscaler Legacy API Framework
|
|
693
768
|
|
|
694
|
-
The legacy Zscaler API is still utilized by several customers, and will remain in place for the
|
|
769
|
+
The legacy Zscaler API is still utilized by several customers, and will remain in place for the foreseeable future with no specific announced deprecation date.
|
|
695
770
|
|
|
696
771
|
### ZIA Legacy Authentication
|
|
697
772
|
|
|
@@ -754,6 +829,78 @@ if __name__ == "__main__":
|
|
|
754
829
|
main()
|
|
755
830
|
```
|
|
756
831
|
|
|
832
|
+
### ZIA and ZTW Context Manager
|
|
833
|
+
|
|
834
|
+
The Zscaler SDK provides a context manager pattern that automatically handles authentication and session cleanup for both ZIA and ZTW services. This pattern ensures that all configuration changes are properly activated when the context manager exits.
|
|
835
|
+
|
|
836
|
+
#### How Context Manager Works
|
|
837
|
+
|
|
838
|
+
When you use the `with` statement with a Zscaler client, the following happens automatically:
|
|
839
|
+
|
|
840
|
+
1. **Authentication**: The client authenticates when entering the context
|
|
841
|
+
2. **Session Management**: A session is established and maintained throughout the context
|
|
842
|
+
3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
|
|
843
|
+
|
|
844
|
+
#### Implicit Activation Process
|
|
845
|
+
|
|
846
|
+
The context manager implements an "implicit activation" approach where:
|
|
847
|
+
|
|
848
|
+
- **All changes are final**: Configuration changes are automatically activated when the context exits
|
|
849
|
+
- **No manual activation required**: You don't need to remember to call activation endpoints
|
|
850
|
+
- **Deterministic behavior**: You always know that exiting the context will activate changes
|
|
851
|
+
- **Automation-friendly**: Perfect for scripts and automation scenarios
|
|
852
|
+
|
|
853
|
+
#### Example Usage
|
|
854
|
+
|
|
855
|
+
```py
|
|
856
|
+
import random
|
|
857
|
+
from zscaler.oneapi_client import LegacyZIAClient
|
|
858
|
+
|
|
859
|
+
config = {
|
|
860
|
+
"username": '{yourUsername}',
|
|
861
|
+
"password": '{yourPassword}',
|
|
862
|
+
"api_key": '{yourApiKey}',
|
|
863
|
+
"cloud": '{yourCloud}',
|
|
864
|
+
"logging": {"enabled": False, "verbose": False},
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
def main():
|
|
868
|
+
with LegacyZIAClient(config) as client:
|
|
869
|
+
# Make configuration changes
|
|
870
|
+
added_label, response, error = client.zia.rule_labels.add_label(
|
|
871
|
+
name=f"NewLabel_{random.randint(1000, 10000)}",
|
|
872
|
+
description=f"NewLabel_{random.randint(1000, 10000)}",
|
|
873
|
+
)
|
|
874
|
+
if error:
|
|
875
|
+
print(f"Error adding label: {error}")
|
|
876
|
+
return
|
|
877
|
+
|
|
878
|
+
# Make more changes
|
|
879
|
+
updated_role, response, error = client.zia.admin_roles.update_role(
|
|
880
|
+
role_id="12345",
|
|
881
|
+
name="Updated Role Name"
|
|
882
|
+
)
|
|
883
|
+
if error:
|
|
884
|
+
print(f"Error updating role: {error}")
|
|
885
|
+
return
|
|
886
|
+
|
|
887
|
+
print("All changes made successfully")
|
|
888
|
+
|
|
889
|
+
# Context manager automatically deauthenticates here
|
|
890
|
+
# All staged changes are activated automatically
|
|
891
|
+
print("Context exited - all changes have been activated")
|
|
892
|
+
|
|
893
|
+
if __name__ == "__main__":
|
|
894
|
+
main()
|
|
895
|
+
```
|
|
896
|
+
|
|
897
|
+
#### Benefits
|
|
898
|
+
|
|
899
|
+
- **Automatic cleanup**: No need to manually deauthenticate
|
|
900
|
+
- **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
|
|
901
|
+
- **Staged configuration activation**: All changes are activated when the context exits
|
|
902
|
+
- **Simplified code**: No need to remember activation steps
|
|
903
|
+
|
|
757
904
|
### ZTW Legacy Authentication
|
|
758
905
|
|
|
759
906
|
Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZTW API credentials.
|
|
@@ -891,7 +1038,7 @@ The ZCC Cloud is identified by several cloud name prefixes, which determines whi
|
|
|
891
1038
|
|
|
892
1039
|
### Environment variables
|
|
893
1040
|
|
|
894
|
-
You can provide credentials via the `ZCC_CLIENT_ID`, `
|
|
1041
|
+
You can provide credentials via the `ZCC_CLIENT_ID`, `ZCC_CLIENT_SECRET`, `ZCC_CLOUD` environment variables, representing your ZIA `api_key`, `secret_key`, and `cloud` respectively.
|
|
895
1042
|
|
|
896
1043
|
~> **NOTE** `ZCC_CLOUD` environment variable is required, and is used to identify the correct API gateway where the API requests should be forwarded to.
|
|
897
1044
|
|
|
@@ -124,7 +124,8 @@ def to_snake_case(string):
|
|
|
124
124
|
"extranetDTO": "extranet_dto",
|
|
125
125
|
"locationGroupDTO": "location_group_dto",
|
|
126
126
|
"locationDTO": "location_dto",
|
|
127
|
-
"predefinedADPControls": "predefined_adp_controls"
|
|
127
|
+
"predefinedADPControls": "predefined_adp_controls",
|
|
128
|
+
"runtimeOS": "runtime_os"
|
|
128
129
|
}
|
|
129
130
|
|
|
130
131
|
if string in FIELD_EXCEPTIONS:
|
|
@@ -256,7 +257,8 @@ def to_lower_camel_case(string):
|
|
|
256
257
|
"extranet_dto": "extranetDTO",
|
|
257
258
|
"location_group_dto": "locationGroupDTO",
|
|
258
259
|
"location_dto": "locationDTO",
|
|
259
|
-
"predefined_adp_controls": "predefinedADPControls"
|
|
260
|
+
"predefined_adp_controls": "predefinedADPControls",
|
|
261
|
+
"runtime_os": "runtimeOS"
|
|
260
262
|
}
|
|
261
263
|
|
|
262
264
|
if string in FIELD_EXCEPTIONS:
|
|
@@ -296,7 +298,14 @@ def convert_keys_to_camel_case(data):
|
|
|
296
298
|
Handles nested lists and dictionaries.
|
|
297
299
|
"""
|
|
298
300
|
if isinstance(data, dict):
|
|
299
|
-
|
|
301
|
+
result = {}
|
|
302
|
+
for k, v in data.items():
|
|
303
|
+
# Special handling for featurePermissions - preserve keys as-is
|
|
304
|
+
if k == "featurePermissions" and isinstance(v, dict):
|
|
305
|
+
result[k] = v # Don't convert the keys inside featurePermissions
|
|
306
|
+
else:
|
|
307
|
+
result[to_lower_camel_case(k)] = convert_keys_to_camel_case(v)
|
|
308
|
+
return result
|
|
300
309
|
elif isinstance(data, list):
|
|
301
310
|
return [convert_keys_to_camel_case(item) for item in data]
|
|
302
311
|
else:
|
|
@@ -268,6 +268,26 @@ class Client:
|
|
|
268
268
|
if hasattr(self, "_session"):
|
|
269
269
|
self._session.close()
|
|
270
270
|
self.logger.debug("Session closed.")
|
|
271
|
+
|
|
272
|
+
# Clean up Zscaler authentication session
|
|
273
|
+
if hasattr(self, '_request_executor'):
|
|
274
|
+
# For legacy clients, use their deauthenticate method
|
|
275
|
+
if self.use_legacy_client and hasattr(self._request_executor, 'deauthenticate'):
|
|
276
|
+
self.logger.debug("Deauthenticating Zscaler session via legacy client.")
|
|
277
|
+
self._request_executor.deauthenticate()
|
|
278
|
+
self.logger.debug("Zscaler session deauthenticated.")
|
|
279
|
+
# For OneAPI clients, use the request executor's deauthenticate method for ZIA/ZTW
|
|
280
|
+
elif not self.use_legacy_client and hasattr(self._request_executor, 'deauthenticate'):
|
|
281
|
+
# Get the service type from the request executor's last known service type
|
|
282
|
+
# or fall back to config if no requests were made
|
|
283
|
+
service_type = getattr(self._request_executor, '_last_service_type', None)
|
|
284
|
+
if not service_type:
|
|
285
|
+
service_type = self._config.get("client", {}).get("service", "zia")
|
|
286
|
+
|
|
287
|
+
if service_type.lower() in ["zia", "ztw"]:
|
|
288
|
+
self.logger.debug(f"Deauthenticating Zscaler session for {service_type} service.")
|
|
289
|
+
self._request_executor.deauthenticate(service_type)
|
|
290
|
+
self.logger.debug(f"Zscaler session deauthenticated for {service_type}.")
|
|
271
291
|
|
|
272
292
|
"""
|
|
273
293
|
Getters
|
|
@@ -104,11 +104,11 @@ class HTTPClient:
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
# Handle payload
|
|
107
|
-
if
|
|
107
|
+
if "json" in request:
|
|
108
108
|
params["json"] = request["json"]
|
|
109
|
-
elif
|
|
109
|
+
elif "data" in request:
|
|
110
110
|
params["data"] = request["data"]
|
|
111
|
-
elif
|
|
111
|
+
elif "form" in request:
|
|
112
112
|
params["data"] = request["form"]
|
|
113
113
|
if request["params"]:
|
|
114
114
|
params["params"] = request["params"]
|
|
@@ -188,7 +188,9 @@ class RequestExecutor:
|
|
|
188
188
|
logger.error(f"Service detection failed: {e}")
|
|
189
189
|
raise
|
|
190
190
|
|
|
191
|
-
|
|
191
|
+
# Preserve empty lists, only convert None to empty dict
|
|
192
|
+
if body is None:
|
|
193
|
+
body = {}
|
|
192
194
|
headers = headers or {}
|
|
193
195
|
params = params or {}
|
|
194
196
|
|
|
@@ -225,6 +227,9 @@ class RequestExecutor:
|
|
|
225
227
|
raise ValueError("Missing required sandboxToken in config.")
|
|
226
228
|
params["api_token"] = sandbox_token
|
|
227
229
|
|
|
230
|
+
# Track the service type for deauthentication
|
|
231
|
+
self._last_service_type = service_type
|
|
232
|
+
|
|
228
233
|
request = {
|
|
229
234
|
"method": method,
|
|
230
235
|
"url": final_url,
|
|
@@ -584,35 +589,80 @@ class RequestExecutor:
|
|
|
584
589
|
logger.debug("Getting custom headers.")
|
|
585
590
|
return self._custom_headers
|
|
586
591
|
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
+
def deauthenticate(self, service_type=None):
|
|
593
|
+
"""
|
|
594
|
+
Deauthenticate from Zscaler services that support session-based authentication.
|
|
595
|
+
Currently supports ZIA and ZTW services.
|
|
596
|
+
|
|
597
|
+
Args:
|
|
598
|
+
service_type (str, optional): The service type to deauthenticate from.
|
|
599
|
+
If None, will attempt to determine from the current configuration.
|
|
600
|
+
"""
|
|
601
|
+
if not service_type:
|
|
602
|
+
service_type = self.service
|
|
603
|
+
|
|
604
|
+
if service_type.lower() not in ["zia", "ztw"]:
|
|
605
|
+
logger.debug(f"Deauthentication not supported for service: {service_type}")
|
|
606
|
+
return False
|
|
607
|
+
|
|
608
|
+
try:
|
|
609
|
+
# Determine the base URL and endpoint based on service type
|
|
610
|
+
if service_type.lower() == "zia":
|
|
611
|
+
if self.cloud and self.cloud != "production":
|
|
612
|
+
base_url = f"https://api.{self.cloud}.zsapi.net"
|
|
613
|
+
else:
|
|
614
|
+
base_url = "https://api.{self.cloud}.zsapi.net"
|
|
615
|
+
endpoint = "/zia/api/v1/authenticatedSession"
|
|
616
|
+
elif service_type.lower() == "ztw":
|
|
617
|
+
if self.cloud and self.cloud != "production":
|
|
618
|
+
base_url = f"https://api.{self.cloud}.zsapi.net"
|
|
619
|
+
else:
|
|
620
|
+
base_url = "https://api.{self.cloud}.zsapi.net"
|
|
621
|
+
endpoint = "/ztw/api/v1/auth"
|
|
622
|
+
|
|
623
|
+
url = f"{base_url}{endpoint}"
|
|
624
|
+
|
|
625
|
+
# Prepare headers using the standard method to include bearer token
|
|
626
|
+
# For DELETE requests, we'll exclude Content-Type to avoid issues with empty body
|
|
627
|
+
headers = self._prepare_headers({}, endpoint)
|
|
628
|
+
# Remove Content-Type for DELETE requests to avoid issues with empty body
|
|
629
|
+
headers.pop("Content-Type", None)
|
|
630
|
+
|
|
631
|
+
# Both ZIA and ZTW require explicit deauthentication to activate staged configurations
|
|
632
|
+
# regardless of authentication method (OAuth or session-based)
|
|
633
|
+
if service_type.lower() in ["zia", "ztw"]:
|
|
634
|
+
logger.debug(f"{service_type.upper()} service requires explicit deauthentication to activate staged configurations")
|
|
592
635
|
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
636
|
+
# Send DELETE request to deauthenticate
|
|
637
|
+
logger.debug(f"Deauthenticating from {service_type} at {url}")
|
|
638
|
+
|
|
639
|
+
# Use the HTTP client to send the request
|
|
640
|
+
request = {
|
|
641
|
+
"method": "DELETE",
|
|
642
|
+
"url": url,
|
|
643
|
+
"headers": headers,
|
|
644
|
+
"params": {},
|
|
645
|
+
"uuid": uuid.uuid4(),
|
|
646
|
+
"service_type": service_type,
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
response, error = self._http_client.send_request(request)
|
|
650
|
+
|
|
651
|
+
if error:
|
|
652
|
+
logger.warning(f"Failed to deauthenticate from {service_type}: {error}")
|
|
653
|
+
return False
|
|
654
|
+
|
|
655
|
+
if response and response.status_code == 200:
|
|
656
|
+
logger.debug(f"Successfully deauthenticated from {service_type}")
|
|
657
|
+
return True
|
|
658
|
+
else:
|
|
659
|
+
logger.warning(f"Unexpected response during deauthentication: {response.status_code if response else 'No response'}")
|
|
660
|
+
return False
|
|
661
|
+
|
|
662
|
+
except Exception as e:
|
|
663
|
+
logger.warning(f"Exception during deauthentication for {service_type}: {e}")
|
|
664
|
+
return False
|
|
665
|
+
|
|
616
666
|
|
|
617
667
|
def get_retry_after(self, headers, logger):
|
|
618
668
|
retry_limit_reset_header = (
|