zscaler-sdk-python 1.0.2__tar.gz → 1.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/PKG-INFO +1 -1
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/pyproject.toml +3 -3
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/__init__.py +1 -1
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/helpers.py +6 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/utils.py +22 -2
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/admin_user.py +1 -1
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/legacy.py +102 -50
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/admin_roles.py +106 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/alert_subscriptions.py +224 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/atp_policy.py +14 -8
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/authentication_settings.py +2 -2
- zscaler_sdk_python-1.1.0/zscaler/zia/bandwidth_classes.py +326 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/bandwidth_control_rules.py +399 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/cloud_app_instances.py +304 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloudappcontrol.py +0 -10
- zscaler_sdk_python-1.1.0/zscaler/zia/dedicated_ip_gateways.py +82 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_web_rules.py +0 -1
- zscaler_sdk_python-1.1.0/zscaler/zia/dns_gatways.py +269 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/forwarding_control.py +0 -43
- zscaler_sdk_python-1.1.0/zscaler/zia/ftp_control_policy.py +148 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/gre_tunnel.py +2 -4
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/intermediate_certificates.py +2 -5
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/legacy.py +130 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/mobile_threat_settings.py +151 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/admin_roles.py +38 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/advanced_settings.py +2 -1
- zscaler_sdk_python-1.1.0/zscaler/zia/models/alert_subscriptions.py +83 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/bandwidth_classes.py +74 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/bandwidth_control_rules.py +148 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/cloud_app_instances.py +139 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_rules.py +6 -1
- zscaler_sdk_python-1.1.0/zscaler/zia/models/dedicated_ip_gateways.py +102 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/dns_gatways.py +108 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/filetyperules.py +12 -1
- zscaler_sdk_python-1.1.0/zscaler/zia/models/ftp_control_policy.py +61 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/mobile_threat_settings.py +91 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/proxies.py +99 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/risk_profiles.py +174 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/tenancy_restriction_profile.py +97 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/time_intervals.py +62 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/traffic_datacenters.py +114 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/models/traffic_dc_exclusions.py +81 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/proxies.py +395 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/risk_profiles.py +451 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/rule_labels.py +57 -14
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/system_audit.py +1 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/tenancy_restriction_profile.py +405 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/time_intervals.py +284 -0
- zscaler_sdk_python-1.1.0/zscaler/zia/traffic_datacenters.py +356 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/traffic_extranet.py +87 -24
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/url_categories.py +2 -9
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/user_management.py +2 -4
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/workload_groups.py +1 -2
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/zia_service.py +130 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/emergency_access.py +1 -2
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/enrollment_certificates.py +1 -2
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_credential_pool.py +10 -21
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/scim_attributes.py +1 -2
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/zpa_service.py +1 -1
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/LICENSE.md +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/README.md +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/api_client.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/cache/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/cache/cache.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/cache/no_op_cache.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/cache/zscaler_cache.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/config/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/config/config_setter.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/config/config_validator.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/constants.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/error_messages.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/errors/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/errors/error.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/errors/http_error.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/errors/zscaler_api_error.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/exceptions/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/exceptions/exceptions.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/logger.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_client.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_collection.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_http_client.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_oauth_client.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_object.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_response.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ratelimiter/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ratelimiter/ratelimiter.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/request_executor.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/user_agent.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/company.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/devices.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/entitlements.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/fail_open_policy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/forwarding_profile.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/legacy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/manage_pass.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/admin_user.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/devices.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/failopenpolicy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/forwardingprofile.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/manage_pass.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/secrets_otp.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/secrets_passwords.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/trustednetworks.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/webappservice.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/webpolicy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/webprivacy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/secrets.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/web_app_service.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/web_policy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/web_privacy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zcc/zcc_service.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/admin.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/alerts.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/apps.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/devices.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/inventory.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/activeapplications.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/administration.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/alerts.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/application_users.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/applications.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/call_quality_metrics.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/common.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/devices.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/software_inventory.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/users.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/users.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zdx/zdx_service.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/activate.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/admin_users.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/apptotal.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/audit_logs.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_applications.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_apps.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_firewall.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_firewall_dns.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_firewall_ips.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/device_management.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/end_user_notification.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/file_type_control_rule.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/iot_report.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/locations.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/malware_protection_policy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/activation.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/advanced_threat_settings.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/apptotal.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_app_policy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/common.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/device_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/devices.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/endusernotification.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/forwarding_control_policy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/gre_recommended_list.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/gre_tunnel_info.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/gre_tunnels.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/gre_vips.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/iotreport.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/location_group.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/location_management.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/malware_protection_settings.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/organization_information.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/pac_files.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/proxy_gatways.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/remoteassistance.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/rule_labels.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/sandboxrules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/subclouds.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/system_audit.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/url_filtering_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/urlcategory.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/user_management.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/organization_information.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/pac_files.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/policy_export.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/remote_assistance.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/sandbox.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/sandbox_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/sub_clouds.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/url_filtering.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zia/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_connectors.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_protection.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_segment_by_type.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_segments_inspection.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_segments_pra.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/application_segment.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/authdomains.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_region.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/certificates.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/idp.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/legacy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/lss.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/machine_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/microtenants.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_connectors.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_protection.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/application_segment.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/application_segment_inspection.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/application_segment_pra.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/application_servers.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/auth_domain.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_region.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/certificates.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/common.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/emergency_access.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/idp.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/lss.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/machine_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/microtenants.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_approval.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_console.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_credential.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_portal.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/provisioning_keys.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/scim_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/segment_group.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/server_group.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/service_edge_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/service_edges.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/trusted_network.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/policies.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_approval.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_console.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_credential.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_portal.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/provisioning.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/scim_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/segment_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/server_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/servers.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/service_edge_group.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/service_edges.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zpa/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/account_details.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/activation.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/admin_roles.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/admin_users.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/api_keys.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ec_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ip_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/legacy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/location_management.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/location_template.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/activation.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/common.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ec_group_vm.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ecgroup.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ip_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/location_management.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/location_templates.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/nw_service.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/zpa_resources.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/nw_service.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ztw_service.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/__init__.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/audit_logs.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/dlp_incidents.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/legacy.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/audit_logs.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/change_history.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/common.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/generated_tickets.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_details.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_evidence.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_group_search.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_search.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_trigger.py +0 -0
- {zscaler_sdk_python-1.0.2 → zscaler_sdk_python-1.1.0}/zscaler/zwa/zwa_service.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "zscaler-sdk-python"
|
|
3
|
-
version = "1.0
|
|
3
|
+
version = "1.1.0"
|
|
4
4
|
description = "Official Python SDK for the Zscaler Products"
|
|
5
5
|
authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -45,12 +45,12 @@ arrow = ">=1.3.0"
|
|
|
45
45
|
black = ">=24.3.0"
|
|
46
46
|
flake8 = ">=7.0.0"
|
|
47
47
|
isort = ">=5.13.0"
|
|
48
|
-
pytest = ">=8.
|
|
48
|
+
pytest = ">=8.3.5"
|
|
49
49
|
pytest-mock = ">=3.12.0"
|
|
50
50
|
pytest-asyncio = ">=0.23.0"
|
|
51
51
|
pytest-cov = ">=4.1.0"
|
|
52
52
|
pyfakefs = ">=5.7.0"
|
|
53
|
-
responses = ">=0.25.
|
|
53
|
+
responses = ">=0.25.7"
|
|
54
54
|
sphinx = ">=7.2.0"
|
|
55
55
|
sphinx-autobuild = ">=2024.1.0"
|
|
56
56
|
sphinx_rtd_theme = ">=1.3.0"
|
|
@@ -50,6 +50,9 @@ def to_snake_case(string):
|
|
|
50
50
|
"dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories": "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories",
|
|
51
51
|
"endPointDLPLogType": "end_point_dlp_log_type",
|
|
52
52
|
"emailDLPLogType": "email_dlp_log_type",
|
|
53
|
+
"extranetDNSList": "extranet_dns_list",
|
|
54
|
+
"primaryDNSServer": "primary_dns_server",
|
|
55
|
+
"secondaryDNSServer": "secondary_dns_server",
|
|
53
56
|
}
|
|
54
57
|
|
|
55
58
|
if string in FIELD_EXCEPTIONS:
|
|
@@ -108,6 +111,9 @@ def to_lower_camel_case(string):
|
|
|
108
111
|
"dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories": "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories",
|
|
109
112
|
"end_point_dlp_log_type": "endPointDLPLogType",
|
|
110
113
|
"email_dlp_log_type": "emailDLPLogType",
|
|
114
|
+
"extranet_dns_list": "extranetDNSList",
|
|
115
|
+
"primary_dns_server": "primaryDNSServer",
|
|
116
|
+
"secondary_dns_server": "secondaryDNSServer",
|
|
111
117
|
}
|
|
112
118
|
|
|
113
119
|
if string in FIELD_EXCEPTIONS:
|
|
@@ -75,7 +75,7 @@ reformat_params = [
|
|
|
75
75
|
("zpa_application_segment_groups", "zpaApplicationSegmentGroups"),
|
|
76
76
|
("workload_groups", "workloadGroups"),
|
|
77
77
|
("service_ids", "services"),
|
|
78
|
-
|
|
78
|
+
("bandwidth_class_ids", "bandwidthClasses"),
|
|
79
79
|
]
|
|
80
80
|
|
|
81
81
|
|
|
@@ -675,7 +675,6 @@ def is_valid_ssh_key(private_key: str) -> bool:
|
|
|
675
675
|
]
|
|
676
676
|
return any(re.search(pattern, private_key) for pattern in ssh_key_patterns)
|
|
677
677
|
|
|
678
|
-
|
|
679
678
|
def validate_and_convert_times(start_time_str, end_time_str, time_zone_str):
|
|
680
679
|
"""
|
|
681
680
|
Validates and converts provided time strings to epoch.
|
|
@@ -731,6 +730,27 @@ def validate_and_convert_times(start_time_str, end_time_str, time_zone_str):
|
|
|
731
730
|
|
|
732
731
|
return start_epoch, end_epoch
|
|
733
732
|
|
|
733
|
+
def convert_dc_exclusion_times(start_time_str, end_time_str, time_zone_str):
|
|
734
|
+
"""
|
|
735
|
+
Converts and validates DC exclusion times based on API rules:
|
|
736
|
+
- start_time must be >= 5 min in the future and within 30 days
|
|
737
|
+
- end_time must be >= 2 hours after start_time and within 15 days
|
|
738
|
+
"""
|
|
739
|
+
start_epoch, end_epoch = validate_and_convert_times(start_time_str, end_time_str, time_zone_str)
|
|
740
|
+
|
|
741
|
+
now = int(datetime.datetime.now(pytz.timezone(time_zone_str)).timestamp())
|
|
742
|
+
|
|
743
|
+
if start_epoch < now + 300:
|
|
744
|
+
raise ValueError("Start time must be at least 5 minutes in the future.")
|
|
745
|
+
if start_epoch > now + (30 * 86400):
|
|
746
|
+
raise ValueError("Start time must be within 30 days from now.")
|
|
747
|
+
|
|
748
|
+
if end_epoch < start_epoch + 7200:
|
|
749
|
+
raise ValueError("End time must be at least 2 hours after start time.")
|
|
750
|
+
if end_epoch > start_epoch + (15 * 86400):
|
|
751
|
+
raise ValueError("End time must be within 15 days from start time.")
|
|
752
|
+
|
|
753
|
+
return start_epoch, end_epoch
|
|
734
754
|
|
|
735
755
|
def convert_date_time_to_seconds(date_time):
|
|
736
756
|
"""
|
|
@@ -16,7 +16,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
16
16
|
|
|
17
17
|
from zscaler.api_client import APIClient
|
|
18
18
|
from zscaler.request_executor import RequestExecutor
|
|
19
|
-
from zscaler.utils import format_url
|
|
19
|
+
from zscaler.utils import format_url
|
|
20
20
|
from zscaler.zcc.models.admin_user import AdminUser
|
|
21
21
|
from zscaler.zcc.models.admin_roles import AdminRoles
|
|
22
22
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
3
|
import time
|
|
4
|
-
import json
|
|
5
4
|
import requests
|
|
5
|
+
import random
|
|
6
6
|
from hashlib import sha256
|
|
7
7
|
from zscaler import __version__
|
|
8
8
|
from zscaler.cache.no_op_cache import NoOpCache
|
|
@@ -12,6 +12,8 @@ from zscaler.user_agent import UserAgent
|
|
|
12
12
|
# Setup the logger
|
|
13
13
|
setup_logging(logger_name="zscaler-sdk-python")
|
|
14
14
|
logger = logging.getLogger("zscaler-sdk-python")
|
|
15
|
+
_token_cache = {}
|
|
16
|
+
_jwks_cache = {}
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
class LegacyZDXClientHelper:
|
|
@@ -82,20 +84,37 @@ class LegacyZDXClientHelper:
|
|
|
82
84
|
Helper method to perform a GET request with rate limiting retry logic.
|
|
83
85
|
"""
|
|
84
86
|
max_retries = self.config["client"]["rateLimit"].get("maxRetries", 3)
|
|
87
|
+
retry_threshold = self.config["client"]["rateLimit"].get("remainingThreshold", 2)
|
|
88
|
+
|
|
85
89
|
for attempt in range(max_retries):
|
|
86
90
|
response = session.get(url, timeout=self.timeout)
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
|
|
92
|
+
remaining = response.headers.get("X-Ratelimit-Remaining-Second")
|
|
93
|
+
limit = response.headers.get("X-Ratelimit-Limit-Second")
|
|
94
|
+
|
|
95
|
+
try:
|
|
96
|
+
remaining_int = int(remaining) if remaining else None
|
|
97
|
+
limit_int = int(limit) if limit else None
|
|
98
|
+
except Exception:
|
|
99
|
+
remaining_int, limit_int = None, None
|
|
100
|
+
|
|
101
|
+
# Proactive backoff before hitting the limit
|
|
102
|
+
if remaining_int is not None and remaining_int < retry_threshold:
|
|
103
|
+
delay = 1 + random.uniform(0, 0.5) # Add jitter
|
|
93
104
|
sanitized_url = url.split("?")[0]
|
|
94
105
|
logger.info(
|
|
95
|
-
f"Rate limit
|
|
106
|
+
f"Rate limit approaching on GET {sanitized_url}. "
|
|
107
|
+
f"Remaining={remaining_int}, Limit={limit_int}. "
|
|
108
|
+
f"Backing off for {delay:.2f}s (attempt {attempt + 1}/{max_retries})"
|
|
96
109
|
)
|
|
97
110
|
time.sleep(delay)
|
|
98
111
|
continue
|
|
112
|
+
|
|
113
|
+
if response.status_code == 429:
|
|
114
|
+
logger.warning(f"429 received from {url}. Retrying with fallback delay.")
|
|
115
|
+
time.sleep(1 + random.uniform(0, 0.5))
|
|
116
|
+
continue
|
|
117
|
+
|
|
99
118
|
try:
|
|
100
119
|
response.raise_for_status()
|
|
101
120
|
except Exception as e:
|
|
@@ -117,31 +136,6 @@ class LegacyZDXClientHelper:
|
|
|
117
136
|
|
|
118
137
|
session.headers.update({"Authorization": f"Bearer {token}"})
|
|
119
138
|
|
|
120
|
-
validate_url = f"{self.url}/v1/oauth/validate"
|
|
121
|
-
try:
|
|
122
|
-
validate_response = self._get_with_rate_limiting(session, validate_url)
|
|
123
|
-
validate_data = validate_response.json()
|
|
124
|
-
# logger.debug(f"Token validation response: {validate_data}")
|
|
125
|
-
logger.debug(f"Token validation response: {{'valid': {validate_data.get('valid', False)}}}")
|
|
126
|
-
if not validate_data.get("valid", False):
|
|
127
|
-
raise Exception("Token validation failed: token is not valid.")
|
|
128
|
-
else:
|
|
129
|
-
logger.info("Token validated successfully.")
|
|
130
|
-
except Exception as e:
|
|
131
|
-
logger.error("Token validation failed: %s", e)
|
|
132
|
-
raise Exception(f"Token validation failed: {e}")
|
|
133
|
-
|
|
134
|
-
jwks_url = f"{self.url}/v1/oauth/jwks"
|
|
135
|
-
try:
|
|
136
|
-
jwks_response = self._get_with_rate_limiting(session, jwks_url)
|
|
137
|
-
jwks_data = jwks_response.json()
|
|
138
|
-
# logger.debug(f"JWKS response: {json.dumps(jwks_data, indent=2)}")
|
|
139
|
-
sanitized_jwks_data = {"keys": [{"kid": key.get("kid")} for key in jwks_data.get("keys", [])]}
|
|
140
|
-
logger.debug(f"Sanitized JWKS response: {json.dumps(sanitized_jwks_data, indent=2)}")
|
|
141
|
-
except Exception as e:
|
|
142
|
-
logger.error("Failed to retrieve JWKS: %s", e)
|
|
143
|
-
raise Exception(f"Failed to retrieve JWKS: {e}")
|
|
144
|
-
|
|
145
139
|
return session
|
|
146
140
|
|
|
147
141
|
def create_token(self):
|
|
@@ -152,6 +146,13 @@ class LegacyZDXClientHelper:
|
|
|
152
146
|
Raises:
|
|
153
147
|
Exception: If token retrieval fails.
|
|
154
148
|
"""
|
|
149
|
+
cache_key = f"{self._client_id}:{self._client_secret}"
|
|
150
|
+
if cache_key in _token_cache:
|
|
151
|
+
logger.info("Using cached ZDX token.")
|
|
152
|
+
self.auth_token = _token_cache[cache_key]
|
|
153
|
+
self.request_executor._default_headers["Authorization"] = f"Bearer {self.auth_token}"
|
|
154
|
+
return {"token": self.auth_token}
|
|
155
|
+
|
|
155
156
|
max_retries = self.config["client"]["rateLimit"].get("maxRetries", 3)
|
|
156
157
|
for attempt in range(max_retries):
|
|
157
158
|
epoch_time = int(time.time())
|
|
@@ -165,7 +166,6 @@ class LegacyZDXClientHelper:
|
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
token_url = f"{self.url}/v1/oauth/token"
|
|
168
|
-
# logger.debug(f"Token request URL: {token_url}")
|
|
169
169
|
response = requests.post(
|
|
170
170
|
token_url,
|
|
171
171
|
json=payload,
|
|
@@ -177,22 +177,25 @@ class LegacyZDXClientHelper:
|
|
|
177
177
|
)
|
|
178
178
|
|
|
179
179
|
if response.status_code == 429:
|
|
180
|
-
|
|
180
|
+
remaining = response.headers.get("X-Ratelimit-Remaining-Second")
|
|
181
181
|
try:
|
|
182
|
-
|
|
182
|
+
remaining_int = int(remaining) if remaining else None
|
|
183
183
|
except Exception:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
184
|
+
remaining_int = None
|
|
185
|
+
|
|
186
|
+
delay = 1 + random.uniform(0, 0.5) # Default 1s backoff + jitter
|
|
187
|
+
if remaining_int is not None and remaining_int < 2:
|
|
188
|
+
logger.warning(
|
|
189
|
+
"Rate limit exceeded on token request. Retrying in %.2fs (attempt %d/%d)",
|
|
190
|
+
delay,
|
|
191
|
+
attempt + 1,
|
|
192
|
+
max_retries,
|
|
193
|
+
)
|
|
194
|
+
time.sleep(delay)
|
|
195
|
+
continue
|
|
193
196
|
|
|
194
197
|
try:
|
|
195
|
-
response.raise_for_status()
|
|
198
|
+
response.raise_for_status()
|
|
196
199
|
except Exception as e:
|
|
197
200
|
logger.error("Failed to retrieve token: %s", e)
|
|
198
201
|
raise Exception(f"Failed to retrieve token: {e}")
|
|
@@ -204,6 +207,7 @@ class LegacyZDXClientHelper:
|
|
|
204
207
|
|
|
205
208
|
# Save the token and update default headers for subsequent requests
|
|
206
209
|
self.auth_token = token
|
|
210
|
+
_token_cache[cache_key] = token # ✅ Cache it
|
|
207
211
|
self.request_executor._default_headers["Authorization"] = f"Bearer {token}"
|
|
208
212
|
|
|
209
213
|
return token_data
|
|
@@ -231,12 +235,60 @@ class LegacyZDXClientHelper:
|
|
|
231
235
|
Returns:
|
|
232
236
|
dict: The JWKS response.
|
|
233
237
|
"""
|
|
234
|
-
|
|
238
|
+
if self._client_id in _jwks_cache:
|
|
239
|
+
logger.info("Using cached JWKS data.")
|
|
240
|
+
return _jwks_cache[self._client_id]
|
|
235
241
|
|
|
236
|
-
|
|
237
|
-
|
|
242
|
+
jwks_url = f"{self.url}/v1/oauth/jwks"
|
|
243
|
+
max_retries = self.config["client"]["rateLimit"].get("maxRetries", 3)
|
|
244
|
+
retry_threshold = self.config["client"]["rateLimit"].get("remainingThreshold", 2)
|
|
238
245
|
|
|
239
|
-
|
|
246
|
+
for attempt in range(max_retries):
|
|
247
|
+
response = requests.get(
|
|
248
|
+
jwks_url,
|
|
249
|
+
headers={
|
|
250
|
+
"Authorization": f"Bearer {self.auth_token}",
|
|
251
|
+
"User-Agent": self.user_agent,
|
|
252
|
+
},
|
|
253
|
+
timeout=self.timeout,
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
remaining = response.headers.get("X-Ratelimit-Remaining-Second")
|
|
257
|
+
try:
|
|
258
|
+
remaining_int = int(remaining) if remaining else None
|
|
259
|
+
except Exception:
|
|
260
|
+
remaining_int = None
|
|
261
|
+
|
|
262
|
+
# Proactive backoff
|
|
263
|
+
if remaining_int is not None and remaining_int < retry_threshold:
|
|
264
|
+
delay = 1 + random.uniform(0, 0.5)
|
|
265
|
+
logger.info(
|
|
266
|
+
"Rate limit approaching on JWKS request. Remaining=%s. Backing off %.2fs (attempt %d/%d)",
|
|
267
|
+
remaining,
|
|
268
|
+
delay,
|
|
269
|
+
attempt + 1,
|
|
270
|
+
max_retries,
|
|
271
|
+
)
|
|
272
|
+
time.sleep(delay)
|
|
273
|
+
continue
|
|
274
|
+
|
|
275
|
+
if response.status_code == 429:
|
|
276
|
+
delay = 1 + random.uniform(0, 0.5)
|
|
277
|
+
logger.warning("429 on JWKS request. Retrying after %.2fs (attempt %d/%d)", delay, attempt + 1, max_retries)
|
|
278
|
+
time.sleep(delay)
|
|
279
|
+
continue
|
|
280
|
+
|
|
281
|
+
try:
|
|
282
|
+
response.raise_for_status()
|
|
283
|
+
except Exception as e:
|
|
284
|
+
logger.error("Failed to retrieve JWKS: %s", e)
|
|
285
|
+
raise Exception(f"Failed to retrieve JWKS: {e}")
|
|
286
|
+
|
|
287
|
+
jwks_data = response.json()
|
|
288
|
+
_jwks_cache[self._client_id] = jwks_data # ✅ Cache the JWKS data
|
|
289
|
+
return jwks_data
|
|
290
|
+
|
|
291
|
+
raise Exception(f"Failed to retrieve JWKS after {max_retries} attempts due to rate limiting.")
|
|
240
292
|
|
|
241
293
|
def get_base_url(self, endpoint):
|
|
242
294
|
return self.url
|
|
@@ -17,6 +17,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
17
17
|
from zscaler.api_client import APIClient
|
|
18
18
|
from zscaler.request_executor import RequestExecutor
|
|
19
19
|
from zscaler.zia.models.admin_roles import AdminRoles
|
|
20
|
+
from zscaler.zia.models.admin_roles import PasswordExpiry
|
|
20
21
|
from zscaler.utils import format_url
|
|
21
22
|
|
|
22
23
|
|
|
@@ -242,3 +243,108 @@ class AdminRolesAPI(APIClient):
|
|
|
242
243
|
if error:
|
|
243
244
|
return (None, response, error)
|
|
244
245
|
return (None, response, None)
|
|
246
|
+
|
|
247
|
+
def get_password_expiry_settings(self) -> tuple:
|
|
248
|
+
"""
|
|
249
|
+
Retrieves the password expiration information for all the admins
|
|
250
|
+
|
|
251
|
+
Note: This method is not compatible with Zidentity enabled Tenants
|
|
252
|
+
|
|
253
|
+
Returns:
|
|
254
|
+
tuple: A tuple containing:
|
|
255
|
+
- PasswordExpiry: The current password expiry settings object.
|
|
256
|
+
- Response: The raw HTTP response returned by the API.
|
|
257
|
+
- error: An error message if the request failed; otherwise, `None`.
|
|
258
|
+
|
|
259
|
+
Examples:
|
|
260
|
+
Retrieves the password expiration information for all the admins
|
|
261
|
+
|
|
262
|
+
>>> settings, _, err = client.zia.admin_roles.get_password_expiry_settings()
|
|
263
|
+
>>> if err:
|
|
264
|
+
... print(f"Error fetching password expiry settings: {err}")
|
|
265
|
+
... return
|
|
266
|
+
... print("Current password expiry settings fetched successfully.")
|
|
267
|
+
... print(settings)
|
|
268
|
+
"""
|
|
269
|
+
http_method = "get".upper()
|
|
270
|
+
api_url = format_url(
|
|
271
|
+
f"""
|
|
272
|
+
{self._zia_base_endpoint}
|
|
273
|
+
/passwordExpiry/settings
|
|
274
|
+
"""
|
|
275
|
+
)
|
|
276
|
+
|
|
277
|
+
request, error = self._request_executor.create_request(http_method, api_url)
|
|
278
|
+
|
|
279
|
+
if error:
|
|
280
|
+
return (None, None, error)
|
|
281
|
+
|
|
282
|
+
response, error = self._request_executor.execute(request)
|
|
283
|
+
|
|
284
|
+
if error:
|
|
285
|
+
return (None, response, error)
|
|
286
|
+
|
|
287
|
+
try:
|
|
288
|
+
advanced_settings = PasswordExpiry(response.get_body())
|
|
289
|
+
return (advanced_settings, response, None)
|
|
290
|
+
except Exception as ex:
|
|
291
|
+
return (None, response, ex)
|
|
292
|
+
|
|
293
|
+
def update_password_expiry_settings(self, **kwargs) -> tuple:
|
|
294
|
+
"""
|
|
295
|
+
Updates the password expiration information for all the admins.
|
|
296
|
+
|
|
297
|
+
Note: This method is not compatible with Zidentity enabled Tenants
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
Supported attributes:
|
|
301
|
+
- password_expiration_enabled (bool): Specifies whether password expiration is enabled for the admin
|
|
302
|
+
- password_expiry_days (int): Password expiration duration, calculated in days
|
|
303
|
+
|
|
304
|
+
Returns:
|
|
305
|
+
tuple: A tuple containing:
|
|
306
|
+
- PasswordExpiry: The updated password expiry settings object.
|
|
307
|
+
- Response: The raw HTTP response returned by the API.
|
|
308
|
+
- error: An error message if the update failed; otherwise, `None`.
|
|
309
|
+
|
|
310
|
+
Examples:
|
|
311
|
+
Update advanced threat protection settings by blocking specific threats:
|
|
312
|
+
|
|
313
|
+
>>> settings, _, err = client.zia.admin_roles.update_password_expiry_settings(
|
|
314
|
+
... password_expiration_enabled = True,
|
|
315
|
+
... password_expiry_days = '90',
|
|
316
|
+
... )
|
|
317
|
+
>>> if err:
|
|
318
|
+
... print(f"Error fetching password expiry: {err}")
|
|
319
|
+
... return
|
|
320
|
+
... print("Current password expiry fetched successfully.")
|
|
321
|
+
... print(settings)
|
|
322
|
+
"""
|
|
323
|
+
http_method = "put".upper()
|
|
324
|
+
api_url = format_url(
|
|
325
|
+
f"""
|
|
326
|
+
{self._zia_base_endpoint}
|
|
327
|
+
/cyberThreatProtection/advancedThreatSettings
|
|
328
|
+
"""
|
|
329
|
+
)
|
|
330
|
+
|
|
331
|
+
body = {}
|
|
332
|
+
body.update(kwargs)
|
|
333
|
+
|
|
334
|
+
request, error = self._request_executor.create_request(http_method, api_url, body, {}, {})
|
|
335
|
+
if error:
|
|
336
|
+
return (None, None, error)
|
|
337
|
+
|
|
338
|
+
response, error = self._request_executor.execute(request, PasswordExpiry)
|
|
339
|
+
if error:
|
|
340
|
+
return (None, response, error)
|
|
341
|
+
|
|
342
|
+
try:
|
|
343
|
+
if response and hasattr(response, "get_body") and response.get_body():
|
|
344
|
+
result = PasswordExpiry(self.form_response_body(response.get_body()))
|
|
345
|
+
else:
|
|
346
|
+
result = PasswordExpiry()
|
|
347
|
+
except Exception as error:
|
|
348
|
+
return (None, response, error)
|
|
349
|
+
|
|
350
|
+
return (result, response, None)
|