zscaler-sdk-python 1.8.3__tar.gz → 1.8.5__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.
Files changed (427) hide show
  1. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/PKG-INFO +25 -19
  2. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/README.md +23 -17
  3. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/pyproject.toml +2 -2
  4. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/__init__.py +1 -1
  5. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/constants.py +1 -1
  6. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/errors/response_checker.py +1 -0
  7. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/exceptions/exceptions.py +2 -0
  8. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/helpers.py +14 -11
  9. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/logger.py +108 -6
  10. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/oneapi_client.py +3 -3
  11. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/oneapi_oauth_client.py +69 -29
  12. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/oneapi_object.py +2 -2
  13. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/oneapi_response.py +38 -50
  14. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/request_executor.py +34 -32
  15. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/dlp_dictionary.py +5 -5
  16. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/traffic_static_ip.py +37 -14
  17. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/LICENSE.md +0 -0
  18. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/api_client.py +0 -0
  19. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/cache/__init__.py +0 -0
  20. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/cache/cache.py +0 -0
  21. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/cache/no_op_cache.py +0 -0
  22. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/cache/zscaler_cache.py +0 -0
  23. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/config/__init__.py +0 -0
  24. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/config/config_setter.py +0 -0
  25. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/config/config_validator.py +0 -0
  26. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/error_messages.py +0 -0
  27. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/errors/__init__.py +0 -0
  28. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/errors/error.py +0 -0
  29. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/errors/http_error.py +0 -0
  30. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/errors/zscaler_api_error.py +0 -0
  31. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/exceptions/__init__.py +0 -0
  32. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/oneapi_collection.py +0 -0
  33. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/oneapi_http_client.py +0 -0
  34. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ratelimiter/__init__.py +0 -0
  35. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ratelimiter/ratelimiter.py +0 -0
  36. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/user_agent.py +0 -0
  37. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/utils.py +0 -0
  38. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/__init__.py +0 -0
  39. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/admin_user.py +0 -0
  40. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/company.py +0 -0
  41. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/devices.py +0 -0
  42. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/entitlements.py +0 -0
  43. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/fail_open_policy.py +0 -0
  44. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/forwarding_profile.py +0 -0
  45. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/legacy.py +0 -0
  46. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/admin_roles.py +0 -0
  47. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/admin_user.py +0 -0
  48. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/devices.py +0 -0
  49. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/failopenpolicy.py +0 -0
  50. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/forwardingprofile.py +0 -0
  51. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/getcompanyinfo.py +0 -0
  52. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/manage_pass.py +0 -0
  53. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/secrets_otp.py +0 -0
  54. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/secrets_passwords.py +0 -0
  55. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/trustednetworks.py +0 -0
  56. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/webappservice.py +0 -0
  57. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/webpolicy.py +0 -0
  58. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/webprivacy.py +0 -0
  59. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  60. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  61. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/secrets.py +0 -0
  62. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/trusted_networks.py +0 -0
  63. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/web_app_service.py +0 -0
  64. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/web_policy.py +0 -0
  65. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/web_privacy.py +0 -0
  66. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zcc/zcc_service.py +0 -0
  67. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/__init__.py +0 -0
  68. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/admin.py +0 -0
  69. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/alerts.py +0 -0
  70. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/apps.py +0 -0
  71. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/devices.py +0 -0
  72. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/inventory.py +0 -0
  73. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/legacy.py +0 -0
  74. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/administration.py +0 -0
  75. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/alerts.py +0 -0
  76. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/application_users.py +0 -0
  77. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/applications.py +0 -0
  78. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  79. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/common.py +0 -0
  80. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/devices.py +0 -0
  81. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/snapshot.py +0 -0
  82. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/software_inventory.py +0 -0
  83. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/troubleshooting.py +0 -0
  84. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/models/users.py +0 -0
  85. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/snapshot.py +0 -0
  86. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/troubleshooting.py +0 -0
  87. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/users.py +0 -0
  88. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zdx/zdx_service.py +0 -0
  89. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/__init__.py +0 -0
  90. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/activate.py +0 -0
  91. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/admin_roles.py +0 -0
  92. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/admin_users.py +0 -0
  93. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/advanced_settings.py +0 -0
  94. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/alert_subscriptions.py +0 -0
  95. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/apptotal.py +0 -0
  96. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/atp_policy.py +0 -0
  97. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/audit_logs.py +0 -0
  98. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/authentication_settings.py +0 -0
  99. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/bandwidth_classes.py +0 -0
  100. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/bandwidth_control_rules.py +0 -0
  101. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/browser_control_settings.py +0 -0
  102. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/casb_dlp_rules.py +0 -0
  103. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/casb_malware_rules.py +0 -0
  104. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_app_instances.py +0 -0
  105. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_applications.py +0 -0
  106. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_browser_isolation.py +0 -0
  107. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_firewall.py +0 -0
  108. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_firewall_dns.py +0 -0
  109. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_firewall_ips.py +0 -0
  110. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_firewall_rules.py +0 -0
  111. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_nss.py +0 -0
  112. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloud_to_cloud_ir.py +0 -0
  113. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/cloudappcontrol.py +0 -0
  114. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/dedicated_ip_gateways.py +0 -0
  115. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/device_management.py +0 -0
  116. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/dlp_engine.py +0 -0
  117. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/dlp_resources.py +0 -0
  118. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/dlp_templates.py +0 -0
  119. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/dlp_web_rules.py +0 -0
  120. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/dns_gatways.py +0 -0
  121. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/end_user_notification.py +0 -0
  122. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/file_type_control_rule.py +0 -0
  123. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/forwarding_control.py +0 -0
  124. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/ftp_control_policy.py +0 -0
  125. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/gre_tunnel.py +0 -0
  126. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/intermediate_certificates.py +0 -0
  127. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/iot_report.py +0 -0
  128. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/ipv6_config.py +0 -0
  129. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/legacy.py +0 -0
  130. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/locations.py +0 -0
  131. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/malware_protection_policy.py +0 -0
  132. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/mobile_threat_settings.py +0 -0
  133. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/__init__.py +0 -0
  134. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/activation.py +0 -0
  135. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/admin_roles.py +0 -0
  136. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/admin_users.py +0 -0
  137. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/advanced_settings.py +0 -0
  138. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  139. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/alert_subscriptions.py +0 -0
  140. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/apptotal.py +0 -0
  141. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/authentication_settings.py +0 -0
  142. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/bandwidth_classes.py +0 -0
  143. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
  144. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/browser_control_settings.py +0 -0
  145. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/casb_dlp_rules.py +0 -0
  146. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/casb_malware_rules.py +0 -0
  147. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_app_instances.py +0 -0
  148. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_app_policy.py +0 -0
  149. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  150. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  151. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  152. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  153. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  154. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  155. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  156. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  157. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  158. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
  159. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  160. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  161. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_nss.py +0 -0
  162. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloud_to_cloud_ir.py +0 -0
  163. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/cloudappcontrol.py +0 -0
  164. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/common.py +0 -0
  165. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
  166. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/device_groups.py +0 -0
  167. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/devices.py +0 -0
  168. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/dlp_dictionary.py +0 -0
  169. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/dlp_engine.py +0 -0
  170. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/dlp_resources.py +0 -0
  171. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/dlp_templates.py +0 -0
  172. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/dlp_web_rules.py +0 -0
  173. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/dns_gateways.py +0 -0
  174. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/endusernotification.py +0 -0
  175. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/filetyperules.py +0 -0
  176. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  177. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/ftp_control_policy.py +0 -0
  178. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/gre_recommended_list.py +0 -0
  179. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  180. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/gre_tunnels.py +0 -0
  181. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/gre_vips.py +0 -0
  182. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/intermediate_certificates.py +0 -0
  183. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/iotreport.py +0 -0
  184. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/ipv6_config.py +0 -0
  185. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/location_group.py +0 -0
  186. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/location_management.py +0 -0
  187. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/malware_protection_settings.py +0 -0
  188. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/mobile_threat_settings.py +0 -0
  189. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/nat_control_policy.py +0 -0
  190. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/nss_servers.py +0 -0
  191. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/organization_information.py +0 -0
  192. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/pac_files.py +0 -0
  193. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/proxies.py +0 -0
  194. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/proxy_gateways.py +0 -0
  195. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/remoteassistance.py +0 -0
  196. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/risk_profiles.py +0 -0
  197. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/rule_labels.py +0 -0
  198. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/saas_security_api.py +0 -0
  199. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/sandboxrules.py +0 -0
  200. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/security_policy_settings.py +0 -0
  201. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/shadow_it_report.py +0 -0
  202. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  203. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/subclouds.py +0 -0
  204. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/system_audit.py +0 -0
  205. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
  206. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/time_intervals.py +0 -0
  207. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/traffic_datacenters.py +0 -0
  208. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
  209. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/traffic_extranet.py +0 -0
  210. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/traffic_static_ip.py +0 -0
  211. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  212. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  213. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/url_filtering_rules.py +0 -0
  214. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/urlcategory.py +0 -0
  215. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/user_management.py +0 -0
  216. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/vzen_clusters.py +0 -0
  217. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/vzen_nodes.py +0 -0
  218. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/workload_groups.py +0 -0
  219. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/models/zpa_gateway.py +0 -0
  220. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/nat_control_policy.py +0 -0
  221. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/nss_servers.py +0 -0
  222. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/organization_information.py +0 -0
  223. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/pac_files.py +0 -0
  224. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/policy_export.py +0 -0
  225. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/proxies.py +0 -0
  226. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/remote_assistance.py +0 -0
  227. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/risk_profiles.py +0 -0
  228. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/rule_labels.py +0 -0
  229. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/saas_security_api.py +0 -0
  230. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/sandbox.py +0 -0
  231. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/sandbox_rules.py +0 -0
  232. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/security_policy_settings.py +0 -0
  233. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/shadow_it_report.py +0 -0
  234. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/ssl_inspection_rules.py +0 -0
  235. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/sub_clouds.py +0 -0
  236. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/system_audit.py +0 -0
  237. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/tenancy_restriction_profile.py +0 -0
  238. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/time_intervals.py +0 -0
  239. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/traffic_datacenters.py +0 -0
  240. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/traffic_extranet.py +0 -0
  241. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  242. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/url_categories.py +0 -0
  243. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/url_filtering.py +0 -0
  244. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/user_management.py +0 -0
  245. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/vzen_clusters.py +0 -0
  246. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/vzen_nodes.py +0 -0
  247. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/workload_groups.py +0 -0
  248. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/zia_service.py +0 -0
  249. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zia/zpa_gateway.py +0 -0
  250. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/__init__.py +0 -0
  251. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/api_client.py +0 -0
  252. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/groups.py +0 -0
  253. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/models/api_client.py +0 -0
  254. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/models/common.py +0 -0
  255. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/models/groups.py +0 -0
  256. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/models/resource_servers.py +0 -0
  257. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/models/user_entitlement.py +0 -0
  258. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/models/users.py +0 -0
  259. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/resource_servers.py +0 -0
  260. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/user_entitlement.py +0 -0
  261. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/users.py +0 -0
  262. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zidentity/zidentity_service.py +0 -0
  263. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/__init__.py +0 -0
  264. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/admin_sso_controller.py +0 -0
  265. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/administrator_controller.py +0 -0
  266. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/api_keys.py +0 -0
  267. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_connector_groups.py +0 -0
  268. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_connector_schedule.py +0 -0
  269. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_connectors.py +0 -0
  270. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_protection.py +0 -0
  271. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_segment_by_type.py +0 -0
  272. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_segments_ba.py +0 -0
  273. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_segments_ba_v2.py +0 -0
  274. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_segments_inspection.py +0 -0
  275. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/app_segments_pra.py +0 -0
  276. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/application_segment.py +0 -0
  277. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/c2c_ip_ranges.py +0 -0
  278. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/cbi_banner.py +0 -0
  279. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/cbi_certificate.py +0 -0
  280. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/cbi_profile.py +0 -0
  281. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/cbi_region.py +0 -0
  282. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  283. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/certificates.py +0 -0
  284. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/client_settings.py +0 -0
  285. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/cloud_connector_groups.py +0 -0
  286. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/config_override_controller.py +0 -0
  287. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/customer_controller.py +0 -0
  288. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/customer_domain.py +0 -0
  289. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/customer_version_profile.py +0 -0
  290. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/emergency_access.py +0 -0
  291. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/enrollment_certificates.py +0 -0
  292. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/idp.py +0 -0
  293. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/legacy.py +0 -0
  294. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/lss.py +0 -0
  295. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/machine_groups.py +0 -0
  296. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/microtenants.py +0 -0
  297. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/administrator_controller.py +0 -0
  298. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/api_keys.py +0 -0
  299. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/app_connector_groups.py +0 -0
  300. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  301. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/app_connectors.py +0 -0
  302. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  303. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/app_protection_profile.py +0 -0
  304. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/application_segment.py +0 -0
  305. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/application_segment_lb.py +0 -0
  306. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/application_servers.py +0 -0
  307. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/c2c_ip_ranges.py +0 -0
  308. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/cbi_banner.py +0 -0
  309. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/cbi_certificate.py +0 -0
  310. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/cbi_profile.py +0 -0
  311. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/cbi_region.py +0 -0
  312. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  313. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/certificates.py +0 -0
  314. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/client_settings.py +0 -0
  315. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  316. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/common.py +0 -0
  317. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/config_override_controller.py +0 -0
  318. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/customer_controller.py +0 -0
  319. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/customer_domain.py +0 -0
  320. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/customer_version_profile.py +0 -0
  321. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/emergency_access.py +0 -0
  322. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  323. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/idp.py +0 -0
  324. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/lss.py +0 -0
  325. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/machine_groups.py +0 -0
  326. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/microtenants.py +0 -0
  327. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/npn_client_controller.py +0 -0
  328. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
  329. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
  330. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/posture_profiles.py +0 -0
  331. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/pra_approval.py +0 -0
  332. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/pra_console.py +0 -0
  333. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  334. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/pra_credential.py +0 -0
  335. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/pra_portal.py +0 -0
  336. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/private_cloud_controller.py +0 -0
  337. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/private_cloud_group.py +0 -0
  338. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/provisioning_keys.py +0 -0
  339. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/role_controller.py +0 -0
  340. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/saml_attributes.py +0 -0
  341. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/scim_attributes.py +0 -0
  342. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/scim_groups.py +0 -0
  343. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/segment_group.py +0 -0
  344. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/server_group.py +0 -0
  345. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/service_edge_groups.py +0 -0
  346. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  347. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/service_edges.py +0 -0
  348. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/trusted_network.py +0 -0
  349. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/user_portal_controller.py +0 -0
  350. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/models/user_portal_link.py +0 -0
  351. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/npn_client_controller.py +0 -0
  352. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/policies.py +0 -0
  353. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/posture_profiles.py +0 -0
  354. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/pra_approval.py +0 -0
  355. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/pra_console.py +0 -0
  356. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/pra_credential.py +0 -0
  357. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/pra_credential_pool.py +0 -0
  358. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/pra_portal.py +0 -0
  359. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/private_cloud_controller.py +0 -0
  360. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/private_cloud_group.py +0 -0
  361. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/provisioning.py +0 -0
  362. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/role_controller.py +0 -0
  363. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/saml_attributes.py +0 -0
  364. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/scim_attributes.py +0 -0
  365. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/scim_groups.py +0 -0
  366. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/segment_groups.py +0 -0
  367. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/server_groups.py +0 -0
  368. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/servers.py +0 -0
  369. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/service_edge_group.py +0 -0
  370. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/service_edge_schedule.py +0 -0
  371. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/service_edges.py +0 -0
  372. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/trusted_networks.py +0 -0
  373. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/user_portal_controller.py +0 -0
  374. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/user_portal_link.py +0 -0
  375. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zpa/zpa_service.py +0 -0
  376. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/__init__.py +0 -0
  377. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/account_details.py +0 -0
  378. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/activation.py +0 -0
  379. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/admin_roles.py +0 -0
  380. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/admin_users.py +0 -0
  381. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/api_keys.py +0 -0
  382. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/ec_groups.py +0 -0
  383. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/forwarding_gateways.py +0 -0
  384. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/forwarding_rules.py +0 -0
  385. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/ip_destination_groups.py +0 -0
  386. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/ip_groups.py +0 -0
  387. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/ip_source_groups.py +0 -0
  388. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/legacy.py +0 -0
  389. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/location_management.py +0 -0
  390. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/location_template.py +0 -0
  391. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/activation.py +0 -0
  392. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/admin_roles.py +0 -0
  393. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/admin_users.py +0 -0
  394. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/api_keys.py +0 -0
  395. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/common.py +0 -0
  396. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/ec_group_vm.py +0 -0
  397. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/ecgroup.py +0 -0
  398. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  399. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/forwarding_rules.py +0 -0
  400. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  401. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/ip_groups.py +0 -0
  402. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/ip_source_groups.py +0 -0
  403. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/location_management.py +0 -0
  404. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/location_templates.py +0 -0
  405. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/nw_service.py +0 -0
  406. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/nw_service_groups.py +0 -0
  407. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/provisioning_url.py +0 -0
  408. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  409. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/models/zpa_resources.py +0 -0
  410. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/nw_service.py +0 -0
  411. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/nw_service_groups.py +0 -0
  412. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/provisioning_url.py +0 -0
  413. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/ztw/ztw_service.py +0 -0
  414. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/__init__.py +0 -0
  415. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/audit_logs.py +0 -0
  416. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/dlp_incidents.py +0 -0
  417. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/legacy.py +0 -0
  418. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/audit_logs.py +0 -0
  419. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/change_history.py +0 -0
  420. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/common.py +0 -0
  421. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/generated_tickets.py +0 -0
  422. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/incident_details.py +0 -0
  423. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/incident_evidence.py +0 -0
  424. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/incident_group_search.py +0 -0
  425. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/incident_search.py +0 -0
  426. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/zscaler/zwa/models/incident_trigger.py +0 -0
  427. {zscaler_sdk_python-1.8.3 → zscaler_sdk_python-1.8.5}/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.8.3
3
+ Version: 1.8.5
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
@@ -26,9 +26,9 @@ Requires-Dist: arrow (>=1.3.0)
26
26
  Requires-Dist: cryptography (>=45.0.2)
27
27
  Requires-Dist: flatdict (>=4.0.0)
28
28
  Requires-Dist: pydash (>=8.0.3)
29
- Requires-Dist: pyjwt (>=2.8.0)
30
29
  Requires-Dist: python-box (>=7.3.0)
31
30
  Requires-Dist: python-dateutil (>=2.9.0)
31
+ Requires-Dist: python-jose[cryptography] (>=3.3.0)
32
32
  Requires-Dist: pytz (>=2024.2)
33
33
  Requires-Dist: pyyaml (>=6.0.0)
34
34
  Requires-Dist: requests (>=2.32.3)
@@ -414,6 +414,7 @@ or
414
414
 
415
415
  ```
416
416
  -----BEGIN PRIVATE KEY-----
417
+ # Example private key (not a real key)
417
418
  MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCv3krdYg3z7h0H
418
419
  60QoePJMghllQxsfPxp3mgFfYEaIbF88Z8dvPZEfhAtP19/Mv62ASjwgqzQzKHRV
419
420
  -----END PRIVATE KEY-----
@@ -554,10 +555,11 @@ query_parameters = {'page_size': 100}
554
555
  groups, resp, err = client.zia.user_management.list_groups(query_parameters)
555
556
 
556
557
  while resp.has_next():
557
- more_groups, err = resp.next()
558
+ more_groups, resp, err = resp.next() # Unpack all 3 return values
558
559
  if err:
559
560
  break
560
- groups.extend(more_groups)
561
+ if more_groups:
562
+ groups.extend(more_groups)
561
563
  ```
562
564
 
563
565
  ### Searching and Filtering
@@ -595,12 +597,13 @@ def main():
595
597
  print(group)
596
598
 
597
599
  while resp.has_next():
598
- next_page, err = resp.next()
600
+ next_page, resp, err = resp.next() # Unpack all 3 return values
599
601
  if err:
600
602
  print(f"Error fetching next page: {err}")
601
603
  break
602
- for group in next_page:
603
- print(group)
604
+ if next_page:
605
+ for group in next_page:
606
+ print(group)
604
607
 
605
608
  try:
606
609
  resp.next() # Will raise StopIteration if no more data
@@ -613,18 +616,21 @@ if __name__ == "__main__":
613
616
 
614
617
  ### Pagination Limits and Controls
615
618
 
616
- Each Zscaler service has its own pagination requiremens and max page size:
617
-
618
- | Service | Default Page Size | Max Page Size | Notes |
619
- |---------|-------------------|---------------|-------------------------------------------------|
620
- | ZCC | Varies | Varies | Uses `pageSize` (camelCase) |
621
- | ZDX | 10 | Varies | Uses `limit` + `offset`, similar to cursor API |
622
- | ZIA | 100 | Varies | Uses `pageSize` (camelCase) |
623
- | ZPA | 100 | 500 | Uses `pagesize` (lowercase) |
624
- | ZTW | 100 | Varies | Uses `pageSize` (camelCase) |
625
- | ZWA | Varies | Varies | Uses `pageSize` (camelCase) |
626
-
627
- ⚠️ **Note:** Always use `snake_case` for all parameter names, even when the API expects camelCase.The SDK handles conversion internally.
619
+ Each Zscaler service has its own pagination requirements and limits. The SDK automatically respects these API defaults when no `page_size` is provided:
620
+
621
+ | Service | API Default Page Size | Max Page Size | Pagination Parameters |
622
+ |---------|-----------------------|---------------|-------------------------------------------------|
623
+ | ZCC | Varies by endpoint | Varies | Uses `page`, `pageSize` |
624
+ | ZDX | 10 | Varies | Uses `limit` + `offset` (cursor-based) |
625
+ | ZIA | 100 | 1000 | Uses `page`, `pageSize` |
626
+ | ZPA | 20 | 500 | Uses `page`, `pagesize` |
627
+ | ZTW | 100 | Varies | Uses `page`, `pageSize` |
628
+ | ZWA | Varies by endpoint | Varies | Uses `page`, `pageSize` |
629
+
630
+ **Important Notes:**
631
+ - ✅ The SDK automatically uses each API's default page size when no `page_size` is specified
632
+ - ✅ Always use `snake_case` for parameter names (e.g., `page_size`). The SDK handles conversion internally
633
+ - ✅ Pagination stops automatically when fewer results than the page size are returned
628
634
 
629
635
 
630
636
  You can control how many total items or pages the SDK will fetch even if more data is available.
@@ -375,6 +375,7 @@ or
375
375
 
376
376
  ```
377
377
  -----BEGIN PRIVATE KEY-----
378
+ # Example private key (not a real key)
378
379
  MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCv3krdYg3z7h0H
379
380
  60QoePJMghllQxsfPxp3mgFfYEaIbF88Z8dvPZEfhAtP19/Mv62ASjwgqzQzKHRV
380
381
  -----END PRIVATE KEY-----
@@ -515,10 +516,11 @@ query_parameters = {'page_size': 100}
515
516
  groups, resp, err = client.zia.user_management.list_groups(query_parameters)
516
517
 
517
518
  while resp.has_next():
518
- more_groups, err = resp.next()
519
+ more_groups, resp, err = resp.next() # Unpack all 3 return values
519
520
  if err:
520
521
  break
521
- groups.extend(more_groups)
522
+ if more_groups:
523
+ groups.extend(more_groups)
522
524
  ```
523
525
 
524
526
  ### Searching and Filtering
@@ -556,12 +558,13 @@ def main():
556
558
  print(group)
557
559
 
558
560
  while resp.has_next():
559
- next_page, err = resp.next()
561
+ next_page, resp, err = resp.next() # Unpack all 3 return values
560
562
  if err:
561
563
  print(f"Error fetching next page: {err}")
562
564
  break
563
- for group in next_page:
564
- print(group)
565
+ if next_page:
566
+ for group in next_page:
567
+ print(group)
565
568
 
566
569
  try:
567
570
  resp.next() # Will raise StopIteration if no more data
@@ -574,18 +577,21 @@ if __name__ == "__main__":
574
577
 
575
578
  ### Pagination Limits and Controls
576
579
 
577
- Each Zscaler service has its own pagination requiremens and max page size:
578
-
579
- | Service | Default Page Size | Max Page Size | Notes |
580
- |---------|-------------------|---------------|-------------------------------------------------|
581
- | ZCC | Varies | Varies | Uses `pageSize` (camelCase) |
582
- | ZDX | 10 | Varies | Uses `limit` + `offset`, similar to cursor API |
583
- | ZIA | 100 | Varies | Uses `pageSize` (camelCase) |
584
- | ZPA | 100 | 500 | Uses `pagesize` (lowercase) |
585
- | ZTW | 100 | Varies | Uses `pageSize` (camelCase) |
586
- | ZWA | Varies | Varies | Uses `pageSize` (camelCase) |
587
-
588
- ⚠️ **Note:** Always use `snake_case` for all parameter names, even when the API expects camelCase.The SDK handles conversion internally.
580
+ Each Zscaler service has its own pagination requirements and limits. The SDK automatically respects these API defaults when no `page_size` is provided:
581
+
582
+ | Service | API Default Page Size | Max Page Size | Pagination Parameters |
583
+ |---------|-----------------------|---------------|-------------------------------------------------|
584
+ | ZCC | Varies by endpoint | Varies | Uses `page`, `pageSize` |
585
+ | ZDX | 10 | Varies | Uses `limit` + `offset` (cursor-based) |
586
+ | ZIA | 100 | 1000 | Uses `page`, `pageSize` |
587
+ | ZPA | 20 | 500 | Uses `page`, `pagesize` |
588
+ | ZTW | 100 | Varies | Uses `page`, `pageSize` |
589
+ | ZWA | Varies by endpoint | Varies | Uses `page`, `pageSize` |
590
+
591
+ **Important Notes:**
592
+ - ✅ The SDK automatically uses each API's default page size when no `page_size` is specified
593
+ - ✅ Always use `snake_case` for parameter names (e.g., `page_size`). The SDK handles conversion internally
594
+ - ✅ Pagination stops automatically when fewer results than the page size are returned
589
595
 
590
596
 
591
597
  You can control how many total items or pages the SDK will fetch even if more data is available.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zscaler-sdk-python"
3
- version = "1.8.3"
3
+ version = "1.8.5"
4
4
  description = "Official Python SDK for the Zscaler Products"
5
5
  authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
6
6
  license = "MIT"
@@ -36,7 +36,7 @@ pytz = ">=2024.2"
36
36
  python-box = ">=7.3.0"
37
37
  python-dateutil = ">=2.9.0"
38
38
  flatdict = ">=4.0.0"
39
- pyjwt = ">=2.8.0"
39
+ python-jose = {extras = ["cryptography"], version = ">=3.3.0"}
40
40
  aenum = ">=3.1.11"
41
41
  pydash = ">=8.0.3"
42
42
  arrow = ">=1.3.0"
@@ -29,7 +29,7 @@ __license__ = "MIT"
29
29
  __contributors__ = [
30
30
  "William Guilherme",
31
31
  ]
32
- __version__ = "1.8.3"
32
+ __version__ = "1.8.5"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -15,7 +15,7 @@ ZPA_BASE_URLS = {
15
15
  DEV_AUTH_URL = "https://authn1.dev.zpath.net/authn/v1/oauth/token"
16
16
 
17
17
 
18
- RETRYABLE_STATUS_CODES = {408, 409, 412, 429, 500, 502, 503, 504}
18
+ RETRYABLE_STATUS_CODES = {429, 500, 502, 503, 504}
19
19
  MAX_RETRIES = 5
20
20
  BACKOFF_FACTOR = 1
21
21
  BACKOFF_BASE_DURATION = 2
@@ -7,6 +7,7 @@ from zscaler.exceptions import exceptions
7
7
 
8
8
  logger = logging.getLogger(__name__)
9
9
 
10
+
10
11
  # @staticmethod
11
12
  def check_response_for_error(url, response_details, response_body):
12
13
  """
@@ -2,6 +2,7 @@ import json
2
2
 
3
3
  raise_exception = False
4
4
 
5
+
5
6
  # Zscaler Base Exceptions
6
7
  class ZscalerBaseException(Exception):
7
8
  def __init__(self, url, response, response_body):
@@ -85,6 +86,7 @@ class TokenRefreshError(Exception):
85
86
  class HeaderUpdateError(Exception):
86
87
  pass
87
88
 
89
+
88
90
  class RetryTooLong(Exception):
89
91
  """Raised when backoff time exceeds maxRetrySeconds configuration."""
90
92
  pass
@@ -47,13 +47,14 @@ def to_snake_case(string):
47
47
  "dnsResolutionOnTransparentProxyIPv6UrlCategories": "dns_resolution_on_transparent_proxy_ipv6_url_categories",
48
48
  "dnsResolutionOnTransparentProxyIPv6Apps": "dns_resolution_on_transparent_proxy_ipv6_apps",
49
49
  "enableIPv6DnsOptimizationOnAllTransparentProxy": "enable_ipv6_dns_optimization_on_all_transparent_proxy",
50
- "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories": "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories",
50
+ "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories":
51
+ "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories",
51
52
  "endPointDLPLogType": "end_point_dlp_log_type",
52
53
  "emailDLPLogType": "email_dlp_log_type",
53
54
  "extranetDNSList": "extranet_dns_list",
54
55
  "primaryDNSServer": "primary_dns_server",
55
56
  "secondaryDNSServer": "secondary_dns_server",
56
-
57
+
57
58
  # ZCC Edge Case Attributes
58
59
  "enableUDPTransportSelection": "enable_udp_transport_selection",
59
60
  "interceptZIATrafficAllAdapters": "intercept_zia_traffic_all_adapters",
@@ -118,7 +119,7 @@ def to_snake_case(string):
118
119
  "enableZCCRevert": "enable_zcc_revert",
119
120
  "enableZiaDR": "enable_zia_dr",
120
121
  "purgeKerberosPreferredDCCache": "purge_kerberos_preferred_dc_cache",
121
-
122
+
122
123
  # ZPA Edge Cases
123
124
  "serverGroupDTOs": "server_group_dtos",
124
125
  "extranetDTO": "extranet_dto",
@@ -126,7 +127,7 @@ def to_snake_case(string):
126
127
  "locationDTO": "location_dto",
127
128
  "predefinedADPControls": "predefined_adp_controls",
128
129
  "runtimeOS": "runtime_os",
129
-
130
+
130
131
  # ZIdentity Edge Cases
131
132
  # "clientJWKsUrl": "clientJWKsUrl",
132
133
  }
@@ -184,14 +185,16 @@ def to_lower_camel_case(string):
184
185
  "dns_resolution_on_transparent_proxy_ipv6_exempt_apps": "dnsResolutionOnTransparentProxyIPv6ExemptApps",
185
186
  "dns_resolution_on_transparent_proxy_ipv6_url_categories": "dnsResolutionOnTransparentProxyIPv6UrlCategories",
186
187
  "dns_resolution_on_transparent_proxy_ipv6_apps": "dnsResolutionOnTransparentProxyIPv6Apps",
187
- "enable_ipv6_dns_optimization_on_all_transparent_proxy": "enableIPv6DnsOptimizationOnAllTransparentProxy",
188
- "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories": "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories",
188
+ "enable_ipv6_dns_optimization_on_all_transparent_proxy":
189
+ "enableIPv6DnsOptimizationOnAllTransparentProxy",
190
+ "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories":
191
+ "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories",
189
192
  "end_point_dlp_log_type": "endPointDLPLogType",
190
193
  "email_dlp_log_type": "emailDLPLogType",
191
194
  "extranet_dns_list": "extranetDNSList",
192
195
  "primary_dns_server": "primaryDNSServer",
193
196
  "secondary_dns_server": "secondaryDNSServer",
194
-
197
+
195
198
  # ZCC Edge Case Attributes
196
199
  "enable_udp_transport_selection": "enableUDPTransportSelection",
197
200
  "intercept_zia_traffic_all_adapters": "interceptZIATrafficAllAdapters",
@@ -255,7 +258,7 @@ def to_lower_camel_case(string):
255
258
  "delete_dhcp_option121_routes": "deleteDHCPOption121Routes",
256
259
  "enableZiaDR": "enable_zia_dr",
257
260
  "purgeKerberosPreferredDCCache": "purge_kerberos_preferred_dc_cache",
258
-
261
+
259
262
  # ZPA Edge Cases
260
263
  "server_group_dtos": "serverGroupDTOs",
261
264
  "extranet_dto": "extranetDTO",
@@ -321,17 +324,17 @@ def convert_keys_to_camel_case_selective(data, preserve_snake_case_keys=None):
321
324
  Recursively convert keys to camelCase while preserving specific snake_case keys.
322
325
  This function allows users to use snake_case for all attributes, and only converts
323
326
  to camelCase if the attribute is NOT in the preserve_snake_case_keys set.
324
-
327
+
325
328
  Args:
326
329
  data: Dictionary or list to convert
327
330
  preserve_snake_case_keys: Set of keys that should remain in snake_case
328
-
331
+
329
332
  Returns:
330
333
  Converted data with selective key preservation
331
334
  """
332
335
  if preserve_snake_case_keys is None:
333
336
  preserve_snake_case_keys = set()
334
-
337
+
335
338
  if isinstance(data, dict):
336
339
  result = {}
337
340
  for k, v in data.items():
@@ -7,6 +7,85 @@ from http.client import HTTPConnection
7
7
 
8
8
  LOG_FORMAT = "%(asctime)s - %(name)s - %(module)s - %(levelname)s - %(message)s"
9
9
 
10
+ # Fields to sanitize in logs (case-insensitive matching)
11
+ SENSITIVE_FIELDS = {
12
+ "password", "api_key", "apiKey", "apikey",
13
+ "clientSecret", "client_secret", "clientsecret",
14
+ "authorization", "Authorization",
15
+ "access_token", "accessToken", "accesstoken",
16
+ "refresh_token", "refreshToken", "refreshtoken",
17
+ "secret", "Secret",
18
+ "privateKey", "private_key", "privatekey",
19
+ "token", "Token",
20
+ "key", "Key",
21
+ }
22
+
23
+ # Sensitive header keys (case-insensitive)
24
+ SENSITIVE_HEADERS = {
25
+ "authorization", "x-api-key", "apikey", "api-key",
26
+ "clientsecret", "client-secret", "access-token",
27
+ "refresh-token", "x-auth-token",
28
+ }
29
+
30
+
31
+ def _sanitize_for_logging(data):
32
+ """
33
+ Recursively mask sensitive fields in dicts/lists for logging.
34
+
35
+ Args:
36
+ data: The data structure to sanitize (dict, list, or other)
37
+
38
+ Returns:
39
+ Sanitized copy of the data with sensitive fields masked
40
+ """
41
+ if isinstance(data, dict):
42
+ return {
43
+ k: "***REDACTED***" if k in SENSITIVE_FIELDS or k.lower() in SENSITIVE_FIELDS
44
+ else _sanitize_for_logging(v)
45
+ for k, v in data.items()
46
+ }
47
+ elif isinstance(data, list):
48
+ return [_sanitize_for_logging(item) for item in data]
49
+ else:
50
+ return data
51
+
52
+
53
+ def _sanitize_plaintext_for_logging(text):
54
+ """
55
+ Scan and mask sensitive keywords in plaintext strings.
56
+
57
+ Args:
58
+ text (str): Plain text that might contain sensitive data
59
+
60
+ Returns:
61
+ str: Text with sensitive patterns masked
62
+ """
63
+ import re
64
+
65
+ if not isinstance(text, str):
66
+ return text
67
+
68
+ # Patterns to match common sensitive data formats in plain text
69
+ # Match patterns like "password":"value", "password": "value", password=value, etc.
70
+ patterns = [
71
+ (r'("password"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
72
+ (r'("api_key"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
73
+ (r'("apiKey"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
74
+ (r'("clientSecret"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
75
+ (r'("client_secret"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
76
+ (r'("access_token"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
77
+ (r'("refresh_token"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
78
+ (r'("token"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
79
+ (r'("secret"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
80
+ (r'("privateKey"\s*:\s*")[^"]*(")', r'\1***REDACTED***\2'),
81
+ ]
82
+
83
+ sanitized_text = text
84
+ for pattern, replacement in patterns:
85
+ sanitized_text = re.sub(pattern, replacement, sanitized_text, flags=re.IGNORECASE)
86
+
87
+ return sanitized_text
88
+
10
89
 
11
90
  def setup_logging(logger_name="zscaler-sdk-python", enabled=None, verbose=None):
12
91
  """
@@ -66,12 +145,20 @@ def setup_logging(logger_name="zscaler-sdk-python", enabled=None, verbose=None):
66
145
 
67
146
 
68
147
  def dump_request(logger, url: str, method: str, json, params, headers, request_uuid: str, body=True):
69
- request_headers_filtered = {key: value for key, value in headers.items() if key != "Authorization"}
148
+ # Mask sensitive header values (e.g., Authorization, X-Api-Key, etc.)
149
+ request_headers_filtered = {
150
+ key: "***REDACTED***" if key.lower() in SENSITIVE_HEADERS else value
151
+ for key, value in headers.items()
152
+ }
153
+
70
154
  # Log the request details before sending the request
71
155
  log_lines = []
72
156
  request_body = ""
73
- if body:
74
- request_body = jsonp.dumps(json)
157
+ if body and json:
158
+ # Sanitize request body before logging
159
+ sanitized_json = _sanitize_for_logging(json)
160
+ request_body = jsonp.dumps(sanitized_json)
161
+
75
162
  log_lines.append(f"\n---[ ZSCALER SDK REQUEST | ID:{request_uuid} ]-------------------------------")
76
163
  full_url = url
77
164
  if params:
@@ -100,8 +187,13 @@ def dump_response(
100
187
  duration_seconds = end_time - start_time
101
188
  # Convert the duration to milliseconds
102
189
  duration_ms = duration_seconds * 1000
103
- # Convert the headers to a regular dictionary
104
- response_headers_dict = dict(resp.headers)
190
+
191
+ # Mask sensitive headers in response
192
+ response_headers_dict = {
193
+ key: "***REDACTED***" if key.lower() in SENSITIVE_HEADERS else value
194
+ for key, value in dict(resp.headers).items()
195
+ }
196
+
105
197
  full_url = url
106
198
  if params:
107
199
  full_url += "?" + urlencode(params)
@@ -116,10 +208,20 @@ def dump_response(
116
208
  log_lines.append(f"{method} {full_url}")
117
209
  for key, value in response_headers_dict.items():
118
210
  log_lines.append(f"{key}: {value}")
211
+
119
212
  response_body = ""
120
213
  if resp.text:
121
214
  response_body = resp.text
215
+ # Try to sanitize response body if it's JSON
216
+ try:
217
+ parsed_body = jsonp.loads(response_body)
218
+ sanitized_body = _sanitize_for_logging(parsed_body)
219
+ response_body = jsonp.dumps(sanitized_body)
220
+ except (jsonp.JSONDecodeError, ValueError):
221
+ # If not JSON, sanitize sensitive keywords in plaintext
222
+ response_body = _sanitize_plaintext_for_logging(response_body)
223
+
122
224
  if response_body and response_body != "" and response_body != "null":
123
225
  log_lines.append(f"\n{response_body}")
124
226
  log_lines.append("-" * 68)
125
- logger.info("\n".join(log_lines))
227
+ logger.info("\n".join(log_lines))
@@ -259,7 +259,7 @@ class Client:
259
259
  if self._zidentity is None:
260
260
  self._zidentity = ZIdentityService(self._request_executor)
261
261
  return self._zidentity
262
-
262
+
263
263
  def __enter__(self):
264
264
  """
265
265
  Automatically create and set session within context manager.
@@ -276,7 +276,7 @@ class Client:
276
276
  if hasattr(self, "_session"):
277
277
  self._session.close()
278
278
  self.logger.debug("Session closed.")
279
-
279
+
280
280
  # Clean up Zscaler authentication session
281
281
  if hasattr(self, '_request_executor'):
282
282
  # For legacy clients, use their deauthenticate method
@@ -291,7 +291,7 @@ class Client:
291
291
  service_type = getattr(self._request_executor, '_last_service_type', None)
292
292
  if not service_type:
293
293
  service_type = self._config.get("client", {}).get("service", "zia")
294
-
294
+
295
295
  if service_type.lower() in ["zia", "ztw"]:
296
296
  # For ZIA, deauthenticate only if mutations occurred; executor will decide.
297
297
  self.logger.debug(f"Deauthenticating Zscaler session for {service_type} service.")