zscaler-sdk-python 1.6.0__tar.gz → 1.7.1__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.6.0 → zscaler_sdk_python-1.7.1}/PKG-INFO +230 -6
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/README.md +228 -4
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/pyproject.toml +2 -2
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/__init__.py +1 -1
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/errors/response_checker.py +1 -1
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/helpers.py +4 -1
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/oneapi_client.py +8 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/oneapi_response.py +29 -2
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/request_executor.py +25 -2
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/utils.py +25 -3
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/admin.py +1 -1
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/admin_roles.py +1 -1
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloud_nss.py +9 -5
- zscaler_sdk_python-1.7.1/zscaler/zia/cloud_to_cloud_ir.py +294 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/dlp_dictionary.py +5 -2
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/legacy.py +11 -0
- zscaler_sdk_python-1.7.1/zscaler/zia/models/cloud_to_cloud_ir.py +488 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/rule_labels.py +1 -1
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/url_categories.py +5 -3
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/zia_service.py +10 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/api_client.py +537 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/groups.py +623 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/models/api_client.py +349 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/models/common.py +93 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/models/groups.py +191 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/models/resource_servers.py +219 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/models/user_entitlement.py +162 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/models/users.py +182 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/resource_servers.py +151 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/user_entitlement.py +125 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/users.py +396 -0
- zscaler_sdk_python-1.7.1/zscaler/zidentity/zidentity_service.py +70 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/user_portal_controller.py +5 -3
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/user_portal_link.py +44 -30
- zscaler_sdk_python-1.7.1/zscaler/zwa/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/LICENSE.md +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/api_client.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/cache/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/cache/cache.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/cache/no_op_cache.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/cache/zscaler_cache.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/config/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/config/config_setter.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/config/config_validator.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/constants.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/error_messages.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/errors/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/errors/error.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/errors/http_error.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/errors/zscaler_api_error.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/exceptions/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/exceptions/exceptions.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/logger.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/oneapi_collection.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/oneapi_http_client.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/oneapi_oauth_client.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/oneapi_object.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ratelimiter/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ratelimiter/ratelimiter.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/user_agent.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/admin_user.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/company.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/devices.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/entitlements.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/fail_open_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/forwarding_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/legacy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/admin_user.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/devices.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/failopenpolicy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/forwardingprofile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/getcompanyinfo.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/manage_pass.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/secrets_otp.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/secrets_passwords.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/trustednetworks.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/webappservice.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/webpolicy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/webprivacy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/secrets.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/web_app_service.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/web_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/web_privacy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zcc/zcc_service.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/alerts.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/apps.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/devices.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/inventory.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/legacy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/activeapplications.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/administration.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/alerts.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/application_users.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/applications.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/call_quality_metrics.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/common.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/devices.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/software_inventory.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/models/users.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/users.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zdx/zdx_service.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/activate.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/admin_users.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/apptotal.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/atp_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/audit_logs.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloud_applications.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloud_firewall.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloud_firewall_dns.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloud_firewall_ips.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/device_management.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/dns_gatways.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/end_user_notification.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/file_type_control_rule.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/forwarding_control.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/gre_tunnel.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/iot_report.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/locations.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/malware_protection_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/activation.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/advanced_threat_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/apptotal.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_app_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/common.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/device_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/devices.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/dns_gateways.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/endusernotification.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/filetyperules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/forwarding_control_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/gre_recommended_list.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/gre_tunnel_info.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/gre_tunnels.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/gre_vips.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/iotreport.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/location_group.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/location_management.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/malware_protection_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/nss_servers.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/organization_information.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/pac_files.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/proxies.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/proxy_gateways.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/remoteassistance.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/rule_labels.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/sandboxrules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/subclouds.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/system_audit.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/time_intervals.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/url_filtering_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/urlcategory.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/user_management.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/models/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/nss_servers.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/organization_information.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/pac_files.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/policy_export.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/proxies.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/remote_assistance.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/sandbox.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/sandbox_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/sub_clouds.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/system_audit.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/time_intervals.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/url_filtering.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/user_management.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/workload_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zia/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.6.0/zscaler/zpa → zscaler_sdk_python-1.7.1/zscaler/zidentity}/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0/zscaler/ztw → zscaler_sdk_python-1.7.1/zscaler/zpa}/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/admin_sso_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/api_keys.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_connectors.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_protection.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_segment_by_type.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_segments_ba.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_segments_ba_v2.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_segments_inspection.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/app_segments_pra.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/application_segment.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/c2c_ip_ranges.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/cbi_region.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/certificates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/client_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/config_override_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/customer_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/customer_domain.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/emergency_access.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/idp.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/legacy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/lss.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/machine_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/microtenants.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/app_connectors.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/app_protection_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/application_segment.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/application_segment_lb.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/application_servers.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/c2c_ip_ranges.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/cbi_region.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/certificates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/client_settings.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/common.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/config_override_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/customer_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/customer_domain.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/emergency_access.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/idp.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/lss.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/machine_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/microtenants.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/npn_client_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/pra_approval.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/pra_console.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/pra_credential.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/pra_portal.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/private_cloud_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/private_cloud_group.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/provisioning_keys.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/role_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/scim_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/segment_group.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/server_group.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/service_edge_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/service_edges.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/trusted_network.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/models/user_portal_link.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/npn_client_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/policies.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/pra_approval.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/pra_console.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/pra_credential.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/pra_credential_pool.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/pra_portal.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/private_cloud_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/private_cloud_group.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/provisioning.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/role_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/scim_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/segment_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/server_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/servers.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/service_edge_group.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/service_edges.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/user_portal_controller.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zpa/zpa_service.py +0 -0
- {zscaler_sdk_python-1.6.0/zscaler/zwa → zscaler_sdk_python-1.7.1/zscaler/ztw}/__init__.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/account_details.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/activation.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/admin_roles.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/admin_users.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/api_keys.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/ec_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/ip_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/legacy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/location_management.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/location_template.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/activation.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/common.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/ec_group_vm.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/ecgroup.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/ip_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/location_management.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/location_templates.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/nw_service.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/models/zpa_resources.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/nw_service.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/ztw/ztw_service.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/audit_logs.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/dlp_incidents.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/legacy.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/audit_logs.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/change_history.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/common.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/generated_tickets.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/incident_details.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/incident_evidence.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/incident_group_search.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/incident_search.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/models/incident_trigger.py +0 -0
- {zscaler_sdk_python-1.6.0 → zscaler_sdk_python-1.7.1}/zscaler/zwa/zwa_service.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: zscaler-sdk-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.7.1
|
|
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
|
|
7
|
-
Keywords: zscaler,sdk,zpa,zia,zdx,zcc,ztw,zwa
|
|
7
|
+
Keywords: zscaler,sdk,zpa,zia,zdx,zcc,ztw,zwa,zidentity
|
|
8
8
|
Author: Zscaler, Inc.
|
|
9
9
|
Author-email: devrel@zscaler.com
|
|
10
10
|
Requires-Python: >=3.9.2,<4.0
|
|
@@ -73,6 +73,7 @@ used in your server-side code to interact with the Zscaler API platform across m
|
|
|
73
73
|
* [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
|
|
74
74
|
* [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
|
|
75
75
|
* [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
|
|
76
|
+
* [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
|
|
76
77
|
* [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
|
|
77
78
|
* [ZWA API](https://help.zscaler.com/workflow-automation/getting-started-workflow-automation-api)
|
|
78
79
|
|
|
@@ -213,6 +214,7 @@ In most cases, you won't need to build the SDK from source. If you want to build
|
|
|
213
214
|
* [OneAPI](https://help.zscaler.com/oneapi/understanding-oneapi)
|
|
214
215
|
* [ZPA API](https://help.zscaler.com/zpa/zpa-api/api-developer-reference-guide)
|
|
215
216
|
* [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
|
|
217
|
+
* [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
|
|
216
218
|
* [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
|
|
217
219
|
* [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
|
|
218
220
|
* [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
|
|
@@ -236,11 +238,14 @@ If your Zscaler tenant has not been migrated to the new Zscaler [Zidentity platf
|
|
|
236
238
|
|
|
237
239
|
## Zscaler OneAPI New Framework
|
|
238
240
|
|
|
239
|
-
As of the publication of SDK version =>
|
|
241
|
+
As of the publication of SDK version => 1.7.x, OneAPI is available for programmatic interaction with the following products:
|
|
240
242
|
|
|
241
|
-
* [
|
|
242
|
-
* [
|
|
243
|
-
* [
|
|
243
|
+
* [ZPA API](https://help.zscaler.com/zpa/zpa-api/api-developer-reference-guide)
|
|
244
|
+
* [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
|
|
245
|
+
* [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
|
|
246
|
+
* [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
|
|
247
|
+
* [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
|
|
248
|
+
* [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
|
|
244
249
|
|
|
245
250
|
**NOTE** All other products such as Zscaler Cloud Connector (ZTW) and Zscaler Digital Experience (ZDX) are supported only via the legacy authentication method described in this README.
|
|
246
251
|
|
|
@@ -803,6 +808,225 @@ Each one of the configuration values above can be turned into an environment var
|
|
|
803
808
|
| `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
|
|
804
809
|
| `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
|
|
805
810
|
|
|
811
|
+
### Zscaler ZIdentity API
|
|
812
|
+
|
|
813
|
+
This SDK supports programmatic integration with the Zscaler ZIdentity API service.
|
|
814
|
+
|
|
815
|
+
The authentication to Zscaler ZIdentity service via the OneAPI framework, requires uses the API client `ZscalerClient`
|
|
816
|
+
|
|
817
|
+
#### Zidentity Pagination
|
|
818
|
+
|
|
819
|
+
Zidentity API supports pagination with a maximum page size of 100 records per request. The SDK automatically handles pagination for Zidentity endpoints.
|
|
820
|
+
|
|
821
|
+
**Key Features:**
|
|
822
|
+
- **Maximum Page Size**: 100 records per page (enforced by API)
|
|
823
|
+
- **Automatic Pagination**: SDK handles pagination transparently
|
|
824
|
+
- **Response Format**: Returns data in `records` field with pagination metadata
|
|
825
|
+
|
|
826
|
+
**Example Usage:**
|
|
827
|
+
|
|
828
|
+
```py
|
|
829
|
+
from zscaler import ZscalerClient
|
|
830
|
+
|
|
831
|
+
config = {
|
|
832
|
+
"clientId": '{yourClientId}',
|
|
833
|
+
"clientSecret": '{yourClientSecret}',
|
|
834
|
+
"vanityDomain": '{yourvanityDomain}',
|
|
835
|
+
"cloud": "beta",
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
def main():
|
|
839
|
+
with ZscalerClient(config) as client:
|
|
840
|
+
# Request 300 groups (will automatically fetch 3 pages)
|
|
841
|
+
groups_response, response, error = client.zidentity.groups.list_groups(
|
|
842
|
+
query_params={'page_size': 300}
|
|
843
|
+
)
|
|
844
|
+
|
|
845
|
+
if error:
|
|
846
|
+
print(f"Error listing groups: {error}")
|
|
847
|
+
return
|
|
848
|
+
|
|
849
|
+
print(f"Total groups in response: {len(groups_response.records)}")
|
|
850
|
+
print(f"Total available: {groups_response.results_total}")
|
|
851
|
+
print(f"Page offset: {groups_response.page_offset}")
|
|
852
|
+
print(f"Page size: {groups_response.page_size}")
|
|
853
|
+
|
|
854
|
+
# Access individual groups
|
|
855
|
+
for group in groups_response.records:
|
|
856
|
+
print(f"Group: {group.name} (ID: {group.id})")
|
|
857
|
+
|
|
858
|
+
# Manual pagination using response object
|
|
859
|
+
while response.has_next():
|
|
860
|
+
next_results, error = response.next()
|
|
861
|
+
if error:
|
|
862
|
+
print(f"Error fetching next page: {error}")
|
|
863
|
+
break
|
|
864
|
+
|
|
865
|
+
print(f"Next page: {len(next_results)} groups")
|
|
866
|
+
for group in next_results:
|
|
867
|
+
print(f"Group: {group['name']} (ID: {group['id']})")
|
|
868
|
+
|
|
869
|
+
if __name__ == "__main__":
|
|
870
|
+
main()
|
|
871
|
+
```
|
|
872
|
+
|
|
873
|
+
**Pagination Metadata:**
|
|
874
|
+
- `results_total`: Total number of records available
|
|
875
|
+
- `page_offset`: Current page offset
|
|
876
|
+
- `page_size`: Number of records per page (max 100)
|
|
877
|
+
- `next_link`: URL for next page (if available)
|
|
878
|
+
- `prev_link`: URL for previous page (if available)
|
|
879
|
+
|
|
880
|
+
| Argument | Description | Environment variable |
|
|
881
|
+
|--------------|-------------|-------------------|
|
|
882
|
+
| `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
|
|
883
|
+
| `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
|
|
884
|
+
| `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
|
|
885
|
+
| `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
|
|
886
|
+
| `cloud`
|
|
887
|
+
|
|
888
|
+
### Initialize OneAPI OAuth 2.0 Client
|
|
889
|
+
|
|
890
|
+
#### Zidentity OneAPI Client ID and Client Secret Authentication
|
|
891
|
+
|
|
892
|
+
Construct a client instance by passing your Zidentity `clientId`, `clientSecret` and `vanityDomain`:
|
|
893
|
+
|
|
894
|
+
```py
|
|
895
|
+
from zscaler import ZscalerClient
|
|
896
|
+
|
|
897
|
+
config = {
|
|
898
|
+
"clientId": '{yourClientId}',
|
|
899
|
+
"clientSecret": '{yourClientSecret}',
|
|
900
|
+
"vanityDomain": '{yourvanityDomain}',
|
|
901
|
+
"cloud": "beta", # Optional when authenticating to an alternative cloud environment
|
|
902
|
+
"logging": {"enabled": False, "verbose": False},
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
def main():
|
|
906
|
+
with ZscalerClient(config) as client:
|
|
907
|
+
users, _, error = client.zidentity.groups.list_groups()
|
|
908
|
+
if error:
|
|
909
|
+
print(f"Error listing users: {error}")
|
|
910
|
+
return
|
|
911
|
+
|
|
912
|
+
print(f"Total users found: {len(users)}")
|
|
913
|
+
|
|
914
|
+
if __name__ == "__main__":
|
|
915
|
+
main()
|
|
916
|
+
```
|
|
917
|
+
|
|
918
|
+
#### Zidentity OneAPI Client ID and Private Key Authentication
|
|
919
|
+
|
|
920
|
+
```py
|
|
921
|
+
from zscaler import ZscalerClient
|
|
922
|
+
|
|
923
|
+
config = {
|
|
924
|
+
"clientId": '{yourClientId}',
|
|
925
|
+
"privateKey": '{yourPrivateKey}',
|
|
926
|
+
"vanityDomain": '{yourvanityDomain}',
|
|
927
|
+
"cloud": "beta", # Optional when authenticating to an alternative cloud environment
|
|
928
|
+
"logging": {"enabled": False, "verbose": False},
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
def main():
|
|
932
|
+
with ZscalerClient(config) as client:
|
|
933
|
+
users, _, error = client.zidentity.groups.list_groups()
|
|
934
|
+
if error:
|
|
935
|
+
print(f"Error listing users: {error}")
|
|
936
|
+
return
|
|
937
|
+
|
|
938
|
+
print(f"Total users found: {len(users)}")
|
|
939
|
+
|
|
940
|
+
if __name__ == "__main__":
|
|
941
|
+
main()
|
|
942
|
+
```
|
|
943
|
+
|
|
944
|
+
### Zscaler Sandbox Authentication
|
|
945
|
+
|
|
946
|
+
To authenticate to the Zscaler Sandbox service you must authenticate by instantiating the `ZscalerClient`.
|
|
947
|
+
|
|
948
|
+
Authentication to Zscaler Sandbox requires the attribute/parameter `sandboxCloud`. The following cloud environments are supported:
|
|
949
|
+
|
|
950
|
+
* `zscaler`
|
|
951
|
+
* `zscalerone`
|
|
952
|
+
* `zscalertwo`
|
|
953
|
+
* `zscalerthree`
|
|
954
|
+
* `zscloud`
|
|
955
|
+
* `zscalerbeta`
|
|
956
|
+
* `zscalergov`
|
|
957
|
+
* `zscalerten`
|
|
958
|
+
* `zspreview`
|
|
959
|
+
|
|
960
|
+
### Environment variables
|
|
961
|
+
|
|
962
|
+
You can provide credentials via the `ZSCALER_SANDBOX_TOKEN`, `ZSCALER_SANDBOX_CLOUD` environment variables, representing your Zscaler Sandbox authentication paraemters respectively `sandboxToken`, `sandboxCloud`
|
|
963
|
+
|
|
964
|
+
| Argument | Description | Environment variable |
|
|
965
|
+
|--------------|-------------|-------------------|
|
|
966
|
+
| `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
|
|
967
|
+
| `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
|
|
968
|
+
|
|
969
|
+
### Zscaler Sandbox Client Initialization
|
|
970
|
+
|
|
971
|
+
```py
|
|
972
|
+
from zscaler import ZscalerClient
|
|
973
|
+
|
|
974
|
+
config = {
|
|
975
|
+
"sandboxToken": '{yourSandboxToken}',
|
|
976
|
+
"sandboxCloud": '{yourSandboxCloud}',
|
|
977
|
+
"logging": {"enabled": False, "verbose": False},
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
def main():
|
|
981
|
+
|
|
982
|
+
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
983
|
+
file_path = os.path.join(script_dir, "test-pe-file.exe")
|
|
984
|
+
force_analysis = True
|
|
985
|
+
|
|
986
|
+
with ZscalerClient(config) as client:
|
|
987
|
+
submit, _, err = client.zia.sandbox.submit_file(file_path=file_path, force=force_analysis)
|
|
988
|
+
|
|
989
|
+
if err:
|
|
990
|
+
print(f"Error submitting file: {err}")
|
|
991
|
+
else:
|
|
992
|
+
print("File submitted successfully!")
|
|
993
|
+
print(f"Response: {submit}")
|
|
994
|
+
|
|
995
|
+
if __name__ == "__main__":
|
|
996
|
+
main()
|
|
997
|
+
```
|
|
998
|
+
|
|
999
|
+
### ZIA Legacy Client Initialization
|
|
1000
|
+
|
|
1001
|
+
```py
|
|
1002
|
+
import random
|
|
1003
|
+
from zscaler import ZscalerClient
|
|
1004
|
+
|
|
1005
|
+
config = {
|
|
1006
|
+
"sandboxToken": '{yourSandboxToken}',
|
|
1007
|
+
"sandboxCloud": '{yourSandboxCloud}',
|
|
1008
|
+
"logging": {"enabled": False, "verbose": False},
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
def main():
|
|
1012
|
+
|
|
1013
|
+
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
1014
|
+
file_path = os.path.join(script_dir, "test-pe-file.exe")
|
|
1015
|
+
force_analysis = True
|
|
1016
|
+
|
|
1017
|
+
with ZscalerClient(config) as client:
|
|
1018
|
+
submit, _, err = client.zia.sandbox.submit_file(file_path=file_path, force=force_analysis)
|
|
1019
|
+
|
|
1020
|
+
if err:
|
|
1021
|
+
print(f"Error submitting file: {err}")
|
|
1022
|
+
else:
|
|
1023
|
+
print("File submitted successfully!")
|
|
1024
|
+
print(f"Response: {submit}")
|
|
1025
|
+
|
|
1026
|
+
if __name__ == "__main__":
|
|
1027
|
+
main()
|
|
1028
|
+
```
|
|
1029
|
+
|
|
806
1030
|
## Zscaler Legacy API Framework
|
|
807
1031
|
|
|
808
1032
|
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.
|
|
@@ -34,6 +34,7 @@ used in your server-side code to interact with the Zscaler API platform across m
|
|
|
34
34
|
* [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
|
|
35
35
|
* [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
|
|
36
36
|
* [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
|
|
37
|
+
* [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
|
|
37
38
|
* [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
|
|
38
39
|
* [ZWA API](https://help.zscaler.com/workflow-automation/getting-started-workflow-automation-api)
|
|
39
40
|
|
|
@@ -174,6 +175,7 @@ In most cases, you won't need to build the SDK from source. If you want to build
|
|
|
174
175
|
* [OneAPI](https://help.zscaler.com/oneapi/understanding-oneapi)
|
|
175
176
|
* [ZPA API](https://help.zscaler.com/zpa/zpa-api/api-developer-reference-guide)
|
|
176
177
|
* [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
|
|
178
|
+
* [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
|
|
177
179
|
* [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
|
|
178
180
|
* [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
|
|
179
181
|
* [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
|
|
@@ -197,11 +199,14 @@ If your Zscaler tenant has not been migrated to the new Zscaler [Zidentity platf
|
|
|
197
199
|
|
|
198
200
|
## Zscaler OneAPI New Framework
|
|
199
201
|
|
|
200
|
-
As of the publication of SDK version =>
|
|
202
|
+
As of the publication of SDK version => 1.7.x, OneAPI is available for programmatic interaction with the following products:
|
|
201
203
|
|
|
202
|
-
* [
|
|
203
|
-
* [
|
|
204
|
-
* [
|
|
204
|
+
* [ZPA API](https://help.zscaler.com/zpa/zpa-api/api-developer-reference-guide)
|
|
205
|
+
* [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
|
|
206
|
+
* [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
|
|
207
|
+
* [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
|
|
208
|
+
* [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
|
|
209
|
+
* [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
|
|
205
210
|
|
|
206
211
|
**NOTE** All other products such as Zscaler Cloud Connector (ZTW) and Zscaler Digital Experience (ZDX) are supported only via the legacy authentication method described in this README.
|
|
207
212
|
|
|
@@ -764,6 +769,225 @@ Each one of the configuration values above can be turned into an environment var
|
|
|
764
769
|
| `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
|
|
765
770
|
| `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
|
|
766
771
|
|
|
772
|
+
### Zscaler ZIdentity API
|
|
773
|
+
|
|
774
|
+
This SDK supports programmatic integration with the Zscaler ZIdentity API service.
|
|
775
|
+
|
|
776
|
+
The authentication to Zscaler ZIdentity service via the OneAPI framework, requires uses the API client `ZscalerClient`
|
|
777
|
+
|
|
778
|
+
#### Zidentity Pagination
|
|
779
|
+
|
|
780
|
+
Zidentity API supports pagination with a maximum page size of 100 records per request. The SDK automatically handles pagination for Zidentity endpoints.
|
|
781
|
+
|
|
782
|
+
**Key Features:**
|
|
783
|
+
- **Maximum Page Size**: 100 records per page (enforced by API)
|
|
784
|
+
- **Automatic Pagination**: SDK handles pagination transparently
|
|
785
|
+
- **Response Format**: Returns data in `records` field with pagination metadata
|
|
786
|
+
|
|
787
|
+
**Example Usage:**
|
|
788
|
+
|
|
789
|
+
```py
|
|
790
|
+
from zscaler import ZscalerClient
|
|
791
|
+
|
|
792
|
+
config = {
|
|
793
|
+
"clientId": '{yourClientId}',
|
|
794
|
+
"clientSecret": '{yourClientSecret}',
|
|
795
|
+
"vanityDomain": '{yourvanityDomain}',
|
|
796
|
+
"cloud": "beta",
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
def main():
|
|
800
|
+
with ZscalerClient(config) as client:
|
|
801
|
+
# Request 300 groups (will automatically fetch 3 pages)
|
|
802
|
+
groups_response, response, error = client.zidentity.groups.list_groups(
|
|
803
|
+
query_params={'page_size': 300}
|
|
804
|
+
)
|
|
805
|
+
|
|
806
|
+
if error:
|
|
807
|
+
print(f"Error listing groups: {error}")
|
|
808
|
+
return
|
|
809
|
+
|
|
810
|
+
print(f"Total groups in response: {len(groups_response.records)}")
|
|
811
|
+
print(f"Total available: {groups_response.results_total}")
|
|
812
|
+
print(f"Page offset: {groups_response.page_offset}")
|
|
813
|
+
print(f"Page size: {groups_response.page_size}")
|
|
814
|
+
|
|
815
|
+
# Access individual groups
|
|
816
|
+
for group in groups_response.records:
|
|
817
|
+
print(f"Group: {group.name} (ID: {group.id})")
|
|
818
|
+
|
|
819
|
+
# Manual pagination using response object
|
|
820
|
+
while response.has_next():
|
|
821
|
+
next_results, error = response.next()
|
|
822
|
+
if error:
|
|
823
|
+
print(f"Error fetching next page: {error}")
|
|
824
|
+
break
|
|
825
|
+
|
|
826
|
+
print(f"Next page: {len(next_results)} groups")
|
|
827
|
+
for group in next_results:
|
|
828
|
+
print(f"Group: {group['name']} (ID: {group['id']})")
|
|
829
|
+
|
|
830
|
+
if __name__ == "__main__":
|
|
831
|
+
main()
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
**Pagination Metadata:**
|
|
835
|
+
- `results_total`: Total number of records available
|
|
836
|
+
- `page_offset`: Current page offset
|
|
837
|
+
- `page_size`: Number of records per page (max 100)
|
|
838
|
+
- `next_link`: URL for next page (if available)
|
|
839
|
+
- `prev_link`: URL for previous page (if available)
|
|
840
|
+
|
|
841
|
+
| Argument | Description | Environment variable |
|
|
842
|
+
|--------------|-------------|-------------------|
|
|
843
|
+
| `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
|
|
844
|
+
| `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
|
|
845
|
+
| `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
|
|
846
|
+
| `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
|
|
847
|
+
| `cloud`
|
|
848
|
+
|
|
849
|
+
### Initialize OneAPI OAuth 2.0 Client
|
|
850
|
+
|
|
851
|
+
#### Zidentity OneAPI Client ID and Client Secret Authentication
|
|
852
|
+
|
|
853
|
+
Construct a client instance by passing your Zidentity `clientId`, `clientSecret` and `vanityDomain`:
|
|
854
|
+
|
|
855
|
+
```py
|
|
856
|
+
from zscaler import ZscalerClient
|
|
857
|
+
|
|
858
|
+
config = {
|
|
859
|
+
"clientId": '{yourClientId}',
|
|
860
|
+
"clientSecret": '{yourClientSecret}',
|
|
861
|
+
"vanityDomain": '{yourvanityDomain}',
|
|
862
|
+
"cloud": "beta", # Optional when authenticating to an alternative cloud environment
|
|
863
|
+
"logging": {"enabled": False, "verbose": False},
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
def main():
|
|
867
|
+
with ZscalerClient(config) as client:
|
|
868
|
+
users, _, error = client.zidentity.groups.list_groups()
|
|
869
|
+
if error:
|
|
870
|
+
print(f"Error listing users: {error}")
|
|
871
|
+
return
|
|
872
|
+
|
|
873
|
+
print(f"Total users found: {len(users)}")
|
|
874
|
+
|
|
875
|
+
if __name__ == "__main__":
|
|
876
|
+
main()
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
#### Zidentity OneAPI Client ID and Private Key Authentication
|
|
880
|
+
|
|
881
|
+
```py
|
|
882
|
+
from zscaler import ZscalerClient
|
|
883
|
+
|
|
884
|
+
config = {
|
|
885
|
+
"clientId": '{yourClientId}',
|
|
886
|
+
"privateKey": '{yourPrivateKey}',
|
|
887
|
+
"vanityDomain": '{yourvanityDomain}',
|
|
888
|
+
"cloud": "beta", # Optional when authenticating to an alternative cloud environment
|
|
889
|
+
"logging": {"enabled": False, "verbose": False},
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
def main():
|
|
893
|
+
with ZscalerClient(config) as client:
|
|
894
|
+
users, _, error = client.zidentity.groups.list_groups()
|
|
895
|
+
if error:
|
|
896
|
+
print(f"Error listing users: {error}")
|
|
897
|
+
return
|
|
898
|
+
|
|
899
|
+
print(f"Total users found: {len(users)}")
|
|
900
|
+
|
|
901
|
+
if __name__ == "__main__":
|
|
902
|
+
main()
|
|
903
|
+
```
|
|
904
|
+
|
|
905
|
+
### Zscaler Sandbox Authentication
|
|
906
|
+
|
|
907
|
+
To authenticate to the Zscaler Sandbox service you must authenticate by instantiating the `ZscalerClient`.
|
|
908
|
+
|
|
909
|
+
Authentication to Zscaler Sandbox requires the attribute/parameter `sandboxCloud`. The following cloud environments are supported:
|
|
910
|
+
|
|
911
|
+
* `zscaler`
|
|
912
|
+
* `zscalerone`
|
|
913
|
+
* `zscalertwo`
|
|
914
|
+
* `zscalerthree`
|
|
915
|
+
* `zscloud`
|
|
916
|
+
* `zscalerbeta`
|
|
917
|
+
* `zscalergov`
|
|
918
|
+
* `zscalerten`
|
|
919
|
+
* `zspreview`
|
|
920
|
+
|
|
921
|
+
### Environment variables
|
|
922
|
+
|
|
923
|
+
You can provide credentials via the `ZSCALER_SANDBOX_TOKEN`, `ZSCALER_SANDBOX_CLOUD` environment variables, representing your Zscaler Sandbox authentication paraemters respectively `sandboxToken`, `sandboxCloud`
|
|
924
|
+
|
|
925
|
+
| Argument | Description | Environment variable |
|
|
926
|
+
|--------------|-------------|-------------------|
|
|
927
|
+
| `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
|
|
928
|
+
| `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
|
|
929
|
+
|
|
930
|
+
### Zscaler Sandbox Client Initialization
|
|
931
|
+
|
|
932
|
+
```py
|
|
933
|
+
from zscaler import ZscalerClient
|
|
934
|
+
|
|
935
|
+
config = {
|
|
936
|
+
"sandboxToken": '{yourSandboxToken}',
|
|
937
|
+
"sandboxCloud": '{yourSandboxCloud}',
|
|
938
|
+
"logging": {"enabled": False, "verbose": False},
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
def main():
|
|
942
|
+
|
|
943
|
+
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
944
|
+
file_path = os.path.join(script_dir, "test-pe-file.exe")
|
|
945
|
+
force_analysis = True
|
|
946
|
+
|
|
947
|
+
with ZscalerClient(config) as client:
|
|
948
|
+
submit, _, err = client.zia.sandbox.submit_file(file_path=file_path, force=force_analysis)
|
|
949
|
+
|
|
950
|
+
if err:
|
|
951
|
+
print(f"Error submitting file: {err}")
|
|
952
|
+
else:
|
|
953
|
+
print("File submitted successfully!")
|
|
954
|
+
print(f"Response: {submit}")
|
|
955
|
+
|
|
956
|
+
if __name__ == "__main__":
|
|
957
|
+
main()
|
|
958
|
+
```
|
|
959
|
+
|
|
960
|
+
### ZIA Legacy Client Initialization
|
|
961
|
+
|
|
962
|
+
```py
|
|
963
|
+
import random
|
|
964
|
+
from zscaler import ZscalerClient
|
|
965
|
+
|
|
966
|
+
config = {
|
|
967
|
+
"sandboxToken": '{yourSandboxToken}',
|
|
968
|
+
"sandboxCloud": '{yourSandboxCloud}',
|
|
969
|
+
"logging": {"enabled": False, "verbose": False},
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
def main():
|
|
973
|
+
|
|
974
|
+
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
975
|
+
file_path = os.path.join(script_dir, "test-pe-file.exe")
|
|
976
|
+
force_analysis = True
|
|
977
|
+
|
|
978
|
+
with ZscalerClient(config) as client:
|
|
979
|
+
submit, _, err = client.zia.sandbox.submit_file(file_path=file_path, force=force_analysis)
|
|
980
|
+
|
|
981
|
+
if err:
|
|
982
|
+
print(f"Error submitting file: {err}")
|
|
983
|
+
else:
|
|
984
|
+
print("File submitted successfully!")
|
|
985
|
+
print(f"Response: {submit}")
|
|
986
|
+
|
|
987
|
+
if __name__ == "__main__":
|
|
988
|
+
main()
|
|
989
|
+
```
|
|
990
|
+
|
|
767
991
|
## Zscaler Legacy API Framework
|
|
768
992
|
|
|
769
993
|
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.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "zscaler-sdk-python"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.7.1"
|
|
4
4
|
description = "Official Python SDK for the Zscaler Products"
|
|
5
5
|
authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -8,7 +8,7 @@ readme = "README.md"
|
|
|
8
8
|
homepage = "https://github.com/zscaler/zscaler-sdk-python"
|
|
9
9
|
repository = "https://github.com/zscaler/zscaler-sdk-python"
|
|
10
10
|
documentation = "https://zscaler-sdk-python.readthedocs.io"
|
|
11
|
-
keywords = ["zscaler", "sdk", "zpa", "zia", "zdx", "zcc", "ztw", "zwa"]
|
|
11
|
+
keywords = ["zscaler", "sdk", "zpa", "zia", "zdx", "zcc", "ztw", "zwa", "zidentity"]
|
|
12
12
|
classifiers = [
|
|
13
13
|
"Development Status :: 5 - Production/Stable",
|
|
14
14
|
"Intended Audience :: Developers",
|
|
@@ -125,7 +125,10 @@ def to_snake_case(string):
|
|
|
125
125
|
"locationGroupDTO": "location_group_dto",
|
|
126
126
|
"locationDTO": "location_dto",
|
|
127
127
|
"predefinedADPControls": "predefined_adp_controls",
|
|
128
|
-
"runtimeOS": "runtime_os"
|
|
128
|
+
"runtimeOS": "runtime_os",
|
|
129
|
+
|
|
130
|
+
# ZIdentity Edge Cases
|
|
131
|
+
# "clientJWKsUrl": "clientJWKsUrl",
|
|
129
132
|
}
|
|
130
133
|
|
|
131
134
|
if string in FIELD_EXCEPTIONS:
|
|
@@ -15,6 +15,7 @@ from zscaler.zdx.zdx_service import ZDXService
|
|
|
15
15
|
from zscaler.zia.zia_service import ZIAService
|
|
16
16
|
from zscaler.zpa.zpa_service import ZPAService
|
|
17
17
|
from zscaler.zwa.zwa_service import ZWAService
|
|
18
|
+
from zscaler.zidentity.zidentity_service import ZIdentityService
|
|
18
19
|
from zscaler.zcc.legacy import LegacyZCCClientHelper
|
|
19
20
|
from zscaler.ztw.legacy import LegacyZTWClientHelper
|
|
20
21
|
from zscaler.zdx.legacy import LegacyZDXClientHelper
|
|
@@ -187,6 +188,7 @@ class Client:
|
|
|
187
188
|
self._zwa = None
|
|
188
189
|
self._zpa = None
|
|
189
190
|
self._zdx = None
|
|
191
|
+
self._zidentity = None
|
|
190
192
|
# self.logger.debug("Client initialized successfully.")
|
|
191
193
|
|
|
192
194
|
def authenticate(self):
|
|
@@ -252,6 +254,12 @@ class Client:
|
|
|
252
254
|
self._zpa = ZPAService(self._request_executor, self._config)
|
|
253
255
|
return self._zpa
|
|
254
256
|
|
|
257
|
+
@property
|
|
258
|
+
def zidentity(self):
|
|
259
|
+
if self._zidentity is None:
|
|
260
|
+
self._zidentity = ZIdentityService(self._request_executor)
|
|
261
|
+
return self._zidentity
|
|
262
|
+
|
|
255
263
|
def __enter__(self):
|
|
256
264
|
"""
|
|
257
265
|
Automatically create and set session within context manager.
|
|
@@ -72,11 +72,11 @@ class ZscalerAPIResponse:
|
|
|
72
72
|
self._params["pagesize"] = self.SERVICE_PAGE_LIMITS["ZPA"]["max"]
|
|
73
73
|
|
|
74
74
|
# If service is ZIA, ensure the pagination parameter is "pageSize" in camelCase
|
|
75
|
-
if self._service_type
|
|
75
|
+
if self._service_type == "zia":
|
|
76
76
|
if "page_size" in self._params:
|
|
77
77
|
self._params["pageSize"] = self._params.pop("page_size")
|
|
78
78
|
|
|
79
|
-
if self._service_type
|
|
79
|
+
if self._service_type == "zia":
|
|
80
80
|
# If user supplied pageNumber, initialize self._page accordingly
|
|
81
81
|
if "pageNumber" in self._params:
|
|
82
82
|
try:
|
|
@@ -160,6 +160,14 @@ class ZscalerAPIResponse:
|
|
|
160
160
|
elif self._service_type == "ZDX":
|
|
161
161
|
self._list = self._body.get("items", [])
|
|
162
162
|
self._next_offset = self._body.get("next_offset")
|
|
163
|
+
elif self._service_type == "zidentity":
|
|
164
|
+
# Zidentity uses "records" field for paginated responses
|
|
165
|
+
self._list = self._body.get("records", [])
|
|
166
|
+
self._next_link = self._body.get("next_link")
|
|
167
|
+
self._prev_link = self._body.get("prev_link")
|
|
168
|
+
self._results_total = self._body.get("results_total")
|
|
169
|
+
self._page_offset = self._body.get("pageOffset")
|
|
170
|
+
self._page_size = self._body.get("pageSize")
|
|
163
171
|
else:
|
|
164
172
|
# ZPA and possibly other services use a dict with "list" field
|
|
165
173
|
self._list = self._body.get("list", [])
|
|
@@ -267,6 +275,20 @@ class ZscalerAPIResponse:
|
|
|
267
275
|
# Ensure page parameter is never set for ZIA
|
|
268
276
|
self._params.pop("page", None)
|
|
269
277
|
logger.debug(f"[DEBUG] _fetch_next_page params for ZIA: {self._params}")
|
|
278
|
+
elif self._service_type == "zidentity":
|
|
279
|
+
logger.debug("[DEBUG] Taking ZIDENTITY pagination branch.")
|
|
280
|
+
# For Zidentity, use the next_link URL directly
|
|
281
|
+
if self._next_link:
|
|
282
|
+
# Parse the next_link URL to extract parameters
|
|
283
|
+
from urllib.parse import urlparse, parse_qs
|
|
284
|
+
parsed_url = urlparse(self._next_link)
|
|
285
|
+
query_params = parse_qs(parsed_url.query)
|
|
286
|
+
# Update params with the next page parameters
|
|
287
|
+
for key, value in query_params.items():
|
|
288
|
+
self._params[key] = value[0] if len(value) == 1 else value
|
|
289
|
+
# Update the URL to the base URL (remove the full next_link)
|
|
290
|
+
self._url = f"{parsed_url.scheme}://{parsed_url.netloc}{parsed_url.path}"
|
|
291
|
+
logger.debug(f"[DEBUG] _fetch_next_page params for ZIDENTITY: {self._params}")
|
|
270
292
|
else:
|
|
271
293
|
logger.debug("[DEBUG] Taking ZPA/other pagination branch.")
|
|
272
294
|
self._page += 1
|
|
@@ -302,6 +324,11 @@ class ZscalerAPIResponse:
|
|
|
302
324
|
has_next = self._next_offset is not None
|
|
303
325
|
logger.debug("Has next page for ZDX: %s", has_next)
|
|
304
326
|
return has_next
|
|
327
|
+
elif self._service_type == "zidentity":
|
|
328
|
+
# More pages if next_link is not None
|
|
329
|
+
has_next = self._next_link is not None
|
|
330
|
+
logger.debug("Has next page for ZIDENTITY: %s", has_next)
|
|
331
|
+
return has_next
|
|
305
332
|
else:
|
|
306
333
|
# For ZIA/ZCC, if we got results last time, assume we can try next page
|
|
307
334
|
# If next page returns empty, has_next() will be False on next call.
|