zscaler-sdk-python 1.5.8__tar.gz → 1.5.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/PKG-INFO +149 -2
  2. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/README.md +148 -1
  3. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/pyproject.toml +1 -1
  4. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/__init__.py +1 -1
  5. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/helpers.py +8 -1
  6. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_client.py +20 -0
  7. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/request_executor.py +76 -28
  8. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/utils.py +1 -0
  9. zscaler_sdk_python-1.5.9/zscaler/zia/admin_roles.py +648 -0
  10. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/admin_users.py +133 -45
  11. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/admin_roles.py +2 -0
  12. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/admin_users.py +5 -1
  13. zscaler_sdk_python-1.5.8/zscaler/zia/admin_roles.py +0 -350
  14. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/LICENSE.md +0 -0
  15. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/api_client.py +0 -0
  16. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/cache/__init__.py +0 -0
  17. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/cache/cache.py +0 -0
  18. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/cache/no_op_cache.py +0 -0
  19. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/cache/zscaler_cache.py +0 -0
  20. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/config/__init__.py +0 -0
  21. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/config/config_setter.py +0 -0
  22. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/config/config_validator.py +0 -0
  23. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/constants.py +0 -0
  24. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/error_messages.py +0 -0
  25. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/__init__.py +0 -0
  26. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/error.py +0 -0
  27. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/http_error.py +0 -0
  28. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/response_checker.py +0 -0
  29. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/errors/zscaler_api_error.py +0 -0
  30. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/exceptions/__init__.py +0 -0
  31. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/exceptions/exceptions.py +0 -0
  32. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/logger.py +0 -0
  33. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_collection.py +0 -0
  34. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_http_client.py +0 -0
  35. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_oauth_client.py +0 -0
  36. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_object.py +0 -0
  37. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/oneapi_response.py +0 -0
  38. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ratelimiter/__init__.py +0 -0
  39. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ratelimiter/ratelimiter.py +0 -0
  40. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/user_agent.py +0 -0
  41. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/__init__.py +0 -0
  42. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/admin_user.py +0 -0
  43. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/company.py +0 -0
  44. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/devices.py +0 -0
  45. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/entitlements.py +0 -0
  46. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/fail_open_policy.py +0 -0
  47. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/forwarding_profile.py +0 -0
  48. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/legacy.py +0 -0
  49. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/admin_roles.py +0 -0
  50. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/admin_user.py +0 -0
  51. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/devices.py +0 -0
  52. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/failopenpolicy.py +0 -0
  53. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/forwardingprofile.py +0 -0
  54. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/getcompanyinfo.py +0 -0
  55. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/manage_pass.py +0 -0
  56. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/secrets_otp.py +0 -0
  57. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/secrets_passwords.py +0 -0
  58. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/trustednetworks.py +0 -0
  59. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/webappservice.py +0 -0
  60. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/webpolicy.py +0 -0
  61. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/webprivacy.py +0 -0
  62. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  63. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  64. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/secrets.py +0 -0
  65. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/trusted_networks.py +0 -0
  66. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/web_app_service.py +0 -0
  67. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/web_policy.py +0 -0
  68. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/web_privacy.py +0 -0
  69. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zcc/zcc_service.py +0 -0
  70. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/__init__.py +0 -0
  71. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/admin.py +0 -0
  72. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/alerts.py +0 -0
  73. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/apps.py +0 -0
  74. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/devices.py +0 -0
  75. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/inventory.py +0 -0
  76. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/legacy.py +0 -0
  77. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/activeapplications.py +0 -0
  78. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/administration.py +0 -0
  79. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/alerts.py +0 -0
  80. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/application_users.py +0 -0
  81. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/applications.py +0 -0
  82. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  83. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/common.py +0 -0
  84. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/devices.py +0 -0
  85. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/software_inventory.py +0 -0
  86. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/troubleshooting.py +0 -0
  87. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/models/users.py +0 -0
  88. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/troubleshooting.py +0 -0
  89. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/users.py +0 -0
  90. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zdx/zdx_service.py +0 -0
  91. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/__init__.py +0 -0
  92. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/activate.py +0 -0
  93. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/advanced_settings.py +0 -0
  94. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/alert_subscriptions.py +0 -0
  95. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/apptotal.py +0 -0
  96. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/atp_policy.py +0 -0
  97. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/audit_logs.py +0 -0
  98. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/authentication_settings.py +0 -0
  99. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/bandwidth_classes.py +0 -0
  100. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/bandwidth_control_rules.py +0 -0
  101. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/browser_control_settings.py +0 -0
  102. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/casb_dlp_rules.py +0 -0
  103. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/casb_malware_rules.py +0 -0
  104. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_app_instances.py +0 -0
  105. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_applications.py +0 -0
  106. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_browser_isolation.py +0 -0
  107. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_firewall.py +0 -0
  108. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_firewall_dns.py +0 -0
  109. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_firewall_ips.py +0 -0
  110. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_firewall_rules.py +0 -0
  111. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloud_nss.py +0 -0
  112. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/cloudappcontrol.py +0 -0
  113. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dedicated_ip_gateways.py +0 -0
  114. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/device_management.py +0 -0
  115. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_dictionary.py +0 -0
  116. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_engine.py +0 -0
  117. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_resources.py +0 -0
  118. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_templates.py +0 -0
  119. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dlp_web_rules.py +0 -0
  120. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/dns_gatways.py +0 -0
  121. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/end_user_notification.py +0 -0
  122. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/file_type_control_rule.py +0 -0
  123. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/forwarding_control.py +0 -0
  124. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/ftp_control_policy.py +0 -0
  125. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/gre_tunnel.py +0 -0
  126. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/intermediate_certificates.py +0 -0
  127. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/iot_report.py +0 -0
  128. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/ipv6_config.py +0 -0
  129. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/legacy.py +0 -0
  130. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/locations.py +0 -0
  131. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/malware_protection_policy.py +0 -0
  132. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/mobile_threat_settings.py +0 -0
  133. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/__init__.py +0 -0
  134. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/activation.py +0 -0
  135. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/advanced_settings.py +0 -0
  136. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  137. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/alert_subscriptions.py +0 -0
  138. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/apptotal.py +0 -0
  139. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/authentication_settings.py +0 -0
  140. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/bandwidth_classes.py +0 -0
  141. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
  142. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/browser_control_settings.py +0 -0
  143. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/casb_dlp_rules.py +0 -0
  144. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/casb_malware_rules.py +0 -0
  145. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_app_instances.py +0 -0
  146. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_app_policy.py +0 -0
  147. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  148. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  149. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  150. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  151. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  152. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  153. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  154. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  155. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  156. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
  157. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  158. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  159. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloud_nss.py +0 -0
  160. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/cloudappcontrol.py +0 -0
  161. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/common.py +0 -0
  162. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
  163. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/device_groups.py +0 -0
  164. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/devices.py +0 -0
  165. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_dictionary.py +0 -0
  166. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_engine.py +0 -0
  167. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_resources.py +0 -0
  168. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_templates.py +0 -0
  169. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dlp_web_rules.py +0 -0
  170. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/dns_gateways.py +0 -0
  171. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/endusernotification.py +0 -0
  172. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/filetyperules.py +0 -0
  173. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  174. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/ftp_control_policy.py +0 -0
  175. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/gre_recommended_list.py +0 -0
  176. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  177. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/gre_tunnels.py +0 -0
  178. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/gre_vips.py +0 -0
  179. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/intermediate_certificates.py +0 -0
  180. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/iotreport.py +0 -0
  181. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/ipv6_config.py +0 -0
  182. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/location_group.py +0 -0
  183. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/location_management.py +0 -0
  184. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/malware_protection_settings.py +0 -0
  185. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/mobile_threat_settings.py +0 -0
  186. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/nat_control_policy.py +0 -0
  187. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/nss_servers.py +0 -0
  188. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/organization_information.py +0 -0
  189. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/pac_files.py +0 -0
  190. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/proxies.py +0 -0
  191. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/proxy_gateways.py +0 -0
  192. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/remoteassistance.py +0 -0
  193. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/risk_profiles.py +0 -0
  194. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/rule_labels.py +0 -0
  195. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/saas_security_api.py +0 -0
  196. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/sandboxrules.py +0 -0
  197. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/security_policy_settings.py +0 -0
  198. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/shadow_it_report.py +0 -0
  199. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  200. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/subclouds.py +0 -0
  201. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/system_audit.py +0 -0
  202. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
  203. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/time_intervals.py +0 -0
  204. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_datacenters.py +0 -0
  205. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
  206. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_extranet.py +0 -0
  207. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_static_ip.py +0 -0
  208. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  209. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  210. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/url_filtering_rules.py +0 -0
  211. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/urlcategory.py +0 -0
  212. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/user_management.py +0 -0
  213. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/vzen_clusters.py +0 -0
  214. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/workload_groups.py +0 -0
  215. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/models/zpa_gateway.py +0 -0
  216. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/nat_control_policy.py +0 -0
  217. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/nss_servers.py +0 -0
  218. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/organization_information.py +0 -0
  219. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/pac_files.py +0 -0
  220. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/policy_export.py +0 -0
  221. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/proxies.py +0 -0
  222. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/remote_assistance.py +0 -0
  223. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/risk_profiles.py +0 -0
  224. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/rule_labels.py +0 -0
  225. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/saas_security_api.py +0 -0
  226. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/sandbox.py +0 -0
  227. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/sandbox_rules.py +0 -0
  228. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/security_policy_settings.py +0 -0
  229. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/shadow_it_report.py +0 -0
  230. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/ssl_inspection_rules.py +0 -0
  231. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/sub_clouds.py +0 -0
  232. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/system_audit.py +0 -0
  233. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/tenancy_restriction_profile.py +0 -0
  234. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/time_intervals.py +0 -0
  235. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/traffic_datacenters.py +0 -0
  236. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/traffic_extranet.py +0 -0
  237. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/traffic_static_ip.py +0 -0
  238. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  239. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/url_categories.py +0 -0
  240. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/url_filtering.py +0 -0
  241. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/user_management.py +0 -0
  242. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/vzen_clusters.py +0 -0
  243. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/workload_groups.py +0 -0
  244. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/zia_service.py +0 -0
  245. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zia/zpa_gateway.py +0 -0
  246. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/__init__.py +0 -0
  247. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/administrator_controller.py +0 -0
  248. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_connector_groups.py +0 -0
  249. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_connector_schedule.py +0 -0
  250. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_connectors.py +0 -0
  251. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_protection.py +0 -0
  252. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segment_by_type.py +0 -0
  253. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segments_ba.py +0 -0
  254. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segments_ba_v2.py +0 -0
  255. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segments_inspection.py +0 -0
  256. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/app_segments_pra.py +0 -0
  257. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/application_segment.py +0 -0
  258. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_banner.py +0 -0
  259. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_certificate.py +0 -0
  260. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_profile.py +0 -0
  261. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_region.py +0 -0
  262. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  263. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/certificates.py +0 -0
  264. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/client_settings.py +0 -0
  265. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/cloud_connector_groups.py +0 -0
  266. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/customer_controller.py +0 -0
  267. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/customer_version_profile.py +0 -0
  268. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/emergency_access.py +0 -0
  269. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/enrollment_certificates.py +0 -0
  270. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/idp.py +0 -0
  271. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/legacy.py +0 -0
  272. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/lss.py +0 -0
  273. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/machine_groups.py +0 -0
  274. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/microtenants.py +0 -0
  275. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/administrator_controller.py +0 -0
  276. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_connector_groups.py +0 -0
  277. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  278. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_connectors.py +0 -0
  279. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  280. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/app_protection_profile.py +0 -0
  281. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/application_segment.py +0 -0
  282. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/application_segment_lb.py +0 -0
  283. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/application_servers.py +0 -0
  284. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_banner.py +0 -0
  285. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_certificate.py +0 -0
  286. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_profile.py +0 -0
  287. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_region.py +0 -0
  288. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  289. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/certificates.py +0 -0
  290. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/client_settings.py +0 -0
  291. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  292. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/common.py +0 -0
  293. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/customer_controller.py +0 -0
  294. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/customer_version_profile.py +0 -0
  295. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/emergency_access.py +0 -0
  296. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  297. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/idp.py +0 -0
  298. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/lss.py +0 -0
  299. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/machine_groups.py +0 -0
  300. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/microtenants.py +0 -0
  301. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
  302. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
  303. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/posture_profiles.py +0 -0
  304. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_approval.py +0 -0
  305. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_console.py +0 -0
  306. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  307. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_credential.py +0 -0
  308. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/pra_portal.py +0 -0
  309. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/provisioning_keys.py +0 -0
  310. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/role_controller.py +0 -0
  311. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/saml_attributes.py +0 -0
  312. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/scim_attributes.py +0 -0
  313. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/scim_groups.py +0 -0
  314. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/segment_group.py +0 -0
  315. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/server_group.py +0 -0
  316. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/service_edge_groups.py +0 -0
  317. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  318. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/service_edges.py +0 -0
  319. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/models/trusted_network.py +0 -0
  320. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/policies.py +0 -0
  321. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/posture_profiles.py +0 -0
  322. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_approval.py +0 -0
  323. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_console.py +0 -0
  324. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_credential.py +0 -0
  325. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_credential_pool.py +0 -0
  326. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/pra_portal.py +0 -0
  327. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/provisioning.py +0 -0
  328. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/role_controller.py +0 -0
  329. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/saml_attributes.py +0 -0
  330. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/scim_attributes.py +0 -0
  331. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/scim_groups.py +0 -0
  332. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/segment_groups.py +0 -0
  333. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/server_groups.py +0 -0
  334. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/servers.py +0 -0
  335. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/service_edge_group.py +0 -0
  336. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/service_edge_schedule.py +0 -0
  337. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/service_edges.py +0 -0
  338. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/trusted_networks.py +0 -0
  339. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zpa/zpa_service.py +0 -0
  340. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/__init__.py +0 -0
  341. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/account_details.py +0 -0
  342. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/activation.py +0 -0
  343. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/admin_roles.py +0 -0
  344. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/admin_users.py +0 -0
  345. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/api_keys.py +0 -0
  346. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ec_groups.py +0 -0
  347. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/forwarding_gateways.py +0 -0
  348. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/forwarding_rules.py +0 -0
  349. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ip_destination_groups.py +0 -0
  350. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ip_groups.py +0 -0
  351. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ip_source_groups.py +0 -0
  352. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/legacy.py +0 -0
  353. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/location_management.py +0 -0
  354. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/location_template.py +0 -0
  355. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/activation.py +0 -0
  356. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/admin_roles.py +0 -0
  357. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/admin_users.py +0 -0
  358. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/api_keys.py +0 -0
  359. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/common.py +0 -0
  360. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ec_group_vm.py +0 -0
  361. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ecgroup.py +0 -0
  362. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  363. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/forwarding_rules.py +0 -0
  364. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  365. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ip_groups.py +0 -0
  366. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/ip_source_groups.py +0 -0
  367. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/location_management.py +0 -0
  368. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/location_templates.py +0 -0
  369. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/nw_service.py +0 -0
  370. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/nw_service_groups.py +0 -0
  371. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/provisioning_url.py +0 -0
  372. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  373. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/models/zpa_resources.py +0 -0
  374. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/nw_service.py +0 -0
  375. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/nw_service_groups.py +0 -0
  376. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/provisioning_url.py +0 -0
  377. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/ztw/ztw_service.py +0 -0
  378. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/__init__.py +0 -0
  379. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/audit_logs.py +0 -0
  380. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/dlp_incidents.py +0 -0
  381. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/legacy.py +0 -0
  382. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/audit_logs.py +0 -0
  383. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/change_history.py +0 -0
  384. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/common.py +0 -0
  385. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/generated_tickets.py +0 -0
  386. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_details.py +0 -0
  387. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_evidence.py +0 -0
  388. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_group_search.py +0 -0
  389. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_search.py +0 -0
  390. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/models/incident_trigger.py +0 -0
  391. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.5.9}/zscaler/zwa/zwa_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zscaler-sdk-python
3
- Version: 1.5.8
3
+ Version: 1.5.9
4
4
  Summary: Official Python SDK for the Zscaler Products
5
5
  Home-page: https://github.com/zscaler/zscaler-sdk-python
6
6
  License: MIT
@@ -438,6 +438,81 @@ def main():
438
438
  Note, that custom headers will be overwritten with default headers with the same name.
439
439
  This doesn't allow breaking the client. Get default headers:
440
440
 
441
+ ### ZIA and ZTW Context Manager
442
+
443
+ The Zscaler SDK provides a context manager pattern that automatically handles authentication and session cleanup for both ZIA and ZTW services. This pattern ensures that all configuration changes are properly activated when the context manager exits.
444
+
445
+ #### How Context Manager Works
446
+
447
+ When you use the `with` statement with a Zscaler client, the following happens automatically:
448
+
449
+ 1. **Authentication**: The client authenticates when entering the context
450
+ 2. **Session Management**: A session is established and maintained throughout the context
451
+ 3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
452
+
453
+ #### Implicit Activation Process
454
+
455
+ The context manager implements an "implicit activation" approach where:
456
+
457
+ - **All changes are final**: Configuration changes are automatically activated when the context exits
458
+ - **No manual activation required**: You don't need to remember to call activation endpoints
459
+ - **Deterministic behavior**: You always know that exiting the context will activate changes
460
+ - **Automation-friendly**: Perfect for scripts and automation scenarios
461
+
462
+ #### Example Usage
463
+
464
+ ```py
465
+ from zscaler import ZscalerClient
466
+
467
+ config = {
468
+ "clientId": '{yourClientId}',
469
+ "clientSecret": '{yourClientSecret}',
470
+ "vanityDomain": '{yourvanityDomain}',
471
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
472
+ "customerId": "", # Optional parameter. Required only when using ZPA
473
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
474
+ "logging": {"enabled": False, "verbose": False},
475
+ }
476
+
477
+ def main():
478
+ with ZscalerClient(config) as client:
479
+ # Make ZIA configuration changes
480
+ added_role, response, error = client.zia.admin_roles.add_role(
481
+ name="New API Role",
482
+ description="Role created via API",
483
+ feature_permissions={"ZIA_ADMIN_ROLE": "READ"}
484
+ )
485
+ if error:
486
+ print(f"Error adding role: {error}")
487
+ return
488
+
489
+ # Make ZTW configuration changes
490
+ added_group, response, error = client.ztw.ip_destination_groups.add_group(
491
+ name="New IP Group",
492
+ description="IP group created via API"
493
+ )
494
+ if error:
495
+ print(f"Error adding IP group: {error}")
496
+ return
497
+
498
+ print("All changes made successfully")
499
+
500
+ # Context manager automatically deauthenticates here
501
+ # All staged changes are activated automatically for both ZIA and ZTW
502
+ print("Context exited - all changes have been activated")
503
+
504
+ if __name__ == "__main__":
505
+ main()
506
+ ```
507
+
508
+ #### Benefits
509
+
510
+ - **Automatic cleanup**: No need to manually deauthenticate
511
+ - **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
512
+ - **Staged configuration activation**: All changes are activated when the context exits
513
+ - **Simplified code**: No need to remember activation steps
514
+ - **Multi-service support**: Works seamlessly with both ZIA and ZTW services
515
+
441
516
  ## Zscaler OneAPI Rate Limiting
442
517
 
443
518
  Zscaler OneAPI provides unique rate limiting numbers for each individual product. Regardless of the product, a 429 response will be returned if too many requests are made within a given time.
@@ -730,7 +805,7 @@ Each one of the configuration values above can be turned into an environment var
730
805
 
731
806
  ## Zscaler Legacy API Framework
732
807
 
733
- The legacy Zscaler API is still utilized by several customers, and will remain in place for the foreable future with no specific annouced deprecation date.
808
+ The legacy Zscaler API is still utilized by several customers, and will remain in place for the foreseeable future with no specific announced deprecation date.
734
809
 
735
810
  ### ZIA Legacy Authentication
736
811
 
@@ -793,6 +868,78 @@ if __name__ == "__main__":
793
868
  main()
794
869
  ```
795
870
 
871
+ ### ZIA and ZTW Context Manager
872
+
873
+ The Zscaler SDK provides a context manager pattern that automatically handles authentication and session cleanup for both ZIA and ZTW services. This pattern ensures that all configuration changes are properly activated when the context manager exits.
874
+
875
+ #### How Context Manager Works
876
+
877
+ When you use the `with` statement with a Zscaler client, the following happens automatically:
878
+
879
+ 1. **Authentication**: The client authenticates when entering the context
880
+ 2. **Session Management**: A session is established and maintained throughout the context
881
+ 3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
882
+
883
+ #### Implicit Activation Process
884
+
885
+ The context manager implements an "implicit activation" approach where:
886
+
887
+ - **All changes are final**: Configuration changes are automatically activated when the context exits
888
+ - **No manual activation required**: You don't need to remember to call activation endpoints
889
+ - **Deterministic behavior**: You always know that exiting the context will activate changes
890
+ - **Automation-friendly**: Perfect for scripts and automation scenarios
891
+
892
+ #### Example Usage
893
+
894
+ ```py
895
+ import random
896
+ from zscaler.oneapi_client import LegacyZIAClient
897
+
898
+ config = {
899
+ "username": '{yourUsername}',
900
+ "password": '{yourPassword}',
901
+ "api_key": '{yourApiKey}',
902
+ "cloud": '{yourCloud}',
903
+ "logging": {"enabled": False, "verbose": False},
904
+ }
905
+
906
+ def main():
907
+ with LegacyZIAClient(config) as client:
908
+ # Make configuration changes
909
+ added_label, response, error = client.zia.rule_labels.add_label(
910
+ name=f"NewLabel_{random.randint(1000, 10000)}",
911
+ description=f"NewLabel_{random.randint(1000, 10000)}",
912
+ )
913
+ if error:
914
+ print(f"Error adding label: {error}")
915
+ return
916
+
917
+ # Make more changes
918
+ updated_role, response, error = client.zia.admin_roles.update_role(
919
+ role_id="12345",
920
+ name="Updated Role Name"
921
+ )
922
+ if error:
923
+ print(f"Error updating role: {error}")
924
+ return
925
+
926
+ print("All changes made successfully")
927
+
928
+ # Context manager automatically deauthenticates here
929
+ # All staged changes are activated automatically
930
+ print("Context exited - all changes have been activated")
931
+
932
+ if __name__ == "__main__":
933
+ main()
934
+ ```
935
+
936
+ #### Benefits
937
+
938
+ - **Automatic cleanup**: No need to manually deauthenticate
939
+ - **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
940
+ - **Staged configuration activation**: All changes are activated when the context exits
941
+ - **Simplified code**: No need to remember activation steps
942
+
796
943
  ### ZTW Legacy Authentication
797
944
 
798
945
  Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZTW API credentials.
@@ -399,6 +399,81 @@ def main():
399
399
  Note, that custom headers will be overwritten with default headers with the same name.
400
400
  This doesn't allow breaking the client. Get default headers:
401
401
 
402
+ ### ZIA and ZTW Context Manager
403
+
404
+ The Zscaler SDK provides a context manager pattern that automatically handles authentication and session cleanup for both ZIA and ZTW services. This pattern ensures that all configuration changes are properly activated when the context manager exits.
405
+
406
+ #### How Context Manager Works
407
+
408
+ When you use the `with` statement with a Zscaler client, the following happens automatically:
409
+
410
+ 1. **Authentication**: The client authenticates when entering the context
411
+ 2. **Session Management**: A session is established and maintained throughout the context
412
+ 3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
413
+
414
+ #### Implicit Activation Process
415
+
416
+ The context manager implements an "implicit activation" approach where:
417
+
418
+ - **All changes are final**: Configuration changes are automatically activated when the context exits
419
+ - **No manual activation required**: You don't need to remember to call activation endpoints
420
+ - **Deterministic behavior**: You always know that exiting the context will activate changes
421
+ - **Automation-friendly**: Perfect for scripts and automation scenarios
422
+
423
+ #### Example Usage
424
+
425
+ ```py
426
+ from zscaler import ZscalerClient
427
+
428
+ config = {
429
+ "clientId": '{yourClientId}',
430
+ "clientSecret": '{yourClientSecret}',
431
+ "vanityDomain": '{yourvanityDomain}',
432
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
433
+ "customerId": "", # Optional parameter. Required only when using ZPA
434
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
435
+ "logging": {"enabled": False, "verbose": False},
436
+ }
437
+
438
+ def main():
439
+ with ZscalerClient(config) as client:
440
+ # Make ZIA configuration changes
441
+ added_role, response, error = client.zia.admin_roles.add_role(
442
+ name="New API Role",
443
+ description="Role created via API",
444
+ feature_permissions={"ZIA_ADMIN_ROLE": "READ"}
445
+ )
446
+ if error:
447
+ print(f"Error adding role: {error}")
448
+ return
449
+
450
+ # Make ZTW configuration changes
451
+ added_group, response, error = client.ztw.ip_destination_groups.add_group(
452
+ name="New IP Group",
453
+ description="IP group created via API"
454
+ )
455
+ if error:
456
+ print(f"Error adding IP group: {error}")
457
+ return
458
+
459
+ print("All changes made successfully")
460
+
461
+ # Context manager automatically deauthenticates here
462
+ # All staged changes are activated automatically for both ZIA and ZTW
463
+ print("Context exited - all changes have been activated")
464
+
465
+ if __name__ == "__main__":
466
+ main()
467
+ ```
468
+
469
+ #### Benefits
470
+
471
+ - **Automatic cleanup**: No need to manually deauthenticate
472
+ - **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
473
+ - **Staged configuration activation**: All changes are activated when the context exits
474
+ - **Simplified code**: No need to remember activation steps
475
+ - **Multi-service support**: Works seamlessly with both ZIA and ZTW services
476
+
402
477
  ## Zscaler OneAPI Rate Limiting
403
478
 
404
479
  Zscaler OneAPI provides unique rate limiting numbers for each individual product. Regardless of the product, a 429 response will be returned if too many requests are made within a given time.
@@ -691,7 +766,7 @@ Each one of the configuration values above can be turned into an environment var
691
766
 
692
767
  ## Zscaler Legacy API Framework
693
768
 
694
- The legacy Zscaler API is still utilized by several customers, and will remain in place for the foreable future with no specific annouced deprecation date.
769
+ The legacy Zscaler API is still utilized by several customers, and will remain in place for the foreseeable future with no specific announced deprecation date.
695
770
 
696
771
  ### ZIA Legacy Authentication
697
772
 
@@ -754,6 +829,78 @@ if __name__ == "__main__":
754
829
  main()
755
830
  ```
756
831
 
832
+ ### ZIA and ZTW Context Manager
833
+
834
+ The Zscaler SDK provides a context manager pattern that automatically handles authentication and session cleanup for both ZIA and ZTW services. This pattern ensures that all configuration changes are properly activated when the context manager exits.
835
+
836
+ #### How Context Manager Works
837
+
838
+ When you use the `with` statement with a Zscaler client, the following happens automatically:
839
+
840
+ 1. **Authentication**: The client authenticates when entering the context
841
+ 2. **Session Management**: A session is established and maintained throughout the context
842
+ 3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
843
+
844
+ #### Implicit Activation Process
845
+
846
+ The context manager implements an "implicit activation" approach where:
847
+
848
+ - **All changes are final**: Configuration changes are automatically activated when the context exits
849
+ - **No manual activation required**: You don't need to remember to call activation endpoints
850
+ - **Deterministic behavior**: You always know that exiting the context will activate changes
851
+ - **Automation-friendly**: Perfect for scripts and automation scenarios
852
+
853
+ #### Example Usage
854
+
855
+ ```py
856
+ import random
857
+ from zscaler.oneapi_client import LegacyZIAClient
858
+
859
+ config = {
860
+ "username": '{yourUsername}',
861
+ "password": '{yourPassword}',
862
+ "api_key": '{yourApiKey}',
863
+ "cloud": '{yourCloud}',
864
+ "logging": {"enabled": False, "verbose": False},
865
+ }
866
+
867
+ def main():
868
+ with LegacyZIAClient(config) as client:
869
+ # Make configuration changes
870
+ added_label, response, error = client.zia.rule_labels.add_label(
871
+ name=f"NewLabel_{random.randint(1000, 10000)}",
872
+ description=f"NewLabel_{random.randint(1000, 10000)}",
873
+ )
874
+ if error:
875
+ print(f"Error adding label: {error}")
876
+ return
877
+
878
+ # Make more changes
879
+ updated_role, response, error = client.zia.admin_roles.update_role(
880
+ role_id="12345",
881
+ name="Updated Role Name"
882
+ )
883
+ if error:
884
+ print(f"Error updating role: {error}")
885
+ return
886
+
887
+ print("All changes made successfully")
888
+
889
+ # Context manager automatically deauthenticates here
890
+ # All staged changes are activated automatically
891
+ print("Context exited - all changes have been activated")
892
+
893
+ if __name__ == "__main__":
894
+ main()
895
+ ```
896
+
897
+ #### Benefits
898
+
899
+ - **Automatic cleanup**: No need to manually deauthenticate
900
+ - **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
901
+ - **Staged configuration activation**: All changes are activated when the context exits
902
+ - **Simplified code**: No need to remember activation steps
903
+
757
904
  ### ZTW Legacy Authentication
758
905
 
759
906
  Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZTW API credentials.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zscaler-sdk-python"
3
- version = "1.5.8"
3
+ version = "1.5.9"
4
4
  description = "Official Python SDK for the Zscaler Products"
5
5
  authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
6
6
  license = "MIT"
@@ -29,7 +29,7 @@ __license__ = "MIT"
29
29
  __contributors__ = [
30
30
  "William Guilherme",
31
31
  ]
32
- __version__ = "1.5.8"
32
+ __version__ = "1.5.9"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -296,7 +296,14 @@ def convert_keys_to_camel_case(data):
296
296
  Handles nested lists and dictionaries.
297
297
  """
298
298
  if isinstance(data, dict):
299
- return {to_lower_camel_case(k): convert_keys_to_camel_case(v) for k, v in data.items()}
299
+ result = {}
300
+ for k, v in data.items():
301
+ # Special handling for featurePermissions - preserve keys as-is
302
+ if k == "featurePermissions" and isinstance(v, dict):
303
+ result[k] = v # Don't convert the keys inside featurePermissions
304
+ else:
305
+ result[to_lower_camel_case(k)] = convert_keys_to_camel_case(v)
306
+ return result
300
307
  elif isinstance(data, list):
301
308
  return [convert_keys_to_camel_case(item) for item in data]
302
309
  else:
@@ -268,6 +268,26 @@ class Client:
268
268
  if hasattr(self, "_session"):
269
269
  self._session.close()
270
270
  self.logger.debug("Session closed.")
271
+
272
+ # Clean up Zscaler authentication session
273
+ if hasattr(self, '_request_executor'):
274
+ # For legacy clients, use their deauthenticate method
275
+ if self.use_legacy_client and hasattr(self._request_executor, 'deauthenticate'):
276
+ self.logger.debug("Deauthenticating Zscaler session via legacy client.")
277
+ self._request_executor.deauthenticate()
278
+ self.logger.debug("Zscaler session deauthenticated.")
279
+ # For OneAPI clients, use the request executor's deauthenticate method for ZIA/ZTW
280
+ elif not self.use_legacy_client and hasattr(self._request_executor, 'deauthenticate'):
281
+ # Get the service type from the request executor's last known service type
282
+ # or fall back to config if no requests were made
283
+ service_type = getattr(self._request_executor, '_last_service_type', None)
284
+ if not service_type:
285
+ service_type = self._config.get("client", {}).get("service", "zia")
286
+
287
+ if service_type.lower() in ["zia", "ztw"]:
288
+ self.logger.debug(f"Deauthenticating Zscaler session for {service_type} service.")
289
+ self._request_executor.deauthenticate(service_type)
290
+ self.logger.debug(f"Zscaler session deauthenticated for {service_type}.")
271
291
 
272
292
  """
273
293
  Getters
@@ -225,6 +225,9 @@ class RequestExecutor:
225
225
  raise ValueError("Missing required sandboxToken in config.")
226
226
  params["api_token"] = sandbox_token
227
227
 
228
+ # Track the service type for deauthentication
229
+ self._last_service_type = service_type
230
+
228
231
  request = {
229
232
  "method": method,
230
233
  "url": final_url,
@@ -584,35 +587,80 @@ class RequestExecutor:
584
587
  logger.debug("Getting custom headers.")
585
588
  return self._custom_headers
586
589
 
587
- # def get_retry_after(self, headers, logger):
588
- # retry_limit_reset_header = (
589
- # headers.get("x-ratelimit-reset") or
590
- # headers.get("X-RateLimit-Reset") or
591
- # headers.get("RateLimit-Reset") or
590
+ def deauthenticate(self, service_type=None):
591
+ """
592
+ Deauthenticate from Zscaler services that support session-based authentication.
593
+ Currently supports ZIA and ZTW services.
594
+
595
+ Args:
596
+ service_type (str, optional): The service type to deauthenticate from.
597
+ If None, will attempt to determine from the current configuration.
598
+ """
599
+ if not service_type:
600
+ service_type = self.service
601
+
602
+ if service_type.lower() not in ["zia", "ztw"]:
603
+ logger.debug(f"Deauthentication not supported for service: {service_type}")
604
+ return False
605
+
606
+ try:
607
+ # Determine the base URL and endpoint based on service type
608
+ if service_type.lower() == "zia":
609
+ if self.cloud and self.cloud != "production":
610
+ base_url = f"https://api.{self.cloud}.zsapi.net"
611
+ else:
612
+ base_url = "https://api.{self.cloud}.zsapi.net"
613
+ endpoint = "/zia/api/v1/authenticatedSession"
614
+ elif service_type.lower() == "ztw":
615
+ if self.cloud and self.cloud != "production":
616
+ base_url = f"https://api.{self.cloud}.zsapi.net"
617
+ else:
618
+ base_url = "https://api.{self.cloud}.zsapi.net"
619
+ endpoint = "/ztw/api/v1/auth"
620
+
621
+ url = f"{base_url}{endpoint}"
622
+
623
+ # Prepare headers using the standard method to include bearer token
624
+ # For DELETE requests, we'll exclude Content-Type to avoid issues with empty body
625
+ headers = self._prepare_headers({}, endpoint)
626
+ # Remove Content-Type for DELETE requests to avoid issues with empty body
627
+ headers.pop("Content-Type", None)
628
+
629
+ # Both ZIA and ZTW require explicit deauthentication to activate staged configurations
630
+ # regardless of authentication method (OAuth or session-based)
631
+ if service_type.lower() in ["zia", "ztw"]:
632
+ logger.debug(f"{service_type.upper()} service requires explicit deauthentication to activate staged configurations")
592
633
 
593
- # # ZCC Specific Rate Limiting Headers (LegacyZCCClientHelper)
594
- # headers.get("X-Rate-Limit-Retry-After-Seconds") or # ZCC /downloadDevices Rate Limiting Header (LegacyZCCClientHelper)
595
- # headers.get("X-Rate-Limit-Remaining") # (LegacyZCCClientHelper)
596
- # )
597
- # retry_after = headers.get("Retry-After") or headers.get("retry-after")
598
-
599
- # if retry_after:
600
- # try:
601
- # return int(retry_after.strip("s")) + 1 # Add 1 second padding
602
- # except ValueError:
603
- # logger.error(f"Error parsing Retry-After header: {retry_after}")
604
- # return None
605
-
606
- # if retry_limit_reset_header is not None:
607
- # try:
608
- # reset_seconds = float(retry_limit_reset_header)
609
- # return reset_seconds + 1 # Add 1 second padding
610
- # except ValueError:
611
- # logger.error(f"Error parsing x-ratelimit-reset header: {retry_limit_reset_header}")
612
- # return None
613
-
614
- # logger.error("Missing Retry-After and X-Rate-Limit-Reset headers.")
615
- # return None
634
+ # Send DELETE request to deauthenticate
635
+ logger.debug(f"Deauthenticating from {service_type} at {url}")
636
+
637
+ # Use the HTTP client to send the request
638
+ request = {
639
+ "method": "DELETE",
640
+ "url": url,
641
+ "headers": headers,
642
+ "params": {},
643
+ "uuid": uuid.uuid4(),
644
+ "service_type": service_type,
645
+ }
646
+
647
+ response, error = self._http_client.send_request(request)
648
+
649
+ if error:
650
+ logger.warning(f"Failed to deauthenticate from {service_type}: {error}")
651
+ return False
652
+
653
+ if response and response.status_code == 200:
654
+ logger.debug(f"Successfully deauthenticated from {service_type}")
655
+ return True
656
+ else:
657
+ logger.warning(f"Unexpected response during deauthentication: {response.status_code if response else 'No response'}")
658
+ return False
659
+
660
+ except Exception as e:
661
+ logger.warning(f"Exception during deauthentication for {service_type}: {e}")
662
+ return False
663
+
616
664
 
617
665
  def get_retry_after(self, headers, logger):
618
666
  retry_limit_reset_header = (
@@ -89,6 +89,7 @@ reformat_params = [
89
89
  ("criteria_domain_profile_ids", "criteriaDomainProfiles"),
90
90
  ("email_recipient_profile_ids", "emailRecipientProfiles"),
91
91
  ("entity_group_ids", "entityGroups"),
92
+ ("scope_entity_ids", "adminScopeScopeEntities"),
92
93
  ]
93
94
 
94
95