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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/PKG-INFO +150 -3
  2. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/README.md +149 -2
  3. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/pyproject.toml +1 -1
  4. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/__init__.py +1 -1
  5. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/helpers.py +12 -3
  6. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_client.py +20 -0
  7. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_http_client.py +3 -3
  8. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/request_executor.py +79 -29
  9. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/utils.py +1 -0
  10. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/devices.py +2 -0
  11. zscaler_sdk_python-1.6.0/zscaler/zia/admin_roles.py +648 -0
  12. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/admin_users.py +133 -45
  13. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/admin_roles.py +2 -0
  14. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/admin_users.py +5 -1
  15. zscaler_sdk_python-1.6.0/zscaler/zpa/admin_sso_controller.py +130 -0
  16. zscaler_sdk_python-1.6.0/zscaler/zpa/api_keys.py +307 -0
  17. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_connector_groups.py +0 -2
  18. zscaler_sdk_python-1.6.0/zscaler/zpa/c2c_ip_ranges.py +404 -0
  19. zscaler_sdk_python-1.6.0/zscaler/zpa/config_override_controller.py +215 -0
  20. zscaler_sdk_python-1.6.0/zscaler/zpa/customer_domain.py +164 -0
  21. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/legacy.py +104 -0
  22. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/microtenants.py +3 -3
  23. zscaler_sdk_python-1.6.0/zscaler/zpa/models/api_keys.py +120 -0
  24. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_connector_groups.py +0 -1
  25. zscaler_sdk_python-1.6.0/zscaler/zpa/models/c2c_ip_ranges.py +129 -0
  26. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/common.py +156 -1
  27. zscaler_sdk_python-1.6.0/zscaler/zpa/models/config_override_controller.py +101 -0
  28. zscaler_sdk_python-1.6.0/zscaler/zpa/models/customer_domain.py +81 -0
  29. zscaler_sdk_python-1.6.0/zscaler/zpa/models/microtenants.py +82 -0
  30. zscaler_sdk_python-1.6.0/zscaler/zpa/models/npn_client_controller.py +87 -0
  31. zscaler_sdk_python-1.6.0/zscaler/zpa/models/private_cloud_controller.py +571 -0
  32. zscaler_sdk_python-1.6.0/zscaler/zpa/models/private_cloud_group.py +241 -0
  33. zscaler_sdk_python-1.6.0/zscaler/zpa/models/user_portal_controller.py +127 -0
  34. zscaler_sdk_python-1.6.0/zscaler/zpa/models/user_portal_link.py +151 -0
  35. zscaler_sdk_python-1.6.0/zscaler/zpa/npn_client_controller.py +88 -0
  36. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_console.py +1 -1
  37. zscaler_sdk_python-1.6.0/zscaler/zpa/private_cloud_controller.py +283 -0
  38. zscaler_sdk_python-1.6.0/zscaler/zpa/private_cloud_group.py +429 -0
  39. zscaler_sdk_python-1.6.0/zscaler/zpa/user_portal_controller.py +309 -0
  40. zscaler_sdk_python-1.6.0/zscaler/zpa/user_portal_link.py +469 -0
  41. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/zpa_service.py +100 -0
  42. zscaler_sdk_python-1.5.8/zscaler/zia/admin_roles.py +0 -350
  43. zscaler_sdk_python-1.5.8/zscaler/zpa/models/microtenants.py +0 -235
  44. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/LICENSE.md +0 -0
  45. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/api_client.py +0 -0
  46. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/cache/__init__.py +0 -0
  47. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/cache/cache.py +0 -0
  48. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/cache/no_op_cache.py +0 -0
  49. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/cache/zscaler_cache.py +0 -0
  50. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/config/__init__.py +0 -0
  51. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/config/config_setter.py +0 -0
  52. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/config/config_validator.py +0 -0
  53. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/constants.py +0 -0
  54. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/error_messages.py +0 -0
  55. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/__init__.py +0 -0
  56. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/error.py +0 -0
  57. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/http_error.py +0 -0
  58. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/response_checker.py +0 -0
  59. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/errors/zscaler_api_error.py +0 -0
  60. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/exceptions/__init__.py +0 -0
  61. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/exceptions/exceptions.py +0 -0
  62. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/logger.py +0 -0
  63. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_collection.py +0 -0
  64. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_oauth_client.py +0 -0
  65. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_object.py +0 -0
  66. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/oneapi_response.py +0 -0
  67. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ratelimiter/__init__.py +0 -0
  68. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ratelimiter/ratelimiter.py +0 -0
  69. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/user_agent.py +0 -0
  70. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/__init__.py +0 -0
  71. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/admin_user.py +0 -0
  72. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/company.py +0 -0
  73. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/entitlements.py +0 -0
  74. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/fail_open_policy.py +0 -0
  75. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/forwarding_profile.py +0 -0
  76. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/legacy.py +0 -0
  77. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/admin_roles.py +0 -0
  78. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/admin_user.py +0 -0
  79. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/devices.py +0 -0
  80. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/failopenpolicy.py +0 -0
  81. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/forwardingprofile.py +0 -0
  82. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/getcompanyinfo.py +0 -0
  83. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/manage_pass.py +0 -0
  84. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/secrets_otp.py +0 -0
  85. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/secrets_passwords.py +0 -0
  86. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/trustednetworks.py +0 -0
  87. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/webappservice.py +0 -0
  88. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/webpolicy.py +0 -0
  89. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/webprivacy.py +0 -0
  90. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  91. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  92. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/secrets.py +0 -0
  93. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/trusted_networks.py +0 -0
  94. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/web_app_service.py +0 -0
  95. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/web_policy.py +0 -0
  96. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/web_privacy.py +0 -0
  97. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zcc/zcc_service.py +0 -0
  98. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/__init__.py +0 -0
  99. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/admin.py +0 -0
  100. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/alerts.py +0 -0
  101. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/apps.py +0 -0
  102. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/devices.py +0 -0
  103. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/inventory.py +0 -0
  104. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/legacy.py +0 -0
  105. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/activeapplications.py +0 -0
  106. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/administration.py +0 -0
  107. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/alerts.py +0 -0
  108. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/application_users.py +0 -0
  109. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/applications.py +0 -0
  110. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  111. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/common.py +0 -0
  112. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/devices.py +0 -0
  113. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/software_inventory.py +0 -0
  114. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/troubleshooting.py +0 -0
  115. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/models/users.py +0 -0
  116. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/troubleshooting.py +0 -0
  117. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/users.py +0 -0
  118. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zdx/zdx_service.py +0 -0
  119. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/__init__.py +0 -0
  120. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/activate.py +0 -0
  121. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/advanced_settings.py +0 -0
  122. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/alert_subscriptions.py +0 -0
  123. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/apptotal.py +0 -0
  124. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/atp_policy.py +0 -0
  125. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/audit_logs.py +0 -0
  126. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/authentication_settings.py +0 -0
  127. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/bandwidth_classes.py +0 -0
  128. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/bandwidth_control_rules.py +0 -0
  129. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/browser_control_settings.py +0 -0
  130. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/casb_dlp_rules.py +0 -0
  131. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/casb_malware_rules.py +0 -0
  132. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_app_instances.py +0 -0
  133. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_applications.py +0 -0
  134. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_browser_isolation.py +0 -0
  135. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_firewall.py +0 -0
  136. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_firewall_dns.py +0 -0
  137. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_firewall_ips.py +0 -0
  138. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_firewall_rules.py +0 -0
  139. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloud_nss.py +0 -0
  140. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/cloudappcontrol.py +0 -0
  141. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dedicated_ip_gateways.py +0 -0
  142. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/device_management.py +0 -0
  143. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_dictionary.py +0 -0
  144. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_engine.py +0 -0
  145. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_resources.py +0 -0
  146. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_templates.py +0 -0
  147. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dlp_web_rules.py +0 -0
  148. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/dns_gatways.py +0 -0
  149. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/end_user_notification.py +0 -0
  150. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/file_type_control_rule.py +0 -0
  151. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/forwarding_control.py +0 -0
  152. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/ftp_control_policy.py +0 -0
  153. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/gre_tunnel.py +0 -0
  154. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/intermediate_certificates.py +0 -0
  155. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/iot_report.py +0 -0
  156. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/ipv6_config.py +0 -0
  157. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/legacy.py +0 -0
  158. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/locations.py +0 -0
  159. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/malware_protection_policy.py +0 -0
  160. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/mobile_threat_settings.py +0 -0
  161. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/__init__.py +0 -0
  162. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/activation.py +0 -0
  163. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/advanced_settings.py +0 -0
  164. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  165. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/alert_subscriptions.py +0 -0
  166. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/apptotal.py +0 -0
  167. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/authentication_settings.py +0 -0
  168. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/bandwidth_classes.py +0 -0
  169. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
  170. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/browser_control_settings.py +0 -0
  171. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/casb_dlp_rules.py +0 -0
  172. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/casb_malware_rules.py +0 -0
  173. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_app_instances.py +0 -0
  174. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_app_policy.py +0 -0
  175. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  176. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  177. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  178. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  179. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  180. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  181. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  182. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  183. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  184. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
  185. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  186. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  187. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloud_nss.py +0 -0
  188. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/cloudappcontrol.py +0 -0
  189. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/common.py +0 -0
  190. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
  191. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/device_groups.py +0 -0
  192. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/devices.py +0 -0
  193. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_dictionary.py +0 -0
  194. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_engine.py +0 -0
  195. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_resources.py +0 -0
  196. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_templates.py +0 -0
  197. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dlp_web_rules.py +0 -0
  198. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/dns_gateways.py +0 -0
  199. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/endusernotification.py +0 -0
  200. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/filetyperules.py +0 -0
  201. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  202. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/ftp_control_policy.py +0 -0
  203. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/gre_recommended_list.py +0 -0
  204. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  205. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/gre_tunnels.py +0 -0
  206. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/gre_vips.py +0 -0
  207. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/intermediate_certificates.py +0 -0
  208. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/iotreport.py +0 -0
  209. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/ipv6_config.py +0 -0
  210. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/location_group.py +0 -0
  211. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/location_management.py +0 -0
  212. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/malware_protection_settings.py +0 -0
  213. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/mobile_threat_settings.py +0 -0
  214. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/nat_control_policy.py +0 -0
  215. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/nss_servers.py +0 -0
  216. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/organization_information.py +0 -0
  217. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/pac_files.py +0 -0
  218. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/proxies.py +0 -0
  219. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/proxy_gateways.py +0 -0
  220. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/remoteassistance.py +0 -0
  221. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/risk_profiles.py +0 -0
  222. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/rule_labels.py +0 -0
  223. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/saas_security_api.py +0 -0
  224. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/sandboxrules.py +0 -0
  225. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/security_policy_settings.py +0 -0
  226. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/shadow_it_report.py +0 -0
  227. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  228. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/subclouds.py +0 -0
  229. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/system_audit.py +0 -0
  230. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
  231. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/time_intervals.py +0 -0
  232. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_datacenters.py +0 -0
  233. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
  234. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_extranet.py +0 -0
  235. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_static_ip.py +0 -0
  236. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  237. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  238. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/url_filtering_rules.py +0 -0
  239. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/urlcategory.py +0 -0
  240. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/user_management.py +0 -0
  241. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/vzen_clusters.py +0 -0
  242. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/workload_groups.py +0 -0
  243. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/models/zpa_gateway.py +0 -0
  244. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/nat_control_policy.py +0 -0
  245. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/nss_servers.py +0 -0
  246. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/organization_information.py +0 -0
  247. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/pac_files.py +0 -0
  248. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/policy_export.py +0 -0
  249. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/proxies.py +0 -0
  250. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/remote_assistance.py +0 -0
  251. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/risk_profiles.py +0 -0
  252. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/rule_labels.py +0 -0
  253. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/saas_security_api.py +0 -0
  254. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/sandbox.py +0 -0
  255. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/sandbox_rules.py +0 -0
  256. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/security_policy_settings.py +0 -0
  257. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/shadow_it_report.py +0 -0
  258. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/ssl_inspection_rules.py +0 -0
  259. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/sub_clouds.py +0 -0
  260. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/system_audit.py +0 -0
  261. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/tenancy_restriction_profile.py +0 -0
  262. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/time_intervals.py +0 -0
  263. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/traffic_datacenters.py +0 -0
  264. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/traffic_extranet.py +0 -0
  265. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/traffic_static_ip.py +0 -0
  266. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  267. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/url_categories.py +0 -0
  268. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/url_filtering.py +0 -0
  269. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/user_management.py +0 -0
  270. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/vzen_clusters.py +0 -0
  271. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/workload_groups.py +0 -0
  272. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/zia_service.py +0 -0
  273. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zia/zpa_gateway.py +0 -0
  274. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/__init__.py +0 -0
  275. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/administrator_controller.py +0 -0
  276. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_connector_schedule.py +0 -0
  277. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_connectors.py +0 -0
  278. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_protection.py +0 -0
  279. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segment_by_type.py +0 -0
  280. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segments_ba.py +0 -0
  281. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segments_ba_v2.py +0 -0
  282. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segments_inspection.py +0 -0
  283. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/app_segments_pra.py +0 -0
  284. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/application_segment.py +0 -0
  285. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_banner.py +0 -0
  286. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_certificate.py +0 -0
  287. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_profile.py +0 -0
  288. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_region.py +0 -0
  289. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  290. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/certificates.py +0 -0
  291. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/client_settings.py +0 -0
  292. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/cloud_connector_groups.py +0 -0
  293. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/customer_controller.py +0 -0
  294. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/customer_version_profile.py +0 -0
  295. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/emergency_access.py +0 -0
  296. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/enrollment_certificates.py +0 -0
  297. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/idp.py +0 -0
  298. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/lss.py +0 -0
  299. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/machine_groups.py +0 -0
  300. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/administrator_controller.py +0 -0
  301. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  302. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_connectors.py +0 -0
  303. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  304. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/app_protection_profile.py +0 -0
  305. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/application_segment.py +0 -0
  306. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/application_segment_lb.py +0 -0
  307. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/application_servers.py +0 -0
  308. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_banner.py +0 -0
  309. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_certificate.py +0 -0
  310. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_profile.py +0 -0
  311. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_region.py +0 -0
  312. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  313. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/certificates.py +0 -0
  314. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/client_settings.py +0 -0
  315. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  316. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/customer_controller.py +0 -0
  317. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/customer_version_profile.py +0 -0
  318. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/emergency_access.py +0 -0
  319. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  320. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/idp.py +0 -0
  321. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/lss.py +0 -0
  322. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/machine_groups.py +0 -0
  323. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
  324. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
  325. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/posture_profiles.py +0 -0
  326. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_approval.py +0 -0
  327. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_console.py +0 -0
  328. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  329. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_credential.py +0 -0
  330. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/pra_portal.py +0 -0
  331. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/provisioning_keys.py +0 -0
  332. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/role_controller.py +0 -0
  333. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/saml_attributes.py +0 -0
  334. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/scim_attributes.py +0 -0
  335. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/scim_groups.py +0 -0
  336. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/segment_group.py +0 -0
  337. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/server_group.py +0 -0
  338. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/service_edge_groups.py +0 -0
  339. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  340. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/service_edges.py +0 -0
  341. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/models/trusted_network.py +0 -0
  342. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/policies.py +0 -0
  343. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/posture_profiles.py +0 -0
  344. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_approval.py +0 -0
  345. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_credential.py +0 -0
  346. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_credential_pool.py +0 -0
  347. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/pra_portal.py +0 -0
  348. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/provisioning.py +0 -0
  349. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/role_controller.py +0 -0
  350. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/saml_attributes.py +0 -0
  351. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/scim_attributes.py +0 -0
  352. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/scim_groups.py +0 -0
  353. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/segment_groups.py +0 -0
  354. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/server_groups.py +0 -0
  355. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/servers.py +0 -0
  356. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/service_edge_group.py +0 -0
  357. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/service_edge_schedule.py +0 -0
  358. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/service_edges.py +0 -0
  359. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zpa/trusted_networks.py +0 -0
  360. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/__init__.py +0 -0
  361. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/account_details.py +0 -0
  362. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/activation.py +0 -0
  363. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/admin_roles.py +0 -0
  364. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/admin_users.py +0 -0
  365. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/api_keys.py +0 -0
  366. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ec_groups.py +0 -0
  367. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/forwarding_gateways.py +0 -0
  368. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/forwarding_rules.py +0 -0
  369. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ip_destination_groups.py +0 -0
  370. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ip_groups.py +0 -0
  371. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ip_source_groups.py +0 -0
  372. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/legacy.py +0 -0
  373. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/location_management.py +0 -0
  374. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/location_template.py +0 -0
  375. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/activation.py +0 -0
  376. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/admin_roles.py +0 -0
  377. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/admin_users.py +0 -0
  378. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/api_keys.py +0 -0
  379. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/common.py +0 -0
  380. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ec_group_vm.py +0 -0
  381. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ecgroup.py +0 -0
  382. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  383. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/forwarding_rules.py +0 -0
  384. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  385. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ip_groups.py +0 -0
  386. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/ip_source_groups.py +0 -0
  387. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/location_management.py +0 -0
  388. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/location_templates.py +0 -0
  389. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/nw_service.py +0 -0
  390. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/nw_service_groups.py +0 -0
  391. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/provisioning_url.py +0 -0
  392. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  393. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/models/zpa_resources.py +0 -0
  394. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/nw_service.py +0 -0
  395. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/nw_service_groups.py +0 -0
  396. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/provisioning_url.py +0 -0
  397. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/ztw/ztw_service.py +0 -0
  398. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/__init__.py +0 -0
  399. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/audit_logs.py +0 -0
  400. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/dlp_incidents.py +0 -0
  401. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/legacy.py +0 -0
  402. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/audit_logs.py +0 -0
  403. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/change_history.py +0 -0
  404. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/common.py +0 -0
  405. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/generated_tickets.py +0 -0
  406. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_details.py +0 -0
  407. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_evidence.py +0 -0
  408. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_group_search.py +0 -0
  409. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_search.py +0 -0
  410. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/zscaler/zwa/models/incident_trigger.py +0 -0
  411. {zscaler_sdk_python-1.5.8 → zscaler_sdk_python-1.6.0}/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.6.0
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.
@@ -930,7 +1077,7 @@ The ZCC Cloud is identified by several cloud name prefixes, which determines whi
930
1077
 
931
1078
  ### Environment variables
932
1079
 
933
- You can provide credentials via the `ZCC_CLIENT_ID`, `ZCC_CLIENT_ID`, `ZCC_CLOUD` environment variables, representing your ZIA `api_key`, `secret_key`, and `cloud` respectively.
1080
+ You can provide credentials via the `ZCC_CLIENT_ID`, `ZCC_CLIENT_SECRET`, `ZCC_CLOUD` environment variables, representing your ZIA `api_key`, `secret_key`, and `cloud` respectively.
934
1081
 
935
1082
  ~> **NOTE** `ZCC_CLOUD` environment variable is required, and is used to identify the correct API gateway where the API requests should be forwarded to.
936
1083
 
@@ -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.
@@ -891,7 +1038,7 @@ The ZCC Cloud is identified by several cloud name prefixes, which determines whi
891
1038
 
892
1039
  ### Environment variables
893
1040
 
894
- You can provide credentials via the `ZCC_CLIENT_ID`, `ZCC_CLIENT_ID`, `ZCC_CLOUD` environment variables, representing your ZIA `api_key`, `secret_key`, and `cloud` respectively.
1041
+ You can provide credentials via the `ZCC_CLIENT_ID`, `ZCC_CLIENT_SECRET`, `ZCC_CLOUD` environment variables, representing your ZIA `api_key`, `secret_key`, and `cloud` respectively.
895
1042
 
896
1043
  ~> **NOTE** `ZCC_CLOUD` environment variable is required, and is used to identify the correct API gateway where the API requests should be forwarded to.
897
1044
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zscaler-sdk-python"
3
- version = "1.5.8"
3
+ version = "1.6.0"
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.6.0"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -124,7 +124,8 @@ def to_snake_case(string):
124
124
  "extranetDTO": "extranet_dto",
125
125
  "locationGroupDTO": "location_group_dto",
126
126
  "locationDTO": "location_dto",
127
- "predefinedADPControls": "predefined_adp_controls"
127
+ "predefinedADPControls": "predefined_adp_controls",
128
+ "runtimeOS": "runtime_os"
128
129
  }
129
130
 
130
131
  if string in FIELD_EXCEPTIONS:
@@ -256,7 +257,8 @@ def to_lower_camel_case(string):
256
257
  "extranet_dto": "extranetDTO",
257
258
  "location_group_dto": "locationGroupDTO",
258
259
  "location_dto": "locationDTO",
259
- "predefined_adp_controls": "predefinedADPControls"
260
+ "predefined_adp_controls": "predefinedADPControls",
261
+ "runtime_os": "runtimeOS"
260
262
  }
261
263
 
262
264
  if string in FIELD_EXCEPTIONS:
@@ -296,7 +298,14 @@ def convert_keys_to_camel_case(data):
296
298
  Handles nested lists and dictionaries.
297
299
  """
298
300
  if isinstance(data, dict):
299
- return {to_lower_camel_case(k): convert_keys_to_camel_case(v) for k, v in data.items()}
301
+ result = {}
302
+ for k, v in data.items():
303
+ # Special handling for featurePermissions - preserve keys as-is
304
+ if k == "featurePermissions" and isinstance(v, dict):
305
+ result[k] = v # Don't convert the keys inside featurePermissions
306
+ else:
307
+ result[to_lower_camel_case(k)] = convert_keys_to_camel_case(v)
308
+ return result
300
309
  elif isinstance(data, list):
301
310
  return [convert_keys_to_camel_case(item) for item in data]
302
311
  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
@@ -104,11 +104,11 @@ class HTTPClient:
104
104
  }
105
105
 
106
106
  # Handle payload
107
- if request.get("json"):
107
+ if "json" in request:
108
108
  params["json"] = request["json"]
109
- elif request.get("data"):
109
+ elif "data" in request:
110
110
  params["data"] = request["data"]
111
- elif request.get("form"):
111
+ elif "form" in request:
112
112
  params["data"] = request["form"]
113
113
  if request["params"]:
114
114
  params["params"] = request["params"]
@@ -188,7 +188,9 @@ class RequestExecutor:
188
188
  logger.error(f"Service detection failed: {e}")
189
189
  raise
190
190
 
191
- body = body or {}
191
+ # Preserve empty lists, only convert None to empty dict
192
+ if body is None:
193
+ body = {}
192
194
  headers = headers or {}
193
195
  params = params or {}
194
196
 
@@ -225,6 +227,9 @@ class RequestExecutor:
225
227
  raise ValueError("Missing required sandboxToken in config.")
226
228
  params["api_token"] = sandbox_token
227
229
 
230
+ # Track the service type for deauthentication
231
+ self._last_service_type = service_type
232
+
228
233
  request = {
229
234
  "method": method,
230
235
  "url": final_url,
@@ -584,35 +589,80 @@ class RequestExecutor:
584
589
  logger.debug("Getting custom headers.")
585
590
  return self._custom_headers
586
591
 
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
592
+ def deauthenticate(self, service_type=None):
593
+ """
594
+ Deauthenticate from Zscaler services that support session-based authentication.
595
+ Currently supports ZIA and ZTW services.
596
+
597
+ Args:
598
+ service_type (str, optional): The service type to deauthenticate from.
599
+ If None, will attempt to determine from the current configuration.
600
+ """
601
+ if not service_type:
602
+ service_type = self.service
603
+
604
+ if service_type.lower() not in ["zia", "ztw"]:
605
+ logger.debug(f"Deauthentication not supported for service: {service_type}")
606
+ return False
607
+
608
+ try:
609
+ # Determine the base URL and endpoint based on service type
610
+ if service_type.lower() == "zia":
611
+ if self.cloud and self.cloud != "production":
612
+ base_url = f"https://api.{self.cloud}.zsapi.net"
613
+ else:
614
+ base_url = "https://api.{self.cloud}.zsapi.net"
615
+ endpoint = "/zia/api/v1/authenticatedSession"
616
+ elif service_type.lower() == "ztw":
617
+ if self.cloud and self.cloud != "production":
618
+ base_url = f"https://api.{self.cloud}.zsapi.net"
619
+ else:
620
+ base_url = "https://api.{self.cloud}.zsapi.net"
621
+ endpoint = "/ztw/api/v1/auth"
622
+
623
+ url = f"{base_url}{endpoint}"
624
+
625
+ # Prepare headers using the standard method to include bearer token
626
+ # For DELETE requests, we'll exclude Content-Type to avoid issues with empty body
627
+ headers = self._prepare_headers({}, endpoint)
628
+ # Remove Content-Type for DELETE requests to avoid issues with empty body
629
+ headers.pop("Content-Type", None)
630
+
631
+ # Both ZIA and ZTW require explicit deauthentication to activate staged configurations
632
+ # regardless of authentication method (OAuth or session-based)
633
+ if service_type.lower() in ["zia", "ztw"]:
634
+ logger.debug(f"{service_type.upper()} service requires explicit deauthentication to activate staged configurations")
592
635
 
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
636
+ # Send DELETE request to deauthenticate
637
+ logger.debug(f"Deauthenticating from {service_type} at {url}")
638
+
639
+ # Use the HTTP client to send the request
640
+ request = {
641
+ "method": "DELETE",
642
+ "url": url,
643
+ "headers": headers,
644
+ "params": {},
645
+ "uuid": uuid.uuid4(),
646
+ "service_type": service_type,
647
+ }
648
+
649
+ response, error = self._http_client.send_request(request)
650
+
651
+ if error:
652
+ logger.warning(f"Failed to deauthenticate from {service_type}: {error}")
653
+ return False
654
+
655
+ if response and response.status_code == 200:
656
+ logger.debug(f"Successfully deauthenticated from {service_type}")
657
+ return True
658
+ else:
659
+ logger.warning(f"Unexpected response during deauthentication: {response.status_code if response else 'No response'}")
660
+ return False
661
+
662
+ except Exception as e:
663
+ logger.warning(f"Exception during deauthentication for {service_type}: {e}")
664
+ return False
665
+
616
666
 
617
667
  def get_retry_after(self, headers, logger):
618
668
  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
 
@@ -407,6 +407,8 @@ class DevicesAPI(APIClient):
407
407
  """
408
408
  )
409
409
 
410
+ query_params = query_params or {}
411
+
410
412
  body = {}
411
413
  headers = {}
412
414