zscaler-sdk-python 1.9.18__tar.gz → 1.9.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/PKG-INFO +92 -1
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/README.md +90 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/pyproject.toml +2 -1
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/__init__.py +1 -1
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/oneapi_response.py +71 -33
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zbi/custom_apps.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zbi/reports.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/admin_user.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/devices.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/fail_open_policy.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/forwarding_profile.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/trusted_networks.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/web_app_service.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/web_policy.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/admin.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/alerts.py +24 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/apps.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/devices.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/inventory.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/troubleshooting.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/users.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/findings.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/lookalike_domains.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/organizations.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/admin_roles.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/alert_subscriptions.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/bandwidth_classes.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/bandwidth_control_rules.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_applications.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_firewall.py +24 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_nss.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_to_cloud_ir.py +24 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloudappcontrol.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/device_management.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/dlp_dictionary.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/dlp_engine.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/dlp_web_rules.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/dns_gatways.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/forwarding_control.py +1 -1
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/gre_tunnel.py +40 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/intermediate_certificates.py +24 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/ipv6_config.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/locations.py +64 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/nss_servers.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/pac_files.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/proxies.py +32 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/risk_profiles.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/rule_labels.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/saas_security_api.py +40 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/shadow_it_report.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/sub_clouds.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/time_intervals.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/traffic_capture.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/traffic_datacenters.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/traffic_extranet.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/traffic_static_ip.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/traffic_vpn_credentials.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/user_management.py +32 -1
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/vzen_clusters.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/vzen_nodes.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/zpa_gateway.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/api_client.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/groups.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/resource_servers.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/users.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/administrator_controller.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/api_keys.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_connector_groups.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_connectors.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_protection.py +56 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_segments_ba.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_segments_ba_v2.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_segments_inspection.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_segments_pra.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/application_segment.py +5 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/branch_connector_group.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/branch_connectors.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/browser_protection.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/c2c_ip_ranges.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/cbi_banner.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/cbi_certificate.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/cbi_profile.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/cbi_region.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/cbi_zpa_profile.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/certificates.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/cloud_connector_controller.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/cloud_connector_groups.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/config_override_controller.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/customer_domain.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/customer_dr_tool.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/customer_version_profile.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/emergency_access.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/enrollment_certificates.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/extranet_resource.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/idp.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/lss.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/machine_groups.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/managed_browser_profile.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/microtenants.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/npn_client_controller.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/policies.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/posture_profiles.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/pra_approval.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/pra_console.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/pra_credential.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/pra_credential_pool.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/pra_portal.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/private_cloud_controller.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/private_cloud_group.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/provisioning.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/role_controller.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/saml_attributes.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/scim_attributes.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/scim_groups.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/segment_groups.py +5 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/server_groups.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/servers.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/service_edge_group.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/service_edges.py +16 -8
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/tag_group.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/tag_namespace.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/trusted_networks.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/user_portal_aup.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/user_portal_controller.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/user_portal_link.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/alarms.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/api_key.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/devices.py +32 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/groups_router.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/site.py +24 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/site2site_vpn.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/template_router.py +24 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/account_details.py +24 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/account_groups.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/admin_roles.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/admin_users.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/api_keys.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/ec_groups.py +24 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/forwarding_gateways.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/location_management.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/location_template.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/nw_service.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/provisioning_url.py +8 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/public_cloud_info.py +16 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/LICENSE.md +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/api_client.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/cache/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/cache/cache.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/cache/no_op_cache.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/cache/zscaler_cache.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/config/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/config/config_setter.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/config/config_validator.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/constants.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/error_messages.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/errors/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/errors/error.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/errors/graphql_error.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/errors/http_error.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/errors/response_checker.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/errors/zscaler_api_error.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/exceptions/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/exceptions/exceptions.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/helpers.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/logger.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/oneapi_client.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/oneapi_collection.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/oneapi_http_client.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/oneapi_oauth_client.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/oneapi_object.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ratelimiter/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ratelimiter/ratelimiter.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/request_executor.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/types.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/user_agent.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/utils.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zaiguard/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zaiguard/legacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zaiguard/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zaiguard/models/policy_detection.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zaiguard/policy_detection.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zaiguard/zaiguard_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zbi/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zbi/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zbi/models/custom_apps.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zbi/models/report_configs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zbi/report_configs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zbi/zbi_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/company.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/entitlements.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/legacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/admin_user.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/failopenpolicy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/forwardingprofile.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/getcompanyinfo.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/manage_pass.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/secrets_otp.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/secrets_passwords.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/trustednetworks.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/webappservice.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/webpolicy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/webprivacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/secrets.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/web_privacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zcc/zcc_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/legacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/administration.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/alerts.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/application_users.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/applications.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/call_quality_metrics.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/snapshot.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/software_inventory.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/models/users.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/snapshot.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zdx/zdx_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/models/findings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/models/lookalike_domains.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/models/organizations.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zeasm/zeasm_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/activate.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/apptotal.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/atp_policy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_firewall_dns.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_firewall_ips.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/custom_file_types.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/end_user_notification.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/file_type_control_rule.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/iot_report.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/legacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/malware_protection_policy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/activation.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/advanced_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/apptotal.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/browser_control_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/casb_dlp_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/casb_malware_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_app_policy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloud_to_cloud_ir.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/custom_file_types.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/device_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/dns_gateways.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/endusernotification.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/filetyperules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/forwarding_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/gre_recommended_list.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/gre_tunnel_info.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/gre_tunnels.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/gre_vips.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/iotreport.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/location_group.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/location_management.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/malware_protection_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/nss_servers.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/organization_information.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/pac_files.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/proxies.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/proxy_gateways.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/remoteassistance.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/rule_labels.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/saas_security_api.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/sandbox.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/sandboxrules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/subclouds.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/system_audit.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/time_intervals.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/traffic_capture.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/url_filtering_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/urlcategory.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/user_management.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/vzen_clusters.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/vzen_nodes.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/models/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/organization_information.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/policy_export.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/remote_assistance.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/sandbox.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/sandbox_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/system_audit.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/url_categories.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/url_filtering.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/workload_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zia/zia_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/models/api_client.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/models/groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/models/resource_servers.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/models/user_entitlement.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/models/users.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/user_entitlement.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zid/zid_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/cyber_security.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/firewall.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/iot.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/models/enums.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/models/inputs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/saas_security.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/shadow_it.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/web_traffic.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zins/zins_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/agent_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/agents.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/app_catalog.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/app_zones.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/models/enums.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/models/inputs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/nonces.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/policy_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/resource_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/resources.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/tags.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zms/zms_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/admin_sso_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/app_segment_by_type.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/client_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/customer_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/legacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/location_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/app_connectors.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/app_protection_profile.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/application_segment.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/application_segment_lb.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/application_servers.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/branch_connectors.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/browser_protection.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/c2c_ip_ranges.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/cbi_region.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/certificates.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/client_settings.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/cloud_connector_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/config_override_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/customer_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/customer_domain.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/customer_dr_tool.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/emergency_access.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/idp.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/lss.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/machine_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/managed_browser_profile.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/microtenants.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/npn_client_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/oauth2_user_code.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/pra_approval.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/pra_console.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/pra_credential.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/pra_portal.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/private_cloud_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/private_cloud_group.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/provisioning_keys.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/role_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/scim_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/segment_group.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/server_group.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/service_edge_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/service_edges.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/stepup_auth_level.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/tag_group.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/tag_key.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/tag_namespace.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/trusted_network.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/user_portal_aup.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/user_portal_controller.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/user_portal_link.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/models/zia_customer_config.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/oauth2_user_code.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/stepup_auth_level.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/tag_key.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/workload_tag_group.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/zia_customer_config.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zpa/zpa_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/app_connector_config.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/legacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/logs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/alarms.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/api_key.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/app_connector_config.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/devices.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/groups_router.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/logs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/policy_comments.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/ransomware_kill.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/site.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/site2site_vpn.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/models/template_router.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/policy_comments.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/ransomware_kill.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztb/ztb_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/activation.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/discovery_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/ip_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/legacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/account_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/activation.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/discovery_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/ec_group_vm.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/ecgroup.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/ip_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/location_management.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/location_templates.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/nw_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/public_cloud_info.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/models/zpa_resources.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/workload_groups.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/ztw/ztw_service.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/__init__.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/dlp_incidents.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/legacy.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/audit_logs.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/change_history.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/common.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/generated_tickets.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/incident_details.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/incident_evidence.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/incident_group_search.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/incident_search.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/models/incident_trigger.py +0 -0
- {zscaler_sdk_python-1.9.18 → zscaler_sdk_python-1.9.20}/zscaler/zwa/zwa_service.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: zscaler-sdk-python
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.20
|
|
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
|
|
@@ -23,6 +23,7 @@ Requires-Dist: PyJWT (>=2.10.1)
|
|
|
23
23
|
Requires-Dist: aenum (>=3.1.11)
|
|
24
24
|
Requires-Dist: arrow (>=1.3.0)
|
|
25
25
|
Requires-Dist: cryptography (>=45.0.2)
|
|
26
|
+
Requires-Dist: jmespath (>=1.0.0)
|
|
26
27
|
Requires-Dist: jwcrypto (>=1.5.6)
|
|
27
28
|
Requires-Dist: pydash (>=8.0.3)
|
|
28
29
|
Requires-Dist: python-box (>=7.3.0)
|
|
@@ -63,6 +64,7 @@ Description-Content-Type: text/markdown
|
|
|
63
64
|
* [Zscaler Legacy API Framework](#zscaler-legacy-api-framework)
|
|
64
65
|
* [Configuration reference](#configuration-reference)
|
|
65
66
|
* [Pagination](#pagination)
|
|
67
|
+
* [Client-Side Filtering with JMESPath](#client-side-filtering-with-jmespath)
|
|
66
68
|
* [Contributing](#contributing)
|
|
67
69
|
|
|
68
70
|
The Zscaler SDK for Python includes functionality to accelerate development via [Python](https://www.python.org/). This SDK can be
|
|
@@ -745,6 +747,95 @@ except StopIteration:
|
|
|
745
747
|
print("All data fetched.")
|
|
746
748
|
```
|
|
747
749
|
|
|
750
|
+
### Client-Side Filtering with JMESPath
|
|
751
|
+
|
|
752
|
+
The SDK supports client-side filtering and projection of API results using [JMESPath](https://jmespath.org/) expressions. After any list call, you can use `resp.search(expression)` to filter, project, or reshape the response data without making additional API calls.
|
|
753
|
+
|
|
754
|
+
JMESPath is a query language for JSON that lets you declaratively extract and transform elements from JSON documents. The `.search()` method applies a JMESPath expression to the current page of results and returns a list of matching items.
|
|
755
|
+
|
|
756
|
+
#### Basic Filtering
|
|
757
|
+
|
|
758
|
+
```py
|
|
759
|
+
# Fetch users and filter admin users client-side
|
|
760
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
761
|
+
admin_users = resp.search("[?adminUser==`true`]")
|
|
762
|
+
print(f"Found {len(admin_users)} admin users")
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
#### Projection (Selecting Specific Fields)
|
|
766
|
+
|
|
767
|
+
```py
|
|
768
|
+
# Extract only names and emails
|
|
769
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
770
|
+
names_emails = resp.search("[*].{name: name, email: email}")
|
|
771
|
+
for item in names_emails:
|
|
772
|
+
print(f"{item['name']}: {item['email']}")
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
#### Combined Filtering and Projection
|
|
776
|
+
|
|
777
|
+
```py
|
|
778
|
+
# Filter by role and project specific fields
|
|
779
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
780
|
+
result = resp.search("[?adminUser==`true`].{name: name, id: id}")
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
#### Nested Field Filtering
|
|
784
|
+
|
|
785
|
+
```py
|
|
786
|
+
# Filter users by department name
|
|
787
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
788
|
+
eng_users = resp.search("[?department.name=='Engineering'].name")
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
#### Using with Paginated Results
|
|
792
|
+
|
|
793
|
+
`.search()` operates on the current page. To filter across all pages, apply it to each page as you paginate:
|
|
794
|
+
|
|
795
|
+
```py
|
|
796
|
+
users, resp, err = client.zia.user_management.list_users(
|
|
797
|
+
query_params={"page_size": 1000}
|
|
798
|
+
)
|
|
799
|
+
all_admins = resp.search("[?adminUser==`true`]")
|
|
800
|
+
|
|
801
|
+
while resp.has_next():
|
|
802
|
+
next_page, resp, err = resp.next()
|
|
803
|
+
if err:
|
|
804
|
+
break
|
|
805
|
+
if next_page:
|
|
806
|
+
all_admins.extend(resp.search("[?adminUser==`true`]"))
|
|
807
|
+
|
|
808
|
+
print(f"Total admins across all pages: {len(all_admins)}")
|
|
809
|
+
```
|
|
810
|
+
|
|
811
|
+
#### Using with Wrapped Responses
|
|
812
|
+
|
|
813
|
+
For APIs that wrap results in a named key (e.g., ZDX `items`, ZBI `reports`), reference the key in the expression:
|
|
814
|
+
|
|
815
|
+
```py
|
|
816
|
+
# ZDX software inventory
|
|
817
|
+
items, resp, err = client.zdx.software.list_inventory()
|
|
818
|
+
zscaler_sw = resp.search(
|
|
819
|
+
"items[?vendor=='Zscaler'].{name: software_name, devices: device_total}"
|
|
820
|
+
)
|
|
821
|
+
|
|
822
|
+
# ZBI reports
|
|
823
|
+
reports, resp, err = client.zbi.reports.list_reports(report_type="APPLICATION")
|
|
824
|
+
completed = resp.search("reports[?status=='COMPLETED']")
|
|
825
|
+
```
|
|
826
|
+
|
|
827
|
+
#### JMESPath Built-in Functions
|
|
828
|
+
|
|
829
|
+
JMESPath supports built-in functions like `length()`, `sort_by()`, `max_by()`, and more:
|
|
830
|
+
|
|
831
|
+
```py
|
|
832
|
+
# Users with at least one group assigned
|
|
833
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
834
|
+
with_groups = resp.search("[?length(groups || `[]`) > `0`]")
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
For the full JMESPath specification and function reference, see [jmespath.org](https://jmespath.org/).
|
|
838
|
+
|
|
748
839
|
## Logging
|
|
749
840
|
|
|
750
841
|
The Zscaler SDK Python, provides robust logging for debug purposes.
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
* [Zscaler Legacy API Framework](#zscaler-legacy-api-framework)
|
|
26
26
|
* [Configuration reference](#configuration-reference)
|
|
27
27
|
* [Pagination](#pagination)
|
|
28
|
+
* [Client-Side Filtering with JMESPath](#client-side-filtering-with-jmespath)
|
|
28
29
|
* [Contributing](#contributing)
|
|
29
30
|
|
|
30
31
|
The Zscaler SDK for Python includes functionality to accelerate development via [Python](https://www.python.org/). This SDK can be
|
|
@@ -707,6 +708,95 @@ except StopIteration:
|
|
|
707
708
|
print("All data fetched.")
|
|
708
709
|
```
|
|
709
710
|
|
|
711
|
+
### Client-Side Filtering with JMESPath
|
|
712
|
+
|
|
713
|
+
The SDK supports client-side filtering and projection of API results using [JMESPath](https://jmespath.org/) expressions. After any list call, you can use `resp.search(expression)` to filter, project, or reshape the response data without making additional API calls.
|
|
714
|
+
|
|
715
|
+
JMESPath is a query language for JSON that lets you declaratively extract and transform elements from JSON documents. The `.search()` method applies a JMESPath expression to the current page of results and returns a list of matching items.
|
|
716
|
+
|
|
717
|
+
#### Basic Filtering
|
|
718
|
+
|
|
719
|
+
```py
|
|
720
|
+
# Fetch users and filter admin users client-side
|
|
721
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
722
|
+
admin_users = resp.search("[?adminUser==`true`]")
|
|
723
|
+
print(f"Found {len(admin_users)} admin users")
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
#### Projection (Selecting Specific Fields)
|
|
727
|
+
|
|
728
|
+
```py
|
|
729
|
+
# Extract only names and emails
|
|
730
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
731
|
+
names_emails = resp.search("[*].{name: name, email: email}")
|
|
732
|
+
for item in names_emails:
|
|
733
|
+
print(f"{item['name']}: {item['email']}")
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
#### Combined Filtering and Projection
|
|
737
|
+
|
|
738
|
+
```py
|
|
739
|
+
# Filter by role and project specific fields
|
|
740
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
741
|
+
result = resp.search("[?adminUser==`true`].{name: name, id: id}")
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
#### Nested Field Filtering
|
|
745
|
+
|
|
746
|
+
```py
|
|
747
|
+
# Filter users by department name
|
|
748
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
749
|
+
eng_users = resp.search("[?department.name=='Engineering'].name")
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
#### Using with Paginated Results
|
|
753
|
+
|
|
754
|
+
`.search()` operates on the current page. To filter across all pages, apply it to each page as you paginate:
|
|
755
|
+
|
|
756
|
+
```py
|
|
757
|
+
users, resp, err = client.zia.user_management.list_users(
|
|
758
|
+
query_params={"page_size": 1000}
|
|
759
|
+
)
|
|
760
|
+
all_admins = resp.search("[?adminUser==`true`]")
|
|
761
|
+
|
|
762
|
+
while resp.has_next():
|
|
763
|
+
next_page, resp, err = resp.next()
|
|
764
|
+
if err:
|
|
765
|
+
break
|
|
766
|
+
if next_page:
|
|
767
|
+
all_admins.extend(resp.search("[?adminUser==`true`]"))
|
|
768
|
+
|
|
769
|
+
print(f"Total admins across all pages: {len(all_admins)}")
|
|
770
|
+
```
|
|
771
|
+
|
|
772
|
+
#### Using with Wrapped Responses
|
|
773
|
+
|
|
774
|
+
For APIs that wrap results in a named key (e.g., ZDX `items`, ZBI `reports`), reference the key in the expression:
|
|
775
|
+
|
|
776
|
+
```py
|
|
777
|
+
# ZDX software inventory
|
|
778
|
+
items, resp, err = client.zdx.software.list_inventory()
|
|
779
|
+
zscaler_sw = resp.search(
|
|
780
|
+
"items[?vendor=='Zscaler'].{name: software_name, devices: device_total}"
|
|
781
|
+
)
|
|
782
|
+
|
|
783
|
+
# ZBI reports
|
|
784
|
+
reports, resp, err = client.zbi.reports.list_reports(report_type="APPLICATION")
|
|
785
|
+
completed = resp.search("reports[?status=='COMPLETED']")
|
|
786
|
+
```
|
|
787
|
+
|
|
788
|
+
#### JMESPath Built-in Functions
|
|
789
|
+
|
|
790
|
+
JMESPath supports built-in functions like `length()`, `sort_by()`, `max_by()`, and more:
|
|
791
|
+
|
|
792
|
+
```py
|
|
793
|
+
# Users with at least one group assigned
|
|
794
|
+
users, resp, err = client.zia.user_management.list_users()
|
|
795
|
+
with_groups = resp.search("[?length(groups || `[]`) > `0`]")
|
|
796
|
+
```
|
|
797
|
+
|
|
798
|
+
For the full JMESPath specification and function reference, see [jmespath.org](https://jmespath.org/).
|
|
799
|
+
|
|
710
800
|
## Logging
|
|
711
801
|
|
|
712
802
|
The Zscaler SDK Python, provides robust logging for debug purposes.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "zscaler-sdk-python"
|
|
3
|
-
version = "1.9.
|
|
3
|
+
version = "1.9.20"
|
|
4
4
|
description = "Official Python SDK for the Zscaler Products"
|
|
5
5
|
authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -40,6 +40,7 @@ jwcrypto = ">=1.5.6"
|
|
|
40
40
|
aenum = ">=3.1.11"
|
|
41
41
|
pydash = ">=8.0.3"
|
|
42
42
|
arrow = ">=1.3.0"
|
|
43
|
+
jmespath = ">=1.0.0"
|
|
43
44
|
|
|
44
45
|
[tool.poetry.group.dev.dependencies]
|
|
45
46
|
black = ">=24.3.0"
|
|
@@ -3,6 +3,7 @@ import json
|
|
|
3
3
|
import logging
|
|
4
4
|
import uuid
|
|
5
5
|
import requests
|
|
6
|
+
import jmespath
|
|
6
7
|
|
|
7
8
|
logger = logging.getLogger(__name__)
|
|
8
9
|
|
|
@@ -14,9 +15,9 @@ class ZscalerAPIResponse:
|
|
|
14
15
|
"""
|
|
15
16
|
|
|
16
17
|
SERVICE_PAGE_LIMITS = {
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
18
|
+
"zpa": {"default": 100, "max": 500},
|
|
19
|
+
"zia": {"default": 500, "max": 10000},
|
|
20
|
+
"zdx": {"default": 10, "min": 1},
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
def __init__(
|
|
@@ -51,10 +52,9 @@ class ZscalerAPIResponse:
|
|
|
51
52
|
|
|
52
53
|
self._service_type = service_type
|
|
53
54
|
self._offset = self._params.get("offset", 0)
|
|
54
|
-
self._limit = self.validate_page_size(self._params.get("limit"), service_type)
|
|
55
55
|
self._next_offset = None
|
|
56
56
|
self._list = []
|
|
57
|
-
self._is_flat_list_response = False
|
|
57
|
+
self._is_flat_list_response = False
|
|
58
58
|
|
|
59
59
|
if all_entries:
|
|
60
60
|
self._params["allEntries"] = True
|
|
@@ -69,21 +69,22 @@ class ZscalerAPIResponse:
|
|
|
69
69
|
if end_time:
|
|
70
70
|
self._params["endTime"] = end_time
|
|
71
71
|
|
|
72
|
-
# If service is ZIA, ensure the pagination parameter is "pageSize" in camelCase
|
|
73
72
|
if self._service_type == "zia":
|
|
73
|
+
# Normalize page_size → pageSize if still in snake_case
|
|
74
74
|
if "page_size" in self._params:
|
|
75
75
|
self._params["pageSize"] = self._params.pop("page_size")
|
|
76
|
-
|
|
77
|
-
if self._service_type == "zia":
|
|
78
76
|
# If user supplied pageNumber, initialize self._page accordingly
|
|
79
77
|
if "pageNumber" in self._params:
|
|
80
78
|
try:
|
|
81
79
|
self._page = int(self._params["pageNumber"])
|
|
82
80
|
except Exception:
|
|
83
81
|
self._page = 1
|
|
84
|
-
# Always remove 'page' if present for ZIA
|
|
85
82
|
self._params.pop("page", None)
|
|
86
|
-
|
|
83
|
+
|
|
84
|
+
# Resolve the user-supplied page size from the correct param key per service.
|
|
85
|
+
# ZIA uses "pageSize"; ZPA uses "pagesize"; others use "limit".
|
|
86
|
+
raw_page_size = self._params.get("pageSize") or self._params.get("pagesize") or self._params.get("limit")
|
|
87
|
+
self._limit = self.validate_page_size(raw_page_size, service_type)
|
|
87
88
|
|
|
88
89
|
if res_details:
|
|
89
90
|
content_type = res_details.headers.get("Content-Type", "").lower()
|
|
@@ -160,20 +161,19 @@ class ZscalerAPIResponse:
|
|
|
160
161
|
self._body = json.loads(response_body)
|
|
161
162
|
|
|
162
163
|
if isinstance(self._body, list):
|
|
163
|
-
# Handle direct list responses (ZIA, ZPA simple lists, etc.)
|
|
164
|
-
# A flat list response means the API returned all results in one response
|
|
165
|
-
# without pagination metadata - pagination should NOT continue
|
|
166
164
|
self._list = self._body
|
|
167
|
-
|
|
168
|
-
#
|
|
169
|
-
#
|
|
165
|
+
|
|
166
|
+
# ZIA returns flat JSON arrays for paginated list endpoints.
|
|
167
|
+
# Do NOT mark those as flat-list (non-paginated); let the
|
|
168
|
+
# page-size heuristic in _has_next() drive pagination instead.
|
|
169
|
+
if self._service_type == "zia":
|
|
170
|
+
self._is_flat_list_response = False
|
|
171
|
+
else:
|
|
172
|
+
self._is_flat_list_response = True
|
|
173
|
+
|
|
170
174
|
if self._body and len(self._body) > 0 and not isinstance(self._body[0], dict):
|
|
171
|
-
# This is a list of simple types (e.g., ["CRITICAL", "HIGH", ...])
|
|
172
|
-
# Don't filter it - keep the original list as-is
|
|
173
|
-
# No cleaning needed for simple types
|
|
174
175
|
pass
|
|
175
176
|
elif self._body and len(self._body) > 0:
|
|
176
|
-
# This is a list of dicts - apply cleaning logic
|
|
177
177
|
cleaned_list = []
|
|
178
178
|
for item in self._list:
|
|
179
179
|
if isinstance(item, dict):
|
|
@@ -181,8 +181,7 @@ class ZscalerAPIResponse:
|
|
|
181
181
|
else:
|
|
182
182
|
logger.warning("Non-dict item found in response list, skipping: %s", item)
|
|
183
183
|
self._list = cleaned_list
|
|
184
|
-
|
|
185
|
-
elif self._service_type == "ZDX":
|
|
184
|
+
elif self._service_type == "zdx":
|
|
186
185
|
self._list = self._body.get("items", [])
|
|
187
186
|
self._next_offset = self._body.get("next_offset")
|
|
188
187
|
elif self._service_type == "zidentity":
|
|
@@ -199,13 +198,11 @@ class ZscalerAPIResponse:
|
|
|
199
198
|
self._total_results = self._body.get("total_results", 0)
|
|
200
199
|
self._next_page = self._body.get("next_page")
|
|
201
200
|
self._prev_page = self._body.get("prev_page")
|
|
202
|
-
elif self._service_type == "
|
|
201
|
+
elif self._service_type == "zcc":
|
|
203
202
|
# ZCC can return either a single object or a list of objects
|
|
204
203
|
if isinstance(self._body, dict):
|
|
205
|
-
# If it's a single object, wrap it in a list
|
|
206
204
|
self._list = [self._body]
|
|
207
205
|
else:
|
|
208
|
-
# If it's already a list, use it as is
|
|
209
206
|
self._list = self._body if isinstance(self._body, list) else []
|
|
210
207
|
elif self._service_type == "bi":
|
|
211
208
|
# ZBI list reports returns {"reportType": "...", "reports": [...]}
|
|
@@ -237,7 +234,7 @@ class ZscalerAPIResponse:
|
|
|
237
234
|
else:
|
|
238
235
|
# ZPA and possibly other services use a dict with "list" field
|
|
239
236
|
self._list = self._body.get("list", [])
|
|
240
|
-
if self._service_type == "
|
|
237
|
+
if self._service_type == "zpa":
|
|
241
238
|
self._total_pages = int(self._body.get("totalPages", 1))
|
|
242
239
|
self._total_count = int(self._body.get("totalCount", 0))
|
|
243
240
|
|
|
@@ -261,7 +258,7 @@ class ZscalerAPIResponse:
|
|
|
261
258
|
"""
|
|
262
259
|
logger.debug("Fetching current page results")
|
|
263
260
|
|
|
264
|
-
if self._service_type
|
|
261
|
+
if self._service_type == "zcc" and self._type:
|
|
265
262
|
try:
|
|
266
263
|
return [self._type(item) for item in self._list if isinstance(item, dict)]
|
|
267
264
|
except Exception as wrap_error:
|
|
@@ -270,6 +267,49 @@ class ZscalerAPIResponse:
|
|
|
270
267
|
|
|
271
268
|
return self._list
|
|
272
269
|
|
|
270
|
+
def search(self, expression: str) -> List[Any]:
|
|
271
|
+
"""
|
|
272
|
+
Applies a JMESPath expression to the current page of results for
|
|
273
|
+
client-side filtering and projection.
|
|
274
|
+
|
|
275
|
+
The expression is first evaluated against the full response body
|
|
276
|
+
(useful for expressions that reference top-level keys, e.g.
|
|
277
|
+
``"users[?name=='Alice']"``). If the body is a plain list, the
|
|
278
|
+
expression is applied directly to the list instead.
|
|
279
|
+
|
|
280
|
+
Args:
|
|
281
|
+
expression: A JMESPath expression string.
|
|
282
|
+
|
|
283
|
+
Returns:
|
|
284
|
+
A list of matching items (or projected dicts/values). Returns
|
|
285
|
+
an empty list when nothing matches.
|
|
286
|
+
|
|
287
|
+
Raises:
|
|
288
|
+
jmespath.exceptions.ParseError: If *expression* is not valid
|
|
289
|
+
JMESPath syntax.
|
|
290
|
+
|
|
291
|
+
Examples:
|
|
292
|
+
>>> items, resp, err = client.zia.user_management.list_users()
|
|
293
|
+
>>> admins = resp.search("[?adminUser==`true`]")
|
|
294
|
+
|
|
295
|
+
>>> items, resp, err = client.zdx.software.list_inventory()
|
|
296
|
+
>>> zscaler = resp.search(
|
|
297
|
+
... "items[?vendor=='Zscaler'].{name: software_name}"
|
|
298
|
+
... )
|
|
299
|
+
"""
|
|
300
|
+
compiled = jmespath.compile(expression)
|
|
301
|
+
|
|
302
|
+
# Apply against the full body first (handles expressions that target
|
|
303
|
+
# a named key inside the response envelope, e.g. "reports[?x>1]").
|
|
304
|
+
target = self._body if self._body is not None else self._list
|
|
305
|
+
result = compiled.search(target)
|
|
306
|
+
|
|
307
|
+
if result is None:
|
|
308
|
+
return []
|
|
309
|
+
if isinstance(result, list):
|
|
310
|
+
return result
|
|
311
|
+
return [result]
|
|
312
|
+
|
|
273
313
|
def has_next(self) -> bool:
|
|
274
314
|
"""
|
|
275
315
|
Returns True if there are more pages to fetch, False otherwise.
|
|
@@ -303,10 +343,10 @@ class ZscalerAPIResponse:
|
|
|
303
343
|
logger.debug("No more pages to fetch")
|
|
304
344
|
return [], None
|
|
305
345
|
|
|
306
|
-
if self._service_type
|
|
346
|
+
if self._service_type == "zdx":
|
|
307
347
|
logger.debug("[DEBUG] Taking ZDX pagination branch.")
|
|
308
348
|
self._params["offset"] = self._next_offset
|
|
309
|
-
elif self._service_type
|
|
349
|
+
elif self._service_type == "zia":
|
|
310
350
|
logger.debug("[DEBUG] Taking ZIA pagination branch.")
|
|
311
351
|
self._page += 1
|
|
312
352
|
self._params["page"] = self._page
|
|
@@ -359,13 +399,11 @@ class ZscalerAPIResponse:
|
|
|
359
399
|
logger.debug("Has next page: False (flat list response - all results returned in single response)")
|
|
360
400
|
return False
|
|
361
401
|
|
|
362
|
-
if self._service_type == "
|
|
363
|
-
# More pages if current page < total_pages
|
|
402
|
+
if self._service_type == "zpa":
|
|
364
403
|
has_next = self._page < self._total_pages
|
|
365
404
|
logger.debug("Has next page for ZPA: %s (page %d of %d)", has_next, self._page, self._total_pages)
|
|
366
405
|
return has_next
|
|
367
|
-
elif self._service_type == "
|
|
368
|
-
# More pages if next_offset is not None
|
|
406
|
+
elif self._service_type == "zdx":
|
|
369
407
|
has_next = self._next_offset is not None
|
|
370
408
|
logger.debug("Has next page for ZDX: %s", has_next)
|
|
371
409
|
return has_next
|
|
@@ -58,6 +58,14 @@ class CustomAppsAPI(APIClient):
|
|
|
58
58
|
... print(f"Error: {err}")
|
|
59
59
|
>>> for app in apps:
|
|
60
60
|
... print(app.as_dict())
|
|
61
|
+
|
|
62
|
+
Client-side filtering with JMESPath:
|
|
63
|
+
|
|
64
|
+
The response object supports client-side filtering and
|
|
65
|
+
projection via ``resp.search(expression)``. See the
|
|
66
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
67
|
+
expression syntax.
|
|
68
|
+
|
|
61
69
|
"""
|
|
62
70
|
http_method = "GET"
|
|
63
71
|
api_url = format_url(f"""
|
|
@@ -80,6 +80,14 @@ class ReportsAPI(APIClient):
|
|
|
80
80
|
... print(f"Error: {err}")
|
|
81
81
|
>>> for r in reports:
|
|
82
82
|
... print(r)
|
|
83
|
+
|
|
84
|
+
Client-side filtering with JMESPath:
|
|
85
|
+
|
|
86
|
+
The response object supports client-side filtering and
|
|
87
|
+
projection via ``resp.search(expression)``. See the
|
|
88
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
89
|
+
expression syntax.
|
|
90
|
+
|
|
83
91
|
"""
|
|
84
92
|
http_method = "GET"
|
|
85
93
|
api_url = format_url(f"""
|
|
@@ -53,6 +53,14 @@ class AdminUserAPI(APIClient):
|
|
|
53
53
|
... print(f"Total admin users found: {len(user_list)}")
|
|
54
54
|
... for user in user_list:
|
|
55
55
|
... print(user.as_dict())
|
|
56
|
+
|
|
57
|
+
Client-side filtering with JMESPath:
|
|
58
|
+
|
|
59
|
+
The response object supports client-side filtering and
|
|
60
|
+
projection via ``resp.search(expression)``. See the
|
|
61
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
62
|
+
expression syntax.
|
|
63
|
+
|
|
56
64
|
"""
|
|
57
65
|
http_method = "get".upper()
|
|
58
66
|
api_url = format_url(f"""
|
|
@@ -147,6 +155,14 @@ class AdminUserAPI(APIClient):
|
|
|
147
155
|
... print(f"Total admin roles found: {len(role_list)}")
|
|
148
156
|
... for role in role_list:
|
|
149
157
|
... print(role.as_dict())
|
|
158
|
+
|
|
159
|
+
Client-side filtering with JMESPath:
|
|
160
|
+
|
|
161
|
+
The response object supports client-side filtering and
|
|
162
|
+
projection via ``resp.search(expression)``. See the
|
|
163
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
164
|
+
expression syntax.
|
|
165
|
+
|
|
150
166
|
"""
|
|
151
167
|
http_method = "get".upper()
|
|
152
168
|
api_url = format_url(f"""
|
|
@@ -323,6 +323,14 @@ class DevicesAPI(APIClient):
|
|
|
323
323
|
... print(f"Total devices found: {len(device_list)}")
|
|
324
324
|
... for device in device_list:
|
|
325
325
|
... print(device.as_dict())
|
|
326
|
+
|
|
327
|
+
Client-side filtering with JMESPath:
|
|
328
|
+
|
|
329
|
+
The response object supports client-side filtering and
|
|
330
|
+
projection via ``resp.search(expression)``. See the
|
|
331
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
332
|
+
expression syntax.
|
|
333
|
+
|
|
326
334
|
"""
|
|
327
335
|
http_method = "get".upper()
|
|
328
336
|
api_url = format_url(f"""
|
|
@@ -50,6 +50,14 @@ class FailOpenPolicyAPI(APIClient):
|
|
|
50
50
|
... return
|
|
51
51
|
... for policy in policy_list:
|
|
52
52
|
... print(policy.as_dict())
|
|
53
|
+
|
|
54
|
+
Client-side filtering with JMESPath:
|
|
55
|
+
|
|
56
|
+
The response object supports client-side filtering and
|
|
57
|
+
projection via ``resp.search(expression)``. See the
|
|
58
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
59
|
+
expression syntax.
|
|
60
|
+
|
|
53
61
|
"""
|
|
54
62
|
http_method = "get".upper()
|
|
55
63
|
api_url = format_url(f"""
|
|
@@ -51,6 +51,14 @@ class ForwardingProfileAPI(APIClient):
|
|
|
51
51
|
... return
|
|
52
52
|
... for profile in profile_list:
|
|
53
53
|
... print(profile.as_dict())
|
|
54
|
+
|
|
55
|
+
Client-side filtering with JMESPath:
|
|
56
|
+
|
|
57
|
+
The response object supports client-side filtering and
|
|
58
|
+
projection via ``resp.search(expression)``. See the
|
|
59
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
60
|
+
expression syntax.
|
|
61
|
+
|
|
54
62
|
"""
|
|
55
63
|
http_method = "get".upper()
|
|
56
64
|
api_url = format_url(f"""
|
|
@@ -52,6 +52,14 @@ class TrustedNetworksAPI(APIClient):
|
|
|
52
52
|
... print(f"Total trusted networks found: {len(network_list)}")
|
|
53
53
|
... for network in network_list:
|
|
54
54
|
... print(network.as_dict())
|
|
55
|
+
|
|
56
|
+
Client-side filtering with JMESPath:
|
|
57
|
+
|
|
58
|
+
The response object supports client-side filtering and
|
|
59
|
+
projection via ``resp.search(expression)``. See the
|
|
60
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
61
|
+
expression syntax.
|
|
62
|
+
|
|
55
63
|
"""
|
|
56
64
|
http_method = "get".upper()
|
|
57
65
|
api_url = format_url(f"""
|
|
@@ -49,6 +49,14 @@ class WebAppServiceAPI(APIClient):
|
|
|
49
49
|
... else:
|
|
50
50
|
... for policy in policies:
|
|
51
51
|
... print(policy)
|
|
52
|
+
|
|
53
|
+
Client-side filtering with JMESPath:
|
|
54
|
+
|
|
55
|
+
The response object supports client-side filtering and
|
|
56
|
+
projection via ``resp.search(expression)``. See the
|
|
57
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
58
|
+
expression syntax.
|
|
59
|
+
|
|
52
60
|
"""
|
|
53
61
|
http_method = "get".upper()
|
|
54
62
|
api_url = format_url(f"""
|
|
@@ -59,6 +59,14 @@ class WebPolicyAPI(APIClient):
|
|
|
59
59
|
... return
|
|
60
60
|
... for policy in policy_list:
|
|
61
61
|
... print(policy.as_dict())
|
|
62
|
+
|
|
63
|
+
Client-side filtering with JMESPath:
|
|
64
|
+
|
|
65
|
+
The response object supports client-side filtering and
|
|
66
|
+
projection via ``resp.search(expression)``. See the
|
|
67
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
68
|
+
expression syntax.
|
|
69
|
+
|
|
62
70
|
"""
|
|
63
71
|
http_method = "get".upper()
|
|
64
72
|
api_url = format_url(f"""
|
|
@@ -65,6 +65,14 @@ class AdminAPI(APIClient):
|
|
|
65
65
|
... print(f"Total department found: {len(dept_list)}")
|
|
66
66
|
... for dept in dept_list:
|
|
67
67
|
... print(dept.as_dict())
|
|
68
|
+
|
|
69
|
+
Client-side filtering with JMESPath:
|
|
70
|
+
|
|
71
|
+
The response object supports client-side filtering and
|
|
72
|
+
projection via ``resp.search(expression)``. See the
|
|
73
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
74
|
+
expression syntax.
|
|
75
|
+
|
|
68
76
|
"""
|
|
69
77
|
http_method = "get".upper()
|
|
70
78
|
api_url = format_url(f"""
|
|
@@ -130,6 +138,14 @@ class AdminAPI(APIClient):
|
|
|
130
138
|
... print(f"Total location found: {len(locations_list)}")
|
|
131
139
|
... for location in locations_list:
|
|
132
140
|
... print(location.as_dict())
|
|
141
|
+
|
|
142
|
+
Client-side filtering with JMESPath:
|
|
143
|
+
|
|
144
|
+
The response object supports client-side filtering and
|
|
145
|
+
projection via ``resp.search(expression)``. See the
|
|
146
|
+
`JMESPath documentation <https://jmespath.org/>`_ for
|
|
147
|
+
expression syntax.
|
|
148
|
+
|
|
133
149
|
"""
|
|
134
150
|
http_method = "get".upper()
|
|
135
151
|
api_url = format_url(f"""
|