zscaler-sdk-python 1.8.6__tar.gz → 1.9.1__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 (860) hide show
  1. zscaler_sdk_python-1.9.1/PKG-INFO +1599 -0
  2. zscaler_sdk_python-1.9.1/README.md +1559 -0
  3. zscaler_sdk_python-1.9.1/pyproject.toml +85 -0
  4. zscaler_sdk_python-1.9.1/zscaler/__init__.py +35 -0
  5. zscaler_sdk_python-1.9.1/zscaler/api_client.py +71 -0
  6. zscaler_sdk_python-1.9.1/zscaler/config/config_setter.py +198 -0
  7. zscaler_sdk_python-1.9.1/zscaler/config/config_validator.py +174 -0
  8. zscaler_sdk_python-1.9.1/zscaler/errors/error.py +10 -0
  9. zscaler_sdk_python-1.9.1/zscaler/errors/http_error.py +14 -0
  10. zscaler_sdk_python-1.9.1/zscaler/errors/response_checker.py +60 -0
  11. zscaler_sdk_python-1.9.1/zscaler/errors/zscaler_api_error.py +62 -0
  12. zscaler_sdk_python-1.9.1/zscaler/helpers.py +354 -0
  13. zscaler_sdk_python-1.9.1/zscaler/oneapi_client.py +508 -0
  14. zscaler_sdk_python-1.9.1/zscaler/oneapi_collection.py +21 -0
  15. zscaler_sdk_python-1.9.1/zscaler/oneapi_http_client.py +364 -0
  16. zscaler_sdk_python-1.9.1/zscaler/oneapi_oauth_client.py +529 -0
  17. zscaler_sdk_python-1.9.1/zscaler/oneapi_object.py +80 -0
  18. zscaler_sdk_python-1.9.1/zscaler/oneapi_response.py +361 -0
  19. zscaler_sdk_python-1.9.1/zscaler/request_executor.py +843 -0
  20. zscaler_sdk_python-1.9.1/zscaler/types.py +39 -0
  21. zscaler_sdk_python-1.9.1/zscaler/utils.py +1017 -0
  22. zscaler_sdk_python-1.9.1/zscaler/zcc/admin_user.py +273 -0
  23. zscaler_sdk_python-1.9.1/zscaler/zcc/company.py +79 -0
  24. zscaler_sdk_python-1.9.1/zscaler/zcc/devices.py +726 -0
  25. zscaler_sdk_python-1.9.1/zscaler/zcc/entitlements.py +197 -0
  26. zscaler_sdk_python-1.9.1/zscaler/zcc/fail_open_policy.py +139 -0
  27. zscaler_sdk_python-1.9.1/zscaler/zcc/forwarding_profile.py +169 -0
  28. zscaler_sdk_python-1.9.1/zscaler/zcc/legacy.py +455 -0
  29. zscaler_sdk_python-1.9.1/zscaler/zcc/models/admin_roles.py +164 -0
  30. zscaler_sdk_python-1.9.1/zscaler/zcc/models/admin_user.py +146 -0
  31. zscaler_sdk_python-1.9.1/zscaler/zcc/models/devices.py +588 -0
  32. zscaler_sdk_python-1.9.1/zscaler/zcc/models/failopenpolicy.py +105 -0
  33. zscaler_sdk_python-1.9.1/zscaler/zcc/models/forwardingprofile.py +344 -0
  34. zscaler_sdk_python-1.9.1/zscaler/zcc/models/getcompanyinfo.py +1339 -0
  35. zscaler_sdk_python-1.9.1/zscaler/zcc/models/manage_pass.py +97 -0
  36. zscaler_sdk_python-1.9.1/zscaler/zcc/models/secrets_otp.py +75 -0
  37. zscaler_sdk_python-1.9.1/zscaler/zcc/models/secrets_passwords.py +61 -0
  38. zscaler_sdk_python-1.9.1/zscaler/zcc/models/trustednetworks.py +98 -0
  39. zscaler_sdk_python-1.9.1/zscaler/zcc/models/webappservice.py +86 -0
  40. zscaler_sdk_python-1.9.1/zscaler/zcc/models/webpolicy.py +1166 -0
  41. zscaler_sdk_python-1.9.1/zscaler/zcc/models/webprivacy.py +85 -0
  42. zscaler_sdk_python-1.9.1/zscaler/zcc/models/zdxgroupentitlements.py +73 -0
  43. zscaler_sdk_python-1.9.1/zscaler/zcc/models/zpagroupentitlements.py +74 -0
  44. zscaler_sdk_python-1.9.1/zscaler/zcc/secrets.py +137 -0
  45. zscaler_sdk_python-1.9.1/zscaler/zcc/trusted_networks.py +251 -0
  46. zscaler_sdk_python-1.9.1/zscaler/zcc/web_app_service.py +81 -0
  47. zscaler_sdk_python-1.9.1/zscaler/zcc/web_policy.py +206 -0
  48. zscaler_sdk_python-1.9.1/zscaler/zcc/web_privacy.py +141 -0
  49. zscaler_sdk_python-1.9.1/zscaler/zcc/zcc_service.py +122 -0
  50. zscaler_sdk_python-1.9.1/zscaler/zdx/admin.py +164 -0
  51. zscaler_sdk_python-1.9.1/zscaler/zdx/alerts.py +317 -0
  52. zscaler_sdk_python-1.9.1/zscaler/zdx/apps.py +461 -0
  53. zscaler_sdk_python-1.9.1/zscaler/zdx/devices.py +861 -0
  54. zscaler_sdk_python-1.9.1/zscaler/zdx/inventory.py +175 -0
  55. zscaler_sdk_python-1.9.1/zscaler/zdx/legacy.py +448 -0
  56. zscaler_sdk_python-1.9.1/zscaler/zdx/models/administration.py +49 -0
  57. zscaler_sdk_python-1.9.1/zscaler/zdx/models/alerts.py +217 -0
  58. zscaler_sdk_python-1.9.1/zscaler/zdx/models/application_users.py +102 -0
  59. zscaler_sdk_python-1.9.1/zscaler/zdx/models/applications.py +257 -0
  60. zscaler_sdk_python-1.9.1/zscaler/zdx/models/call_quality_metrics.py +59 -0
  61. zscaler_sdk_python-1.9.1/zscaler/zdx/models/common.py +392 -0
  62. zscaler_sdk_python-1.9.1/zscaler/zdx/models/devices.py +977 -0
  63. zscaler_sdk_python-1.9.1/zscaler/zdx/models/snapshot.py +77 -0
  64. zscaler_sdk_python-1.9.1/zscaler/zdx/models/software_inventory.py +105 -0
  65. zscaler_sdk_python-1.9.1/zscaler/zdx/models/troubleshooting.py +472 -0
  66. zscaler_sdk_python-1.9.1/zscaler/zdx/models/users.py +99 -0
  67. zscaler_sdk_python-1.9.1/zscaler/zdx/snapshot.py +128 -0
  68. zscaler_sdk_python-1.9.1/zscaler/zdx/troubleshooting.py +674 -0
  69. zscaler_sdk_python-1.9.1/zscaler/zdx/users.py +166 -0
  70. zscaler_sdk_python-1.9.1/zscaler/zdx/zdx_service.py +95 -0
  71. zscaler_sdk_python-1.9.1/zscaler/zia/activate.py +209 -0
  72. zscaler_sdk_python-1.9.1/zscaler/zia/admin_roles.py +651 -0
  73. zscaler_sdk_python-1.9.1/zscaler/zia/admin_users.py +513 -0
  74. zscaler_sdk_python-1.9.1/zscaler/zia/advanced_settings.py +211 -0
  75. zscaler_sdk_python-1.9.1/zscaler/zia/alert_subscriptions.py +300 -0
  76. zscaler_sdk_python-1.9.1/zscaler/zia/apptotal.py +223 -0
  77. zscaler_sdk_python-1.9.1/zscaler/zia/atp_policy.py +409 -0
  78. zscaler_sdk_python-1.9.1/zscaler/zia/audit_logs.py +162 -0
  79. zscaler_sdk_python-1.9.1/zscaler/zia/authentication_settings.py +305 -0
  80. zscaler_sdk_python-1.9.1/zscaler/zia/bandwidth_classes.py +333 -0
  81. zscaler_sdk_python-1.9.1/zscaler/zia/bandwidth_control_rules.py +421 -0
  82. zscaler_sdk_python-1.9.1/zscaler/zia/browser_control_settings.py +229 -0
  83. zscaler_sdk_python-1.9.1/zscaler/zia/casb_dlp_rules.py +660 -0
  84. zscaler_sdk_python-1.9.1/zscaler/zia/casb_malware_rules.py +415 -0
  85. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_app_instances.py +306 -0
  86. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_applications.py +184 -0
  87. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_browser_isolation.py +89 -0
  88. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_firewall.py +2346 -0
  89. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_firewall_dns.py +402 -0
  90. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_firewall_ips.py +394 -0
  91. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_firewall_rules.py +390 -0
  92. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_nss.py +694 -0
  93. zscaler_sdk_python-1.9.1/zscaler/zia/cloud_to_cloud_ir.py +296 -0
  94. zscaler_sdk_python-1.9.1/zscaler/zia/cloudappcontrol.py +766 -0
  95. zscaler_sdk_python-1.9.1/zscaler/zia/dedicated_ip_gateways.py +84 -0
  96. zscaler_sdk_python-1.9.1/zscaler/zia/device_management.py +203 -0
  97. zscaler_sdk_python-1.9.1/zscaler/zia/dlp_dictionary.py +529 -0
  98. zscaler_sdk_python-1.9.1/zscaler/zia/dlp_engine.py +406 -0
  99. zscaler_sdk_python-1.9.1/zscaler/zia/dlp_resources.py +637 -0
  100. zscaler_sdk_python-1.9.1/zscaler/zia/dlp_templates.py +303 -0
  101. zscaler_sdk_python-1.9.1/zscaler/zia/dlp_web_rules.py +441 -0
  102. zscaler_sdk_python-1.9.1/zscaler/zia/dns_gatways.py +327 -0
  103. zscaler_sdk_python-1.9.1/zscaler/zia/end_user_notification.py +166 -0
  104. zscaler_sdk_python-1.9.1/zscaler/zia/file_type_control_rule.py +363 -0
  105. zscaler_sdk_python-1.9.1/zscaler/zia/forwarding_control.py +432 -0
  106. zscaler_sdk_python-1.9.1/zscaler/zia/ftp_control_policy.py +143 -0
  107. zscaler_sdk_python-1.9.1/zscaler/zia/gre_tunnel.py +731 -0
  108. zscaler_sdk_python-1.9.1/zscaler/zia/intermediate_certificates.py +720 -0
  109. zscaler_sdk_python-1.9.1/zscaler/zia/iot_report.py +207 -0
  110. zscaler_sdk_python-1.9.1/zscaler/zia/ipv6_config.py +192 -0
  111. zscaler_sdk_python-1.9.1/zscaler/zia/legacy.py +1238 -0
  112. zscaler_sdk_python-1.9.1/zscaler/zia/locations.py +1183 -0
  113. zscaler_sdk_python-1.9.1/zscaler/zia/malware_protection_policy.py +517 -0
  114. zscaler_sdk_python-1.9.1/zscaler/zia/mobile_threat_settings.py +153 -0
  115. zscaler_sdk_python-1.9.1/zscaler/zia/models/activation.py +99 -0
  116. zscaler_sdk_python-1.9.1/zscaler/zia/models/admin_roles.py +134 -0
  117. zscaler_sdk_python-1.9.1/zscaler/zia/models/admin_users.py +332 -0
  118. zscaler_sdk_python-1.9.1/zscaler/zia/models/advanced_settings.py +321 -0
  119. zscaler_sdk_python-1.9.1/zscaler/zia/models/advanced_threat_settings.py +218 -0
  120. zscaler_sdk_python-1.9.1/zscaler/zia/models/alert_subscriptions.py +85 -0
  121. zscaler_sdk_python-1.9.1/zscaler/zia/models/apptotal.py +258 -0
  122. zscaler_sdk_python-1.9.1/zscaler/zia/models/authentication_settings.py +92 -0
  123. zscaler_sdk_python-1.9.1/zscaler/zia/models/bandwidth_classes.py +78 -0
  124. zscaler_sdk_python-1.9.1/zscaler/zia/models/bandwidth_control_rules.py +137 -0
  125. zscaler_sdk_python-1.9.1/zscaler/zia/models/browser_control_settings.py +139 -0
  126. zscaler_sdk_python-1.9.1/zscaler/zia/models/casb_dlp_rules.py +341 -0
  127. zscaler_sdk_python-1.9.1/zscaler/zia/models/casb_malware_rules.py +141 -0
  128. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_app_instances.py +140 -0
  129. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_app_policy.py +53 -0
  130. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_browser_isolation.py +52 -0
  131. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_app_services.py +49 -0
  132. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_destination_groups.py +65 -0
  133. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_dns_rules.py +259 -0
  134. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_ips_rules.py +220 -0
  135. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_nw_application_groups.py +55 -0
  136. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_nw_applications.py +52 -0
  137. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_nw_service.py +90 -0
  138. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_nw_service_groups.py +53 -0
  139. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_rules.py +252 -0
  140. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_source_groups.py +60 -0
  141. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_firewall_time_windows.py +56 -0
  142. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_nss.py +612 -0
  143. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloud_to_cloud_ir.py +489 -0
  144. zscaler_sdk_python-1.9.1/zscaler/zia/models/cloudappcontrol.py +265 -0
  145. zscaler_sdk_python-1.9.1/zscaler/zia/models/common.py +176 -0
  146. zscaler_sdk_python-1.9.1/zscaler/zia/models/dedicated_ip_gateways.py +103 -0
  147. zscaler_sdk_python-1.9.1/zscaler/zia/models/device_groups.py +58 -0
  148. zscaler_sdk_python-1.9.1/zscaler/zia/models/devices.py +66 -0
  149. zscaler_sdk_python-1.9.1/zscaler/zia/models/dlp_dictionary.py +245 -0
  150. zscaler_sdk_python-1.9.1/zscaler/zia/models/dlp_engine.py +91 -0
  151. zscaler_sdk_python-1.9.1/zscaler/zia/models/dlp_resources.py +199 -0
  152. zscaler_sdk_python-1.9.1/zscaler/zia/models/dlp_templates.py +67 -0
  153. zscaler_sdk_python-1.9.1/zscaler/zia/models/dlp_web_rules.py +243 -0
  154. zscaler_sdk_python-1.9.1/zscaler/zia/models/dns_gateways.py +109 -0
  155. zscaler_sdk_python-1.9.1/zscaler/zia/models/endusernotification.py +156 -0
  156. zscaler_sdk_python-1.9.1/zscaler/zia/models/filetyperules.py +193 -0
  157. zscaler_sdk_python-1.9.1/zscaler/zia/models/forwarding_control_policy.py +253 -0
  158. zscaler_sdk_python-1.9.1/zscaler/zia/models/ftp_control_policy.py +62 -0
  159. zscaler_sdk_python-1.9.1/zscaler/zia/models/gre_recommended_list.py +74 -0
  160. zscaler_sdk_python-1.9.1/zscaler/zia/models/gre_tunnel_info.py +70 -0
  161. zscaler_sdk_python-1.9.1/zscaler/zia/models/gre_tunnels.py +136 -0
  162. zscaler_sdk_python-1.9.1/zscaler/zia/models/gre_vips.py +167 -0
  163. zscaler_sdk_python-1.9.1/zscaler/zia/models/intermediate_certificates.py +158 -0
  164. zscaler_sdk_python-1.9.1/zscaler/zia/models/iotreport.py +106 -0
  165. zscaler_sdk_python-1.9.1/zscaler/zia/models/ipv6_config.py +107 -0
  166. zscaler_sdk_python-1.9.1/zscaler/zia/models/location_group.py +82 -0
  167. zscaler_sdk_python-1.9.1/zscaler/zia/models/location_management.py +397 -0
  168. zscaler_sdk_python-1.9.1/zscaler/zia/models/malware_protection_settings.py +102 -0
  169. zscaler_sdk_python-1.9.1/zscaler/zia/models/mobile_threat_settings.py +92 -0
  170. zscaler_sdk_python-1.9.1/zscaler/zia/models/nat_control_policy.py +225 -0
  171. zscaler_sdk_python-1.9.1/zscaler/zia/models/nss_servers.py +64 -0
  172. zscaler_sdk_python-1.9.1/zscaler/zia/models/organization_information.py +453 -0
  173. zscaler_sdk_python-1.9.1/zscaler/zia/models/pac_files.py +219 -0
  174. zscaler_sdk_python-1.9.1/zscaler/zia/models/proxies.py +99 -0
  175. zscaler_sdk_python-1.9.1/zscaler/zia/models/proxy_gateways.py +82 -0
  176. zscaler_sdk_python-1.9.1/zscaler/zia/models/remoteassistance.py +59 -0
  177. zscaler_sdk_python-1.9.1/zscaler/zia/models/risk_profiles.py +175 -0
  178. zscaler_sdk_python-1.9.1/zscaler/zia/models/rule_labels.py +79 -0
  179. zscaler_sdk_python-1.9.1/zscaler/zia/models/saas_security_api.py +350 -0
  180. zscaler_sdk_python-1.9.1/zscaler/zia/models/sandboxrules.py +163 -0
  181. zscaler_sdk_python-1.9.1/zscaler/zia/models/security_policy_settings.py +50 -0
  182. zscaler_sdk_python-1.9.1/zscaler/zia/models/shadow_it_report.py +317 -0
  183. zscaler_sdk_python-1.9.1/zscaler/zia/models/ssl_inspection_rules.py +503 -0
  184. zscaler_sdk_python-1.9.1/zscaler/zia/models/subclouds.py +287 -0
  185. zscaler_sdk_python-1.9.1/zscaler/zia/models/system_audit.py +285 -0
  186. zscaler_sdk_python-1.9.1/zscaler/zia/models/tenancy_restriction_profile.py +98 -0
  187. zscaler_sdk_python-1.9.1/zscaler/zia/models/time_intervals.py +63 -0
  188. zscaler_sdk_python-1.9.1/zscaler/zia/models/traffic_datacenters.py +115 -0
  189. zscaler_sdk_python-1.9.1/zscaler/zia/models/traffic_dc_exclusions.py +76 -0
  190. zscaler_sdk_python-1.9.1/zscaler/zia/models/traffic_extranet.py +166 -0
  191. zscaler_sdk_python-1.9.1/zscaler/zia/models/traffic_static_ip.py +89 -0
  192. zscaler_sdk_python-1.9.1/zscaler/zia/models/traffic_vpn_credentials.py +89 -0
  193. zscaler_sdk_python-1.9.1/zscaler/zia/models/url_filter_cloud_app_settings.py +115 -0
  194. zscaler_sdk_python-1.9.1/zscaler/zia/models/url_filtering_rules.py +218 -0
  195. zscaler_sdk_python-1.9.1/zscaler/zia/models/urlcategory.py +182 -0
  196. zscaler_sdk_python-1.9.1/zscaler/zia/models/user_management.py +182 -0
  197. zscaler_sdk_python-1.9.1/zscaler/zia/models/vzen_clusters.py +87 -0
  198. zscaler_sdk_python-1.9.1/zscaler/zia/models/vzen_nodes.py +112 -0
  199. zscaler_sdk_python-1.9.1/zscaler/zia/models/workload_groups.py +210 -0
  200. zscaler_sdk_python-1.9.1/zscaler/zia/models/zpa_gateway.py +90 -0
  201. zscaler_sdk_python-1.9.1/zscaler/zia/nat_control_policy.py +373 -0
  202. zscaler_sdk_python-1.9.1/zscaler/zia/nss_servers.py +306 -0
  203. zscaler_sdk_python-1.9.1/zscaler/zia/organization_information.py +174 -0
  204. zscaler_sdk_python-1.9.1/zscaler/zia/pac_files.py +572 -0
  205. zscaler_sdk_python-1.9.1/zscaler/zia/policy_export.py +94 -0
  206. zscaler_sdk_python-1.9.1/zscaler/zia/proxies.py +398 -0
  207. zscaler_sdk_python-1.9.1/zscaler/zia/remote_assistance.py +146 -0
  208. zscaler_sdk_python-1.9.1/zscaler/zia/risk_profiles.py +453 -0
  209. zscaler_sdk_python-1.9.1/zscaler/zia/rule_labels.py +279 -0
  210. zscaler_sdk_python-1.9.1/zscaler/zia/saas_security_api.py +341 -0
  211. zscaler_sdk_python-1.9.1/zscaler/zia/sandbox.py +348 -0
  212. zscaler_sdk_python-1.9.1/zscaler/zia/sandbox_rules.py +366 -0
  213. zscaler_sdk_python-1.9.1/zscaler/zia/security_policy_settings.py +262 -0
  214. zscaler_sdk_python-1.9.1/zscaler/zia/shadow_it_report.py +561 -0
  215. zscaler_sdk_python-1.9.1/zscaler/zia/ssl_inspection_rules.py +360 -0
  216. zscaler_sdk_python-1.9.1/zscaler/zia/sub_clouds.py +175 -0
  217. zscaler_sdk_python-1.9.1/zscaler/zia/system_audit.py +87 -0
  218. zscaler_sdk_python-1.9.1/zscaler/zia/tenancy_restriction_profile.py +407 -0
  219. zscaler_sdk_python-1.9.1/zscaler/zia/time_intervals.py +286 -0
  220. zscaler_sdk_python-1.9.1/zscaler/zia/traffic_datacenters.py +360 -0
  221. zscaler_sdk_python-1.9.1/zscaler/zia/traffic_extranet.py +309 -0
  222. zscaler_sdk_python-1.9.1/zscaler/zia/traffic_static_ip.py +400 -0
  223. zscaler_sdk_python-1.9.1/zscaler/zia/traffic_vpn_credentials.py +370 -0
  224. zscaler_sdk_python-1.9.1/zscaler/zia/url_categories.py +784 -0
  225. zscaler_sdk_python-1.9.1/zscaler/zia/url_filtering.py +563 -0
  226. zscaler_sdk_python-1.9.1/zscaler/zia/user_management.py +1011 -0
  227. zscaler_sdk_python-1.9.1/zscaler/zia/vzen_clusters.py +334 -0
  228. zscaler_sdk_python-1.9.1/zscaler/zia/vzen_nodes.py +378 -0
  229. zscaler_sdk_python-1.9.1/zscaler/zia/workload_groups.py +393 -0
  230. zscaler_sdk_python-1.9.1/zscaler/zia/zia_service.py +709 -0
  231. zscaler_sdk_python-1.9.1/zscaler/zia/zpa_gateway.py +359 -0
  232. zscaler_sdk_python-1.9.1/zscaler/zidentity/api_client.py +539 -0
  233. zscaler_sdk_python-1.9.1/zscaler/zidentity/groups.py +623 -0
  234. zscaler_sdk_python-1.9.1/zscaler/zidentity/models/api_client.py +350 -0
  235. zscaler_sdk_python-1.9.1/zscaler/zidentity/models/common.py +94 -0
  236. zscaler_sdk_python-1.9.1/zscaler/zidentity/models/groups.py +192 -0
  237. zscaler_sdk_python-1.9.1/zscaler/zidentity/models/resource_servers.py +220 -0
  238. zscaler_sdk_python-1.9.1/zscaler/zidentity/models/user_entitlement.py +163 -0
  239. zscaler_sdk_python-1.9.1/zscaler/zidentity/models/users.py +183 -0
  240. zscaler_sdk_python-1.9.1/zscaler/zidentity/resource_servers.py +153 -0
  241. zscaler_sdk_python-1.9.1/zscaler/zidentity/user_entitlement.py +127 -0
  242. zscaler_sdk_python-1.9.1/zscaler/zidentity/users.py +398 -0
  243. zscaler_sdk_python-1.9.1/zscaler/zidentity/zidentity_service.py +71 -0
  244. zscaler_sdk_python-1.9.1/zscaler/zpa/admin_sso_controller.py +132 -0
  245. zscaler_sdk_python-1.9.1/zscaler/zpa/administrator_controller.py +306 -0
  246. zscaler_sdk_python-1.9.1/zscaler/zpa/api_keys.py +309 -0
  247. zscaler_sdk_python-1.9.1/zscaler/zpa/app_connector_groups.py +468 -0
  248. zscaler_sdk_python-1.9.1/zscaler/zpa/app_connector_schedule.py +225 -0
  249. zscaler_sdk_python-1.9.1/zscaler/zpa/app_connectors.py +283 -0
  250. zscaler_sdk_python-1.9.1/zscaler/zpa/app_protection.py +1181 -0
  251. zscaler_sdk_python-1.9.1/zscaler/zpa/app_segment_by_type.py +157 -0
  252. zscaler_sdk_python-1.9.1/zscaler/zpa/app_segments_ba.py +537 -0
  253. zscaler_sdk_python-1.9.1/zscaler/zpa/app_segments_ba_v2.py +490 -0
  254. zscaler_sdk_python-1.9.1/zscaler/zpa/app_segments_inspection.py +521 -0
  255. zscaler_sdk_python-1.9.1/zscaler/zpa/app_segments_pra.py +486 -0
  256. zscaler_sdk_python-1.9.1/zscaler/zpa/application_segment.py +1279 -0
  257. zscaler_sdk_python-1.9.1/zscaler/zpa/branch_connector_group.py +149 -0
  258. zscaler_sdk_python-1.9.1/zscaler/zpa/branch_connectors.py +88 -0
  259. zscaler_sdk_python-1.9.1/zscaler/zpa/browser_protection.py +228 -0
  260. zscaler_sdk_python-1.9.1/zscaler/zpa/c2c_ip_ranges.py +406 -0
  261. zscaler_sdk_python-1.9.1/zscaler/zpa/cbi_banner.py +258 -0
  262. zscaler_sdk_python-1.9.1/zscaler/zpa/cbi_certificate.py +251 -0
  263. zscaler_sdk_python-1.9.1/zscaler/zpa/cbi_profile.py +385 -0
  264. zscaler_sdk_python-1.9.1/zscaler/zpa/cbi_region.py +71 -0
  265. zscaler_sdk_python-1.9.1/zscaler/zpa/cbi_zpa_profile.py +123 -0
  266. zscaler_sdk_python-1.9.1/zscaler/zpa/certificates.py +354 -0
  267. zscaler_sdk_python-1.9.1/zscaler/zpa/client_settings.py +212 -0
  268. zscaler_sdk_python-1.9.1/zscaler/zpa/cloud_connector_controller.py +87 -0
  269. zscaler_sdk_python-1.9.1/zscaler/zpa/cloud_connector_groups.py +183 -0
  270. zscaler_sdk_python-1.9.1/zscaler/zpa/config_override_controller.py +217 -0
  271. zscaler_sdk_python-1.9.1/zscaler/zpa/customer_controller.py +73 -0
  272. zscaler_sdk_python-1.9.1/zscaler/zpa/customer_domain.py +166 -0
  273. zscaler_sdk_python-1.9.1/zscaler/zpa/customer_dr_tool.py +88 -0
  274. zscaler_sdk_python-1.9.1/zscaler/zpa/customer_version_profile.py +181 -0
  275. zscaler_sdk_python-1.9.1/zscaler/zpa/emergency_access.py +350 -0
  276. zscaler_sdk_python-1.9.1/zscaler/zpa/enrollment_certificates.py +459 -0
  277. zscaler_sdk_python-1.9.1/zscaler/zpa/extranet_resource.py +87 -0
  278. zscaler_sdk_python-1.9.1/zscaler/zpa/idp.py +144 -0
  279. zscaler_sdk_python-1.9.1/zscaler/zpa/legacy.py +1014 -0
  280. zscaler_sdk_python-1.9.1/zscaler/zpa/location_controller.py +235 -0
  281. zscaler_sdk_python-1.9.1/zscaler/zpa/lss.py +579 -0
  282. zscaler_sdk_python-1.9.1/zscaler/zpa/machine_groups.py +195 -0
  283. zscaler_sdk_python-1.9.1/zscaler/zpa/managed_browser_profile.py +93 -0
  284. zscaler_sdk_python-1.9.1/zscaler/zpa/microtenants.py +400 -0
  285. zscaler_sdk_python-1.9.1/zscaler/zpa/models/administrator_controller.py +182 -0
  286. zscaler_sdk_python-1.9.1/zscaler/zpa/models/api_keys.py +121 -0
  287. zscaler_sdk_python-1.9.1/zscaler/zpa/models/app_connector_groups.py +294 -0
  288. zscaler_sdk_python-1.9.1/zscaler/zpa/models/app_connector_schedule.py +56 -0
  289. zscaler_sdk_python-1.9.1/zscaler/zpa/models/app_connectors.py +177 -0
  290. zscaler_sdk_python-1.9.1/zscaler/zpa/models/app_protection_predefined_controls.py +221 -0
  291. zscaler_sdk_python-1.9.1/zscaler/zpa/models/app_protection_profile.py +949 -0
  292. zscaler_sdk_python-1.9.1/zscaler/zpa/models/application_segment.py +1127 -0
  293. zscaler_sdk_python-1.9.1/zscaler/zpa/models/application_segment_lb.py +107 -0
  294. zscaler_sdk_python-1.9.1/zscaler/zpa/models/application_servers.py +63 -0
  295. zscaler_sdk_python-1.9.1/zscaler/zpa/models/branch_connectors.py +105 -0
  296. zscaler_sdk_python-1.9.1/zscaler/zpa/models/browser_protection.py +334 -0
  297. zscaler_sdk_python-1.9.1/zscaler/zpa/models/c2c_ip_ranges.py +130 -0
  298. zscaler_sdk_python-1.9.1/zscaler/zpa/models/cbi_banner.py +61 -0
  299. zscaler_sdk_python-1.9.1/zscaler/zpa/models/cbi_certificate.py +55 -0
  300. zscaler_sdk_python-1.9.1/zscaler/zpa/models/cbi_profile.py +571 -0
  301. zscaler_sdk_python-1.9.1/zscaler/zpa/models/cbi_region.py +46 -0
  302. zscaler_sdk_python-1.9.1/zscaler/zpa/models/cbi_zpa_profile.py +120 -0
  303. zscaler_sdk_python-1.9.1/zscaler/zpa/models/certificates.py +94 -0
  304. zscaler_sdk_python-1.9.1/zscaler/zpa/models/client_settings.py +88 -0
  305. zscaler_sdk_python-1.9.1/zscaler/zpa/models/cloud_connector_controller.py +101 -0
  306. zscaler_sdk_python-1.9.1/zscaler/zpa/models/cloud_connector_groups.py +63 -0
  307. zscaler_sdk_python-1.9.1/zscaler/zpa/models/common.py +574 -0
  308. zscaler_sdk_python-1.9.1/zscaler/zpa/models/config_override_controller.py +102 -0
  309. zscaler_sdk_python-1.9.1/zscaler/zpa/models/customer_controller.py +140 -0
  310. zscaler_sdk_python-1.9.1/zscaler/zpa/models/customer_domain.py +82 -0
  311. zscaler_sdk_python-1.9.1/zscaler/zpa/models/customer_dr_tool.py +85 -0
  312. zscaler_sdk_python-1.9.1/zscaler/zpa/models/customer_version_profile.py +156 -0
  313. zscaler_sdk_python-1.9.1/zscaler/zpa/models/emergency_access.py +72 -0
  314. zscaler_sdk_python-1.9.1/zscaler/zpa/models/enrollment_certificates.py +118 -0
  315. zscaler_sdk_python-1.9.1/zscaler/zpa/models/idp.py +224 -0
  316. zscaler_sdk_python-1.9.1/zscaler/zpa/models/lss.py +166 -0
  317. zscaler_sdk_python-1.9.1/zscaler/zpa/models/machine_groups.py +70 -0
  318. zscaler_sdk_python-1.9.1/zscaler/zpa/models/managed_browser_profile.py +151 -0
  319. zscaler_sdk_python-1.9.1/zscaler/zpa/models/microtenants.py +83 -0
  320. zscaler_sdk_python-1.9.1/zscaler/zpa/models/npn_client_controller.py +88 -0
  321. zscaler_sdk_python-1.9.1/zscaler/zpa/models/oauth2_user_code.py +77 -0
  322. zscaler_sdk_python-1.9.1/zscaler/zpa/models/policyset_controller_v1.py +310 -0
  323. zscaler_sdk_python-1.9.1/zscaler/zpa/models/policyset_controller_v2.py +303 -0
  324. zscaler_sdk_python-1.9.1/zscaler/zpa/models/posture_profiles.py +107 -0
  325. zscaler_sdk_python-1.9.1/zscaler/zpa/models/pra_approval.py +135 -0
  326. zscaler_sdk_python-1.9.1/zscaler/zpa/models/pra_console.py +156 -0
  327. zscaler_sdk_python-1.9.1/zscaler/zpa/models/pra_cred_pool_controller.py +77 -0
  328. zscaler_sdk_python-1.9.1/zscaler/zpa/models/pra_credential.py +68 -0
  329. zscaler_sdk_python-1.9.1/zscaler/zpa/models/pra_portal.py +103 -0
  330. zscaler_sdk_python-1.9.1/zscaler/zpa/models/private_cloud_controller.py +572 -0
  331. zscaler_sdk_python-1.9.1/zscaler/zpa/models/private_cloud_group.py +242 -0
  332. zscaler_sdk_python-1.9.1/zscaler/zpa/models/provisioning_keys.py +78 -0
  333. zscaler_sdk_python-1.9.1/zscaler/zpa/models/role_controller.py +429 -0
  334. zscaler_sdk_python-1.9.1/zscaler/zpa/models/saml_attributes.py +65 -0
  335. zscaler_sdk_python-1.9.1/zscaler/zpa/models/scim_attributes.py +80 -0
  336. zscaler_sdk_python-1.9.1/zscaler/zpa/models/scim_groups.py +59 -0
  337. zscaler_sdk_python-1.9.1/zscaler/zpa/models/segment_group.py +79 -0
  338. zscaler_sdk_python-1.9.1/zscaler/zpa/models/server_group.py +115 -0
  339. zscaler_sdk_python-1.9.1/zscaler/zpa/models/service_edge_groups.py +149 -0
  340. zscaler_sdk_python-1.9.1/zscaler/zpa/models/service_edge_schedule.py +56 -0
  341. zscaler_sdk_python-1.9.1/zscaler/zpa/models/service_edges.py +161 -0
  342. zscaler_sdk_python-1.9.1/zscaler/zpa/models/stepup_auth_level.py +94 -0
  343. zscaler_sdk_python-1.9.1/zscaler/zpa/models/trusted_network.py +67 -0
  344. zscaler_sdk_python-1.9.1/zscaler/zpa/models/user_portal_aup.py +95 -0
  345. zscaler_sdk_python-1.9.1/zscaler/zpa/models/user_portal_controller.py +130 -0
  346. zscaler_sdk_python-1.9.1/zscaler/zpa/models/user_portal_link.py +152 -0
  347. zscaler_sdk_python-1.9.1/zscaler/zpa/models/zia_customer_config.py +105 -0
  348. zscaler_sdk_python-1.9.1/zscaler/zpa/npn_client_controller.py +90 -0
  349. zscaler_sdk_python-1.9.1/zscaler/zpa/oauth2_user_code.py +178 -0
  350. zscaler_sdk_python-1.9.1/zscaler/zpa/policies.py +4520 -0
  351. zscaler_sdk_python-1.9.1/zscaler/zpa/posture_profiles.py +144 -0
  352. zscaler_sdk_python-1.9.1/zscaler/zpa/pra_approval.py +393 -0
  353. zscaler_sdk_python-1.9.1/zscaler/zpa/pra_console.py +439 -0
  354. zscaler_sdk_python-1.9.1/zscaler/zpa/pra_credential.py +386 -0
  355. zscaler_sdk_python-1.9.1/zscaler/zpa/pra_credential_pool.py +345 -0
  356. zscaler_sdk_python-1.9.1/zscaler/zpa/pra_portal.py +291 -0
  357. zscaler_sdk_python-1.9.1/zscaler/zpa/private_cloud_controller.py +285 -0
  358. zscaler_sdk_python-1.9.1/zscaler/zpa/private_cloud_group.py +431 -0
  359. zscaler_sdk_python-1.9.1/zscaler/zpa/provisioning.py +459 -0
  360. zscaler_sdk_python-1.9.1/zscaler/zpa/role_controller.py +411 -0
  361. zscaler_sdk_python-1.9.1/zscaler/zpa/saml_attributes.py +320 -0
  362. zscaler_sdk_python-1.9.1/zscaler/zpa/scim_attributes.py +187 -0
  363. zscaler_sdk_python-1.9.1/zscaler/zpa/scim_groups.py +152 -0
  364. zscaler_sdk_python-1.9.1/zscaler/zpa/segment_groups.py +366 -0
  365. zscaler_sdk_python-1.9.1/zscaler/zpa/server_groups.py +346 -0
  366. zscaler_sdk_python-1.9.1/zscaler/zpa/servers.py +349 -0
  367. zscaler_sdk_python-1.9.1/zscaler/zpa/service_edge_group.py +357 -0
  368. zscaler_sdk_python-1.9.1/zscaler/zpa/service_edge_schedule.py +225 -0
  369. zscaler_sdk_python-1.9.1/zscaler/zpa/service_edges.py +267 -0
  370. zscaler_sdk_python-1.9.1/zscaler/zpa/stepup_auth_level.py +102 -0
  371. zscaler_sdk_python-1.9.1/zscaler/zpa/trusted_networks.py +148 -0
  372. zscaler_sdk_python-1.9.1/zscaler/zpa/user_portal_aup.py +382 -0
  373. zscaler_sdk_python-1.9.1/zscaler/zpa/user_portal_controller.py +311 -0
  374. zscaler_sdk_python-1.9.1/zscaler/zpa/user_portal_link.py +485 -0
  375. zscaler_sdk_python-1.9.1/zscaler/zpa/workload_tag_group.py +87 -0
  376. zscaler_sdk_python-1.9.1/zscaler/zpa/zia_customer_config.py +272 -0
  377. zscaler_sdk_python-1.9.1/zscaler/zpa/zpa_service.py +429 -0
  378. zscaler_sdk_python-1.9.1/zscaler/ztw/account_details.py +286 -0
  379. zscaler_sdk_python-1.9.1/zscaler/ztw/account_groups.py +381 -0
  380. zscaler_sdk_python-1.9.1/zscaler/ztw/activation.py +119 -0
  381. zscaler_sdk_python-1.9.1/zscaler/ztw/admin_roles.py +330 -0
  382. zscaler_sdk_python-1.9.1/zscaler/ztw/admin_users.py +402 -0
  383. zscaler_sdk_python-1.9.1/zscaler/ztw/api_keys.py +133 -0
  384. zscaler_sdk_python-1.9.1/zscaler/ztw/discovery_service.py +118 -0
  385. zscaler_sdk_python-1.9.1/zscaler/ztw/ec_groups.py +321 -0
  386. zscaler_sdk_python-1.9.1/zscaler/ztw/forwarding_gateways.py +253 -0
  387. zscaler_sdk_python-1.9.1/zscaler/ztw/forwarding_rules.py +370 -0
  388. zscaler_sdk_python-1.9.1/zscaler/ztw/ip_destination_groups.py +326 -0
  389. zscaler_sdk_python-1.9.1/zscaler/ztw/ip_groups.py +264 -0
  390. zscaler_sdk_python-1.9.1/zscaler/ztw/ip_source_groups.py +268 -0
  391. zscaler_sdk_python-1.9.1/zscaler/ztw/legacy.py +515 -0
  392. zscaler_sdk_python-1.9.1/zscaler/ztw/location_management.py +264 -0
  393. zscaler_sdk_python-1.9.1/zscaler/ztw/location_template.py +391 -0
  394. zscaler_sdk_python-1.9.1/zscaler/ztw/models/account_groups.py +77 -0
  395. zscaler_sdk_python-1.9.1/zscaler/ztw/models/activation.py +58 -0
  396. zscaler_sdk_python-1.9.1/zscaler/ztw/models/admin_roles.py +98 -0
  397. zscaler_sdk_python-1.9.1/zscaler/ztw/models/admin_users.py +151 -0
  398. zscaler_sdk_python-1.9.1/zscaler/ztw/models/api_keys.py +92 -0
  399. zscaler_sdk_python-1.9.1/zscaler/ztw/models/common.py +117 -0
  400. zscaler_sdk_python-1.9.1/zscaler/ztw/models/discovery_service.py +90 -0
  401. zscaler_sdk_python-1.9.1/zscaler/ztw/models/ec_group_vm.py +122 -0
  402. zscaler_sdk_python-1.9.1/zscaler/ztw/models/ecgroup.py +458 -0
  403. zscaler_sdk_python-1.9.1/zscaler/ztw/models/forwarding_gateways.py +112 -0
  404. zscaler_sdk_python-1.9.1/zscaler/ztw/models/forwarding_rules.py +348 -0
  405. zscaler_sdk_python-1.9.1/zscaler/ztw/models/ip_destination_groups.py +73 -0
  406. zscaler_sdk_python-1.9.1/zscaler/ztw/models/ip_groups.py +59 -0
  407. zscaler_sdk_python-1.9.1/zscaler/ztw/models/ip_source_groups.py +59 -0
  408. zscaler_sdk_python-1.9.1/zscaler/ztw/models/location_management.py +256 -0
  409. zscaler_sdk_python-1.9.1/zscaler/ztw/models/location_templates.py +174 -0
  410. zscaler_sdk_python-1.9.1/zscaler/ztw/models/nw_service.py +96 -0
  411. zscaler_sdk_python-1.9.1/zscaler/ztw/models/nw_service_groups.py +57 -0
  412. zscaler_sdk_python-1.9.1/zscaler/ztw/models/provisioning_url.py +225 -0
  413. zscaler_sdk_python-1.9.1/zscaler/ztw/models/public_cloud_info.py +175 -0
  414. zscaler_sdk_python-1.9.1/zscaler/ztw/models/traffic_vpn_credentials.py +91 -0
  415. zscaler_sdk_python-1.9.1/zscaler/ztw/models/zpa_resources.py +62 -0
  416. zscaler_sdk_python-1.9.1/zscaler/ztw/nw_service.py +303 -0
  417. zscaler_sdk_python-1.9.1/zscaler/ztw/nw_service_groups.py +107 -0
  418. zscaler_sdk_python-1.9.1/zscaler/ztw/provisioning_url.py +128 -0
  419. zscaler_sdk_python-1.9.1/zscaler/ztw/public_cloud_info.py +674 -0
  420. zscaler_sdk_python-1.9.1/zscaler/ztw/ztw_service.py +211 -0
  421. zscaler_sdk_python-1.9.1/zscaler/zwa/audit_logs.py +134 -0
  422. zscaler_sdk_python-1.9.1/zscaler/zwa/dlp_incidents.py +664 -0
  423. zscaler_sdk_python-1.9.1/zscaler/zwa/legacy.py +280 -0
  424. zscaler_sdk_python-1.9.1/zscaler/zwa/models/audit_logs.py +136 -0
  425. zscaler_sdk_python-1.9.1/zscaler/zwa/models/change_history.py +62 -0
  426. zscaler_sdk_python-1.9.1/zscaler/zwa/models/common.py +713 -0
  427. zscaler_sdk_python-1.9.1/zscaler/zwa/models/generated_tickets.py +153 -0
  428. zscaler_sdk_python-1.9.1/zscaler/zwa/models/incident_details.py +204 -0
  429. zscaler_sdk_python-1.9.1/zscaler/zwa/models/incident_evidence.py +58 -0
  430. zscaler_sdk_python-1.9.1/zscaler/zwa/models/incident_group_search.py +60 -0
  431. zscaler_sdk_python-1.9.1/zscaler/zwa/models/incident_search.py +94 -0
  432. zscaler_sdk_python-1.9.1/zscaler/zwa/models/incident_trigger.py +46 -0
  433. zscaler_sdk_python-1.9.1/zscaler/zwa/zwa_service.py +41 -0
  434. zscaler_sdk_python-1.8.6/PKG-INFO +0 -1513
  435. zscaler_sdk_python-1.8.6/README.md +0 -1473
  436. zscaler_sdk_python-1.8.6/pyproject.toml +0 -85
  437. zscaler_sdk_python-1.8.6/zscaler/__init__.py +0 -35
  438. zscaler_sdk_python-1.8.6/zscaler/api_client.py +0 -70
  439. zscaler_sdk_python-1.8.6/zscaler/config/config_setter.py +0 -196
  440. zscaler_sdk_python-1.8.6/zscaler/config/config_validator.py +0 -173
  441. zscaler_sdk_python-1.8.6/zscaler/errors/error.py +0 -10
  442. zscaler_sdk_python-1.8.6/zscaler/errors/http_error.py +0 -10
  443. zscaler_sdk_python-1.8.6/zscaler/errors/response_checker.py +0 -58
  444. zscaler_sdk_python-1.8.6/zscaler/errors/zscaler_api_error.py +0 -54
  445. zscaler_sdk_python-1.8.6/zscaler/helpers.py +0 -352
  446. zscaler_sdk_python-1.8.6/zscaler/oneapi_client.py +0 -478
  447. zscaler_sdk_python-1.8.6/zscaler/oneapi_collection.py +0 -16
  448. zscaler_sdk_python-1.8.6/zscaler/oneapi_http_client.py +0 -362
  449. zscaler_sdk_python-1.8.6/zscaler/oneapi_oauth_client.py +0 -522
  450. zscaler_sdk_python-1.8.6/zscaler/oneapi_object.py +0 -79
  451. zscaler_sdk_python-1.8.6/zscaler/oneapi_response.py +0 -340
  452. zscaler_sdk_python-1.8.6/zscaler/request_executor.py +0 -790
  453. zscaler_sdk_python-1.8.6/zscaler/utils.py +0 -1081
  454. zscaler_sdk_python-1.8.6/zscaler/zcc/admin_user.py +0 -271
  455. zscaler_sdk_python-1.8.6/zscaler/zcc/company.py +0 -77
  456. zscaler_sdk_python-1.8.6/zscaler/zcc/devices.py +0 -725
  457. zscaler_sdk_python-1.8.6/zscaler/zcc/entitlements.py +0 -195
  458. zscaler_sdk_python-1.8.6/zscaler/zcc/fail_open_policy.py +0 -137
  459. zscaler_sdk_python-1.8.6/zscaler/zcc/forwarding_profile.py +0 -167
  460. zscaler_sdk_python-1.8.6/zscaler/zcc/legacy.py +0 -425
  461. zscaler_sdk_python-1.8.6/zscaler/zcc/models/admin_roles.py +0 -163
  462. zscaler_sdk_python-1.8.6/zscaler/zcc/models/admin_user.py +0 -145
  463. zscaler_sdk_python-1.8.6/zscaler/zcc/models/devices.py +0 -587
  464. zscaler_sdk_python-1.8.6/zscaler/zcc/models/failopenpolicy.py +0 -104
  465. zscaler_sdk_python-1.8.6/zscaler/zcc/models/forwardingprofile.py +0 -343
  466. zscaler_sdk_python-1.8.6/zscaler/zcc/models/getcompanyinfo.py +0 -1338
  467. zscaler_sdk_python-1.8.6/zscaler/zcc/models/manage_pass.py +0 -96
  468. zscaler_sdk_python-1.8.6/zscaler/zcc/models/secrets_otp.py +0 -74
  469. zscaler_sdk_python-1.8.6/zscaler/zcc/models/secrets_passwords.py +0 -60
  470. zscaler_sdk_python-1.8.6/zscaler/zcc/models/trustednetworks.py +0 -97
  471. zscaler_sdk_python-1.8.6/zscaler/zcc/models/webappservice.py +0 -85
  472. zscaler_sdk_python-1.8.6/zscaler/zcc/models/webpolicy.py +0 -1165
  473. zscaler_sdk_python-1.8.6/zscaler/zcc/models/webprivacy.py +0 -84
  474. zscaler_sdk_python-1.8.6/zscaler/zcc/models/zdxgroupentitlements.py +0 -72
  475. zscaler_sdk_python-1.8.6/zscaler/zcc/models/zpagroupentitlements.py +0 -73
  476. zscaler_sdk_python-1.8.6/zscaler/zcc/secrets.py +0 -135
  477. zscaler_sdk_python-1.8.6/zscaler/zcc/trusted_networks.py +0 -249
  478. zscaler_sdk_python-1.8.6/zscaler/zcc/web_app_service.py +0 -79
  479. zscaler_sdk_python-1.8.6/zscaler/zcc/web_policy.py +0 -204
  480. zscaler_sdk_python-1.8.6/zscaler/zcc/web_privacy.py +0 -139
  481. zscaler_sdk_python-1.8.6/zscaler/zcc/zcc_service.py +0 -122
  482. zscaler_sdk_python-1.8.6/zscaler/zdx/admin.py +0 -162
  483. zscaler_sdk_python-1.8.6/zscaler/zdx/alerts.py +0 -315
  484. zscaler_sdk_python-1.8.6/zscaler/zdx/apps.py +0 -459
  485. zscaler_sdk_python-1.8.6/zscaler/zdx/devices.py +0 -859
  486. zscaler_sdk_python-1.8.6/zscaler/zdx/inventory.py +0 -173
  487. zscaler_sdk_python-1.8.6/zscaler/zdx/legacy.py +0 -444
  488. zscaler_sdk_python-1.8.6/zscaler/zdx/models/administration.py +0 -48
  489. zscaler_sdk_python-1.8.6/zscaler/zdx/models/alerts.py +0 -216
  490. zscaler_sdk_python-1.8.6/zscaler/zdx/models/application_users.py +0 -101
  491. zscaler_sdk_python-1.8.6/zscaler/zdx/models/applications.py +0 -256
  492. zscaler_sdk_python-1.8.6/zscaler/zdx/models/call_quality_metrics.py +0 -58
  493. zscaler_sdk_python-1.8.6/zscaler/zdx/models/common.py +0 -391
  494. zscaler_sdk_python-1.8.6/zscaler/zdx/models/devices.py +0 -976
  495. zscaler_sdk_python-1.8.6/zscaler/zdx/models/snapshot.py +0 -76
  496. zscaler_sdk_python-1.8.6/zscaler/zdx/models/software_inventory.py +0 -104
  497. zscaler_sdk_python-1.8.6/zscaler/zdx/models/troubleshooting.py +0 -471
  498. zscaler_sdk_python-1.8.6/zscaler/zdx/models/users.py +0 -98
  499. zscaler_sdk_python-1.8.6/zscaler/zdx/snapshot.py +0 -126
  500. zscaler_sdk_python-1.8.6/zscaler/zdx/troubleshooting.py +0 -672
  501. zscaler_sdk_python-1.8.6/zscaler/zdx/users.py +0 -164
  502. zscaler_sdk_python-1.8.6/zscaler/zdx/zdx_service.py +0 -95
  503. zscaler_sdk_python-1.8.6/zscaler/zia/activate.py +0 -206
  504. zscaler_sdk_python-1.8.6/zscaler/zia/admin_roles.py +0 -648
  505. zscaler_sdk_python-1.8.6/zscaler/zia/admin_users.py +0 -510
  506. zscaler_sdk_python-1.8.6/zscaler/zia/advanced_settings.py +0 -210
  507. zscaler_sdk_python-1.8.6/zscaler/zia/alert_subscriptions.py +0 -297
  508. zscaler_sdk_python-1.8.6/zscaler/zia/apptotal.py +0 -221
  509. zscaler_sdk_python-1.8.6/zscaler/zia/atp_policy.py +0 -407
  510. zscaler_sdk_python-1.8.6/zscaler/zia/audit_logs.py +0 -160
  511. zscaler_sdk_python-1.8.6/zscaler/zia/authentication_settings.py +0 -303
  512. zscaler_sdk_python-1.8.6/zscaler/zia/bandwidth_classes.py +0 -331
  513. zscaler_sdk_python-1.8.6/zscaler/zia/bandwidth_control_rules.py +0 -419
  514. zscaler_sdk_python-1.8.6/zscaler/zia/browser_control_settings.py +0 -227
  515. zscaler_sdk_python-1.8.6/zscaler/zia/casb_dlp_rules.py +0 -658
  516. zscaler_sdk_python-1.8.6/zscaler/zia/casb_malware_rules.py +0 -413
  517. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_app_instances.py +0 -304
  518. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_applications.py +0 -182
  519. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_browser_isolation.py +0 -87
  520. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_firewall.py +0 -2324
  521. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_firewall_dns.py +0 -400
  522. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_firewall_ips.py +0 -392
  523. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_firewall_rules.py +0 -388
  524. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_nss.py +0 -692
  525. zscaler_sdk_python-1.8.6/zscaler/zia/cloud_to_cloud_ir.py +0 -294
  526. zscaler_sdk_python-1.8.6/zscaler/zia/cloudappcontrol.py +0 -764
  527. zscaler_sdk_python-1.8.6/zscaler/zia/dedicated_ip_gateways.py +0 -82
  528. zscaler_sdk_python-1.8.6/zscaler/zia/device_management.py +0 -201
  529. zscaler_sdk_python-1.8.6/zscaler/zia/dlp_dictionary.py +0 -527
  530. zscaler_sdk_python-1.8.6/zscaler/zia/dlp_engine.py +0 -404
  531. zscaler_sdk_python-1.8.6/zscaler/zia/dlp_resources.py +0 -635
  532. zscaler_sdk_python-1.8.6/zscaler/zia/dlp_templates.py +0 -301
  533. zscaler_sdk_python-1.8.6/zscaler/zia/dlp_web_rules.py +0 -439
  534. zscaler_sdk_python-1.8.6/zscaler/zia/dns_gatways.py +0 -325
  535. zscaler_sdk_python-1.8.6/zscaler/zia/end_user_notification.py +0 -164
  536. zscaler_sdk_python-1.8.6/zscaler/zia/file_type_control_rule.py +0 -361
  537. zscaler_sdk_python-1.8.6/zscaler/zia/forwarding_control.py +0 -430
  538. zscaler_sdk_python-1.8.6/zscaler/zia/ftp_control_policy.py +0 -141
  539. zscaler_sdk_python-1.8.6/zscaler/zia/gre_tunnel.py +0 -729
  540. zscaler_sdk_python-1.8.6/zscaler/zia/intermediate_certificates.py +0 -718
  541. zscaler_sdk_python-1.8.6/zscaler/zia/iot_report.py +0 -205
  542. zscaler_sdk_python-1.8.6/zscaler/zia/ipv6_config.py +0 -190
  543. zscaler_sdk_python-1.8.6/zscaler/zia/legacy.py +0 -1149
  544. zscaler_sdk_python-1.8.6/zscaler/zia/locations.py +0 -1172
  545. zscaler_sdk_python-1.8.6/zscaler/zia/malware_protection_policy.py +0 -506
  546. zscaler_sdk_python-1.8.6/zscaler/zia/mobile_threat_settings.py +0 -151
  547. zscaler_sdk_python-1.8.6/zscaler/zia/models/activation.py +0 -98
  548. zscaler_sdk_python-1.8.6/zscaler/zia/models/admin_roles.py +0 -133
  549. zscaler_sdk_python-1.8.6/zscaler/zia/models/admin_users.py +0 -331
  550. zscaler_sdk_python-1.8.6/zscaler/zia/models/advanced_settings.py +0 -320
  551. zscaler_sdk_python-1.8.6/zscaler/zia/models/advanced_threat_settings.py +0 -217
  552. zscaler_sdk_python-1.8.6/zscaler/zia/models/alert_subscriptions.py +0 -84
  553. zscaler_sdk_python-1.8.6/zscaler/zia/models/apptotal.py +0 -257
  554. zscaler_sdk_python-1.8.6/zscaler/zia/models/authentication_settings.py +0 -91
  555. zscaler_sdk_python-1.8.6/zscaler/zia/models/bandwidth_classes.py +0 -77
  556. zscaler_sdk_python-1.8.6/zscaler/zia/models/bandwidth_control_rules.py +0 -136
  557. zscaler_sdk_python-1.8.6/zscaler/zia/models/browser_control_settings.py +0 -138
  558. zscaler_sdk_python-1.8.6/zscaler/zia/models/casb_dlp_rules.py +0 -340
  559. zscaler_sdk_python-1.8.6/zscaler/zia/models/casb_malware_rules.py +0 -140
  560. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_app_instances.py +0 -139
  561. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_app_policy.py +0 -52
  562. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_browser_isolation.py +0 -51
  563. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_app_services.py +0 -48
  564. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -64
  565. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -258
  566. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -219
  567. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -54
  568. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -51
  569. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_nw_service.py +0 -89
  570. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -52
  571. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_rules.py +0 -251
  572. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_source_groups.py +0 -59
  573. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_firewall_time_windows.py +0 -55
  574. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_nss.py +0 -611
  575. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloud_to_cloud_ir.py +0 -488
  576. zscaler_sdk_python-1.8.6/zscaler/zia/models/cloudappcontrol.py +0 -264
  577. zscaler_sdk_python-1.8.6/zscaler/zia/models/common.py +0 -175
  578. zscaler_sdk_python-1.8.6/zscaler/zia/models/dedicated_ip_gateways.py +0 -102
  579. zscaler_sdk_python-1.8.6/zscaler/zia/models/device_groups.py +0 -57
  580. zscaler_sdk_python-1.8.6/zscaler/zia/models/devices.py +0 -65
  581. zscaler_sdk_python-1.8.6/zscaler/zia/models/dlp_dictionary.py +0 -244
  582. zscaler_sdk_python-1.8.6/zscaler/zia/models/dlp_engine.py +0 -90
  583. zscaler_sdk_python-1.8.6/zscaler/zia/models/dlp_resources.py +0 -198
  584. zscaler_sdk_python-1.8.6/zscaler/zia/models/dlp_templates.py +0 -66
  585. zscaler_sdk_python-1.8.6/zscaler/zia/models/dlp_web_rules.py +0 -242
  586. zscaler_sdk_python-1.8.6/zscaler/zia/models/dns_gateways.py +0 -108
  587. zscaler_sdk_python-1.8.6/zscaler/zia/models/endusernotification.py +0 -155
  588. zscaler_sdk_python-1.8.6/zscaler/zia/models/filetyperules.py +0 -192
  589. zscaler_sdk_python-1.8.6/zscaler/zia/models/forwarding_control_policy.py +0 -252
  590. zscaler_sdk_python-1.8.6/zscaler/zia/models/ftp_control_policy.py +0 -61
  591. zscaler_sdk_python-1.8.6/zscaler/zia/models/gre_recommended_list.py +0 -73
  592. zscaler_sdk_python-1.8.6/zscaler/zia/models/gre_tunnel_info.py +0 -69
  593. zscaler_sdk_python-1.8.6/zscaler/zia/models/gre_tunnels.py +0 -135
  594. zscaler_sdk_python-1.8.6/zscaler/zia/models/gre_vips.py +0 -166
  595. zscaler_sdk_python-1.8.6/zscaler/zia/models/intermediate_certificates.py +0 -157
  596. zscaler_sdk_python-1.8.6/zscaler/zia/models/iotreport.py +0 -105
  597. zscaler_sdk_python-1.8.6/zscaler/zia/models/ipv6_config.py +0 -106
  598. zscaler_sdk_python-1.8.6/zscaler/zia/models/location_group.py +0 -81
  599. zscaler_sdk_python-1.8.6/zscaler/zia/models/location_management.py +0 -387
  600. zscaler_sdk_python-1.8.6/zscaler/zia/models/malware_protection_settings.py +0 -101
  601. zscaler_sdk_python-1.8.6/zscaler/zia/models/mobile_threat_settings.py +0 -91
  602. zscaler_sdk_python-1.8.6/zscaler/zia/models/nat_control_policy.py +0 -224
  603. zscaler_sdk_python-1.8.6/zscaler/zia/models/nss_servers.py +0 -63
  604. zscaler_sdk_python-1.8.6/zscaler/zia/models/organization_information.py +0 -452
  605. zscaler_sdk_python-1.8.6/zscaler/zia/models/pac_files.py +0 -218
  606. zscaler_sdk_python-1.8.6/zscaler/zia/models/proxies.py +0 -98
  607. zscaler_sdk_python-1.8.6/zscaler/zia/models/proxy_gateways.py +0 -81
  608. zscaler_sdk_python-1.8.6/zscaler/zia/models/remoteassistance.py +0 -58
  609. zscaler_sdk_python-1.8.6/zscaler/zia/models/risk_profiles.py +0 -174
  610. zscaler_sdk_python-1.8.6/zscaler/zia/models/rule_labels.py +0 -78
  611. zscaler_sdk_python-1.8.6/zscaler/zia/models/saas_security_api.py +0 -349
  612. zscaler_sdk_python-1.8.6/zscaler/zia/models/sandboxrules.py +0 -162
  613. zscaler_sdk_python-1.8.6/zscaler/zia/models/security_policy_settings.py +0 -49
  614. zscaler_sdk_python-1.8.6/zscaler/zia/models/shadow_it_report.py +0 -316
  615. zscaler_sdk_python-1.8.6/zscaler/zia/models/ssl_inspection_rules.py +0 -502
  616. zscaler_sdk_python-1.8.6/zscaler/zia/models/subclouds.py +0 -286
  617. zscaler_sdk_python-1.8.6/zscaler/zia/models/system_audit.py +0 -284
  618. zscaler_sdk_python-1.8.6/zscaler/zia/models/tenancy_restriction_profile.py +0 -97
  619. zscaler_sdk_python-1.8.6/zscaler/zia/models/time_intervals.py +0 -62
  620. zscaler_sdk_python-1.8.6/zscaler/zia/models/traffic_datacenters.py +0 -114
  621. zscaler_sdk_python-1.8.6/zscaler/zia/models/traffic_dc_exclusions.py +0 -75
  622. zscaler_sdk_python-1.8.6/zscaler/zia/models/traffic_extranet.py +0 -165
  623. zscaler_sdk_python-1.8.6/zscaler/zia/models/traffic_static_ip.py +0 -88
  624. zscaler_sdk_python-1.8.6/zscaler/zia/models/traffic_vpn_credentials.py +0 -88
  625. zscaler_sdk_python-1.8.6/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -114
  626. zscaler_sdk_python-1.8.6/zscaler/zia/models/url_filtering_rules.py +0 -217
  627. zscaler_sdk_python-1.8.6/zscaler/zia/models/urlcategory.py +0 -181
  628. zscaler_sdk_python-1.8.6/zscaler/zia/models/user_management.py +0 -181
  629. zscaler_sdk_python-1.8.6/zscaler/zia/models/vzen_clusters.py +0 -86
  630. zscaler_sdk_python-1.8.6/zscaler/zia/models/vzen_nodes.py +0 -111
  631. zscaler_sdk_python-1.8.6/zscaler/zia/models/workload_groups.py +0 -209
  632. zscaler_sdk_python-1.8.6/zscaler/zia/models/zpa_gateway.py +0 -89
  633. zscaler_sdk_python-1.8.6/zscaler/zia/nat_control_policy.py +0 -371
  634. zscaler_sdk_python-1.8.6/zscaler/zia/nss_servers.py +0 -304
  635. zscaler_sdk_python-1.8.6/zscaler/zia/organization_information.py +0 -172
  636. zscaler_sdk_python-1.8.6/zscaler/zia/pac_files.py +0 -570
  637. zscaler_sdk_python-1.8.6/zscaler/zia/policy_export.py +0 -92
  638. zscaler_sdk_python-1.8.6/zscaler/zia/proxies.py +0 -396
  639. zscaler_sdk_python-1.8.6/zscaler/zia/remote_assistance.py +0 -144
  640. zscaler_sdk_python-1.8.6/zscaler/zia/risk_profiles.py +0 -451
  641. zscaler_sdk_python-1.8.6/zscaler/zia/rule_labels.py +0 -277
  642. zscaler_sdk_python-1.8.6/zscaler/zia/saas_security_api.py +0 -339
  643. zscaler_sdk_python-1.8.6/zscaler/zia/sandbox.py +0 -346
  644. zscaler_sdk_python-1.8.6/zscaler/zia/sandbox_rules.py +0 -364
  645. zscaler_sdk_python-1.8.6/zscaler/zia/security_policy_settings.py +0 -260
  646. zscaler_sdk_python-1.8.6/zscaler/zia/shadow_it_report.py +0 -559
  647. zscaler_sdk_python-1.8.6/zscaler/zia/ssl_inspection_rules.py +0 -358
  648. zscaler_sdk_python-1.8.6/zscaler/zia/sub_clouds.py +0 -173
  649. zscaler_sdk_python-1.8.6/zscaler/zia/system_audit.py +0 -85
  650. zscaler_sdk_python-1.8.6/zscaler/zia/tenancy_restriction_profile.py +0 -405
  651. zscaler_sdk_python-1.8.6/zscaler/zia/time_intervals.py +0 -284
  652. zscaler_sdk_python-1.8.6/zscaler/zia/traffic_datacenters.py +0 -358
  653. zscaler_sdk_python-1.8.6/zscaler/zia/traffic_extranet.py +0 -307
  654. zscaler_sdk_python-1.8.6/zscaler/zia/traffic_static_ip.py +0 -373
  655. zscaler_sdk_python-1.8.6/zscaler/zia/traffic_vpn_credentials.py +0 -368
  656. zscaler_sdk_python-1.8.6/zscaler/zia/url_categories.py +0 -783
  657. zscaler_sdk_python-1.8.6/zscaler/zia/url_filtering.py +0 -561
  658. zscaler_sdk_python-1.8.6/zscaler/zia/user_management.py +0 -1008
  659. zscaler_sdk_python-1.8.6/zscaler/zia/vzen_clusters.py +0 -332
  660. zscaler_sdk_python-1.8.6/zscaler/zia/vzen_nodes.py +0 -376
  661. zscaler_sdk_python-1.8.6/zscaler/zia/workload_groups.py +0 -391
  662. zscaler_sdk_python-1.8.6/zscaler/zia/zia_service.py +0 -708
  663. zscaler_sdk_python-1.8.6/zscaler/zia/zpa_gateway.py +0 -351
  664. zscaler_sdk_python-1.8.6/zscaler/zidentity/api_client.py +0 -537
  665. zscaler_sdk_python-1.8.6/zscaler/zidentity/groups.py +0 -621
  666. zscaler_sdk_python-1.8.6/zscaler/zidentity/models/api_client.py +0 -349
  667. zscaler_sdk_python-1.8.6/zscaler/zidentity/models/common.py +0 -93
  668. zscaler_sdk_python-1.8.6/zscaler/zidentity/models/groups.py +0 -191
  669. zscaler_sdk_python-1.8.6/zscaler/zidentity/models/resource_servers.py +0 -219
  670. zscaler_sdk_python-1.8.6/zscaler/zidentity/models/user_entitlement.py +0 -162
  671. zscaler_sdk_python-1.8.6/zscaler/zidentity/models/users.py +0 -182
  672. zscaler_sdk_python-1.8.6/zscaler/zidentity/resource_servers.py +0 -151
  673. zscaler_sdk_python-1.8.6/zscaler/zidentity/user_entitlement.py +0 -125
  674. zscaler_sdk_python-1.8.6/zscaler/zidentity/users.py +0 -396
  675. zscaler_sdk_python-1.8.6/zscaler/zidentity/zidentity_service.py +0 -70
  676. zscaler_sdk_python-1.8.6/zscaler/zpa/admin_sso_controller.py +0 -130
  677. zscaler_sdk_python-1.8.6/zscaler/zpa/administrator_controller.py +0 -304
  678. zscaler_sdk_python-1.8.6/zscaler/zpa/api_keys.py +0 -307
  679. zscaler_sdk_python-1.8.6/zscaler/zpa/app_connector_groups.py +0 -362
  680. zscaler_sdk_python-1.8.6/zscaler/zpa/app_connector_schedule.py +0 -223
  681. zscaler_sdk_python-1.8.6/zscaler/zpa/app_connectors.py +0 -281
  682. zscaler_sdk_python-1.8.6/zscaler/zpa/app_protection.py +0 -1179
  683. zscaler_sdk_python-1.8.6/zscaler/zpa/app_segment_by_type.py +0 -93
  684. zscaler_sdk_python-1.8.6/zscaler/zpa/app_segments_ba.py +0 -535
  685. zscaler_sdk_python-1.8.6/zscaler/zpa/app_segments_ba_v2.py +0 -488
  686. zscaler_sdk_python-1.8.6/zscaler/zpa/app_segments_inspection.py +0 -519
  687. zscaler_sdk_python-1.8.6/zscaler/zpa/app_segments_pra.py +0 -484
  688. zscaler_sdk_python-1.8.6/zscaler/zpa/application_segment.py +0 -1063
  689. zscaler_sdk_python-1.8.6/zscaler/zpa/c2c_ip_ranges.py +0 -404
  690. zscaler_sdk_python-1.8.6/zscaler/zpa/cbi_banner.py +0 -256
  691. zscaler_sdk_python-1.8.6/zscaler/zpa/cbi_certificate.py +0 -249
  692. zscaler_sdk_python-1.8.6/zscaler/zpa/cbi_profile.py +0 -383
  693. zscaler_sdk_python-1.8.6/zscaler/zpa/cbi_region.py +0 -69
  694. zscaler_sdk_python-1.8.6/zscaler/zpa/cbi_zpa_profile.py +0 -121
  695. zscaler_sdk_python-1.8.6/zscaler/zpa/certificates.py +0 -352
  696. zscaler_sdk_python-1.8.6/zscaler/zpa/client_settings.py +0 -210
  697. zscaler_sdk_python-1.8.6/zscaler/zpa/cloud_connector_groups.py +0 -128
  698. zscaler_sdk_python-1.8.6/zscaler/zpa/config_override_controller.py +0 -215
  699. zscaler_sdk_python-1.8.6/zscaler/zpa/customer_controller.py +0 -153
  700. zscaler_sdk_python-1.8.6/zscaler/zpa/customer_domain.py +0 -164
  701. zscaler_sdk_python-1.8.6/zscaler/zpa/customer_version_profile.py +0 -91
  702. zscaler_sdk_python-1.8.6/zscaler/zpa/emergency_access.py +0 -348
  703. zscaler_sdk_python-1.8.6/zscaler/zpa/enrollment_certificates.py +0 -457
  704. zscaler_sdk_python-1.8.6/zscaler/zpa/idp.py +0 -142
  705. zscaler_sdk_python-1.8.6/zscaler/zpa/legacy.py +0 -788
  706. zscaler_sdk_python-1.8.6/zscaler/zpa/lss.py +0 -577
  707. zscaler_sdk_python-1.8.6/zscaler/zpa/machine_groups.py +0 -135
  708. zscaler_sdk_python-1.8.6/zscaler/zpa/microtenants.py +0 -398
  709. zscaler_sdk_python-1.8.6/zscaler/zpa/models/administrator_controller.py +0 -181
  710. zscaler_sdk_python-1.8.6/zscaler/zpa/models/api_keys.py +0 -120
  711. zscaler_sdk_python-1.8.6/zscaler/zpa/models/app_connector_groups.py +0 -287
  712. zscaler_sdk_python-1.8.6/zscaler/zpa/models/app_connector_schedule.py +0 -55
  713. zscaler_sdk_python-1.8.6/zscaler/zpa/models/app_connectors.py +0 -176
  714. zscaler_sdk_python-1.8.6/zscaler/zpa/models/app_protection_predefined_controls.py +0 -220
  715. zscaler_sdk_python-1.8.6/zscaler/zpa/models/app_protection_profile.py +0 -948
  716. zscaler_sdk_python-1.8.6/zscaler/zpa/models/application_segment.py +0 -1126
  717. zscaler_sdk_python-1.8.6/zscaler/zpa/models/application_segment_lb.py +0 -106
  718. zscaler_sdk_python-1.8.6/zscaler/zpa/models/application_servers.py +0 -62
  719. zscaler_sdk_python-1.8.6/zscaler/zpa/models/c2c_ip_ranges.py +0 -129
  720. zscaler_sdk_python-1.8.6/zscaler/zpa/models/cbi_banner.py +0 -60
  721. zscaler_sdk_python-1.8.6/zscaler/zpa/models/cbi_certificate.py +0 -54
  722. zscaler_sdk_python-1.8.6/zscaler/zpa/models/cbi_profile.py +0 -570
  723. zscaler_sdk_python-1.8.6/zscaler/zpa/models/cbi_region.py +0 -45
  724. zscaler_sdk_python-1.8.6/zscaler/zpa/models/cbi_zpa_profile.py +0 -119
  725. zscaler_sdk_python-1.8.6/zscaler/zpa/models/certificates.py +0 -93
  726. zscaler_sdk_python-1.8.6/zscaler/zpa/models/client_settings.py +0 -87
  727. zscaler_sdk_python-1.8.6/zscaler/zpa/models/cloud_connector_groups.py +0 -62
  728. zscaler_sdk_python-1.8.6/zscaler/zpa/models/common.py +0 -573
  729. zscaler_sdk_python-1.8.6/zscaler/zpa/models/config_override_controller.py +0 -101
  730. zscaler_sdk_python-1.8.6/zscaler/zpa/models/customer_controller.py +0 -139
  731. zscaler_sdk_python-1.8.6/zscaler/zpa/models/customer_domain.py +0 -81
  732. zscaler_sdk_python-1.8.6/zscaler/zpa/models/customer_version_profile.py +0 -104
  733. zscaler_sdk_python-1.8.6/zscaler/zpa/models/emergency_access.py +0 -71
  734. zscaler_sdk_python-1.8.6/zscaler/zpa/models/enrollment_certificates.py +0 -117
  735. zscaler_sdk_python-1.8.6/zscaler/zpa/models/idp.py +0 -223
  736. zscaler_sdk_python-1.8.6/zscaler/zpa/models/lss.py +0 -165
  737. zscaler_sdk_python-1.8.6/zscaler/zpa/models/machine_groups.py +0 -69
  738. zscaler_sdk_python-1.8.6/zscaler/zpa/models/microtenants.py +0 -82
  739. zscaler_sdk_python-1.8.6/zscaler/zpa/models/npn_client_controller.py +0 -87
  740. zscaler_sdk_python-1.8.6/zscaler/zpa/models/policyset_controller_v1.py +0 -309
  741. zscaler_sdk_python-1.8.6/zscaler/zpa/models/policyset_controller_v2.py +0 -299
  742. zscaler_sdk_python-1.8.6/zscaler/zpa/models/posture_profiles.py +0 -106
  743. zscaler_sdk_python-1.8.6/zscaler/zpa/models/pra_approval.py +0 -134
  744. zscaler_sdk_python-1.8.6/zscaler/zpa/models/pra_console.py +0 -155
  745. zscaler_sdk_python-1.8.6/zscaler/zpa/models/pra_cred_pool_controller.py +0 -76
  746. zscaler_sdk_python-1.8.6/zscaler/zpa/models/pra_credential.py +0 -67
  747. zscaler_sdk_python-1.8.6/zscaler/zpa/models/pra_portal.py +0 -102
  748. zscaler_sdk_python-1.8.6/zscaler/zpa/models/private_cloud_controller.py +0 -571
  749. zscaler_sdk_python-1.8.6/zscaler/zpa/models/private_cloud_group.py +0 -241
  750. zscaler_sdk_python-1.8.6/zscaler/zpa/models/provisioning_keys.py +0 -77
  751. zscaler_sdk_python-1.8.6/zscaler/zpa/models/role_controller.py +0 -428
  752. zscaler_sdk_python-1.8.6/zscaler/zpa/models/saml_attributes.py +0 -64
  753. zscaler_sdk_python-1.8.6/zscaler/zpa/models/scim_attributes.py +0 -79
  754. zscaler_sdk_python-1.8.6/zscaler/zpa/models/scim_groups.py +0 -58
  755. zscaler_sdk_python-1.8.6/zscaler/zpa/models/segment_group.py +0 -78
  756. zscaler_sdk_python-1.8.6/zscaler/zpa/models/server_group.py +0 -114
  757. zscaler_sdk_python-1.8.6/zscaler/zpa/models/service_edge_groups.py +0 -148
  758. zscaler_sdk_python-1.8.6/zscaler/zpa/models/service_edge_schedule.py +0 -55
  759. zscaler_sdk_python-1.8.6/zscaler/zpa/models/service_edges.py +0 -160
  760. zscaler_sdk_python-1.8.6/zscaler/zpa/models/trusted_network.py +0 -66
  761. zscaler_sdk_python-1.8.6/zscaler/zpa/models/user_portal_controller.py +0 -129
  762. zscaler_sdk_python-1.8.6/zscaler/zpa/models/user_portal_link.py +0 -151
  763. zscaler_sdk_python-1.8.6/zscaler/zpa/npn_client_controller.py +0 -88
  764. zscaler_sdk_python-1.8.6/zscaler/zpa/policies.py +0 -4218
  765. zscaler_sdk_python-1.8.6/zscaler/zpa/posture_profiles.py +0 -142
  766. zscaler_sdk_python-1.8.6/zscaler/zpa/pra_approval.py +0 -391
  767. zscaler_sdk_python-1.8.6/zscaler/zpa/pra_console.py +0 -437
  768. zscaler_sdk_python-1.8.6/zscaler/zpa/pra_credential.py +0 -384
  769. zscaler_sdk_python-1.8.6/zscaler/zpa/pra_credential_pool.py +0 -343
  770. zscaler_sdk_python-1.8.6/zscaler/zpa/pra_portal.py +0 -289
  771. zscaler_sdk_python-1.8.6/zscaler/zpa/private_cloud_controller.py +0 -283
  772. zscaler_sdk_python-1.8.6/zscaler/zpa/private_cloud_group.py +0 -429
  773. zscaler_sdk_python-1.8.6/zscaler/zpa/provisioning.py +0 -385
  774. zscaler_sdk_python-1.8.6/zscaler/zpa/role_controller.py +0 -409
  775. zscaler_sdk_python-1.8.6/zscaler/zpa/saml_attributes.py +0 -318
  776. zscaler_sdk_python-1.8.6/zscaler/zpa/scim_attributes.py +0 -185
  777. zscaler_sdk_python-1.8.6/zscaler/zpa/scim_groups.py +0 -150
  778. zscaler_sdk_python-1.8.6/zscaler/zpa/segment_groups.py +0 -364
  779. zscaler_sdk_python-1.8.6/zscaler/zpa/server_groups.py +0 -344
  780. zscaler_sdk_python-1.8.6/zscaler/zpa/servers.py +0 -287
  781. zscaler_sdk_python-1.8.6/zscaler/zpa/service_edge_group.py +0 -355
  782. zscaler_sdk_python-1.8.6/zscaler/zpa/service_edge_schedule.py +0 -223
  783. zscaler_sdk_python-1.8.6/zscaler/zpa/service_edges.py +0 -265
  784. zscaler_sdk_python-1.8.6/zscaler/zpa/trusted_networks.py +0 -146
  785. zscaler_sdk_python-1.8.6/zscaler/zpa/user_portal_controller.py +0 -309
  786. zscaler_sdk_python-1.8.6/zscaler/zpa/user_portal_link.py +0 -483
  787. zscaler_sdk_python-1.8.6/zscaler/zpa/zpa_service.py +0 -528
  788. zscaler_sdk_python-1.8.6/zscaler/ztw/account_details.py +0 -276
  789. zscaler_sdk_python-1.8.6/zscaler/ztw/activation.py +0 -117
  790. zscaler_sdk_python-1.8.6/zscaler/ztw/admin_roles.py +0 -326
  791. zscaler_sdk_python-1.8.6/zscaler/ztw/admin_users.py +0 -400
  792. zscaler_sdk_python-1.8.6/zscaler/ztw/api_keys.py +0 -131
  793. zscaler_sdk_python-1.8.6/zscaler/ztw/ec_groups.py +0 -319
  794. zscaler_sdk_python-1.8.6/zscaler/ztw/forwarding_gateways.py +0 -235
  795. zscaler_sdk_python-1.8.6/zscaler/ztw/forwarding_rules.py +0 -368
  796. zscaler_sdk_python-1.8.6/zscaler/ztw/ip_destination_groups.py +0 -314
  797. zscaler_sdk_python-1.8.6/zscaler/ztw/ip_groups.py +0 -259
  798. zscaler_sdk_python-1.8.6/zscaler/ztw/ip_source_groups.py +0 -259
  799. zscaler_sdk_python-1.8.6/zscaler/ztw/legacy.py +0 -469
  800. zscaler_sdk_python-1.8.6/zscaler/ztw/location_management.py +0 -242
  801. zscaler_sdk_python-1.8.6/zscaler/ztw/location_template.py +0 -385
  802. zscaler_sdk_python-1.8.6/zscaler/ztw/models/activation.py +0 -57
  803. zscaler_sdk_python-1.8.6/zscaler/ztw/models/admin_roles.py +0 -97
  804. zscaler_sdk_python-1.8.6/zscaler/ztw/models/admin_users.py +0 -150
  805. zscaler_sdk_python-1.8.6/zscaler/ztw/models/api_keys.py +0 -91
  806. zscaler_sdk_python-1.8.6/zscaler/ztw/models/common.py +0 -88
  807. zscaler_sdk_python-1.8.6/zscaler/ztw/models/ec_group_vm.py +0 -121
  808. zscaler_sdk_python-1.8.6/zscaler/ztw/models/ecgroup.py +0 -457
  809. zscaler_sdk_python-1.8.6/zscaler/ztw/models/forwarding_gateways.py +0 -111
  810. zscaler_sdk_python-1.8.6/zscaler/ztw/models/forwarding_rules.py +0 -347
  811. zscaler_sdk_python-1.8.6/zscaler/ztw/models/ip_destination_groups.py +0 -72
  812. zscaler_sdk_python-1.8.6/zscaler/ztw/models/ip_groups.py +0 -58
  813. zscaler_sdk_python-1.8.6/zscaler/ztw/models/ip_source_groups.py +0 -58
  814. zscaler_sdk_python-1.8.6/zscaler/ztw/models/location_management.py +0 -255
  815. zscaler_sdk_python-1.8.6/zscaler/ztw/models/location_templates.py +0 -173
  816. zscaler_sdk_python-1.8.6/zscaler/ztw/models/nw_service.py +0 -95
  817. zscaler_sdk_python-1.8.6/zscaler/ztw/models/nw_service_groups.py +0 -56
  818. zscaler_sdk_python-1.8.6/zscaler/ztw/models/provisioning_url.py +0 -224
  819. zscaler_sdk_python-1.8.6/zscaler/ztw/models/traffic_vpn_credentials.py +0 -90
  820. zscaler_sdk_python-1.8.6/zscaler/ztw/models/zpa_resources.py +0 -61
  821. zscaler_sdk_python-1.8.6/zscaler/ztw/nw_service.py +0 -299
  822. zscaler_sdk_python-1.8.6/zscaler/ztw/nw_service_groups.py +0 -99
  823. zscaler_sdk_python-1.8.6/zscaler/ztw/provisioning_url.py +0 -126
  824. zscaler_sdk_python-1.8.6/zscaler/ztw/ztw_service.py +0 -180
  825. zscaler_sdk_python-1.8.6/zscaler/zwa/audit_logs.py +0 -132
  826. zscaler_sdk_python-1.8.6/zscaler/zwa/dlp_incidents.py +0 -656
  827. zscaler_sdk_python-1.8.6/zscaler/zwa/legacy.py +0 -268
  828. zscaler_sdk_python-1.8.6/zscaler/zwa/models/audit_logs.py +0 -135
  829. zscaler_sdk_python-1.8.6/zscaler/zwa/models/change_history.py +0 -61
  830. zscaler_sdk_python-1.8.6/zscaler/zwa/models/common.py +0 -712
  831. zscaler_sdk_python-1.8.6/zscaler/zwa/models/generated_tickets.py +0 -152
  832. zscaler_sdk_python-1.8.6/zscaler/zwa/models/incident_details.py +0 -203
  833. zscaler_sdk_python-1.8.6/zscaler/zwa/models/incident_evidence.py +0 -57
  834. zscaler_sdk_python-1.8.6/zscaler/zwa/models/incident_group_search.py +0 -59
  835. zscaler_sdk_python-1.8.6/zscaler/zwa/models/incident_search.py +0 -93
  836. zscaler_sdk_python-1.8.6/zscaler/zwa/models/incident_trigger.py +0 -45
  837. zscaler_sdk_python-1.8.6/zscaler/zwa/zwa_service.py +0 -41
  838. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/LICENSE.md +0 -0
  839. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/cache/__init__.py +0 -0
  840. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/cache/cache.py +0 -0
  841. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/cache/no_op_cache.py +0 -0
  842. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/cache/zscaler_cache.py +0 -0
  843. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/config/__init__.py +0 -0
  844. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/constants.py +0 -0
  845. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/error_messages.py +0 -0
  846. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/errors/__init__.py +0 -0
  847. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/exceptions/__init__.py +0 -0
  848. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/exceptions/exceptions.py +0 -0
  849. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/logger.py +0 -0
  850. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/ratelimiter/__init__.py +0 -0
  851. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/ratelimiter/ratelimiter.py +0 -0
  852. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/user_agent.py +0 -0
  853. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/zcc/__init__.py +0 -0
  854. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/zdx/__init__.py +0 -0
  855. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/zia/__init__.py +0 -0
  856. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/zia/models/__init__.py +0 -0
  857. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/zidentity/__init__.py +0 -0
  858. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/zpa/__init__.py +0 -0
  859. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/ztw/__init__.py +0 -0
  860. {zscaler_sdk_python-1.8.6 → zscaler_sdk_python-1.9.1}/zscaler/zwa/__init__.py +0 -0
@@ -0,0 +1,1599 @@
1
+ Metadata-Version: 2.1
2
+ Name: zscaler-sdk-python
3
+ Version: 1.9.1
4
+ Summary: Official Python SDK for the Zscaler Products
5
+ Home-page: https://github.com/zscaler/zscaler-sdk-python
6
+ License: MIT
7
+ Keywords: zscaler,sdk,zpa,zia,zdx,zcc,ztw,zwa,zidentity
8
+ Author: Zscaler, Inc.
9
+ Author-email: devrel@zscaler.com
10
+ Requires-Python: >=3.9.2,<4.0
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Topic :: Security
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Provides-Extra: dev
24
+ Requires-Dist: aenum (>=3.1.11)
25
+ Requires-Dist: arrow (>=1.3.0)
26
+ Requires-Dist: cryptography (>=45.0.2)
27
+ Requires-Dist: flatdict (>=4.0.0)
28
+ Requires-Dist: pydash (>=8.0.3)
29
+ Requires-Dist: python-box (>=7.3.0)
30
+ Requires-Dist: python-dateutil (>=2.9.0)
31
+ Requires-Dist: python-jose[cryptography] (>=3.3.0)
32
+ Requires-Dist: pytz (>=2024.2)
33
+ Requires-Dist: pyyaml (>=6.0.0)
34
+ Requires-Dist: requests (>=2.32.3)
35
+ Project-URL: Bug Tracker, https://github.com/zscaler/zscaler-sdk-python/issues
36
+ Project-URL: Documentation, https://zscaler-sdk-python.readthedocs.io
37
+ Project-URL: Repository, https://github.com/zscaler/zscaler-sdk-python
38
+ Description-Content-Type: text/markdown
39
+
40
+ # Official Python SDK for the Zscaler Products
41
+
42
+ [![PyPI - Downloads](https://img.shields.io/pypi/dw/zscaler-sdk-python)](https://pypistats.org/packages/zscaler-sdk-python)
43
+ [![License](https://img.shields.io/github/license/zscaler/zscaler-sdk-python.svg)](https://github.com/zscaler/zscaler-sdk-python)
44
+ [![Documentation Status](https://readthedocs.org/projects/zscaler-sdk-python/badge/?version=latest)](https://zscaler-sdk-python.readthedocs.io/en/latest/?badge=latest)
45
+ [![Latest version released on PyPi](https://img.shields.io/pypi/v/zscaler-sdk-python.svg)](https://pypi.org/project/zscaler-sdk-python)
46
+ [![PyPI pyversions](https://img.shields.io/pypi/pyversions/zscaler-sdk-python.svg)](https://pypi.python.org/pypi/zscaler-sdk-python/)
47
+ [![codecov](https://codecov.io/gh/zscaler/zscaler-sdk-python/graph/badge.svg?token=56B53PITU8)](https://codecov.io/gh/zscaler/zscaler-sdk-python)
48
+ [![Zscaler Community](https://img.shields.io/badge/zscaler-community-blue)](https://community.zscaler.com/)
49
+
50
+ ## Support Disclaimer
51
+
52
+ -> **Disclaimer:** Please refer to our [General Support Statement](docsrc/zs/guides/support.rst) before proceeding with the use of this provider. You can also refer to our [troubleshooting guide](docsrc/zs/guides/troubleshooting.rst) for guidance on typical problems.
53
+
54
+ # Official Zscaler Python SDK Overview
55
+
56
+ * [Release status](#release-status)
57
+ * [Breaking Changes & Migration Guide to Multi-Client SDK](#breaking-changes--migration-guide-to-multi-client-sdk)
58
+ * [Need help?](#need-help)
59
+ * [Getting Started](#getting-started)
60
+ - [Building the SDK](#building-the-sdk)
61
+ * [Usage guide](#usage-guide)
62
+ * [Authentication](#authentication)
63
+ * [Zscaler OneAPI New Framework](#zscaler-oneapi-new-framework)
64
+ * [Zscaler Legacy API Framework](#zscaler-legacy-api-framework)
65
+ * [Configuration reference](#configuration-reference)
66
+ * [Pagination](#pagination)
67
+ * [Contributing](#contributing)
68
+
69
+ The Zscaler SDK for Python includes functionality to accelerate development via [Python](https://www.python.org/). This SDK can be
70
+ used in your server-side code to interact with the Zscaler API platform across multiple products such as:
71
+
72
+ * [ZPA API](https://help.zscaler.com/zpa/zpa-api/api-developer-reference-guide)
73
+ * [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
74
+ * [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
75
+ * [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
76
+ * [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
77
+ * [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
78
+ * [ZWA API](https://help.zscaler.com/workflow-automation/getting-started-workflow-automation-api)
79
+
80
+ This SDK is designed to support the new Zscaler API framework [OneAPI](https://help.zscaler.com/oneapi/understanding-oneapi)
81
+ via a single OAuth2 HTTP client. The SDK is also backwards compatible with the previous
82
+ Zscaler API framework, and each package is supported by an individual and robust HTTP client
83
+ designed to handle failures on different levels by performing intelligent retries.
84
+
85
+ ## Release Status
86
+
87
+ This library uses semantic versioning and updates are posted in ([release notes](/docs/guides/release-notes.md)) |
88
+
89
+ | Version | Status |
90
+ | ------- | -------------------------------- |
91
+ | 0.x | :warning: Beta Release (Retired) |
92
+ | 1.x | :heavy_check_mark: Release |
93
+
94
+ The latest release can always be found on the ([releases page](github-releases))
95
+
96
+ > Requires Python version 3.8.0 or higher.
97
+ Zscaler SDK for Python is compatible with Python 3.8 _(until [June 2023](https://devguide.python.org/versions/))_, 3.8, 3.9, 3.10, and 3.11.
98
+
99
+ ## Need help?
100
+
101
+ If you run into problems, please refer to our [General Support Statement](docs/guides/support.md) before proceeding with the use of this SDK. You can also refer to our [troubleshooting guide](docs/guides/troubleshooting.md) for guidance on typical problems. You can also raise an issue via ([github issues page](https://github.com/zscaler/zscaler-sdk-go/issues))
102
+
103
+ - Ask questions on the [Zenith Community][zenith]
104
+ - Post [issues on GitHub][github-issues] (for code errors)
105
+ - Support [customer support portal][zscaler-support]
106
+
107
+ ## Breaking Changes & Migration Guide to Multi-Client SDK
108
+
109
+ This SDK is a complete redesign from the older `zscaler-sdk-python` or `pyzscaler packages`. If you've used either of those, please review the following before upgrading:
110
+
111
+ ### What's Changed
112
+
113
+ | Feature | Legacy SDK (Restfly + Box) | New SDK (OneAPI + Pythonic Dict) |
114
+ |---------------------------------|--------------------------------------------------|--------------------------------------------------|
115
+ | **Data Structure** | Used `Python-Box` objects (dot notation) | Uses native Python `dict` with `snake_case` |
116
+ | **HTTP Engine** | [Restfly](https://github.com/tdunham/restfly) | Custom HTTP executor with retries, caching, etc.|
117
+ | **Auth Model** | One set of credentials per service | Unified OAuth2 (Zidentity) with scoped access |
118
+ | **Multi-Service Support** | Separate SDKs or config per service | Unified client with `.zia`, `.zpa`, `.zcc` |
119
+ | **Pagination** | Inconsistent or manual | Built-in with `resp.has_next()` and `resp.next()` |
120
+ | **Error Handling** | Raw HTTP exceptions | Returns `(result, response, error)` tuples |
121
+ | **Models** | Custom models + `.attribute` access | Plain Python dict access: `object["field"]` |
122
+ | **Return Types** | Box-style nested objects | Pure JSON-serializable `dict` responses |
123
+
124
+ ### Legacy SDK Examples
125
+
126
+ ```py
127
+ # Old SDK (Pyzscaler / Restfly)
128
+ client = ZIAClientHelper(api_key="...", cloud="...")
129
+
130
+ users = client.users.list()
131
+ print(users[0].name) # Box-style access
132
+ ```
133
+
134
+ ### New SDK Example
135
+ ```py
136
+ from zscaler import ZscalerClient
137
+
138
+ config = {
139
+ "clientId": "...",
140
+ "clientSecret": "...",
141
+ "vanityDomain": "...",
142
+ "cloud": "beta", # (Optional)
143
+ }
144
+
145
+ with ZscalerClient(config) as client:
146
+ users, _, err = client.zia.user_management.list_users()
147
+ if err:
148
+ print("Error:", err)
149
+ else:
150
+ print(users[0]["name"]) # Pythonic dict access
151
+ ```
152
+
153
+ ### Migration Summary
154
+
155
+ If you're upgrading from a previous version:
156
+
157
+ * Refactor any `.attribute` access to dictionary access: `user["name"]` instead of `user.name`
158
+ * Update authentication to use OAuth2 via OneAPI:
159
+ Choose either:
160
+ ```py
161
+ client = ZscalerClient({
162
+ "client_id": "...",
163
+ "client_secret": "...",
164
+ "vanity_domain": "..."
165
+ })
166
+ ```
167
+
168
+ or (for JWT private key auth):
169
+ ```py
170
+ client = ZscalerClient({
171
+ "client_id": "...",
172
+ "private_key": "...",
173
+ "vanity_domain": "..."
174
+ })
175
+ ```
176
+
177
+ * If your tenant is still `NOT` migrated to Zidentity:
178
+ You can still use this SDK by instantiating the respective legacy API client directly. See section: [Zscaler Legacy API Framework](#zscaler-legacy-api-framework)
179
+ ```py
180
+ from zscaler.oneapi_client import LegacyZIAClient
181
+
182
+ def main():
183
+ with LegacyZIAClient(config) as client:
184
+ users, _, _ = client.user_management.list_users()
185
+ ...
186
+ ```
187
+
188
+ * All data returned from the SDK is pure `dict` — no Box, no attribute-style access — just native, Pythonic, serializable output.
189
+
190
+ ## Getting started
191
+
192
+ To install the Zscaler Python SDK in your project:
193
+
194
+ ```sh
195
+ pip install zscaler-sdk-python
196
+ ```
197
+
198
+ ## Building the SDK
199
+
200
+ In most cases, you won't need to build the SDK from source. If you want to build it yourself, you'll need these prerequisites:
201
+
202
+ - Clone the repo
203
+ - Install `poetry`
204
+ - Run `poetry build` from the root of the project
205
+ - Run `pip install dist/zscalerdist/zscaler_sdk_python-x.x.x.tar.gz`
206
+
207
+ ### You'll also need
208
+
209
+ * An administrator account in the Zscaler products you want to interact with.
210
+ * [OneAPI](https://help.zscaler.com/oneapi/understanding-oneapi): If you are using the OneAPI entrypoint you must have a API Client created in the [Zidentity platform](https://help.zscaler.com/zidentity/about-api-clients)
211
+ * Legacy Framework: If using the legacy API framework you must have API Keys credentials in the the respective Zscaler cloud products.
212
+ * For more information on getting started with Zscaler APIs visit one of the following links:
213
+
214
+ * [OneAPI](https://help.zscaler.com/oneapi/understanding-oneapi)
215
+ * [ZPA API](https://help.zscaler.com/zpa/zpa-api/api-developer-reference-guide)
216
+ * [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
217
+ * [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
218
+ * [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
219
+ * [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
220
+ * [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
221
+ * [ZWA API](https://help.zscaler.com/workflow-automation/getting-started-workflow-automation-api)
222
+
223
+ ## Usage guide
224
+
225
+ These examples will help you understand how to use this library.
226
+
227
+ Once you initialize a specific service client, you can call methods to make requests to the Zscaler API. Each Zscaler Service has its own package and is grouped by the API endpoint they belong to. For example, ZPA methods that call the [Application Segment API][application-segment-api-docs] are organized under [the zscaler/zpa resource (zscaler.zpa.application_segment.py)][application_segment]. The same logic applies to all other services.
228
+
229
+ **NOTE:** Zscaler APIs DO NOT support Asynchronous I/O calls, which made its debut in Python 3.5 and is powered by the `asyncio` library which provides avenues to produce concurrent code.
230
+
231
+ ## Authentication
232
+
233
+ The latest versions => 0.20.0 of this SDK provides dual API client capability and can be used to interact both with new Zscaler [OneAPI](https://help.zscaler.com/oneapi/understanding-oneapi) framework and the legacy API platform.
234
+
235
+ If your Zscaler tenant has not been migrated to the new Zscaler [Zidentity platform](https://help.zscaler.com/zidentity/what-zidentity), you must use the respective Legacy API client described in the following section: [Zscaler Legacy API Framework](#zscaler-legacy-api-framework)
236
+
237
+ :warning: **Caution**: Zscaler does not recommend hard-coding credentials into arguments, as they can be exposed in plain text in version control systems. Use environment variables instead.
238
+
239
+ ## Zscaler OneAPI New Framework
240
+
241
+ As of the publication of SDK version => 1.7.x, OneAPI is available for programmatic interaction with the following products:
242
+
243
+ * [ZPA API](https://help.zscaler.com/zpa/zpa-api/api-developer-reference-guide)
244
+ * [ZIA API](https://help.zscaler.com/zia/getting-started-zia-api)
245
+ * [ZIdentity](https://help.zscaler.com/zidentity/getting-started-zidentity-api)
246
+ * [ZDX API](https://help.zscaler.com/zdx/understanding-zdx-api)
247
+ * [ZCC API](https://help.zscaler.com/client-connector/getting-started-client-connector-api)
248
+ * [ZTW API](https://help.zscaler.com/cloud-branch-connector/getting-started-cloud-branch-connector-api)
249
+
250
+ **NOTE** All other products such as Zscaler Cloud Connector (ZTW) and Zscaler Digital Experience (ZDX) are supported only via the legacy authentication method described in this README.
251
+
252
+ ### OneAPI (API Client Scope)
253
+
254
+ OneAPI Resources are automatically created within the ZIdentity Admin UI based on the RBAC Roles
255
+ applicable to APIs within the various products. For example, in ZIA, navigate to `Administration -> Role Management` and select `Add API Role`.
256
+
257
+ Once this role has been saved, return to the ZIdentity Admin UI and from the Integration menu
258
+ select API Resources. Click the `View` icon to the right of Zscaler APIs and under the ZIA
259
+ dropdown you will see the newly created Role. In the event a newly created role is not seen in the
260
+ ZIdentity Admin UI a `Sync Now` button is provided in the API Resources menu which will initiate an
261
+ on-demand sync of newly created roles.
262
+
263
+ **WARNING**: Attention Government customers. OneAPI and Zidentity is not currently supported for the following ZIA clouds: `zscalergov` and `zscalerten` or ZPA `GOV`, and `GOVUS`.
264
+
265
+ ### Default Environment Variables
266
+
267
+ You can provide credentials via the `ZSCALER_CLIENT_ID`, `ZSCALER_CLIENT_SECRET`, `ZSCALER_VANITY_DOMAIN`, `ZSCALER_CLOUD`, `ZSCALER_PARTNER_ID` environment variables, representing your Zidentity OneAPI credentials `clientId`, `clientSecret`, `vanityDomain`, `cloud` and `partnerId` respectively.
268
+
269
+ | Argument | Description | Environment variable |
270
+ |--------------|-------------|-------------------|
271
+ | `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
272
+ | `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
273
+ | `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
274
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
275
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$api.<cloud_name>.zsapi.net`.| `ZSCALER_CLOUD` |
276
+ | `partnerId` | _(String)_ Optional partner ID. When provided, the SDK automatically includes the `x-partner-id` header in all API requests.| `ZSCALER_PARTNER_ID` |
277
+ | `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
278
+ | `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
279
+
280
+ ### Alternative OneAPI Cloud Environments
281
+
282
+ OneAPI supports authentication and can interact with alternative Zscaler enviornments i.e `beta`, `alpha` etc. To authenticate to these environments you must provide the following values:
283
+
284
+ | Argument | Description | Environment variable |
285
+ |--------------|-------------|-------------------|
286
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
287
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$api.<cloud_name>.zsapi.net`.| `ZSCALER_CLOUD` |
288
+
289
+ For example: Authenticating to Zscaler Beta environment:
290
+
291
+ ```sh
292
+ export ZSCALER_VANITY_DOMAIN="acme"
293
+ export ZSCALER_CLOUD="beta"
294
+ ```
295
+
296
+ **Note 1**: The attribute `cloud` or environment variable `ZSCALER_CLOUD` is optional and only required when authenticating to an alternative Zidentity cloud environment.
297
+
298
+ **Note 2**: By default this SDK will send the authentication request and subsequent API calls to the default base URL.
299
+
300
+ **Note 3**: Authentication to Zscaler Sandbox requires the attribute/parameter `sandboxCloud`.The following cloud environments are supported:
301
+
302
+ * `zscaler`
303
+ * `zscalerone`
304
+ * `zscalertwo`
305
+ * `zscalerthree`
306
+ * `zscloud`
307
+ * `zscalerbeta`
308
+ * `zscalergov`
309
+ * `zscalerten`
310
+ * `zspreview`
311
+
312
+ ### Authenticating to Zscaler Private Access (ZPA)
313
+
314
+ The authentication to Zscaler Private Access (ZPA) via the OneAPI framework, requires the extra attribute called `customerId` and optionally the attributes `microtenantId` and `partnerId`.
315
+
316
+ | Argument | Description | Environment variable |
317
+ |--------------|-------------|-------------------|
318
+ | `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
319
+ | `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
320
+ | `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
321
+ | `customerId` | _(String)_ The ZPA tenant ID found under Configuration & Control > Public API > API Keys menu in the ZPA console.| `ZPA_CUSTOMER_ID` |
322
+ | `microtenantId` | _(String)_ The ZPA microtenant ID found in the respective microtenant instance under Configuration & Control > Public API > API Keys menu in the ZPA console.| `ZPA_MICROTENANT_ID` |
323
+ | `partnerId` | _(String)_ Optional partner ID. When provided, the SDK automatically includes the `x-partner-id` header in all API requests.| `ZSCALER_PARTNER_ID` |
324
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
325
+ | `cloud`
326
+
327
+ ### Initialize OneAPI OAuth 2.0 Client
328
+
329
+ #### OneAPI Client ID and Client Secret Authentication
330
+
331
+ Construct a client instance by passing your Zidentity `clientId`, `clientSecret` and `vanityDomain`:
332
+
333
+ ```py
334
+ from zscaler import ZscalerClient
335
+
336
+ config = {
337
+ "clientId": '{yourClientId}',
338
+ "clientSecret": '{yourClientSecret}',
339
+ "vanityDomain": '{yourvanityDomain}',
340
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
341
+ "customerId": "", # Optional parameter. Required only when using ZPA
342
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
343
+ "partnerId": "", # Optional parameter. When provided, automatically includes x-partner-id header in all requests
344
+ "logging": {"enabled": False, "verbose": False},
345
+ }
346
+
347
+ def main():
348
+ with ZscalerClient(config) as client:
349
+ idp_id = "72058304855015574"
350
+ query_params = {'page': '1', 'page_size': '100'}
351
+ groups, resp, err = client.zpa.scim_groups.list_scim_groups(idp_id=idp_id, query_params=query_params)
352
+ if err:
353
+ print(f"Error listing SCIM groups: {err}")
354
+ return
355
+ if groups:
356
+ print(f"Processing {len(groups)} groups:")
357
+ for group in groups:
358
+ print(group)
359
+
360
+ try:
361
+ resp.next()
362
+ except StopIteration:
363
+ print("No more groups to retrieve.")
364
+
365
+ if __name__ == "__main__":
366
+ main()
367
+ ```
368
+
369
+ #### OneAPI Client ID and Private Key Authentication
370
+
371
+ ```py
372
+ from zscaler import ZscalerClient
373
+
374
+ config = {
375
+ "clientId": '{yourClientId}',
376
+ "privateKey": '{yourPrivateKey}',
377
+ "vanityDomain": '{yourvanityDomain}',
378
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
379
+ "customerId": "", # Optional parameter. Required only when using ZPA
380
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
381
+ "partnerId": "", # Optional parameter. When provided, automatically includes x-partner-id header in all requests
382
+ "logging": {"enabled": False, "verbose": False},
383
+ }
384
+
385
+ def main():
386
+ with ZscalerClient(config) as client:
387
+ idp_id = "72058304855015574"
388
+ query_params = {'page': '1', 'page_size': '100'}
389
+ groups, resp, err = client.zpa.scim_groups.list_scim_groups(idp_id=idp_id, query_params=query_params)
390
+ if err:
391
+ print(f"Error listing SCIM groups: {err}")
392
+ return
393
+ if groups:
394
+ print(f"Processing {len(groups)} groups:")
395
+ for group in groups:
396
+ print(group)
397
+
398
+ try:
399
+ resp.next()
400
+ except StopIteration:
401
+ print("No more groups to retrieve.")
402
+
403
+ if __name__ == "__main__":
404
+ main()
405
+ ```
406
+
407
+ Note, that `privateKey` can be passed in JWK format or in PEM format, i.e. (examples generated with https://mkjwk.org):
408
+
409
+ > Using a Python dictionary to hard-code the Zscaler API credentials is encouraged for development ONLY; In production, you should use a more secure way of storing these values. This library supports a few different configuration sources, covered in the [configuration reference](#configuration-reference) section.
410
+
411
+ > **NOTE**: THIS IS NOT A PRODUCTION KEY AND IS DISPLAYED FOR EXAMPLE PURPOSES ONLY
412
+
413
+ ![JWK Example](https://raw.githubusercontent.com/zscaler/zscaler-sdk-python/refs/heads/master/docsrc/jwk.svg)
414
+
415
+ or
416
+
417
+ > **NOTE**: THIS IS NOT A PRODUCTION KEY AND IS DISPLAYED FOR EXAMPLE PURPOSES ONLY
418
+
419
+ ```
420
+ -----BEGIN PRIVATE KEY-----
421
+ # Example private key (not a real key)
422
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCv3krdYg3z7h0H
423
+ 60QoePJMghllQxsfPxp3mgFfYEaIbF88Z8dvPZEfhAtP19/Mv62ASjwgqzQzKHRV
424
+ -----END PRIVATE KEY-----
425
+ ```
426
+
427
+ ### Get and set custom headers
428
+
429
+ It is possible to set custom headers, which will be sent with each request. This feature is only supported when instantiating the OneAPI Client `ZscalerClient`.
430
+
431
+ ```py
432
+ from zscaler import ZscalerClient
433
+
434
+ def main():
435
+ with ZscalerClient(config) as client:
436
+ client.set_custom_headers({'Custom-Header': 'custom value'})
437
+ groups, resp, err = client.zpa.segment_groups.list_groups()
438
+ for group in groups:
439
+ print(group.name, group.description)
440
+
441
+ # clear all custom headers
442
+ client.clear_custom_headers()
443
+
444
+ # output should be: {}
445
+ print(client.get_custom_headers())
446
+ ```
447
+
448
+ Note, that custom headers will be overwritten with default headers with the same name.
449
+ This doesn't allow breaking the client. Get default headers:
450
+
451
+ ### Automatic x-partner-id Header Injection
452
+
453
+ The SDK automatically includes the `x-partner-id` header in all API requests when `partnerId` is provided in the configuration. This feature works seamlessly across all services (ZIA, ZPA, ZTW, ZCC, ZDX, ZWA) and both OneAPI and Legacy clients.
454
+
455
+ **How it works:**
456
+ - When `partnerId` is provided via config dictionary or `ZSCALER_PARTNER_ID` environment variable, the SDK automatically adds `x-partner-id: <partnerId>` to all request headers
457
+ - If `partnerId` is not provided, the header is not included
458
+ - No additional code is required - the header injection is handled automatically by the SDK
459
+
460
+ **Example:**
461
+
462
+ ```py
463
+ from zscaler import ZscalerClient
464
+
465
+ config = {
466
+ "clientId": '{yourClientId}',
467
+ "clientSecret": '{yourClientSecret}',
468
+ "vanityDomain": '{yourvanityDomain}',
469
+ "partnerId": "542585sdsdw", # Automatically adds x-partner-id header to all requests
470
+ "logging": {"enabled": False, "verbose": False},
471
+ }
472
+
473
+ def main():
474
+ with ZscalerClient(config) as client:
475
+ # All API requests will automatically include: x-partner-id: 542585sdsdw
476
+ groups, resp, err = client.zpa.segment_groups.list_groups()
477
+ # ... rest of your code
478
+ ```
479
+
480
+ **Note:** This feature is also supported in Legacy clients. When using `LegacyZPAClient`, `LegacyZIAClient`, etc., you can provide `partnerId` in the config dictionary and the header will be automatically included in all requests.
481
+
482
+ ### ZIA and ZTW Context Manager
483
+
484
+ 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.
485
+
486
+ #### How Context Manager Works
487
+
488
+ When you use the `with` statement with a Zscaler client, the following happens automatically:
489
+
490
+ 1. **Authentication**: The client authenticates when entering the context
491
+ 2. **Session Management**: A session is established and maintained throughout the context
492
+ 3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
493
+
494
+ #### Implicit Activation Process
495
+
496
+ The context manager implements an "implicit activation" approach where:
497
+
498
+ - **All changes are final**: Configuration changes are automatically activated when the context exits
499
+ - **No manual activation required**: You don't need to remember to call activation endpoints
500
+ - **Deterministic behavior**: You always know that exiting the context will activate changes
501
+ - **Automation-friendly**: Perfect for scripts and automation scenarios
502
+
503
+ #### Example Usage
504
+
505
+ ```py
506
+ from zscaler import ZscalerClient
507
+
508
+ config = {
509
+ "clientId": '{yourClientId}',
510
+ "clientSecret": '{yourClientSecret}',
511
+ "vanityDomain": '{yourvanityDomain}',
512
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
513
+ "customerId": "", # Optional parameter. Required only when using ZPA
514
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
515
+ "partnerId": "", # Optional parameter. When provided, automatically includes x-partner-id header in all requests
516
+ "logging": {"enabled": False, "verbose": False},
517
+ }
518
+
519
+ def main():
520
+ with ZscalerClient(config) as client:
521
+ # Make ZIA configuration changes
522
+ added_role, response, error = client.zia.admin_roles.add_role(
523
+ name="New API Role",
524
+ description="Role created via API",
525
+ feature_permissions={"ZIA_ADMIN_ROLE": "READ"}
526
+ )
527
+ if error:
528
+ print(f"Error adding role: {error}")
529
+ return
530
+
531
+ # Make ZTW configuration changes
532
+ added_group, response, error = client.ztw.ip_destination_groups.add_group(
533
+ name="New IP Group",
534
+ description="IP group created via API"
535
+ )
536
+ if error:
537
+ print(f"Error adding IP group: {error}")
538
+ return
539
+
540
+ print("All changes made successfully")
541
+
542
+ # Context manager automatically deauthenticates here
543
+ # All staged changes are activated automatically for both ZIA and ZTW
544
+ print("Context exited - all changes have been activated")
545
+
546
+ if __name__ == "__main__":
547
+ main()
548
+ ```
549
+
550
+ #### Benefits
551
+
552
+ - **Automatic cleanup**: No need to manually deauthenticate
553
+ - **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
554
+ - **Staged configuration activation**: All changes are activated when the context exits
555
+ - **Simplified code**: No need to remember activation steps
556
+ - **Multi-service support**: Works seamlessly with both ZIA and ZTW services
557
+
558
+ ## Zscaler OneAPI Rate Limiting
559
+
560
+ 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.
561
+
562
+ ### Built-In Retry
563
+
564
+ This SDK uses a built-in retry strategy to automatically retry on 429 errors based on the response headers returned by each respective API service.
565
+
566
+ The header `x-ratelimit-reset` is returned in the API response for each API call, which indicates the time in seconds until the rate limit resets. The SDK uses the returned value in this header to calculate the retry time for the following services:
567
+
568
+ * [ZCC Rate Limiting][rate-limiting-zcc] for rate limiting requirements.
569
+ * [ZIA Rate Limiting][rate-limiting-zia] for rate limiting requirements.
570
+ * [ZPA Rate Limiting][rate-limiting-zpa] for rate limiting requirements.
571
+
572
+ ## Pagination
573
+
574
+ The pagination system in this SDK is unified across `ZCC`, `ZTW`, `ZDX`, `ZIA`, `ZPA`, `ZWA`
575
+ and is applied transparently whether you're using the Legacy API Client or the new OneAPI OAuth2 Client.
576
+
577
+ ✅ This means no code changes are needed when transitioning from the legacy API framework to OneAPI framework.
578
+
579
+ When calling a method that supports pagination (e.g., `list_users`, `list_groups`, `list_app_segments`), only the first page of results is returned initially. The SDK returns a response tuple:
580
+
581
+ ```py
582
+ items, response, error = client.zia.user_management.list_groups()
583
+ ```
584
+
585
+ You can then use the `response.has_next()` and `response.next()` methods to retrieve subsequent pages.
586
+
587
+ ### Basic Pagination Example
588
+
589
+ ```py
590
+ query_parameters = {'page_size': 100}
591
+ groups, resp, err = client.zia.user_management.list_groups(query_parameters)
592
+
593
+ while resp.has_next():
594
+ more_groups, resp, err = resp.next() # Unpack all 3 return values
595
+ if err:
596
+ break
597
+ if more_groups:
598
+ groups.extend(more_groups)
599
+ ```
600
+
601
+ ### ZPA Searching and Filtering
602
+
603
+ The ZPA API uses a filtering/query parameter format for search operations. Search strings must follow the format: `fieldName operator fieldValue`. The SDK provides automatic conversion for simple name searches while allowing full control for advanced filtering.
604
+
605
+ #### Simple Name Search (Automatic Conversion)
606
+
607
+ For convenience, you can provide a simple search string when searching by name. The SDK automatically converts it to the `name+EQ+<search_string>` format for exact name matching:
608
+
609
+ ```py
610
+ # Simple string search - automatically converted to name+EQ+CDE Segment Group
611
+ query_parameters = {'search': 'CDE Segment Group'}
612
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
613
+ ```
614
+
615
+ #### Advanced Filtering (Explicit Format)
616
+
617
+ To search by other fields or use different operators, you must provide the complete filter format: `fieldName+operator+fieldValue`. Common operators include:
618
+
619
+ - `EQ` - Equals
620
+ - `NE` - Not equals
621
+ - `GT` - Greater than
622
+ - `LT` - Less than
623
+ - `GE` - Greater than or equal
624
+ - `LE` - Less than or equal
625
+ - `CONTAINS` - Contains substring
626
+ - `STARTSWITH` - Starts with
627
+ - `ENDSWITH` - Ends with
628
+
629
+ **Examples:**
630
+
631
+ ```py
632
+ # Search by enabled status
633
+ query_parameters = {'search': 'enabled+EQ+true'}
634
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
635
+
636
+ # Search by description with CONTAINS operator
637
+ query_parameters = {'search': 'description+CONTAINS+test'}
638
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
639
+
640
+ # Search by name with STARTSWITH operator
641
+ query_parameters = {'search': 'name+STARTSWITH+CDE'}
642
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
643
+ ```
644
+
645
+ **Note:** If your search string already contains a filter operator pattern (like `+EQ+` or `+CONTAINS+`), the SDK will use it as-is without modification. This allows full control over filtering criteria while maintaining convenience for simple name searches.
646
+
647
+ #### Combining Search with Pagination
648
+
649
+ You can combine search filters with pagination parameters:
650
+
651
+ ```py
652
+ query_parameters = {
653
+ 'search': 'name+EQ+CDE Segment Group',
654
+ 'page': 1,
655
+ 'pagesize': 20
656
+ }
657
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
658
+
659
+ # Pagination works seamlessly with filtered searches
660
+ while resp.has_next():
661
+ more_groups, resp, err = resp.next()
662
+ if err:
663
+ break
664
+ if more_groups:
665
+ groups.extend(more_groups)
666
+ ```
667
+
668
+ ### Full Example with Error Handling
669
+ ```py
670
+ def main():
671
+ with ZscalerClient(config) as client:
672
+ query_parameters = {}
673
+ groups, resp, err = client.zia.user_management.list_groups(query_parameters)
674
+
675
+ if err:
676
+ print(f"Error: {err}")
677
+ return
678
+
679
+ print(f"Processing {len(groups)} groups:")
680
+ for group in groups:
681
+ print(group)
682
+
683
+ while resp.has_next():
684
+ next_page, resp, err = resp.next() # Unpack all 3 return values
685
+ if err:
686
+ print(f"Error fetching next page: {err}")
687
+ break
688
+ if next_page:
689
+ for group in next_page:
690
+ print(group)
691
+
692
+ try:
693
+ resp.next() # Will raise StopIteration if no more data
694
+ except StopIteration:
695
+ print("✅ No more groups to retrieve.")
696
+
697
+ if __name__ == "__main__":
698
+ main()
699
+ ```
700
+
701
+ ### Pagination Limits and Controls
702
+
703
+ Each Zscaler service has its own pagination requirements and limits. The SDK automatically respects these API defaults when no `page_size` is provided:
704
+
705
+ | Service | API Default Page Size | Max Page Size | Pagination Parameters |
706
+ |---------|-----------------------|---------------|-------------------------------------------------|
707
+ | ZCC | Varies by endpoint | Varies | Uses `page`, `pageSize` |
708
+ | ZDX | 10 | Varies | Uses `limit` + `offset` (cursor-based) |
709
+ | ZIA | 100 | 1000 | Uses `page`, `pageSize` |
710
+ | ZPA | 20 | 500 | Uses `page`, `pagesize` |
711
+ | ZTW | 100 | Varies | Uses `page`, `pageSize` |
712
+ | ZWA | Varies by endpoint | Varies | Uses `page`, `pageSize` |
713
+
714
+ **Important Notes:**
715
+ - ✅ The SDK automatically uses each API's default page size when no `page_size` is specified
716
+ - ✅ Always use `snake_case` for parameter names (e.g., `page_size`). The SDK handles conversion internally
717
+ - ✅ Pagination stops automatically when fewer results than the page size are returned
718
+
719
+
720
+ You can control how many total items or pages the SDK will fetch even if more data is available.
721
+
722
+ ### Internal Pagination Handling
723
+
724
+ The `ZscalerAPIResponse` object returned as resp handles:
725
+
726
+ * Tracking the current page
727
+ * Automatically applying proper pagination parameters per service
728
+ * Mapping pagination fields like page, pagesize, limit, offset, next_offset, etc.
729
+ * Fallback handling when the API doesn't indicate the total count
730
+
731
+ You don’t need to worry about API quirks—just use `resp.has_next()` and `resp.next()` safely.
732
+
733
+ ⚠️ Note on StopIteration
734
+ The SDK raises a StopIteration if `next()` is called and no more pages are available:
735
+
736
+ ```py
737
+ try:
738
+ resp.next()
739
+ except StopIteration:
740
+ print("All data fetched.")
741
+ ```
742
+
743
+ ## Logging
744
+
745
+ The Zscaler SDK Python, provides robust logging for debug purposes.
746
+ Logs are disabled by default and should be enabled explicitly via client configuration or via a [configuration file](#configuration-reference):
747
+
748
+ ```py
749
+ from zscaler import ZscalerClient
750
+
751
+ config = {"logging": {"enabled": True}}
752
+ client = ZscalerClient(config)
753
+ ```
754
+ You can also enable debug logging via the following environment variables:
755
+ * `ZSCALER_SDK_LOG` - Turn on logging
756
+ * `ZSCALER_SDK_VERBOSE` - Turn on logging in verbose mode
757
+
758
+ ```sh
759
+ export ZSCALER_SDK_LOG=true
760
+ export ZSCALER_SDK_VERBOSE=true
761
+ ```
762
+
763
+ This SDK utilizes the standard Python library `logging`. By default, log level INFO is set. You can set another log level by setting the argument `verbose` to `True`.
764
+
765
+ **NOTE**: DO NOT SET DEBUG LEVEL IN PRODUCTION!
766
+
767
+ ```py
768
+ from zscaler import ZscalerClient
769
+
770
+ config = {
771
+ "clientId": '{yourClientId}',
772
+ "clientSecret": '{yourClientSecret}',
773
+ "vanityDomain": '{yourvanityDomain}',
774
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
775
+ "customerId": "", # Optional parameter. Required only when using ZPA
776
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
777
+ "logging": {"enabled": True, "verbose": True},
778
+ }
779
+
780
+ def main():
781
+ with ZscalerClient(config) as client:
782
+ groups, resp, err = client.zpa.segment_groups.list_groups()
783
+ for group in groups:
784
+ print(group.name, group.description)
785
+ if __name__ == "__main__":
786
+ main()
787
+ ```
788
+
789
+ You should now see logs in your console. Notice that API Credentials i.e `clientId` and `clientSecret` are **NOT** logged to the console; however, Bearer tokens are still visible. We still advise to use caution and never use `verbose` level logging in production.
790
+
791
+ What it being logged? `requests`, `responses`, `http errors`, `caching responses`.
792
+
793
+ ### Using Your Own Logger (Optional)
794
+ If your script defines its own logging configuration (e.g., for file or custom formatting), the SDK will not interfere with it. You can continue using your own logger like this:
795
+
796
+ ```py
797
+ import logging
798
+
799
+ my_logger = logging.getLogger("my_app_logger")
800
+ my_logger.setLevel(logging.INFO)
801
+ handler = logging.StreamHandler()
802
+ handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
803
+ my_logger.addHandler(handler)
804
+
805
+ my_logger.info("This is your app-level log, independent from the SDK.")
806
+ ```
807
+
808
+ To control SDK logging separately, use:
809
+
810
+ ```py
811
+ logging.getLogger("zscaler-sdk-python").setLevel(logging.WARNING) # or .ERROR to silence SDK logs
812
+ ```
813
+
814
+ The SDK will never globally disable logging or interfere with your existing logging configuration.
815
+
816
+ ## Configuration reference
817
+
818
+ This library looks for configuration in the following sources:
819
+
820
+ 0. An `zscaler.yaml` file in a `.zscaler` folder in the current user's home directory (`~/.zscaler/zscaler.yaml` or `%userprofile%\.zscaler\zscaler.yaml`). See a sample [YAML Configuration](#yaml-configuration)
821
+ 1. A `zscaler.yaml` file in the application or project's root directory. See a sample [YAML Configuration](#yaml-configuration)
822
+ 2. [Environment variables](#environment-variables)
823
+ 3. Configuration explicitly passed to the constructor (see the example in [Getting started](#getting-started))
824
+
825
+ > Only ONE source needs to be provided!
826
+
827
+ Higher numbers win. In other words, configuration passed via the constructor will OVERRIDE configuration found in environment variables, which will override configuration in the designated `zscaler.yaml` files.
828
+
829
+ **NOTE:** This option is only supported for OneAPI Zidentity credentials at the moment.
830
+
831
+ ### YAML configuration
832
+
833
+ When you use an API Token instead of OAuth 2.0 the full YAML configuration looks like:
834
+
835
+ ```yaml
836
+ zscaler:
837
+ client:
838
+ clientId: { yourClientId }
839
+ clientSecret: { yourClientSecret }
840
+ vanityDomain: { yourVanityDomain }
841
+ customerId: { yourCustomerId}
842
+ proxy:
843
+ port: { proxy_port }
844
+ host: { proxy_host }
845
+ username: { proxy_username }
846
+ password: { proxy_password }
847
+ logging:
848
+ enabled: true
849
+ verbose: true
850
+ ```
851
+
852
+ > **NOTE**: THIS IS NOT A PRODUCTION KEY AND IS DISPLAYED FOR EXAMPLE PURPOSES ONLY
853
+
854
+ When you use OAuth 2.0 the full YAML configuration looks like:
855
+
856
+ ```yaml
857
+ zscaler:
858
+ client:
859
+ clientId: "YOUR_CLIENT_ID"
860
+ privateKey: |
861
+ -----BEGIN RSA PRIVATE KEY-----
862
+ MIIEogIBAAKCAQEAl4F5CrP6Wu2kKwH1Z+CNBdo0iteHhVRIXeHdeoqIB1iXvuv4
863
+ THQdM5PIlot6XmeV1KUKuzw2ewDeb5zcasA4QHPcSVh2+KzbttPQ+RUXCUAr5t+r
864
+ 0r6gBc5Dy1IPjCFsqsPJXFwqe3RzUb...
865
+ -----END RSA PRIVATE KEY-----
866
+ vanityDomain: { yourVanityDomain }
867
+ customerId: { yourCustomerId}
868
+ proxy:
869
+ port: { proxy_port }
870
+ host: { proxy_host }
871
+ username: { proxy_username }
872
+ password: { proxy_password }
873
+ logging:
874
+ enabled: true
875
+ verbose: true
876
+ ```
877
+
878
+ ### Environment variables
879
+
880
+ Each one of the configuration values above can be turned into an environment variable name with the `_` (underscore) character and UPPERCASE characters. The following are accepted:
881
+
882
+ | Argument | Description | Environment variable |
883
+ |--------------|-------------|-------------------|
884
+ | `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
885
+ | `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
886
+ | `privateKey` | _(String)_ A string Private key value.| `ZSCALER_CLIENT_PRIVATEKEY` |
887
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
888
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$api.<cloud_name>.zsapi.net`.| `ZSCALER_CLOUD` |
889
+ | `userAgent` | _(String)_ Append additional information to the HTTP User-Agent | `ZSCALER_CLIENT_USERAGENT` |
890
+ | `cache.enabled` | _(String)_ Use request memory cache | `ZSCALER_CLIENT_CACHE_ENABLED` |
891
+ | `cache.defaultTti` | _(String)_ Cache clean up interval in seconds | `ZSCALER_CLIENT_CACHE_DEFAULTTTI` |
892
+ | `cache.defaultTtl` | _(String)_ Cache time to live in seconds | `ZSCALER_CLIENT_CACHE_DEFAULTTTL` |
893
+ | `proxyPort` | _(String)_ HTTP proxy port | `ZSCALER_CLIENT_PROXY_PORT` |
894
+ | `proxyHost` | _(String)_ HTTP proxy host | `ZSCALER_CLIENT_PROXY_HOST` |
895
+ | `proxyUsername` | _(String)_ HTTP proxy username | `ZSCALER_CLIENT_PROXY_USERNAME` |
896
+ | `proxyPassword` | _(String)_ HTTP proxy password | `ZSCALER_CLIENT_PROXY_PASSWORD` |
897
+ | `disableHttpsCheck` | _(String)_ Disable SSL checks | `ZSCALER_TESTING_TESTINGDISABLEHTTPSCHECK` |
898
+ | `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
899
+ | `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
900
+
901
+ ### Zscaler ZIdentity API
902
+
903
+ This SDK supports programmatic integration with the Zscaler ZIdentity API service.
904
+
905
+ The authentication to Zscaler ZIdentity service via the OneAPI framework, requires uses the API client `ZscalerClient`
906
+
907
+ #### Zidentity Pagination
908
+
909
+ Zidentity API supports pagination with a maximum page size of 100 records per request. The SDK automatically handles pagination for Zidentity endpoints.
910
+
911
+ **Key Features:**
912
+ - **Maximum Page Size**: 100 records per page (enforced by API)
913
+ - **Automatic Pagination**: SDK handles pagination transparently
914
+ - **Response Format**: Returns data in `records` field with pagination metadata
915
+
916
+ **Example Usage:**
917
+
918
+ ```py
919
+ from zscaler import ZscalerClient
920
+
921
+ config = {
922
+ "clientId": '{yourClientId}',
923
+ "clientSecret": '{yourClientSecret}',
924
+ "vanityDomain": '{yourvanityDomain}',
925
+ "cloud": "beta",
926
+ }
927
+
928
+ def main():
929
+ with ZscalerClient(config) as client:
930
+ # Request 300 groups (will automatically fetch 3 pages)
931
+ groups_response, response, error = client.zidentity.groups.list_groups(
932
+ query_params={'page_size': 300}
933
+ )
934
+
935
+ if error:
936
+ print(f"Error listing groups: {error}")
937
+ return
938
+
939
+ print(f"Total groups in response: {len(groups_response.records)}")
940
+ print(f"Total available: {groups_response.results_total}")
941
+ print(f"Page offset: {groups_response.page_offset}")
942
+ print(f"Page size: {groups_response.page_size}")
943
+
944
+ # Access individual groups
945
+ for group in groups_response.records:
946
+ print(f"Group: {group.name} (ID: {group.id})")
947
+
948
+ # Manual pagination using response object
949
+ while response.has_next():
950
+ next_results, error = response.next()
951
+ if error:
952
+ print(f"Error fetching next page: {error}")
953
+ break
954
+
955
+ print(f"Next page: {len(next_results)} groups")
956
+ for group in next_results:
957
+ print(f"Group: {group['name']} (ID: {group['id']})")
958
+
959
+ if __name__ == "__main__":
960
+ main()
961
+ ```
962
+
963
+ **Pagination Metadata:**
964
+ - `results_total`: Total number of records available
965
+ - `page_offset`: Current page offset
966
+ - `page_size`: Number of records per page (max 100)
967
+ - `next_link`: URL for next page (if available)
968
+ - `prev_link`: URL for previous page (if available)
969
+
970
+ | Argument | Description | Environment variable |
971
+ |--------------|-------------|-------------------|
972
+ | `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
973
+ | `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
974
+ | `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
975
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
976
+ | `cloud`
977
+
978
+ ### Initialize OneAPI OAuth 2.0 Client
979
+
980
+ #### Zidentity OneAPI Client ID and Client Secret Authentication
981
+
982
+ Construct a client instance by passing your Zidentity `clientId`, `clientSecret` and `vanityDomain`:
983
+
984
+ ```py
985
+ from zscaler import ZscalerClient
986
+
987
+ config = {
988
+ "clientId": '{yourClientId}',
989
+ "clientSecret": '{yourClientSecret}',
990
+ "vanityDomain": '{yourvanityDomain}',
991
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
992
+ "logging": {"enabled": False, "verbose": False},
993
+ }
994
+
995
+ def main():
996
+ with ZscalerClient(config) as client:
997
+ users, _, error = client.zidentity.groups.list_groups()
998
+ if error:
999
+ print(f"Error listing users: {error}")
1000
+ return
1001
+
1002
+ print(f"Total users found: {len(users)}")
1003
+
1004
+ if __name__ == "__main__":
1005
+ main()
1006
+ ```
1007
+
1008
+ #### Zidentity OneAPI Client ID and Private Key Authentication
1009
+
1010
+ ```py
1011
+ from zscaler import ZscalerClient
1012
+
1013
+ config = {
1014
+ "clientId": '{yourClientId}',
1015
+ "privateKey": '{yourPrivateKey}',
1016
+ "vanityDomain": '{yourvanityDomain}',
1017
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
1018
+ "logging": {"enabled": False, "verbose": False},
1019
+ }
1020
+
1021
+ def main():
1022
+ with ZscalerClient(config) as client:
1023
+ users, _, error = client.zidentity.groups.list_groups()
1024
+ if error:
1025
+ print(f"Error listing users: {error}")
1026
+ return
1027
+
1028
+ print(f"Total users found: {len(users)}")
1029
+
1030
+ if __name__ == "__main__":
1031
+ main()
1032
+ ```
1033
+
1034
+ ### Zscaler Sandbox Authentication
1035
+
1036
+ To authenticate to the Zscaler Sandbox service you must authenticate by instantiating the `ZscalerClient`.
1037
+
1038
+ Authentication to Zscaler Sandbox requires the attribute/parameter `sandboxCloud`. The following cloud environments are supported:
1039
+
1040
+ * `zscaler`
1041
+ * `zscalerone`
1042
+ * `zscalertwo`
1043
+ * `zscalerthree`
1044
+ * `zscloud`
1045
+ * `zscalerbeta`
1046
+ * `zscalergov`
1047
+ * `zscalerten`
1048
+ * `zspreview`
1049
+
1050
+ ### Environment variables
1051
+
1052
+ You can provide credentials via the `ZSCALER_SANDBOX_TOKEN`, `ZSCALER_SANDBOX_CLOUD` environment variables, representing your Zscaler Sandbox authentication paraemters respectively `sandboxToken`, `sandboxCloud`
1053
+
1054
+ | Argument | Description | Environment variable |
1055
+ |--------------|-------------|-------------------|
1056
+ | `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
1057
+ | `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
1058
+
1059
+ ### Zscaler Sandbox Client Initialization
1060
+
1061
+ ```py
1062
+ from zscaler import ZscalerClient
1063
+
1064
+ config = {
1065
+ "sandboxToken": '{yourSandboxToken}',
1066
+ "sandboxCloud": '{yourSandboxCloud}',
1067
+ "logging": {"enabled": False, "verbose": False},
1068
+ }
1069
+
1070
+ def main():
1071
+
1072
+ script_dir = os.path.dirname(os.path.abspath(__file__))
1073
+ file_path = os.path.join(script_dir, "test-pe-file.exe")
1074
+ force_analysis = True
1075
+
1076
+ with ZscalerClient(config) as client:
1077
+ submit, _, err = client.zia.sandbox.submit_file(file_path=file_path, force=force_analysis)
1078
+
1079
+ if err:
1080
+ print(f"Error submitting file: {err}")
1081
+ else:
1082
+ print("File submitted successfully!")
1083
+ print(f"Response: {submit}")
1084
+
1085
+ if __name__ == "__main__":
1086
+ main()
1087
+ ```
1088
+
1089
+ ### ZIA Legacy Client Initialization
1090
+
1091
+ ```py
1092
+ import random
1093
+ from zscaler import ZscalerClient
1094
+
1095
+ config = {
1096
+ "sandboxToken": '{yourSandboxToken}',
1097
+ "sandboxCloud": '{yourSandboxCloud}',
1098
+ "logging": {"enabled": False, "verbose": False},
1099
+ }
1100
+
1101
+ def main():
1102
+
1103
+ script_dir = os.path.dirname(os.path.abspath(__file__))
1104
+ file_path = os.path.join(script_dir, "test-pe-file.exe")
1105
+ force_analysis = True
1106
+
1107
+ with ZscalerClient(config) as client:
1108
+ submit, _, err = client.zia.sandbox.submit_file(file_path=file_path, force=force_analysis)
1109
+
1110
+ if err:
1111
+ print(f"Error submitting file: {err}")
1112
+ else:
1113
+ print("File submitted successfully!")
1114
+ print(f"Response: {submit}")
1115
+
1116
+ if __name__ == "__main__":
1117
+ main()
1118
+ ```
1119
+
1120
+ ## Zscaler Legacy API Framework
1121
+
1122
+ 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.
1123
+
1124
+ ### ZIA Legacy Authentication
1125
+
1126
+ Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZIA API credentials.
1127
+ This SDK provides a dedicated API client `LegacyZIAClient` compatible with the legacy framework, which must be used in this scenario.
1128
+
1129
+ - For authentication via Zscaler Internet Access, you must provide `username`, `password`, `api_key` and `cloud`
1130
+
1131
+ The ZIA Cloud is identified by several cloud name prefixes, which determines which API endpoint the requests should be sent to. The following cloud environments are supported:
1132
+
1133
+ * `zscaler`
1134
+ * `zscalerone`
1135
+ * `zscalertwo`
1136
+ * `zscalerthree`
1137
+ * `zscloud`
1138
+ * `zscalerbeta`
1139
+ * `zscalergov`
1140
+ * `zscalerten`
1141
+ * `zspreview`
1142
+
1143
+ ### Environment variables
1144
+
1145
+ You can provide credentials via the `ZIA_USERNAME`, `ZIA_PASSWORD`, `ZIA_API_KEY`, `ZIA_CLOUD` environment variables, representing your ZIA `username`, `password`, `api_key` and `cloud` respectively.
1146
+
1147
+ | Argument | Description | Environment variable |
1148
+ |--------------|-------------|-------------------|
1149
+ | `username` | _(String)_ A string that contains the email ID of the API admin.| `ZIA_USERNAME` |
1150
+ | `password` | _(String)_ A string that contains the password for the API admin.| `ZIA_PASSWORD` |
1151
+ | `api_key` | _(String)_ A string that contains the obfuscated API key (i.e., the return value of the obfuscateApiKey() method).| `ZIA_API_KEY` |
1152
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$zsapi.<Zscaler Cloud Name>/api/v1`.| `ZIA_CLOUD` |
1153
+ | `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
1154
+ | `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
1155
+
1156
+ ### ZIA Legacy Client Initialization
1157
+
1158
+ ```py
1159
+ import random
1160
+ from zscaler.oneapi_client import LegacyZIAClient
1161
+
1162
+ config = {
1163
+ "username": '{yourUsername}',
1164
+ "password": '{yourPassword}',
1165
+ "api_key": '{yourApiKey}',
1166
+ "cloud": '{yourCloud}',
1167
+ "logging": {"enabled": False, "verbose": False},
1168
+ }
1169
+
1170
+ def main():
1171
+ with LegacyZIAClient(config) as client:
1172
+ added_label, response, error = client.zia.rule_labels.add_label(
1173
+ name=f"NewLabel_{random.randint(1000, 10000)}",
1174
+ description=f"NewLabel_{random.randint(1000, 10000)}",
1175
+ )
1176
+ if err:
1177
+ print(f"Error adding label: {err}")
1178
+ return
1179
+ print(f"Label added successfully: {added_label.as_dict()}")
1180
+
1181
+ if __name__ == "__main__":
1182
+ main()
1183
+ ```
1184
+
1185
+ ### ZIA and ZTW Context Manager
1186
+
1187
+ 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.
1188
+
1189
+ #### How Context Manager Works
1190
+
1191
+ When you use the `with` statement with a Zscaler client, the following happens automatically:
1192
+
1193
+ 1. **Authentication**: The client authenticates when entering the context
1194
+ 2. **Session Management**: A session is established and maintained throughout the context
1195
+ 3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
1196
+
1197
+ #### Implicit Activation Process
1198
+
1199
+ The context manager implements an "implicit activation" approach where:
1200
+
1201
+ - **All changes are final**: Configuration changes are automatically activated when the context exits
1202
+ - **No manual activation required**: You don't need to remember to call activation endpoints
1203
+ - **Deterministic behavior**: You always know that exiting the context will activate changes
1204
+ - **Automation-friendly**: Perfect for scripts and automation scenarios
1205
+
1206
+ #### Example Usage
1207
+
1208
+ ```py
1209
+ import random
1210
+ from zscaler.oneapi_client import LegacyZIAClient
1211
+
1212
+ config = {
1213
+ "username": '{yourUsername}',
1214
+ "password": '{yourPassword}',
1215
+ "api_key": '{yourApiKey}',
1216
+ "cloud": '{yourCloud}',
1217
+ "logging": {"enabled": False, "verbose": False},
1218
+ }
1219
+
1220
+ def main():
1221
+ with LegacyZIAClient(config) as client:
1222
+ # Make configuration changes
1223
+ added_label, response, error = client.zia.rule_labels.add_label(
1224
+ name=f"NewLabel_{random.randint(1000, 10000)}",
1225
+ description=f"NewLabel_{random.randint(1000, 10000)}",
1226
+ )
1227
+ if error:
1228
+ print(f"Error adding label: {error}")
1229
+ return
1230
+
1231
+ # Make more changes
1232
+ updated_role, response, error = client.zia.admin_roles.update_role(
1233
+ role_id="12345",
1234
+ name="Updated Role Name"
1235
+ )
1236
+ if error:
1237
+ print(f"Error updating role: {error}")
1238
+ return
1239
+
1240
+ print("All changes made successfully")
1241
+
1242
+ # Context manager automatically deauthenticates here
1243
+ # All staged changes are activated automatically
1244
+ print("Context exited - all changes have been activated")
1245
+
1246
+ if __name__ == "__main__":
1247
+ main()
1248
+ ```
1249
+
1250
+ #### Benefits
1251
+
1252
+ - **Automatic cleanup**: No need to manually deauthenticate
1253
+ - **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
1254
+ - **Staged configuration activation**: All changes are activated when the context exits
1255
+ - **Simplified code**: No need to remember activation steps
1256
+
1257
+ ### ZTW Legacy Authentication
1258
+
1259
+ Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZTW API credentials.
1260
+ This SDK provides a dedicated API client `LegacyZTWClient` compatible with the legacy framework, which must be used in this scenario.
1261
+
1262
+ - For authentication via Zscaler Internet Access, you must provide `username`, `password`, `api_key` and `cloud`
1263
+
1264
+ The ZTW Cloud is identified by several cloud name prefixes, which determines which API endpoint the requests should be sent to. The following cloud environments are supported:
1265
+
1266
+ * `zscaler`
1267
+ * `zscalerone`
1268
+ * `zscalertwo`
1269
+ * `zscalerthree`
1270
+ * `zscloud`
1271
+ * `zscalerbeta`
1272
+ * `zscalergov`
1273
+ * `zscalerten`
1274
+ * `zspreview`
1275
+
1276
+ ### Environment variables
1277
+
1278
+ You can provide credentials via the `ZTW_USERNAME`, `ZTW_PASSWORD`, `ZTW_API_KEY`, `ZTW_CLOUD` environment variables, representing your ZTW `username`, `password`, `api_key` and `cloud` respectively.
1279
+
1280
+ | Argument | Description | Environment variable |
1281
+ |--------------|-------------|-------------------|
1282
+ | `username` | _(String)_ A string that contains the email ID of the API admin.| `ZTW_USERNAME` |
1283
+ | `password` | _(String)_ A string that contains the password for the API admin.| `ZTW_PASSWORD` |
1284
+ | `api_key` | _(String)_ A string that contains the obfuscated API key (i.e., the return value of the obfuscateApiKey() method).| `ZTW_API_KEY` |
1285
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$zsapi.<Zscaler Cloud Name>/api/v1`.| `ZTW_CLOUD` |
1286
+
1287
+ ### ZTW Legacy Client Initialization
1288
+
1289
+ ```py
1290
+ import random
1291
+ from zscaler.oneapi_client import LegacyZTWClient
1292
+
1293
+ config = {
1294
+ "username": '{yourUsername}',
1295
+ "password": '{yourPassword}',
1296
+ "api_key": '{yourApiKey}',
1297
+ "cloud": '{yourCloud}',
1298
+ "logging": {"enabled": False, "verbose": False},
1299
+ }
1300
+
1301
+ def main():
1302
+ with LegacyZTWClient(config) as client:
1303
+ fetched_prov_url, response, error = client.ZTW.provisioning_url.list_provisioning_url()
1304
+ if error:
1305
+ print(f"Error fetching prov url by ID: {error}")
1306
+ return
1307
+ print(f"Fetched prov url by ID: {fetched_prov_url.as_dict()}")
1308
+
1309
+ if __name__ == "__main__":
1310
+ main()
1311
+ ```
1312
+
1313
+ ### ZPA Legacy Authentication
1314
+
1315
+ Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZPA API credentials.
1316
+ This SDK provides a dedicated API client `LegacyZPAClient` compatible with the legacy framework, which must be used in this scenario.
1317
+
1318
+ - For authentication via Zscaler Private Access, you must provide `client_id`, `client_secret`, `customer_id` and `cloud`
1319
+
1320
+ The ZPA Cloud is identified by several cloud name prefixes, which determines which API endpoint the requests should be sent to. The following cloud environments are supported:
1321
+
1322
+ * `PRODUCTION`
1323
+ * `ZPATWO`
1324
+ * `BETA`
1325
+ * `GOV`
1326
+ * `GOVUS`
1327
+
1328
+ ### Environment variables
1329
+
1330
+ You can provide credentials via the `ZPA_CLIENT_ID`, `ZPA_CLIENT_SECRET`, `ZPA_CUSTOMER_ID`, `ZPA_CLOUD`, `ZSCALER_PARTNER_ID` environment variables, representing your ZPA `clientId`, `clientSecret`, `customerId`, `cloud` and `partnerId` of your ZPA account, respectively.
1331
+
1332
+ ~> **NOTE** `ZPA_CLOUD` environment variable is required, and is used to identify the correct API gateway where the API requests should be forwarded to.
1333
+
1334
+ | Argument | Description | Environment variable |
1335
+ |--------------|-------------|-------------------|
1336
+ | `clientId` | _(String)_ The ZPA API client ID generated from the ZPA console.| `ZPA_CLIENT_ID` |
1337
+ | `clientSecret` | _(String)_ The ZPA API client secret generated from the ZPA console.| `ZPA_CLIENT_SECRET` |
1338
+ | `customerId` | _(String)_ The ZPA tenant ID found in the Administration > Company menu in the ZPA console.| `ZPA_CUSTOMER_ID` |
1339
+ | `microtenantId` | _(String)_ The ZPA microtenant ID found in the respective microtenant instance under Configuration & Control > Public API > API Keys menu in the ZPA console.| `ZPA_MICROTENANT_ID` |
1340
+ | `partnerId` | _(String)_ Optional partner ID. When provided, the SDK automatically includes the `x-partner-id` header in all API requests.| `ZSCALER_PARTNER_ID` |
1341
+ | `cloud` | _(String)_ The Zscaler cloud for your tenancy.| `ZPA_CLOUD` |
1342
+
1343
+ ### ZPA Legacy Client Initialization
1344
+
1345
+ ```py
1346
+ import random
1347
+ from zscaler.oneapi_client import LegacyZPAClient
1348
+
1349
+ config = {
1350
+ "clientId": '{yourClientId}',
1351
+ "clientSecret": '{yourClientSecret}',
1352
+ "customerId": '{yourCustomerId}',
1353
+ "microtenantId": '{yourMicrotenantId}',
1354
+ "partnerId": "", # Optional parameter. When provided, automatically includes x-partner-id header in all requests
1355
+ "cloud": '{yourCloud}',
1356
+ "logging": {"enabled": False, "verbose": False},
1357
+ }
1358
+
1359
+ def main():
1360
+ with LegacyZPAClient(config) as client:
1361
+ added_label, response, error = client.zpa.segment_groups.add_group(
1362
+ name=f"NewGroup_{random.randint(1000, 10000)}",
1363
+ description=f"NewGroup_{random.randint(1000, 10000)}",
1364
+ enabled=True
1365
+ )
1366
+ if err:
1367
+ print(f"Error adding segment group: {err}")
1368
+ return
1369
+ print(f"Segment Group added successfully: {added_label.as_dict()}")
1370
+
1371
+ if __name__ == "__main__":
1372
+ main()
1373
+ ```
1374
+
1375
+ ### ZCC Legacy Authentication
1376
+
1377
+ Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZCC API credentials.
1378
+ This SDK provides a dedicated API client `LegacyZCCClient` compatible with the legacy framework, which must be used in this scenario.
1379
+
1380
+ - For authentication via Zscaler Client Connector (ZCC), you must provide `api_key`, `secret_key`, and `cloud`
1381
+
1382
+ The ZCC Cloud is identified by several cloud name prefixes, which determines which API endpoint the requests should be sent to. The following cloud environments are supported:
1383
+
1384
+ * `zscaler`
1385
+ * `zscalerone`
1386
+ * `zscalertwo`
1387
+ * `zscalerthree`
1388
+ * `zscloud`
1389
+ * `zscalerbeta`
1390
+ * `zscalergov`
1391
+ * `zscalerten`
1392
+ * `zspreview`
1393
+
1394
+ ### Environment variables
1395
+
1396
+ 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.
1397
+
1398
+ ~> **NOTE** `ZCC_CLOUD` environment variable is required, and is used to identify the correct API gateway where the API requests should be forwarded to.
1399
+
1400
+ | Argument | Description | Environment variable |
1401
+ |--------------|-------------|-------------------|
1402
+ | `api_key` | _(String)_ A string that contains the apiKey for the Mobile Portal.| `ZCC_CLIENT_ID` |
1403
+ | `secret_key` | _(String)_ A string that contains the secret key for the Mobile Portal.| `ZCC_CLIENT_SECRET` |
1404
+ | `cloud` | _(String)_ The host and basePath for the ZCC cloud services API is `$mobileadmin.<Zscaler Cloud Name>/papi`.| `ZCC_CLOUD` |
1405
+
1406
+ ### ZCC Legacy Client Initialization
1407
+
1408
+ ```py
1409
+ import random
1410
+ from zscaler.oneapi_client import LegacyZCCClient
1411
+
1412
+ config = {
1413
+ "api_key": '{yourApiKey}',
1414
+ "secret_key": '{yourSecreKey}',
1415
+ "cloud": '{yourCloud}',
1416
+ "logging": {"enabled": False, "verbose": False},
1417
+ }
1418
+
1419
+ with LegacyZCCClient(config) as client:
1420
+
1421
+ for group in client.zcc.devices.list_devices():
1422
+ print(group)
1423
+ if __name__ == "__main__":
1424
+ main()
1425
+ ```
1426
+
1427
+ ### ZDX Legacy Authentication
1428
+
1429
+ This SDK provides a dedicated API client `LegacyZDXClient` compatible with the legacy framework, which must be used in this scenario.
1430
+
1431
+ - For authentication via Zscaler Digital Experience (ZDX), you must provide `key_id`, `key_secret`
1432
+
1433
+ The ZDX `cloud` attribute identifies the cloud name prefix, which determines which API endpoint the requests should be sent to. By default the ZDX API client will always send the request to the following cloud: ``zdxcloud``
1434
+
1435
+ * ``zdxcloud``
1436
+ * ``zdxbeta``
1437
+
1438
+ ### ZDX Environment variables
1439
+
1440
+ You can provide credentials via the `ZDX_CLIENT_ID`, `ZDX_CLIENT_SECRET` environment variables, representing your ZDX `key_id`, `key_secret` of your ZDX account, respectively.
1441
+
1442
+ | Argument | Description | Environment variable |
1443
+ |--------------|-------------|-------------------|
1444
+ | `key_id` | _(String)_ A string that contains the key_id for the ZDX Portal.| `ZDX_CLIENT_ID` |
1445
+ | `key_secret` | _(String)_ A string that contains the key_secret key for the ZDX Portal.| `ZDX_CLIENT_SECRET` |
1446
+ | `cloud` | _(String)_ The cloud name prefix that identifies the correct API endpoint.| `ZDX_CLOUD` |
1447
+
1448
+ ### ZDX Legacy Client Initialization
1449
+
1450
+ ```py
1451
+ import random
1452
+ from zscaler.oneapi_client import LegacyZDXClient
1453
+
1454
+ config = {
1455
+ "key_id": '{yourKeyId}',
1456
+ "key_secret": '{yourKeySecret}',
1457
+ "cloud": '{yourCloud}',
1458
+ "logging": {"enabled": False, "verbose": False},
1459
+ }
1460
+
1461
+ def main():
1462
+ with LegacyZDXClient(config) as client:
1463
+ app_list, _, err = client.zdx.apps.list_apps(query_params{"since": 2})
1464
+ if err:
1465
+ print(f"Error listing applications: {err}")
1466
+ return
1467
+ for app in app_list:
1468
+ print(app.as_dict())
1469
+
1470
+ if __name__ == "__main__":
1471
+ main()
1472
+ ```
1473
+
1474
+ ### ZWA Legacy Authentication
1475
+
1476
+ This SDK provides a dedicated API client `LegacyZWAClient` compatible with the legacy framework, which must be used in this scenario.
1477
+
1478
+ - For authentication via Zscaler Workflow Automation (ZWA), you must provide `key_id`, `key_secret`
1479
+
1480
+ The ZWA `cloud` attribute identifies the cloud name prefix, which determines which API endpoint the requests should be sent to. By default the ZDX API client will always send the request to the following cloud: ``us1``
1481
+
1482
+ * ``us1``
1483
+
1484
+ For authentication via Zscaler Workflow Automation (ZWA), you must provide `key_id`, `key_secret`
1485
+
1486
+ ### ZWA Environment variables
1487
+
1488
+ You can provide credentials via the `ZWA_CLIENT_ID`, `ZWA_CLIENT_SECRET` environment variables, representing your ZDX `key_id`, `key_secret` of your ZWA account, respectively.
1489
+
1490
+ | Argument | Description | Environment variable |
1491
+ |--------------|-------------|-------------------|
1492
+ | `key_id` | _(String)_ The ZWA string that contains the API key ID.| `ZWA_CLIENT_ID` |
1493
+ | `key_secret` | _(String)_ The ZWA string that contains the key secret.| `ZWA_CLIENT_SECRET` |
1494
+ | `cloud` | _(String)_ The ZWA string containing cloud provisioned for your organization.| `ZWA_CLOUD` |
1495
+
1496
+ ### ZWA Legacy Client Initialization
1497
+
1498
+ ```py
1499
+ import random
1500
+ from zscaler.oneapi_client import LegacyZWAClient
1501
+
1502
+ config = {
1503
+ "key_id": '{yourKeyId}',
1504
+ "key_secret": '{yourKeySecret}',
1505
+ "cloud": '{yourCloud}',
1506
+ "logging": {"enabled": False, "verbose": False},
1507
+ }
1508
+
1509
+ def main():
1510
+ with LegacyZWAClient(config) as client:
1511
+ transactions, _, err = client.zwa.dlp_incidents.get_incident_transactions('SVDP-17410643229970491392')
1512
+ if err:
1513
+ print(f"Error listing transactions: {err}")
1514
+ return
1515
+ for incident in transactions:
1516
+ print(incident.as_dict())
1517
+
1518
+ if __name__ == "__main__":
1519
+ main()
1520
+ ```
1521
+
1522
+ ## Zscaler Legacy API Rate Limiting
1523
+
1524
+ Zscaler 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.
1525
+ Please see:
1526
+
1527
+ The header `X-Rate-Limit-Remaining` is returned in the API response for each API call. This header indicates the time in seconds until the rate limit resets. The SDK uses the returned value to calculate the retry time for the following services:
1528
+ * [ZCC Rate Limiting][rate-limiting-zcc] for rate limiting requirements.
1529
+
1530
+ The header `RateLimit-Reset` is returned in the API response for each API call. This header indicates the time in seconds until the rate limit resets. The SDK uses the returned value to calculate the retry time for the following services:
1531
+ * [ZDX Rate Limiting][rate-limiting-zdx] for rate limiting requirements.
1532
+ * [ZWA Rate Limiting][rate-limiting-zwa] for rate limiting requirements.
1533
+
1534
+ When a 429 error is received, the `Retry-After` header is returned in the API response. The SDK uses the returned value to calculate the retry time. The following services are rate limited based on its respective endpoint.
1535
+ * [ZTW Rate Limiting][rate-limiting-ZTW] for a complete list of which endpoints are rate limited.
1536
+ * [ZIA Rate Limiting][rate-limiting-zia] for a complete list of which endpoints are rate limited.
1537
+
1538
+ When a 429 error is received, the `retry-after` header will tell you the time at which you can retry. The SDK uses the returned value to calculate the retry time.
1539
+ * [ZPA Rate Limiting][rate-limiting-zpa] for rate limiting requirements.
1540
+
1541
+ ### Built-In Retry
1542
+
1543
+ This SDK uses the built-in retry strategy to automatically retry on 429 errors based on the response headers returned by each respective API service.
1544
+
1545
+ | Configuration Option | Description |
1546
+ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
1547
+ | client.rateLimit.maxRetries | The number of times to retry (on retryable errors)
1548
+ | client.rateLimit.maxRetrySeconds | Max wait duration allowed for a retry backoff
1549
+
1550
+ ## Contributing
1551
+
1552
+ At this moment we are not accepting contributions, but we welcome suggestions on how to improve this SDK or feature requests, which can then be added in future releases.
1553
+
1554
+ [zenith]: https://community.zscaler.com/
1555
+ [zscaler-support]: https://help.zscaler.com/contact-support
1556
+ [github-issues]: https://github.com/zscaler/zscaler-sdk-python/issues
1557
+ [rate-limiting-zcc]: https://help.zscaler.com/zscaler-client-connector/understanding-rate-limiting
1558
+ [rate-limiting-ZTW]: https://help.zscaler.com/cloud-branch-connector/understanding-rate-limits
1559
+ [rate-limiting-zdx]: https://help.zscaler.com/zdx/understanding-rate-limiting
1560
+ [rate-limiting-zia]: https://help.zscaler.com/zia/understanding-rate-limiting
1561
+ [rate-limiting-zpa]: https://help.zscaler.com/zpa/understanding-rate-limiting
1562
+ [rate-limiting-zwa]: https://help.zscaler.com/workflow-automation/understanding-api-rate-limiting-workflow-automation-api
1563
+ [application-segment-api-docs]: https://help.zscaler.com/zpa/application-controller#/mgmtconfig/v1/admin/customers/{customerId}/application-post
1564
+ [application-segment]: zscaler/zpa/application_segment.py
1565
+
1566
+ Contributors
1567
+ ------------
1568
+
1569
+ - William Guilherme - [willguibr](https://github.com/willguibr)
1570
+ - Eddie Parra - [eparra](https://github.com/eparra)
1571
+ - Paul Abbot - [abbottp](https://github.com/abbottp)
1572
+
1573
+ Thank you to [Mitch Kelly](https://github.com/mitchos/pyZscaler), creator of the [PyZscaler](https://github.com/mitchos/pyZscaler) SDK,
1574
+ which this SDK was inspired on.
1575
+
1576
+ ## MIT License
1577
+
1578
+ =======
1579
+
1580
+ Copyright (c) 2023 [Zscaler](https://github.com/zscaler)
1581
+
1582
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1583
+ of this software and associated documentation files (the "Software"), to deal
1584
+ in the Software without restriction, including without limitation the rights
1585
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1586
+ copies of the Software, and to permit persons to whom the Software is
1587
+ furnished to do so, subject to the following conditions:
1588
+
1589
+ The above copyright notice and this permission notice shall be included in all
1590
+ copies or substantial portions of the Software.
1591
+
1592
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1593
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1594
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1595
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1596
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1597
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1598
+ SOFTWARE.
1599
+