zscaler-sdk-python 1.5.8__tar.gz → 1.5.9__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.5.9}/PKG-INFO +149 -2
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/README.md +148 -1
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/pyproject.toml +1 -1
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/__init__.py +1 -1
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/helpers.py +8 -1
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_client.py +20 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/request_executor.py +76 -28
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/utils.py +1 -0
- zscaler_sdk_python-1.5.9/zscaler/zia/admin_roles.py +648 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/admin_users.py +133 -45
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/admin_roles.py +2 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/admin_users.py +5 -1
- zscaler_sdk_python-1.5.8/zscaler/zia/admin_roles.py +0 -350
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/LICENSE.md +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/api_client.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/cache/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/cache/cache.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/cache/no_op_cache.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/cache/zscaler_cache.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/config/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/config/config_setter.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/config/config_validator.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/constants.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/error_messages.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/error.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/http_error.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/response_checker.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/zscaler_api_error.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/exceptions/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/exceptions/exceptions.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/logger.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_collection.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_http_client.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_oauth_client.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_object.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_response.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ratelimiter/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ratelimiter/ratelimiter.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/user_agent.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/admin_user.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/company.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/entitlements.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/fail_open_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/forwarding_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/admin_user.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/failopenpolicy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/forwardingprofile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/getcompanyinfo.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/manage_pass.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/secrets_otp.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/secrets_passwords.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/trustednetworks.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/webappservice.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/webpolicy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/webprivacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/secrets.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/web_app_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/web_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/web_privacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/zcc_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/admin.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/alerts.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/apps.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/inventory.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/activeapplications.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/administration.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/alerts.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/application_users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/applications.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/call_quality_metrics.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/software_inventory.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/zdx_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/activate.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/apptotal.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/atp_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/audit_logs.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_applications.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_firewall.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_firewall_dns.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_firewall_ips.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/device_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dns_gatways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/end_user_notification.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/file_type_control_rule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/forwarding_control.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/gre_tunnel.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/iot_report.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/locations.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/malware_protection_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/activation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/advanced_threat_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/apptotal.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_app_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/device_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/devices.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dns_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/endusernotification.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/filetyperules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/forwarding_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/gre_recommended_list.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/gre_tunnel_info.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/gre_tunnels.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/gre_vips.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/iotreport.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/location_group.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/location_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/malware_protection_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/nss_servers.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/organization_information.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/pac_files.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/proxies.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/proxy_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/remoteassistance.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/rule_labels.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/sandboxrules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/subclouds.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/system_audit.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/time_intervals.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/url_filtering_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/urlcategory.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/user_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/nss_servers.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/organization_information.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/pac_files.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/policy_export.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/proxies.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/remote_assistance.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/rule_labels.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/sandbox.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/sandbox_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/sub_clouds.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/system_audit.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/time_intervals.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/url_categories.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/url_filtering.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/user_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/workload_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/zia_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_connectors.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_protection.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segment_by_type.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segments_ba.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segments_ba_v2.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segments_inspection.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segments_pra.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/application_segment.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_region.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/client_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/customer_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/emergency_access.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/idp.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/lss.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/machine_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/microtenants.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_connectors.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_protection_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/application_segment.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/application_segment_lb.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/application_servers.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_region.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/client_settings.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/customer_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/emergency_access.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/idp.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/lss.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/machine_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/microtenants.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_approval.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_console.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_credential.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_portal.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/provisioning_keys.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/role_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/scim_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/segment_group.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/server_group.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/service_edge_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/service_edges.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/trusted_network.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/policies.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_approval.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_console.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_credential.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_credential_pool.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_portal.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/provisioning.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/role_controller.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/scim_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/segment_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/server_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/servers.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/service_edge_group.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/service_edges.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/zpa_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/account_details.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/activation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/admin_roles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/admin_users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/api_keys.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ec_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ip_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/location_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/location_template.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/activation.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ec_group_vm.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ecgroup.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ip_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/location_management.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/location_templates.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/nw_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/zpa_resources.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/nw_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ztw_service.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/__init__.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/audit_logs.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/dlp_incidents.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/legacy.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/audit_logs.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/change_history.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/common.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/generated_tickets.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_details.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_evidence.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_group_search.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_search.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_trigger.py +0 -0
- {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/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.5.
|
|
3
|
+
Version: 1.5.9
|
|
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.
|
|
@@ -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.
|
|
@@ -296,7 +296,14 @@ def convert_keys_to_camel_case(data):
|
|
|
296
296
|
Handles nested lists and dictionaries.
|
|
297
297
|
"""
|
|
298
298
|
if isinstance(data, dict):
|
|
299
|
-
|
|
299
|
+
result = {}
|
|
300
|
+
for k, v in data.items():
|
|
301
|
+
# Special handling for featurePermissions - preserve keys as-is
|
|
302
|
+
if k == "featurePermissions" and isinstance(v, dict):
|
|
303
|
+
result[k] = v # Don't convert the keys inside featurePermissions
|
|
304
|
+
else:
|
|
305
|
+
result[to_lower_camel_case(k)] = convert_keys_to_camel_case(v)
|
|
306
|
+
return result
|
|
300
307
|
elif isinstance(data, list):
|
|
301
308
|
return [convert_keys_to_camel_case(item) for item in data]
|
|
302
309
|
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
|
|
@@ -225,6 +225,9 @@ class RequestExecutor:
|
|
|
225
225
|
raise ValueError("Missing required sandboxToken in config.")
|
|
226
226
|
params["api_token"] = sandbox_token
|
|
227
227
|
|
|
228
|
+
# Track the service type for deauthentication
|
|
229
|
+
self._last_service_type = service_type
|
|
230
|
+
|
|
228
231
|
request = {
|
|
229
232
|
"method": method,
|
|
230
233
|
"url": final_url,
|
|
@@ -584,35 +587,80 @@ class RequestExecutor:
|
|
|
584
587
|
logger.debug("Getting custom headers.")
|
|
585
588
|
return self._custom_headers
|
|
586
589
|
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
590
|
+
def deauthenticate(self, service_type=None):
|
|
591
|
+
"""
|
|
592
|
+
Deauthenticate from Zscaler services that support session-based authentication.
|
|
593
|
+
Currently supports ZIA and ZTW services.
|
|
594
|
+
|
|
595
|
+
Args:
|
|
596
|
+
service_type (str, optional): The service type to deauthenticate from.
|
|
597
|
+
If None, will attempt to determine from the current configuration.
|
|
598
|
+
"""
|
|
599
|
+
if not service_type:
|
|
600
|
+
service_type = self.service
|
|
601
|
+
|
|
602
|
+
if service_type.lower() not in ["zia", "ztw"]:
|
|
603
|
+
logger.debug(f"Deauthentication not supported for service: {service_type}")
|
|
604
|
+
return False
|
|
605
|
+
|
|
606
|
+
try:
|
|
607
|
+
# Determine the base URL and endpoint based on service type
|
|
608
|
+
if service_type.lower() == "zia":
|
|
609
|
+
if self.cloud and self.cloud != "production":
|
|
610
|
+
base_url = f"https://api.{self.cloud}.zsapi.net"
|
|
611
|
+
else:
|
|
612
|
+
base_url = "https://api.{self.cloud}.zsapi.net"
|
|
613
|
+
endpoint = "/zia/api/v1/authenticatedSession"
|
|
614
|
+
elif service_type.lower() == "ztw":
|
|
615
|
+
if self.cloud and self.cloud != "production":
|
|
616
|
+
base_url = f"https://api.{self.cloud}.zsapi.net"
|
|
617
|
+
else:
|
|
618
|
+
base_url = "https://api.{self.cloud}.zsapi.net"
|
|
619
|
+
endpoint = "/ztw/api/v1/auth"
|
|
620
|
+
|
|
621
|
+
url = f"{base_url}{endpoint}"
|
|
622
|
+
|
|
623
|
+
# Prepare headers using the standard method to include bearer token
|
|
624
|
+
# For DELETE requests, we'll exclude Content-Type to avoid issues with empty body
|
|
625
|
+
headers = self._prepare_headers({}, endpoint)
|
|
626
|
+
# Remove Content-Type for DELETE requests to avoid issues with empty body
|
|
627
|
+
headers.pop("Content-Type", None)
|
|
628
|
+
|
|
629
|
+
# Both ZIA and ZTW require explicit deauthentication to activate staged configurations
|
|
630
|
+
# regardless of authentication method (OAuth or session-based)
|
|
631
|
+
if service_type.lower() in ["zia", "ztw"]:
|
|
632
|
+
logger.debug(f"{service_type.upper()} service requires explicit deauthentication to activate staged configurations")
|
|
592
633
|
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
634
|
+
# Send DELETE request to deauthenticate
|
|
635
|
+
logger.debug(f"Deauthenticating from {service_type} at {url}")
|
|
636
|
+
|
|
637
|
+
# Use the HTTP client to send the request
|
|
638
|
+
request = {
|
|
639
|
+
"method": "DELETE",
|
|
640
|
+
"url": url,
|
|
641
|
+
"headers": headers,
|
|
642
|
+
"params": {},
|
|
643
|
+
"uuid": uuid.uuid4(),
|
|
644
|
+
"service_type": service_type,
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
response, error = self._http_client.send_request(request)
|
|
648
|
+
|
|
649
|
+
if error:
|
|
650
|
+
logger.warning(f"Failed to deauthenticate from {service_type}: {error}")
|
|
651
|
+
return False
|
|
652
|
+
|
|
653
|
+
if response and response.status_code == 200:
|
|
654
|
+
logger.debug(f"Successfully deauthenticated from {service_type}")
|
|
655
|
+
return True
|
|
656
|
+
else:
|
|
657
|
+
logger.warning(f"Unexpected response during deauthentication: {response.status_code if response else 'No response'}")
|
|
658
|
+
return False
|
|
659
|
+
|
|
660
|
+
except Exception as e:
|
|
661
|
+
logger.warning(f"Exception during deauthentication for {service_type}: {e}")
|
|
662
|
+
return False
|
|
663
|
+
|
|
616
664
|
|
|
617
665
|
def get_retry_after(self, headers, logger):
|
|
618
666
|
retry_limit_reset_header = (
|