zscaler-sdk-python 1.9.27__tar.gz → 1.9.29__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 (1055) hide show
  1. zscaler_sdk_python-1.9.29/PKG-INFO +1925 -0
  2. zscaler_sdk_python-1.9.29/pyproject.toml +95 -0
  3. zscaler_sdk_python-1.9.29/zscaler/__init__.py +35 -0
  4. zscaler_sdk_python-1.9.29/zscaler/api_client.py +95 -0
  5. zscaler_sdk_python-1.9.29/zscaler/config/config_setter.py +197 -0
  6. zscaler_sdk_python-1.9.29/zscaler/config/config_validator.py +179 -0
  7. zscaler_sdk_python-1.9.29/zscaler/error_messages.py +45 -0
  8. zscaler_sdk_python-1.9.29/zscaler/errors/__init__.py +25 -0
  9. zscaler_sdk_python-1.9.29/zscaler/errors/graphql_error.py +196 -0
  10. zscaler_sdk_python-1.9.29/zscaler/errors/http_error.py +15 -0
  11. zscaler_sdk_python-1.9.29/zscaler/errors/response_checker.py +88 -0
  12. zscaler_sdk_python-1.9.29/zscaler/errors/zscaler_api_error.py +71 -0
  13. zscaler_sdk_python-1.9.29/zscaler/helpers.py +438 -0
  14. zscaler_sdk_python-1.9.29/zscaler/logger.py +245 -0
  15. zscaler_sdk_python-1.9.29/zscaler/oneapi_client.py +708 -0
  16. zscaler_sdk_python-1.9.29/zscaler/oneapi_collection.py +21 -0
  17. zscaler_sdk_python-1.9.29/zscaler/oneapi_http_client.py +421 -0
  18. zscaler_sdk_python-1.9.29/zscaler/oneapi_oauth_client.py +542 -0
  19. zscaler_sdk_python-1.9.29/zscaler/oneapi_object.py +80 -0
  20. zscaler_sdk_python-1.9.29/zscaler/oneapi_response.py +449 -0
  21. zscaler_sdk_python-1.9.29/zscaler/request_executor.py +952 -0
  22. zscaler_sdk_python-1.9.29/zscaler/types.py +39 -0
  23. zscaler_sdk_python-1.9.29/zscaler/utils.py +1007 -0
  24. zscaler_sdk_python-1.9.29/zscaler/zaiguard/legacy.py +456 -0
  25. zscaler_sdk_python-1.9.29/zscaler/zaiguard/models/policy_detection.py +402 -0
  26. zscaler_sdk_python-1.9.29/zscaler/zaiguard/policy_detection.py +193 -0
  27. zscaler_sdk_python-1.9.29/zscaler/zbi/custom_apps.py +281 -0
  28. zscaler_sdk_python-1.9.29/zscaler/zbi/models/custom_apps.py +82 -0
  29. zscaler_sdk_python-1.9.29/zscaler/zbi/models/report_configs.py +185 -0
  30. zscaler_sdk_python-1.9.29/zscaler/zbi/report_configs.py +328 -0
  31. zscaler_sdk_python-1.9.29/zscaler/zcc/_field_introspect.py +181 -0
  32. zscaler_sdk_python-1.9.29/zscaler/zcc/admin_user.py +280 -0
  33. zscaler_sdk_python-1.9.29/zscaler/zcc/application_profiles.py +247 -0
  34. zscaler_sdk_python-1.9.29/zscaler/zcc/company.py +76 -0
  35. zscaler_sdk_python-1.9.29/zscaler/zcc/custom_ip_base_apps.py +123 -0
  36. zscaler_sdk_python-1.9.29/zscaler/zcc/devices.py +692 -0
  37. zscaler_sdk_python-1.9.29/zscaler/zcc/entitlements.py +190 -0
  38. zscaler_sdk_python-1.9.29/zscaler/zcc/fail_open_policy.py +144 -0
  39. zscaler_sdk_python-1.9.29/zscaler/zcc/forwarding_profile.py +176 -0
  40. zscaler_sdk_python-1.9.29/zscaler/zcc/legacy.py +517 -0
  41. zscaler_sdk_python-1.9.29/zscaler/zcc/models/admin_roles.py +165 -0
  42. zscaler_sdk_python-1.9.29/zscaler/zcc/models/admin_user.py +135 -0
  43. zscaler_sdk_python-1.9.29/zscaler/zcc/models/application_profiles.py +1015 -0
  44. zscaler_sdk_python-1.9.29/zscaler/zcc/models/company_info.py +1514 -0
  45. zscaler_sdk_python-1.9.29/zscaler/zcc/models/custom_ip_base_apps.py +127 -0
  46. zscaler_sdk_python-1.9.29/zscaler/zcc/models/devices.py +546 -0
  47. zscaler_sdk_python-1.9.29/zscaler/zcc/models/forwardingprofile.py +485 -0
  48. zscaler_sdk_python-1.9.29/zscaler/zcc/models/manage_pass.py +98 -0
  49. zscaler_sdk_python-1.9.29/zscaler/zcc/models/predefined_ip_based_apps.py +133 -0
  50. zscaler_sdk_python-1.9.29/zscaler/zcc/models/process_based_apps.py +78 -0
  51. zscaler_sdk_python-1.9.29/zscaler/zcc/models/secrets_otp.py +76 -0
  52. zscaler_sdk_python-1.9.29/zscaler/zcc/models/secrets_passwords.py +62 -0
  53. zscaler_sdk_python-1.9.29/zscaler/zcc/models/webpolicy.py +1146 -0
  54. zscaler_sdk_python-1.9.29/zscaler/zcc/models/webprivacy.py +86 -0
  55. zscaler_sdk_python-1.9.29/zscaler/zcc/predefined_ip_based_apps.py +123 -0
  56. zscaler_sdk_python-1.9.29/zscaler/zcc/process_based_apps.py +123 -0
  57. zscaler_sdk_python-1.9.29/zscaler/zcc/secrets.py +130 -0
  58. zscaler_sdk_python-1.9.29/zscaler/zcc/trusted_networks.py +252 -0
  59. zscaler_sdk_python-1.9.29/zscaler/zcc/web_app_service.py +88 -0
  60. zscaler_sdk_python-1.9.29/zscaler/zcc/web_policy.py +507 -0
  61. zscaler_sdk_python-1.9.29/zscaler/zcc/web_privacy.py +136 -0
  62. zscaler_sdk_python-1.9.29/zscaler/zcc/zcc_service.py +158 -0
  63. zscaler_sdk_python-1.9.29/zscaler/zdx/admin.py +177 -0
  64. zscaler_sdk_python-1.9.29/zscaler/zdx/alerts.py +332 -0
  65. zscaler_sdk_python-1.9.29/zscaler/zdx/apps.py +462 -0
  66. zscaler_sdk_python-1.9.29/zscaler/zdx/devices.py +860 -0
  67. zscaler_sdk_python-1.9.29/zscaler/zdx/inventory.py +181 -0
  68. zscaler_sdk_python-1.9.29/zscaler/zdx/legacy.py +450 -0
  69. zscaler_sdk_python-1.9.29/zscaler/zdx/models/administration.py +50 -0
  70. zscaler_sdk_python-1.9.29/zscaler/zdx/models/alerts.py +212 -0
  71. zscaler_sdk_python-1.9.29/zscaler/zdx/models/application_users.py +99 -0
  72. zscaler_sdk_python-1.9.29/zscaler/zdx/models/applications.py +258 -0
  73. zscaler_sdk_python-1.9.29/zscaler/zdx/models/call_quality_metrics.py +60 -0
  74. zscaler_sdk_python-1.9.29/zscaler/zdx/models/common.py +385 -0
  75. zscaler_sdk_python-1.9.29/zscaler/zdx/models/devices.py +920 -0
  76. zscaler_sdk_python-1.9.29/zscaler/zdx/models/snapshot.py +69 -0
  77. zscaler_sdk_python-1.9.29/zscaler/zdx/models/software_inventory.py +106 -0
  78. zscaler_sdk_python-1.9.29/zscaler/zdx/models/troubleshooting.py +449 -0
  79. zscaler_sdk_python-1.9.29/zscaler/zdx/models/users.py +96 -0
  80. zscaler_sdk_python-1.9.29/zscaler/zdx/snapshot.py +123 -0
  81. zscaler_sdk_python-1.9.29/zscaler/zdx/troubleshooting.py +662 -0
  82. zscaler_sdk_python-1.9.29/zscaler/zdx/users.py +170 -0
  83. zscaler_sdk_python-1.9.29/zscaler/zdx/zdx_service.py +95 -0
  84. zscaler_sdk_python-1.9.29/zscaler/zeasm/findings.py +252 -0
  85. zscaler_sdk_python-1.9.29/zscaler/zeasm/lookalike_domains.py +145 -0
  86. zscaler_sdk_python-1.9.29/zscaler/zeasm/models/common.py +54 -0
  87. zscaler_sdk_python-1.9.29/zscaler/zeasm/models/findings.py +170 -0
  88. zscaler_sdk_python-1.9.29/zscaler/zeasm/models/lookalike_domains.py +125 -0
  89. zscaler_sdk_python-1.9.29/zscaler/zeasm/models/organizations.py +61 -0
  90. zscaler_sdk_python-1.9.29/zscaler/zeasm/organizations.py +100 -0
  91. zscaler_sdk_python-1.9.29/zscaler/zeasm/zeasm_service.py +51 -0
  92. zscaler_sdk_python-1.9.29/zscaler/zia/activate.py +198 -0
  93. zscaler_sdk_python-1.9.29/zscaler/zia/admin_roles.py +644 -0
  94. zscaler_sdk_python-1.9.29/zscaler/zia/admin_users.py +496 -0
  95. zscaler_sdk_python-1.9.29/zscaler/zia/advanced_settings.py +207 -0
  96. zscaler_sdk_python-1.9.29/zscaler/zia/alert_subscriptions.py +298 -0
  97. zscaler_sdk_python-1.9.29/zscaler/zia/apptotal.py +215 -0
  98. zscaler_sdk_python-1.9.29/zscaler/zia/atp_policy.py +394 -0
  99. zscaler_sdk_python-1.9.29/zscaler/zia/audit_logs.py +154 -0
  100. zscaler_sdk_python-1.9.29/zscaler/zia/authentication_settings.py +293 -0
  101. zscaler_sdk_python-1.9.29/zscaler/zia/bandwidth_classes.py +338 -0
  102. zscaler_sdk_python-1.9.29/zscaler/zia/bandwidth_control_rules.py +418 -0
  103. zscaler_sdk_python-1.9.29/zscaler/zia/browser_control_settings.py +224 -0
  104. zscaler_sdk_python-1.9.29/zscaler/zia/casb_dlp_rules.py +677 -0
  105. zscaler_sdk_python-1.9.29/zscaler/zia/casb_malware_rules.py +404 -0
  106. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_app_instances.py +297 -0
  107. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_applications.py +197 -0
  108. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_browser_isolation.py +88 -0
  109. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_firewall.py +2282 -0
  110. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_firewall_dns.py +393 -0
  111. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_firewall_ips.py +385 -0
  112. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_firewall_rules.py +381 -0
  113. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_nss.py +694 -0
  114. zscaler_sdk_python-1.9.29/zscaler/zia/cloud_to_cloud_ir.py +311 -0
  115. zscaler_sdk_python-1.9.29/zscaler/zia/cloudappcontrol.py +760 -0
  116. zscaler_sdk_python-1.9.29/zscaler/zia/custom_file_types.py +334 -0
  117. zscaler_sdk_python-1.9.29/zscaler/zia/dedicated_ip_gateways.py +82 -0
  118. zscaler_sdk_python-1.9.29/zscaler/zia/device_management.py +206 -0
  119. zscaler_sdk_python-1.9.29/zscaler/zia/dlp_dictionary.py +522 -0
  120. zscaler_sdk_python-1.9.29/zscaler/zia/dlp_engine.py +401 -0
  121. zscaler_sdk_python-1.9.29/zscaler/zia/dlp_resources.py +616 -0
  122. zscaler_sdk_python-1.9.29/zscaler/zia/dlp_templates.py +294 -0
  123. zscaler_sdk_python-1.9.29/zscaler/zia/dlp_web_rules.py +438 -0
  124. zscaler_sdk_python-1.9.29/zscaler/zia/dns_gatways.py +326 -0
  125. zscaler_sdk_python-1.9.29/zscaler/zia/end_user_notification.py +161 -0
  126. zscaler_sdk_python-1.9.29/zscaler/zia/file_type_control_rule.py +414 -0
  127. zscaler_sdk_python-1.9.29/zscaler/zia/forwarding_control.py +423 -0
  128. zscaler_sdk_python-1.9.29/zscaler/zia/ftp_control_policy.py +138 -0
  129. zscaler_sdk_python-1.9.29/zscaler/zia/gre_tunnel.py +750 -0
  130. zscaler_sdk_python-1.9.29/zscaler/zia/intermediate_certificates.py +702 -0
  131. zscaler_sdk_python-1.9.29/zscaler/zia/iot_report.py +198 -0
  132. zscaler_sdk_python-1.9.29/zscaler/zia/ips_signature_rules.py +474 -0
  133. zscaler_sdk_python-1.9.29/zscaler/zia/ipv6_config.py +201 -0
  134. zscaler_sdk_python-1.9.29/zscaler/zia/legacy.py +1280 -0
  135. zscaler_sdk_python-1.9.29/zscaler/zia/locations.py +1214 -0
  136. zscaler_sdk_python-1.9.29/zscaler/zia/malware_protection_policy.py +495 -0
  137. zscaler_sdk_python-1.9.29/zscaler/zia/mobile_threat_settings.py +148 -0
  138. zscaler_sdk_python-1.9.29/zscaler/zia/models/activation.py +94 -0
  139. zscaler_sdk_python-1.9.29/zscaler/zia/models/admin_roles.py +135 -0
  140. zscaler_sdk_python-1.9.29/zscaler/zia/models/admin_users.py +333 -0
  141. zscaler_sdk_python-1.9.29/zscaler/zia/models/advanced_settings.py +319 -0
  142. zscaler_sdk_python-1.9.29/zscaler/zia/models/alert_subscriptions.py +86 -0
  143. zscaler_sdk_python-1.9.29/zscaler/zia/models/apptotal.py +259 -0
  144. zscaler_sdk_python-1.9.29/zscaler/zia/models/authentication_settings.py +93 -0
  145. zscaler_sdk_python-1.9.29/zscaler/zia/models/bandwidth_classes.py +79 -0
  146. zscaler_sdk_python-1.9.29/zscaler/zia/models/bandwidth_control_rules.py +138 -0
  147. zscaler_sdk_python-1.9.29/zscaler/zia/models/browser_control_settings.py +138 -0
  148. zscaler_sdk_python-1.9.29/zscaler/zia/models/casb_dlp_rules.py +367 -0
  149. zscaler_sdk_python-1.9.29/zscaler/zia/models/casb_malware_rules.py +128 -0
  150. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_app_instances.py +141 -0
  151. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_app_policy.py +54 -0
  152. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_browser_isolation.py +53 -0
  153. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_app_services.py +50 -0
  154. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_destination_groups.py +66 -0
  155. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_ips_rules.py +227 -0
  156. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_nw_application_groups.py +56 -0
  157. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_nw_applications.py +53 -0
  158. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_nw_service.py +143 -0
  159. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_nw_service_groups.py +54 -0
  160. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_rules.py +251 -0
  161. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_source_groups.py +61 -0
  162. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_firewall_time_windows.py +57 -0
  163. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_nss.py +613 -0
  164. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloud_to_cloud_ir.py +437 -0
  165. zscaler_sdk_python-1.9.29/zscaler/zia/models/cloudappcontrol.py +265 -0
  166. zscaler_sdk_python-1.9.29/zscaler/zia/models/common.py +177 -0
  167. zscaler_sdk_python-1.9.29/zscaler/zia/models/custom_file_types.py +65 -0
  168. zscaler_sdk_python-1.9.29/zscaler/zia/models/dedicated_ip_gateways.py +103 -0
  169. zscaler_sdk_python-1.9.29/zscaler/zia/models/device_groups.py +59 -0
  170. zscaler_sdk_python-1.9.29/zscaler/zia/models/devices.py +67 -0
  171. zscaler_sdk_python-1.9.29/zscaler/zia/models/dlp_dictionary.py +246 -0
  172. zscaler_sdk_python-1.9.29/zscaler/zia/models/dlp_engine.py +92 -0
  173. zscaler_sdk_python-1.9.29/zscaler/zia/models/dlp_resources.py +200 -0
  174. zscaler_sdk_python-1.9.29/zscaler/zia/models/dlp_templates.py +68 -0
  175. zscaler_sdk_python-1.9.29/zscaler/zia/models/dlp_web_rules.py +242 -0
  176. zscaler_sdk_python-1.9.29/zscaler/zia/models/dns_gateways.py +110 -0
  177. zscaler_sdk_python-1.9.29/zscaler/zia/models/endusernotification.py +157 -0
  178. zscaler_sdk_python-1.9.29/zscaler/zia/models/forwarding_control_policy.py +254 -0
  179. zscaler_sdk_python-1.9.29/zscaler/zia/models/ftp_control_policy.py +63 -0
  180. zscaler_sdk_python-1.9.29/zscaler/zia/models/gre_recommended_list.py +75 -0
  181. zscaler_sdk_python-1.9.29/zscaler/zia/models/gre_tunnel_info.py +71 -0
  182. zscaler_sdk_python-1.9.29/zscaler/zia/models/gre_tunnels.py +137 -0
  183. zscaler_sdk_python-1.9.29/zscaler/zia/models/gre_vips.py +168 -0
  184. zscaler_sdk_python-1.9.29/zscaler/zia/models/intermediate_certificates.py +159 -0
  185. zscaler_sdk_python-1.9.29/zscaler/zia/models/iotreport.py +107 -0
  186. zscaler_sdk_python-1.9.29/zscaler/zia/models/ips_signature_rules.py +294 -0
  187. zscaler_sdk_python-1.9.29/zscaler/zia/models/ipv6_config.py +108 -0
  188. zscaler_sdk_python-1.9.29/zscaler/zia/models/location_group.py +83 -0
  189. zscaler_sdk_python-1.9.29/zscaler/zia/models/location_management.py +388 -0
  190. zscaler_sdk_python-1.9.29/zscaler/zia/models/malware_protection_settings.py +103 -0
  191. zscaler_sdk_python-1.9.29/zscaler/zia/models/mobile_threat_settings.py +93 -0
  192. zscaler_sdk_python-1.9.29/zscaler/zia/models/nat_control_policy.py +226 -0
  193. zscaler_sdk_python-1.9.29/zscaler/zia/models/nss_servers.py +65 -0
  194. zscaler_sdk_python-1.9.29/zscaler/zia/models/organization_information.py +454 -0
  195. zscaler_sdk_python-1.9.29/zscaler/zia/models/pac_files.py +206 -0
  196. zscaler_sdk_python-1.9.29/zscaler/zia/models/proxies.py +100 -0
  197. zscaler_sdk_python-1.9.29/zscaler/zia/models/proxy_gateways.py +83 -0
  198. zscaler_sdk_python-1.9.29/zscaler/zia/models/risk_profiles.py +176 -0
  199. zscaler_sdk_python-1.9.29/zscaler/zia/models/rule_labels.py +82 -0
  200. zscaler_sdk_python-1.9.29/zscaler/zia/models/saas_security_api.py +322 -0
  201. zscaler_sdk_python-1.9.29/zscaler/zia/models/sandbox.py +86 -0
  202. zscaler_sdk_python-1.9.29/zscaler/zia/models/security_policy_settings.py +51 -0
  203. zscaler_sdk_python-1.9.29/zscaler/zia/models/shadow_it_report.py +318 -0
  204. zscaler_sdk_python-1.9.29/zscaler/zia/models/ssl_inspection_rules.py +504 -0
  205. zscaler_sdk_python-1.9.29/zscaler/zia/models/subclouds.py +282 -0
  206. zscaler_sdk_python-1.9.29/zscaler/zia/models/system_audit.py +286 -0
  207. zscaler_sdk_python-1.9.29/zscaler/zia/models/tenancy_restriction_profile.py +99 -0
  208. zscaler_sdk_python-1.9.29/zscaler/zia/models/time_intervals.py +64 -0
  209. zscaler_sdk_python-1.9.29/zscaler/zia/models/traffic_capture.py +262 -0
  210. zscaler_sdk_python-1.9.29/zscaler/zia/models/traffic_datacenters.py +116 -0
  211. zscaler_sdk_python-1.9.29/zscaler/zia/models/traffic_dc_exclusions.py +77 -0
  212. zscaler_sdk_python-1.9.29/zscaler/zia/models/traffic_static_ip.py +90 -0
  213. zscaler_sdk_python-1.9.29/zscaler/zia/models/traffic_vpn_credentials.py +89 -0
  214. zscaler_sdk_python-1.9.29/zscaler/zia/models/url_filtering_rules.py +218 -0
  215. zscaler_sdk_python-1.9.29/zscaler/zia/models/urlcategory.py +196 -0
  216. zscaler_sdk_python-1.9.29/zscaler/zia/models/user_management.py +183 -0
  217. zscaler_sdk_python-1.9.29/zscaler/zia/models/vzen_clusters.py +80 -0
  218. zscaler_sdk_python-1.9.29/zscaler/zia/models/vzen_nodes.py +99 -0
  219. zscaler_sdk_python-1.9.29/zscaler/zia/models/workload_groups.py +205 -0
  220. zscaler_sdk_python-1.9.29/zscaler/zia/models/zpa_gateway.py +91 -0
  221. zscaler_sdk_python-1.9.29/zscaler/zia/nat_control_policy.py +364 -0
  222. zscaler_sdk_python-1.9.29/zscaler/zia/nss_servers.py +305 -0
  223. zscaler_sdk_python-1.9.29/zscaler/zia/organization_information.py +169 -0
  224. zscaler_sdk_python-1.9.29/zscaler/zia/pac_files.py +623 -0
  225. zscaler_sdk_python-1.9.29/zscaler/zia/policy_export.py +93 -0
  226. zscaler_sdk_python-1.9.29/zscaler/zia/proxies.py +415 -0
  227. zscaler_sdk_python-1.9.29/zscaler/zia/remote_assistance.py +141 -0
  228. zscaler_sdk_python-1.9.29/zscaler/zia/risk_profiles.py +458 -0
  229. zscaler_sdk_python-1.9.29/zscaler/zia/rule_labels.py +328 -0
  230. zscaler_sdk_python-1.9.29/zscaler/zia/saas_security_api.py +374 -0
  231. zscaler_sdk_python-1.9.29/zscaler/zia/sandbox.py +358 -0
  232. zscaler_sdk_python-1.9.29/zscaler/zia/sandbox_rules.py +357 -0
  233. zscaler_sdk_python-1.9.29/zscaler/zia/security_policy_settings.py +261 -0
  234. zscaler_sdk_python-1.9.29/zscaler/zia/shadow_it_report.py +570 -0
  235. zscaler_sdk_python-1.9.29/zscaler/zia/ssl_inspection_rules.py +367 -0
  236. zscaler_sdk_python-1.9.29/zscaler/zia/sub_clouds.py +177 -0
  237. zscaler_sdk_python-1.9.29/zscaler/zia/system_audit.py +86 -0
  238. zscaler_sdk_python-1.9.29/zscaler/zia/tenancy_restriction_profile.py +396 -0
  239. zscaler_sdk_python-1.9.29/zscaler/zia/time_intervals.py +285 -0
  240. zscaler_sdk_python-1.9.29/zscaler/zia/traffic_capture.py +576 -0
  241. zscaler_sdk_python-1.9.29/zscaler/zia/traffic_datacenters.py +356 -0
  242. zscaler_sdk_python-1.9.29/zscaler/zia/traffic_extranet.py +308 -0
  243. zscaler_sdk_python-1.9.29/zscaler/zia/traffic_static_ip.py +397 -0
  244. zscaler_sdk_python-1.9.29/zscaler/zia/traffic_vpn_credentials.py +367 -0
  245. zscaler_sdk_python-1.9.29/zscaler/zia/url_categories.py +763 -0
  246. zscaler_sdk_python-1.9.29/zscaler/zia/url_filtering.py +552 -0
  247. zscaler_sdk_python-1.9.29/zscaler/zia/user_management.py +1000 -0
  248. zscaler_sdk_python-1.9.29/zscaler/zia/vzen_clusters.py +335 -0
  249. zscaler_sdk_python-1.9.29/zscaler/zia/vzen_nodes.py +377 -0
  250. zscaler_sdk_python-1.9.29/zscaler/zia/workload_groups.py +384 -0
  251. zscaler_sdk_python-1.9.29/zscaler/zia/zia_service.py +736 -0
  252. zscaler_sdk_python-1.9.29/zscaler/zia/zpa_gateway.py +354 -0
  253. zscaler_sdk_python-1.9.29/zscaler/zid/api_client.py +530 -0
  254. zscaler_sdk_python-1.9.29/zscaler/zid/groups.py +614 -0
  255. zscaler_sdk_python-1.9.29/zscaler/zid/models/api_client.py +319 -0
  256. zscaler_sdk_python-1.9.29/zscaler/zid/models/common.py +90 -0
  257. zscaler_sdk_python-1.9.29/zscaler/zid/models/groups.py +173 -0
  258. zscaler_sdk_python-1.9.29/zscaler/zid/models/resource_servers.py +201 -0
  259. zscaler_sdk_python-1.9.29/zscaler/zid/models/user_entitlement.py +150 -0
  260. zscaler_sdk_python-1.9.29/zscaler/zid/models/users.py +166 -0
  261. zscaler_sdk_python-1.9.29/zscaler/zid/resource_servers.py +157 -0
  262. zscaler_sdk_python-1.9.29/zscaler/zid/user_entitlement.py +121 -0
  263. zscaler_sdk_python-1.9.29/zscaler/zid/users.py +402 -0
  264. zscaler_sdk_python-1.9.29/zscaler/zid/zid_service.py +70 -0
  265. zscaler_sdk_python-1.9.29/zscaler/zins/cyber_security.py +230 -0
  266. zscaler_sdk_python-1.9.29/zscaler/zins/firewall.py +295 -0
  267. zscaler_sdk_python-1.9.29/zscaler/zins/iot.py +145 -0
  268. zscaler_sdk_python-1.9.29/zscaler/zins/models/__init__.py +19 -0
  269. zscaler_sdk_python-1.9.29/zscaler/zins/models/common.py +284 -0
  270. zscaler_sdk_python-1.9.29/zscaler/zins/models/inputs.py +477 -0
  271. zscaler_sdk_python-1.9.29/zscaler/zins/saas_security.py +142 -0
  272. zscaler_sdk_python-1.9.29/zscaler/zins/shadow_it.py +339 -0
  273. zscaler_sdk_python-1.9.29/zscaler/zins/web_traffic.py +488 -0
  274. zscaler_sdk_python-1.9.29/zscaler/zins/zins_service.py +78 -0
  275. zscaler_sdk_python-1.9.29/zscaler/zms/agent_groups.py +212 -0
  276. zscaler_sdk_python-1.9.29/zscaler/zms/agents.py +289 -0
  277. zscaler_sdk_python-1.9.29/zscaler/zms/app_catalog.py +141 -0
  278. zscaler_sdk_python-1.9.29/zscaler/zms/app_zones.py +132 -0
  279. zscaler_sdk_python-1.9.29/zscaler/zms/models/__init__.py +19 -0
  280. zscaler_sdk_python-1.9.29/zscaler/zms/models/common.py +448 -0
  281. zscaler_sdk_python-1.9.29/zscaler/zms/models/inputs.py +536 -0
  282. zscaler_sdk_python-1.9.29/zscaler/zms/nonces.py +216 -0
  283. zscaler_sdk_python-1.9.29/zscaler/zms/policy_rules.py +230 -0
  284. zscaler_sdk_python-1.9.29/zscaler/zms/resource_groups.py +315 -0
  285. zscaler_sdk_python-1.9.29/zscaler/zms/resources.py +287 -0
  286. zscaler_sdk_python-1.9.29/zscaler/zms/tags.py +339 -0
  287. zscaler_sdk_python-1.9.29/zscaler/zms/zms_service.py +105 -0
  288. zscaler_sdk_python-1.9.29/zscaler/zpa/admin_sso_controller.py +127 -0
  289. zscaler_sdk_python-1.9.29/zscaler/zpa/administrator_controller.py +305 -0
  290. zscaler_sdk_python-1.9.29/zscaler/zpa/api_keys.py +308 -0
  291. zscaler_sdk_python-1.9.29/zscaler/zpa/app_connector_groups.py +471 -0
  292. zscaler_sdk_python-1.9.29/zscaler/zpa/app_connector_schedule.py +219 -0
  293. zscaler_sdk_python-1.9.29/zscaler/zpa/app_connectors.py +282 -0
  294. zscaler_sdk_python-1.9.29/zscaler/zpa/app_protection.py +1200 -0
  295. zscaler_sdk_python-1.9.29/zscaler/zpa/app_segment_by_type.py +148 -0
  296. zscaler_sdk_python-1.9.29/zscaler/zpa/app_segments_ba.py +531 -0
  297. zscaler_sdk_python-1.9.29/zscaler/zpa/app_segments_ba_v2.py +487 -0
  298. zscaler_sdk_python-1.9.29/zscaler/zpa/app_segments_inspection.py +517 -0
  299. zscaler_sdk_python-1.9.29/zscaler/zpa/app_segments_pra.py +484 -0
  300. zscaler_sdk_python-1.9.29/zscaler/zpa/application_segment.py +1246 -0
  301. zscaler_sdk_python-1.9.29/zscaler/zpa/branch_connector_group.py +162 -0
  302. zscaler_sdk_python-1.9.29/zscaler/zpa/branch_connectors.py +95 -0
  303. zscaler_sdk_python-1.9.29/zscaler/zpa/browser_protection.py +231 -0
  304. zscaler_sdk_python-1.9.29/zscaler/zpa/c2c_ip_ranges.py +403 -0
  305. zscaler_sdk_python-1.9.29/zscaler/zpa/cbi_banner.py +257 -0
  306. zscaler_sdk_python-1.9.29/zscaler/zpa/cbi_certificate.py +250 -0
  307. zscaler_sdk_python-1.9.29/zscaler/zpa/cbi_profile.py +384 -0
  308. zscaler_sdk_python-1.9.29/zscaler/zpa/cbi_region.py +78 -0
  309. zscaler_sdk_python-1.9.29/zscaler/zpa/cbi_zpa_profile.py +136 -0
  310. zscaler_sdk_python-1.9.29/zscaler/zpa/certificates.py +359 -0
  311. zscaler_sdk_python-1.9.29/zscaler/zpa/client_settings.py +205 -0
  312. zscaler_sdk_python-1.9.29/zscaler/zpa/cloud_connector_controller.py +94 -0
  313. zscaler_sdk_python-1.9.29/zscaler/zpa/cloud_connector_groups.py +194 -0
  314. zscaler_sdk_python-1.9.29/zscaler/zpa/config_override_controller.py +218 -0
  315. zscaler_sdk_python-1.9.29/zscaler/zpa/customer_controller.py +68 -0
  316. zscaler_sdk_python-1.9.29/zscaler/zpa/customer_domain.py +171 -0
  317. zscaler_sdk_python-1.9.29/zscaler/zpa/customer_dr_tool.py +95 -0
  318. zscaler_sdk_python-1.9.29/zscaler/zpa/customer_version_profile.py +184 -0
  319. zscaler_sdk_python-1.9.29/zscaler/zpa/emergency_access.py +347 -0
  320. zscaler_sdk_python-1.9.29/zscaler/zpa/enrollment_certificates.py +448 -0
  321. zscaler_sdk_python-1.9.29/zscaler/zpa/extranet_resource.py +94 -0
  322. zscaler_sdk_python-1.9.29/zscaler/zpa/idp.py +149 -0
  323. zscaler_sdk_python-1.9.29/zscaler/zpa/legacy.py +1044 -0
  324. zscaler_sdk_python-1.9.29/zscaler/zpa/location_controller.py +230 -0
  325. zscaler_sdk_python-1.9.29/zscaler/zpa/lss.py +570 -0
  326. zscaler_sdk_python-1.9.29/zscaler/zpa/machine_groups.py +206 -0
  327. zscaler_sdk_python-1.9.29/zscaler/zpa/managed_browser_profile.py +100 -0
  328. zscaler_sdk_python-1.9.29/zscaler/zpa/microtenants.py +395 -0
  329. zscaler_sdk_python-1.9.29/zscaler/zpa/models/administrator_controller.py +147 -0
  330. zscaler_sdk_python-1.9.29/zscaler/zpa/models/api_keys.py +104 -0
  331. zscaler_sdk_python-1.9.29/zscaler/zpa/models/app_connector_groups.py +298 -0
  332. zscaler_sdk_python-1.9.29/zscaler/zpa/models/app_connector_schedule.py +57 -0
  333. zscaler_sdk_python-1.9.29/zscaler/zpa/models/app_connectors.py +178 -0
  334. zscaler_sdk_python-1.9.29/zscaler/zpa/models/app_protection_predefined_controls.py +222 -0
  335. zscaler_sdk_python-1.9.29/zscaler/zpa/models/app_protection_profile.py +827 -0
  336. zscaler_sdk_python-1.9.29/zscaler/zpa/models/application_segment.py +1130 -0
  337. zscaler_sdk_python-1.9.29/zscaler/zpa/models/application_segment_lb.py +97 -0
  338. zscaler_sdk_python-1.9.29/zscaler/zpa/models/application_servers.py +64 -0
  339. zscaler_sdk_python-1.9.29/zscaler/zpa/models/branch_connectors.py +92 -0
  340. zscaler_sdk_python-1.9.29/zscaler/zpa/models/browser_protection.py +297 -0
  341. zscaler_sdk_python-1.9.29/zscaler/zpa/models/c2c_ip_ranges.py +110 -0
  342. zscaler_sdk_python-1.9.29/zscaler/zpa/models/cbi_banner.py +62 -0
  343. zscaler_sdk_python-1.9.29/zscaler/zpa/models/cbi_certificate.py +51 -0
  344. zscaler_sdk_python-1.9.29/zscaler/zpa/models/cbi_profile.py +529 -0
  345. zscaler_sdk_python-1.9.29/zscaler/zpa/models/cbi_region.py +47 -0
  346. zscaler_sdk_python-1.9.29/zscaler/zpa/models/cbi_zpa_profile.py +121 -0
  347. zscaler_sdk_python-1.9.29/zscaler/zpa/models/certificates.py +95 -0
  348. zscaler_sdk_python-1.9.29/zscaler/zpa/models/client_settings.py +79 -0
  349. zscaler_sdk_python-1.9.29/zscaler/zpa/models/cloud_connector_groups.py +64 -0
  350. zscaler_sdk_python-1.9.29/zscaler/zpa/models/common.py +575 -0
  351. zscaler_sdk_python-1.9.29/zscaler/zpa/models/config_override_controller.py +89 -0
  352. zscaler_sdk_python-1.9.29/zscaler/zpa/models/customer_controller.py +132 -0
  353. zscaler_sdk_python-1.9.29/zscaler/zpa/models/customer_domain.py +74 -0
  354. zscaler_sdk_python-1.9.29/zscaler/zpa/models/customer_version_profile.py +152 -0
  355. zscaler_sdk_python-1.9.29/zscaler/zpa/models/emergency_access.py +74 -0
  356. zscaler_sdk_python-1.9.29/zscaler/zpa/models/enrollment_certificates.py +117 -0
  357. zscaler_sdk_python-1.9.29/zscaler/zpa/models/idp.py +225 -0
  358. zscaler_sdk_python-1.9.29/zscaler/zpa/models/lss.py +167 -0
  359. zscaler_sdk_python-1.9.29/zscaler/zpa/models/machine_groups.py +71 -0
  360. zscaler_sdk_python-1.9.29/zscaler/zpa/models/managed_browser_profile.py +134 -0
  361. zscaler_sdk_python-1.9.29/zscaler/zpa/models/microtenants.py +84 -0
  362. zscaler_sdk_python-1.9.29/zscaler/zpa/models/npn_client_controller.py +77 -0
  363. zscaler_sdk_python-1.9.29/zscaler/zpa/models/oauth2_user_code.py +67 -0
  364. zscaler_sdk_python-1.9.29/zscaler/zpa/models/policyset_controller_v1.py +314 -0
  365. zscaler_sdk_python-1.9.29/zscaler/zpa/models/policyset_controller_v2.py +304 -0
  366. zscaler_sdk_python-1.9.29/zscaler/zpa/models/posture_profiles.py +108 -0
  367. zscaler_sdk_python-1.9.29/zscaler/zpa/models/pra_approval.py +136 -0
  368. zscaler_sdk_python-1.9.29/zscaler/zpa/models/pra_console.py +157 -0
  369. zscaler_sdk_python-1.9.29/zscaler/zpa/models/pra_cred_pool_controller.py +78 -0
  370. zscaler_sdk_python-1.9.29/zscaler/zpa/models/pra_credential.py +69 -0
  371. zscaler_sdk_python-1.9.29/zscaler/zpa/models/pra_portal.py +110 -0
  372. zscaler_sdk_python-1.9.29/zscaler/zpa/models/private_cloud_controller.py +476 -0
  373. zscaler_sdk_python-1.9.29/zscaler/zpa/models/private_cloud_group.py +225 -0
  374. zscaler_sdk_python-1.9.29/zscaler/zpa/models/provisioning_keys.py +79 -0
  375. zscaler_sdk_python-1.9.29/zscaler/zpa/models/role_controller.py +388 -0
  376. zscaler_sdk_python-1.9.29/zscaler/zpa/models/saml_attributes.py +66 -0
  377. zscaler_sdk_python-1.9.29/zscaler/zpa/models/scim_attributes.py +81 -0
  378. zscaler_sdk_python-1.9.29/zscaler/zpa/models/scim_groups.py +60 -0
  379. zscaler_sdk_python-1.9.29/zscaler/zpa/models/segment_group.py +80 -0
  380. zscaler_sdk_python-1.9.29/zscaler/zpa/models/server_group.py +116 -0
  381. zscaler_sdk_python-1.9.29/zscaler/zpa/models/service_edge_groups.py +150 -0
  382. zscaler_sdk_python-1.9.29/zscaler/zpa/models/service_edge_schedule.py +57 -0
  383. zscaler_sdk_python-1.9.29/zscaler/zpa/models/service_edges.py +162 -0
  384. zscaler_sdk_python-1.9.29/zscaler/zpa/models/stepup_auth_level.py +81 -0
  385. zscaler_sdk_python-1.9.29/zscaler/zpa/models/tag_group.py +163 -0
  386. zscaler_sdk_python-1.9.29/zscaler/zpa/models/tag_key.py +116 -0
  387. zscaler_sdk_python-1.9.29/zscaler/zpa/models/tag_namespace.py +89 -0
  388. zscaler_sdk_python-1.9.29/zscaler/zpa/models/trusted_network.py +68 -0
  389. zscaler_sdk_python-1.9.29/zscaler/zpa/models/user_portal_aup.py +81 -0
  390. zscaler_sdk_python-1.9.29/zscaler/zpa/models/user_portal_controller.py +110 -0
  391. zscaler_sdk_python-1.9.29/zscaler/zpa/models/user_portal_link.py +138 -0
  392. zscaler_sdk_python-1.9.29/zscaler/zpa/npn_client_controller.py +97 -0
  393. zscaler_sdk_python-1.9.29/zscaler/zpa/oauth2_user_code.py +173 -0
  394. zscaler_sdk_python-1.9.29/zscaler/zpa/policies.py +4435 -0
  395. zscaler_sdk_python-1.9.29/zscaler/zpa/posture_profiles.py +149 -0
  396. zscaler_sdk_python-1.9.29/zscaler/zpa/pra_approval.py +389 -0
  397. zscaler_sdk_python-1.9.29/zscaler/zpa/pra_console.py +434 -0
  398. zscaler_sdk_python-1.9.29/zscaler/zpa/pra_credential.py +383 -0
  399. zscaler_sdk_python-1.9.29/zscaler/zpa/pra_credential_pool.py +342 -0
  400. zscaler_sdk_python-1.9.29/zscaler/zpa/pra_portal.py +291 -0
  401. zscaler_sdk_python-1.9.29/zscaler/zpa/private_cloud_controller.py +280 -0
  402. zscaler_sdk_python-1.9.29/zscaler/zpa/private_cloud_group.py +436 -0
  403. zscaler_sdk_python-1.9.29/zscaler/zpa/provisioning.py +456 -0
  404. zscaler_sdk_python-1.9.29/zscaler/zpa/role_controller.py +415 -0
  405. zscaler_sdk_python-1.9.29/zscaler/zpa/saml_attributes.py +325 -0
  406. zscaler_sdk_python-1.9.29/zscaler/zpa/scim_attributes.py +190 -0
  407. zscaler_sdk_python-1.9.29/zscaler/zpa/scim_groups.py +157 -0
  408. zscaler_sdk_python-1.9.29/zscaler/zpa/segment_groups.py +362 -0
  409. zscaler_sdk_python-1.9.29/zscaler/zpa/server_groups.py +352 -0
  410. zscaler_sdk_python-1.9.29/zscaler/zpa/servers.py +354 -0
  411. zscaler_sdk_python-1.9.29/zscaler/zpa/service_edge_group.py +356 -0
  412. zscaler_sdk_python-1.9.29/zscaler/zpa/service_edge_schedule.py +219 -0
  413. zscaler_sdk_python-1.9.29/zscaler/zpa/service_edges.py +266 -0
  414. zscaler_sdk_python-1.9.29/zscaler/zpa/stepup_auth_level.py +101 -0
  415. zscaler_sdk_python-1.9.29/zscaler/zpa/tag_group.py +262 -0
  416. zscaler_sdk_python-1.9.29/zscaler/zpa/tag_key.py +326 -0
  417. zscaler_sdk_python-1.9.29/zscaler/zpa/tag_namespace.py +352 -0
  418. zscaler_sdk_python-1.9.29/zscaler/zpa/trusted_networks.py +153 -0
  419. zscaler_sdk_python-1.9.29/zscaler/zpa/user_portal_aup.py +381 -0
  420. zscaler_sdk_python-1.9.29/zscaler/zpa/user_portal_controller.py +310 -0
  421. zscaler_sdk_python-1.9.29/zscaler/zpa/user_portal_link.py +464 -0
  422. zscaler_sdk_python-1.9.29/zscaler/zpa/workload_tag_group.py +86 -0
  423. zscaler_sdk_python-1.9.29/zscaler/zpa/zia_customer_config.py +262 -0
  424. zscaler_sdk_python-1.9.29/zscaler/zpa/zpa_service.py +448 -0
  425. zscaler_sdk_python-1.9.29/zscaler/ztb/alarms.py +432 -0
  426. zscaler_sdk_python-1.9.29/zscaler/ztb/api_key.py +189 -0
  427. zscaler_sdk_python-1.9.29/zscaler/ztb/app_connector_config.py +148 -0
  428. zscaler_sdk_python-1.9.29/zscaler/ztb/devices.py +459 -0
  429. zscaler_sdk_python-1.9.29/zscaler/ztb/groups_router.py +346 -0
  430. zscaler_sdk_python-1.9.29/zscaler/ztb/legacy.py +551 -0
  431. zscaler_sdk_python-1.9.29/zscaler/ztb/logs.py +84 -0
  432. zscaler_sdk_python-1.9.29/zscaler/ztb/models/alarms.py +197 -0
  433. zscaler_sdk_python-1.9.29/zscaler/ztb/models/api_key.py +92 -0
  434. zscaler_sdk_python-1.9.29/zscaler/ztb/models/common.py +68 -0
  435. zscaler_sdk_python-1.9.29/zscaler/ztb/models/ransomware_kill.py +138 -0
  436. zscaler_sdk_python-1.9.29/zscaler/ztb/policy_comments.py +203 -0
  437. zscaler_sdk_python-1.9.29/zscaler/ztb/ransomware_kill.py +254 -0
  438. zscaler_sdk_python-1.9.29/zscaler/ztb/site.py +509 -0
  439. zscaler_sdk_python-1.9.29/zscaler/ztb/site2site_vpn.py +352 -0
  440. zscaler_sdk_python-1.9.29/zscaler/ztb/template_router.py +410 -0
  441. zscaler_sdk_python-1.9.29/zscaler/ztw/account_details.py +301 -0
  442. zscaler_sdk_python-1.9.29/zscaler/ztw/account_groups.py +384 -0
  443. zscaler_sdk_python-1.9.29/zscaler/ztw/activation.py +116 -0
  444. zscaler_sdk_python-1.9.29/zscaler/ztw/admin_roles.py +331 -0
  445. zscaler_sdk_python-1.9.29/zscaler/ztw/admin_users.py +399 -0
  446. zscaler_sdk_python-1.9.29/zscaler/ztw/api_keys.py +138 -0
  447. zscaler_sdk_python-1.9.29/zscaler/ztw/discovery_service.py +110 -0
  448. zscaler_sdk_python-1.9.29/zscaler/ztw/ec_groups.py +334 -0
  449. zscaler_sdk_python-1.9.29/zscaler/ztw/forwarding_gateways.py +254 -0
  450. zscaler_sdk_python-1.9.29/zscaler/ztw/forwarding_rules.py +406 -0
  451. zscaler_sdk_python-1.9.29/zscaler/ztw/ip_destination_groups.py +410 -0
  452. zscaler_sdk_python-1.9.29/zscaler/ztw/ip_groups.py +257 -0
  453. zscaler_sdk_python-1.9.29/zscaler/ztw/ip_source_groups.py +261 -0
  454. zscaler_sdk_python-1.9.29/zscaler/ztw/legacy.py +539 -0
  455. zscaler_sdk_python-1.9.29/zscaler/ztw/location_management.py +275 -0
  456. zscaler_sdk_python-1.9.29/zscaler/ztw/location_template.py +398 -0
  457. zscaler_sdk_python-1.9.29/zscaler/ztw/models/account_groups.py +73 -0
  458. zscaler_sdk_python-1.9.29/zscaler/ztw/models/activation.py +59 -0
  459. zscaler_sdk_python-1.9.29/zscaler/ztw/models/admin_roles.py +99 -0
  460. zscaler_sdk_python-1.9.29/zscaler/ztw/models/admin_users.py +152 -0
  461. zscaler_sdk_python-1.9.29/zscaler/ztw/models/api_keys.py +93 -0
  462. zscaler_sdk_python-1.9.29/zscaler/ztw/models/common.py +118 -0
  463. zscaler_sdk_python-1.9.29/zscaler/ztw/models/discovery_service.py +79 -0
  464. zscaler_sdk_python-1.9.29/zscaler/ztw/models/ec_group_vm.py +123 -0
  465. zscaler_sdk_python-1.9.29/zscaler/ztw/models/ecgroup.py +459 -0
  466. zscaler_sdk_python-1.9.29/zscaler/ztw/models/forwarding_gateways.py +113 -0
  467. zscaler_sdk_python-1.9.29/zscaler/ztw/models/forwarding_rules.py +361 -0
  468. zscaler_sdk_python-1.9.29/zscaler/ztw/models/ip_destination_groups.py +74 -0
  469. zscaler_sdk_python-1.9.29/zscaler/ztw/models/ip_groups.py +60 -0
  470. zscaler_sdk_python-1.9.29/zscaler/ztw/models/ip_source_groups.py +60 -0
  471. zscaler_sdk_python-1.9.29/zscaler/ztw/models/location_management.py +257 -0
  472. zscaler_sdk_python-1.9.29/zscaler/ztw/models/location_templates.py +175 -0
  473. zscaler_sdk_python-1.9.29/zscaler/ztw/models/nw_service.py +97 -0
  474. zscaler_sdk_python-1.9.29/zscaler/ztw/models/nw_service_groups.py +58 -0
  475. zscaler_sdk_python-1.9.29/zscaler/ztw/models/provisioning_url.py +226 -0
  476. zscaler_sdk_python-1.9.29/zscaler/ztw/models/traffic_vpn_credentials.py +92 -0
  477. zscaler_sdk_python-1.9.29/zscaler/ztw/models/workload_groups.py +205 -0
  478. zscaler_sdk_python-1.9.29/zscaler/ztw/models/zpa_resources.py +63 -0
  479. zscaler_sdk_python-1.9.29/zscaler/ztw/nw_service.py +303 -0
  480. zscaler_sdk_python-1.9.29/zscaler/ztw/nw_service_groups.py +106 -0
  481. zscaler_sdk_python-1.9.29/zscaler/ztw/provisioning_url.py +295 -0
  482. zscaler_sdk_python-1.9.29/zscaler/ztw/public_cloud_info.py +668 -0
  483. zscaler_sdk_python-1.9.29/zscaler/ztw/workload_groups.py +91 -0
  484. zscaler_sdk_python-1.9.29/zscaler/ztw/ztw_service.py +219 -0
  485. zscaler_sdk_python-1.9.29/zscaler/zwa/audit_logs.py +135 -0
  486. zscaler_sdk_python-1.9.29/zscaler/zwa/dlp_incidents.py +645 -0
  487. zscaler_sdk_python-1.9.29/zscaler/zwa/legacy.py +282 -0
  488. zscaler_sdk_python-1.9.29/zscaler/zwa/models/audit_logs.py +137 -0
  489. zscaler_sdk_python-1.9.29/zscaler/zwa/models/change_history.py +63 -0
  490. zscaler_sdk_python-1.9.29/zscaler/zwa/models/common.py +714 -0
  491. zscaler_sdk_python-1.9.29/zscaler/zwa/models/generated_tickets.py +154 -0
  492. zscaler_sdk_python-1.9.29/zscaler/zwa/models/incident_details.py +205 -0
  493. zscaler_sdk_python-1.9.29/zscaler/zwa/models/incident_evidence.py +59 -0
  494. zscaler_sdk_python-1.9.29/zscaler/zwa/models/incident_group_search.py +61 -0
  495. zscaler_sdk_python-1.9.29/zscaler/zwa/models/incident_search.py +95 -0
  496. zscaler_sdk_python-1.9.29/zscaler/zwa/models/incident_trigger.py +47 -0
  497. zscaler_sdk_python-1.9.29/zscaler/zwa/zwa_service.py +41 -0
  498. zscaler_sdk_python-1.9.27/PKG-INFO +0 -1925
  499. zscaler_sdk_python-1.9.27/pyproject.toml +0 -110
  500. zscaler_sdk_python-1.9.27/zscaler/__init__.py +0 -35
  501. zscaler_sdk_python-1.9.27/zscaler/api_client.py +0 -95
  502. zscaler_sdk_python-1.9.27/zscaler/config/config_setter.py +0 -197
  503. zscaler_sdk_python-1.9.27/zscaler/config/config_validator.py +0 -179
  504. zscaler_sdk_python-1.9.27/zscaler/error_messages.py +0 -45
  505. zscaler_sdk_python-1.9.27/zscaler/errors/__init__.py +0 -25
  506. zscaler_sdk_python-1.9.27/zscaler/errors/graphql_error.py +0 -195
  507. zscaler_sdk_python-1.9.27/zscaler/errors/http_error.py +0 -14
  508. zscaler_sdk_python-1.9.27/zscaler/errors/response_checker.py +0 -90
  509. zscaler_sdk_python-1.9.27/zscaler/errors/zscaler_api_error.py +0 -70
  510. zscaler_sdk_python-1.9.27/zscaler/helpers.py +0 -441
  511. zscaler_sdk_python-1.9.27/zscaler/logger.py +0 -245
  512. zscaler_sdk_python-1.9.27/zscaler/oneapi_client.py +0 -708
  513. zscaler_sdk_python-1.9.27/zscaler/oneapi_collection.py +0 -21
  514. zscaler_sdk_python-1.9.27/zscaler/oneapi_http_client.py +0 -422
  515. zscaler_sdk_python-1.9.27/zscaler/oneapi_oauth_client.py +0 -540
  516. zscaler_sdk_python-1.9.27/zscaler/oneapi_object.py +0 -80
  517. zscaler_sdk_python-1.9.27/zscaler/oneapi_response.py +0 -445
  518. zscaler_sdk_python-1.9.27/zscaler/request_executor.py +0 -953
  519. zscaler_sdk_python-1.9.27/zscaler/types.py +0 -38
  520. zscaler_sdk_python-1.9.27/zscaler/utils.py +0 -1035
  521. zscaler_sdk_python-1.9.27/zscaler/zaiguard/legacy.py +0 -456
  522. zscaler_sdk_python-1.9.27/zscaler/zaiguard/models/policy_detection.py +0 -401
  523. zscaler_sdk_python-1.9.27/zscaler/zaiguard/policy_detection.py +0 -193
  524. zscaler_sdk_python-1.9.27/zscaler/zbi/custom_apps.py +0 -281
  525. zscaler_sdk_python-1.9.27/zscaler/zbi/models/custom_apps.py +0 -82
  526. zscaler_sdk_python-1.9.27/zscaler/zbi/models/report_configs.py +0 -185
  527. zscaler_sdk_python-1.9.27/zscaler/zbi/report_configs.py +0 -328
  528. zscaler_sdk_python-1.9.27/zscaler/zcc/_field_introspect.py +0 -181
  529. zscaler_sdk_python-1.9.27/zscaler/zcc/admin_user.py +0 -279
  530. zscaler_sdk_python-1.9.27/zscaler/zcc/application_profiles.py +0 -246
  531. zscaler_sdk_python-1.9.27/zscaler/zcc/company.py +0 -77
  532. zscaler_sdk_python-1.9.27/zscaler/zcc/custom_ip_base_apps.py +0 -124
  533. zscaler_sdk_python-1.9.27/zscaler/zcc/devices.py +0 -695
  534. zscaler_sdk_python-1.9.27/zscaler/zcc/entitlements.py +0 -189
  535. zscaler_sdk_python-1.9.27/zscaler/zcc/fail_open_policy.py +0 -143
  536. zscaler_sdk_python-1.9.27/zscaler/zcc/forwarding_profile.py +0 -175
  537. zscaler_sdk_python-1.9.27/zscaler/zcc/legacy.py +0 -515
  538. zscaler_sdk_python-1.9.27/zscaler/zcc/models/admin_roles.py +0 -164
  539. zscaler_sdk_python-1.9.27/zscaler/zcc/models/admin_user.py +0 -134
  540. zscaler_sdk_python-1.9.27/zscaler/zcc/models/application_profiles.py +0 -1014
  541. zscaler_sdk_python-1.9.27/zscaler/zcc/models/company_info.py +0 -1513
  542. zscaler_sdk_python-1.9.27/zscaler/zcc/models/custom_ip_base_apps.py +0 -126
  543. zscaler_sdk_python-1.9.27/zscaler/zcc/models/devices.py +0 -545
  544. zscaler_sdk_python-1.9.27/zscaler/zcc/models/forwardingprofile.py +0 -484
  545. zscaler_sdk_python-1.9.27/zscaler/zcc/models/manage_pass.py +0 -97
  546. zscaler_sdk_python-1.9.27/zscaler/zcc/models/predefined_ip_based_apps.py +0 -132
  547. zscaler_sdk_python-1.9.27/zscaler/zcc/models/process_based_apps.py +0 -77
  548. zscaler_sdk_python-1.9.27/zscaler/zcc/models/secrets_otp.py +0 -75
  549. zscaler_sdk_python-1.9.27/zscaler/zcc/models/secrets_passwords.py +0 -61
  550. zscaler_sdk_python-1.9.27/zscaler/zcc/models/webpolicy.py +0 -1145
  551. zscaler_sdk_python-1.9.27/zscaler/zcc/models/webprivacy.py +0 -85
  552. zscaler_sdk_python-1.9.27/zscaler/zcc/predefined_ip_based_apps.py +0 -124
  553. zscaler_sdk_python-1.9.27/zscaler/zcc/process_based_apps.py +0 -124
  554. zscaler_sdk_python-1.9.27/zscaler/zcc/secrets.py +0 -129
  555. zscaler_sdk_python-1.9.27/zscaler/zcc/trusted_networks.py +0 -251
  556. zscaler_sdk_python-1.9.27/zscaler/zcc/web_app_service.py +0 -87
  557. zscaler_sdk_python-1.9.27/zscaler/zcc/web_policy.py +0 -506
  558. zscaler_sdk_python-1.9.27/zscaler/zcc/web_privacy.py +0 -137
  559. zscaler_sdk_python-1.9.27/zscaler/zcc/zcc_service.py +0 -158
  560. zscaler_sdk_python-1.9.27/zscaler/zdx/admin.py +0 -176
  561. zscaler_sdk_python-1.9.27/zscaler/zdx/alerts.py +0 -333
  562. zscaler_sdk_python-1.9.27/zscaler/zdx/apps.py +0 -465
  563. zscaler_sdk_python-1.9.27/zscaler/zdx/devices.py +0 -857
  564. zscaler_sdk_python-1.9.27/zscaler/zdx/inventory.py +0 -181
  565. zscaler_sdk_python-1.9.27/zscaler/zdx/legacy.py +0 -448
  566. zscaler_sdk_python-1.9.27/zscaler/zdx/models/administration.py +0 -49
  567. zscaler_sdk_python-1.9.27/zscaler/zdx/models/alerts.py +0 -212
  568. zscaler_sdk_python-1.9.27/zscaler/zdx/models/application_users.py +0 -98
  569. zscaler_sdk_python-1.9.27/zscaler/zdx/models/applications.py +0 -257
  570. zscaler_sdk_python-1.9.27/zscaler/zdx/models/call_quality_metrics.py +0 -59
  571. zscaler_sdk_python-1.9.27/zscaler/zdx/models/common.py +0 -384
  572. zscaler_sdk_python-1.9.27/zscaler/zdx/models/devices.py +0 -919
  573. zscaler_sdk_python-1.9.27/zscaler/zdx/models/snapshot.py +0 -69
  574. zscaler_sdk_python-1.9.27/zscaler/zdx/models/software_inventory.py +0 -105
  575. zscaler_sdk_python-1.9.27/zscaler/zdx/models/troubleshooting.py +0 -448
  576. zscaler_sdk_python-1.9.27/zscaler/zdx/models/users.py +0 -95
  577. zscaler_sdk_python-1.9.27/zscaler/zdx/snapshot.py +0 -124
  578. zscaler_sdk_python-1.9.27/zscaler/zdx/troubleshooting.py +0 -659
  579. zscaler_sdk_python-1.9.27/zscaler/zdx/users.py +0 -170
  580. zscaler_sdk_python-1.9.27/zscaler/zdx/zdx_service.py +0 -95
  581. zscaler_sdk_python-1.9.27/zscaler/zeasm/findings.py +0 -253
  582. zscaler_sdk_python-1.9.27/zscaler/zeasm/lookalike_domains.py +0 -146
  583. zscaler_sdk_python-1.9.27/zscaler/zeasm/models/common.py +0 -53
  584. zscaler_sdk_python-1.9.27/zscaler/zeasm/models/findings.py +0 -169
  585. zscaler_sdk_python-1.9.27/zscaler/zeasm/models/lookalike_domains.py +0 -124
  586. zscaler_sdk_python-1.9.27/zscaler/zeasm/models/organizations.py +0 -60
  587. zscaler_sdk_python-1.9.27/zscaler/zeasm/organizations.py +0 -101
  588. zscaler_sdk_python-1.9.27/zscaler/zeasm/zeasm_service.py +0 -51
  589. zscaler_sdk_python-1.9.27/zscaler/zia/activate.py +0 -201
  590. zscaler_sdk_python-1.9.27/zscaler/zia/admin_roles.py +0 -645
  591. zscaler_sdk_python-1.9.27/zscaler/zia/admin_users.py +0 -496
  592. zscaler_sdk_python-1.9.27/zscaler/zia/advanced_settings.py +0 -207
  593. zscaler_sdk_python-1.9.27/zscaler/zia/alert_subscriptions.py +0 -298
  594. zscaler_sdk_python-1.9.27/zscaler/zia/apptotal.py +0 -217
  595. zscaler_sdk_python-1.9.27/zscaler/zia/atp_policy.py +0 -395
  596. zscaler_sdk_python-1.9.27/zscaler/zia/audit_logs.py +0 -154
  597. zscaler_sdk_python-1.9.27/zscaler/zia/authentication_settings.py +0 -293
  598. zscaler_sdk_python-1.9.27/zscaler/zia/bandwidth_classes.py +0 -337
  599. zscaler_sdk_python-1.9.27/zscaler/zia/bandwidth_control_rules.py +0 -417
  600. zscaler_sdk_python-1.9.27/zscaler/zia/browser_control_settings.py +0 -225
  601. zscaler_sdk_python-1.9.27/zscaler/zia/casb_dlp_rules.py +0 -676
  602. zscaler_sdk_python-1.9.27/zscaler/zia/casb_malware_rules.py +0 -403
  603. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_app_instances.py +0 -296
  604. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_applications.py +0 -196
  605. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_browser_isolation.py +0 -87
  606. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_firewall.py +0 -2282
  607. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_firewall_dns.py +0 -392
  608. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_firewall_ips.py +0 -384
  609. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_firewall_rules.py +0 -380
  610. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_nss.py +0 -694
  611. zscaler_sdk_python-1.9.27/zscaler/zia/cloud_to_cloud_ir.py +0 -310
  612. zscaler_sdk_python-1.9.27/zscaler/zia/cloudappcontrol.py +0 -758
  613. zscaler_sdk_python-1.9.27/zscaler/zia/custom_file_types.py +0 -333
  614. zscaler_sdk_python-1.9.27/zscaler/zia/dedicated_ip_gateways.py +0 -82
  615. zscaler_sdk_python-1.9.27/zscaler/zia/device_management.py +0 -205
  616. zscaler_sdk_python-1.9.27/zscaler/zia/dlp_dictionary.py +0 -521
  617. zscaler_sdk_python-1.9.27/zscaler/zia/dlp_engine.py +0 -400
  618. zscaler_sdk_python-1.9.27/zscaler/zia/dlp_resources.py +0 -617
  619. zscaler_sdk_python-1.9.27/zscaler/zia/dlp_templates.py +0 -293
  620. zscaler_sdk_python-1.9.27/zscaler/zia/dlp_web_rules.py +0 -437
  621. zscaler_sdk_python-1.9.27/zscaler/zia/dns_gatways.py +0 -325
  622. zscaler_sdk_python-1.9.27/zscaler/zia/end_user_notification.py +0 -162
  623. zscaler_sdk_python-1.9.27/zscaler/zia/file_type_control_rule.py +0 -413
  624. zscaler_sdk_python-1.9.27/zscaler/zia/forwarding_control.py +0 -422
  625. zscaler_sdk_python-1.9.27/zscaler/zia/ftp_control_policy.py +0 -139
  626. zscaler_sdk_python-1.9.27/zscaler/zia/gre_tunnel.py +0 -751
  627. zscaler_sdk_python-1.9.27/zscaler/zia/intermediate_certificates.py +0 -702
  628. zscaler_sdk_python-1.9.27/zscaler/zia/iot_report.py +0 -199
  629. zscaler_sdk_python-1.9.27/zscaler/zia/ipv6_config.py +0 -202
  630. zscaler_sdk_python-1.9.27/zscaler/zia/legacy.py +0 -1270
  631. zscaler_sdk_python-1.9.27/zscaler/zia/locations.py +0 -1215
  632. zscaler_sdk_python-1.9.27/zscaler/zia/malware_protection_policy.py +0 -496
  633. zscaler_sdk_python-1.9.27/zscaler/zia/mobile_threat_settings.py +0 -149
  634. zscaler_sdk_python-1.9.27/zscaler/zia/models/activation.py +0 -93
  635. zscaler_sdk_python-1.9.27/zscaler/zia/models/admin_roles.py +0 -134
  636. zscaler_sdk_python-1.9.27/zscaler/zia/models/admin_users.py +0 -332
  637. zscaler_sdk_python-1.9.27/zscaler/zia/models/advanced_settings.py +0 -318
  638. zscaler_sdk_python-1.9.27/zscaler/zia/models/alert_subscriptions.py +0 -85
  639. zscaler_sdk_python-1.9.27/zscaler/zia/models/apptotal.py +0 -258
  640. zscaler_sdk_python-1.9.27/zscaler/zia/models/authentication_settings.py +0 -92
  641. zscaler_sdk_python-1.9.27/zscaler/zia/models/bandwidth_classes.py +0 -78
  642. zscaler_sdk_python-1.9.27/zscaler/zia/models/bandwidth_control_rules.py +0 -137
  643. zscaler_sdk_python-1.9.27/zscaler/zia/models/browser_control_settings.py +0 -137
  644. zscaler_sdk_python-1.9.27/zscaler/zia/models/casb_dlp_rules.py +0 -366
  645. zscaler_sdk_python-1.9.27/zscaler/zia/models/casb_malware_rules.py +0 -127
  646. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_app_instances.py +0 -140
  647. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_app_policy.py +0 -53
  648. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_browser_isolation.py +0 -52
  649. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_app_services.py +0 -49
  650. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -65
  651. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -226
  652. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -55
  653. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -52
  654. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_nw_service.py +0 -142
  655. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -53
  656. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_rules.py +0 -250
  657. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_source_groups.py +0 -60
  658. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_firewall_time_windows.py +0 -56
  659. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_nss.py +0 -612
  660. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloud_to_cloud_ir.py +0 -436
  661. zscaler_sdk_python-1.9.27/zscaler/zia/models/cloudappcontrol.py +0 -265
  662. zscaler_sdk_python-1.9.27/zscaler/zia/models/common.py +0 -176
  663. zscaler_sdk_python-1.9.27/zscaler/zia/models/custom_file_types.py +0 -64
  664. zscaler_sdk_python-1.9.27/zscaler/zia/models/dedicated_ip_gateways.py +0 -103
  665. zscaler_sdk_python-1.9.27/zscaler/zia/models/device_groups.py +0 -58
  666. zscaler_sdk_python-1.9.27/zscaler/zia/models/devices.py +0 -66
  667. zscaler_sdk_python-1.9.27/zscaler/zia/models/dlp_dictionary.py +0 -245
  668. zscaler_sdk_python-1.9.27/zscaler/zia/models/dlp_engine.py +0 -91
  669. zscaler_sdk_python-1.9.27/zscaler/zia/models/dlp_resources.py +0 -199
  670. zscaler_sdk_python-1.9.27/zscaler/zia/models/dlp_templates.py +0 -67
  671. zscaler_sdk_python-1.9.27/zscaler/zia/models/dlp_web_rules.py +0 -242
  672. zscaler_sdk_python-1.9.27/zscaler/zia/models/dns_gateways.py +0 -109
  673. zscaler_sdk_python-1.9.27/zscaler/zia/models/endusernotification.py +0 -156
  674. zscaler_sdk_python-1.9.27/zscaler/zia/models/forwarding_control_policy.py +0 -253
  675. zscaler_sdk_python-1.9.27/zscaler/zia/models/ftp_control_policy.py +0 -62
  676. zscaler_sdk_python-1.9.27/zscaler/zia/models/gre_recommended_list.py +0 -74
  677. zscaler_sdk_python-1.9.27/zscaler/zia/models/gre_tunnel_info.py +0 -70
  678. zscaler_sdk_python-1.9.27/zscaler/zia/models/gre_tunnels.py +0 -136
  679. zscaler_sdk_python-1.9.27/zscaler/zia/models/gre_vips.py +0 -167
  680. zscaler_sdk_python-1.9.27/zscaler/zia/models/intermediate_certificates.py +0 -158
  681. zscaler_sdk_python-1.9.27/zscaler/zia/models/iotreport.py +0 -106
  682. zscaler_sdk_python-1.9.27/zscaler/zia/models/ipv6_config.py +0 -107
  683. zscaler_sdk_python-1.9.27/zscaler/zia/models/location_group.py +0 -82
  684. zscaler_sdk_python-1.9.27/zscaler/zia/models/location_management.py +0 -388
  685. zscaler_sdk_python-1.9.27/zscaler/zia/models/malware_protection_settings.py +0 -102
  686. zscaler_sdk_python-1.9.27/zscaler/zia/models/mobile_threat_settings.py +0 -92
  687. zscaler_sdk_python-1.9.27/zscaler/zia/models/nat_control_policy.py +0 -225
  688. zscaler_sdk_python-1.9.27/zscaler/zia/models/nss_servers.py +0 -64
  689. zscaler_sdk_python-1.9.27/zscaler/zia/models/organization_information.py +0 -453
  690. zscaler_sdk_python-1.9.27/zscaler/zia/models/pac_files.py +0 -205
  691. zscaler_sdk_python-1.9.27/zscaler/zia/models/proxies.py +0 -99
  692. zscaler_sdk_python-1.9.27/zscaler/zia/models/proxy_gateways.py +0 -82
  693. zscaler_sdk_python-1.9.27/zscaler/zia/models/risk_profiles.py +0 -175
  694. zscaler_sdk_python-1.9.27/zscaler/zia/models/rule_labels.py +0 -81
  695. zscaler_sdk_python-1.9.27/zscaler/zia/models/saas_security_api.py +0 -321
  696. zscaler_sdk_python-1.9.27/zscaler/zia/models/sandbox.py +0 -86
  697. zscaler_sdk_python-1.9.27/zscaler/zia/models/security_policy_settings.py +0 -50
  698. zscaler_sdk_python-1.9.27/zscaler/zia/models/shadow_it_report.py +0 -317
  699. zscaler_sdk_python-1.9.27/zscaler/zia/models/ssl_inspection_rules.py +0 -503
  700. zscaler_sdk_python-1.9.27/zscaler/zia/models/subclouds.py +0 -281
  701. zscaler_sdk_python-1.9.27/zscaler/zia/models/system_audit.py +0 -285
  702. zscaler_sdk_python-1.9.27/zscaler/zia/models/tenancy_restriction_profile.py +0 -98
  703. zscaler_sdk_python-1.9.27/zscaler/zia/models/time_intervals.py +0 -63
  704. zscaler_sdk_python-1.9.27/zscaler/zia/models/traffic_capture.py +0 -263
  705. zscaler_sdk_python-1.9.27/zscaler/zia/models/traffic_datacenters.py +0 -115
  706. zscaler_sdk_python-1.9.27/zscaler/zia/models/traffic_dc_exclusions.py +0 -76
  707. zscaler_sdk_python-1.9.27/zscaler/zia/models/traffic_static_ip.py +0 -89
  708. zscaler_sdk_python-1.9.27/zscaler/zia/models/traffic_vpn_credentials.py +0 -89
  709. zscaler_sdk_python-1.9.27/zscaler/zia/models/url_filtering_rules.py +0 -218
  710. zscaler_sdk_python-1.9.27/zscaler/zia/models/urlcategory.py +0 -195
  711. zscaler_sdk_python-1.9.27/zscaler/zia/models/user_management.py +0 -182
  712. zscaler_sdk_python-1.9.27/zscaler/zia/models/vzen_clusters.py +0 -79
  713. zscaler_sdk_python-1.9.27/zscaler/zia/models/vzen_nodes.py +0 -100
  714. zscaler_sdk_python-1.9.27/zscaler/zia/models/workload_groups.py +0 -204
  715. zscaler_sdk_python-1.9.27/zscaler/zia/models/zpa_gateway.py +0 -90
  716. zscaler_sdk_python-1.9.27/zscaler/zia/nat_control_policy.py +0 -363
  717. zscaler_sdk_python-1.9.27/zscaler/zia/nss_servers.py +0 -304
  718. zscaler_sdk_python-1.9.27/zscaler/zia/organization_information.py +0 -168
  719. zscaler_sdk_python-1.9.27/zscaler/zia/pac_files.py +0 -623
  720. zscaler_sdk_python-1.9.27/zscaler/zia/policy_export.py +0 -94
  721. zscaler_sdk_python-1.9.27/zscaler/zia/proxies.py +0 -414
  722. zscaler_sdk_python-1.9.27/zscaler/zia/remote_assistance.py +0 -142
  723. zscaler_sdk_python-1.9.27/zscaler/zia/risk_profiles.py +0 -457
  724. zscaler_sdk_python-1.9.27/zscaler/zia/rule_labels.py +0 -327
  725. zscaler_sdk_python-1.9.27/zscaler/zia/saas_security_api.py +0 -371
  726. zscaler_sdk_python-1.9.27/zscaler/zia/sandbox.py +0 -358
  727. zscaler_sdk_python-1.9.27/zscaler/zia/sandbox_rules.py +0 -356
  728. zscaler_sdk_python-1.9.27/zscaler/zia/security_policy_settings.py +0 -262
  729. zscaler_sdk_python-1.9.27/zscaler/zia/shadow_it_report.py +0 -569
  730. zscaler_sdk_python-1.9.27/zscaler/zia/ssl_inspection_rules.py +0 -366
  731. zscaler_sdk_python-1.9.27/zscaler/zia/sub_clouds.py +0 -177
  732. zscaler_sdk_python-1.9.27/zscaler/zia/system_audit.py +0 -85
  733. zscaler_sdk_python-1.9.27/zscaler/zia/tenancy_restriction_profile.py +0 -395
  734. zscaler_sdk_python-1.9.27/zscaler/zia/time_intervals.py +0 -284
  735. zscaler_sdk_python-1.9.27/zscaler/zia/traffic_capture.py +0 -575
  736. zscaler_sdk_python-1.9.27/zscaler/zia/traffic_datacenters.py +0 -355
  737. zscaler_sdk_python-1.9.27/zscaler/zia/traffic_extranet.py +0 -307
  738. zscaler_sdk_python-1.9.27/zscaler/zia/traffic_static_ip.py +0 -397
  739. zscaler_sdk_python-1.9.27/zscaler/zia/traffic_vpn_credentials.py +0 -366
  740. zscaler_sdk_python-1.9.27/zscaler/zia/url_categories.py +0 -763
  741. zscaler_sdk_python-1.9.27/zscaler/zia/url_filtering.py +0 -551
  742. zscaler_sdk_python-1.9.27/zscaler/zia/user_management.py +0 -1002
  743. zscaler_sdk_python-1.9.27/zscaler/zia/vzen_clusters.py +0 -334
  744. zscaler_sdk_python-1.9.27/zscaler/zia/vzen_nodes.py +0 -376
  745. zscaler_sdk_python-1.9.27/zscaler/zia/workload_groups.py +0 -383
  746. zscaler_sdk_python-1.9.27/zscaler/zia/zia_service.py +0 -728
  747. zscaler_sdk_python-1.9.27/zscaler/zia/zpa_gateway.py +0 -353
  748. zscaler_sdk_python-1.9.27/zscaler/zid/api_client.py +0 -531
  749. zscaler_sdk_python-1.9.27/zscaler/zid/groups.py +0 -614
  750. zscaler_sdk_python-1.9.27/zscaler/zid/models/api_client.py +0 -318
  751. zscaler_sdk_python-1.9.27/zscaler/zid/models/common.py +0 -89
  752. zscaler_sdk_python-1.9.27/zscaler/zid/models/groups.py +0 -172
  753. zscaler_sdk_python-1.9.27/zscaler/zid/models/resource_servers.py +0 -200
  754. zscaler_sdk_python-1.9.27/zscaler/zid/models/user_entitlement.py +0 -149
  755. zscaler_sdk_python-1.9.27/zscaler/zid/models/users.py +0 -165
  756. zscaler_sdk_python-1.9.27/zscaler/zid/resource_servers.py +0 -157
  757. zscaler_sdk_python-1.9.27/zscaler/zid/user_entitlement.py +0 -123
  758. zscaler_sdk_python-1.9.27/zscaler/zid/users.py +0 -402
  759. zscaler_sdk_python-1.9.27/zscaler/zid/zid_service.py +0 -70
  760. zscaler_sdk_python-1.9.27/zscaler/zins/cyber_security.py +0 -230
  761. zscaler_sdk_python-1.9.27/zscaler/zins/firewall.py +0 -295
  762. zscaler_sdk_python-1.9.27/zscaler/zins/iot.py +0 -145
  763. zscaler_sdk_python-1.9.27/zscaler/zins/models/__init__.py +0 -19
  764. zscaler_sdk_python-1.9.27/zscaler/zins/models/common.py +0 -284
  765. zscaler_sdk_python-1.9.27/zscaler/zins/models/inputs.py +0 -476
  766. zscaler_sdk_python-1.9.27/zscaler/zins/saas_security.py +0 -142
  767. zscaler_sdk_python-1.9.27/zscaler/zins/shadow_it.py +0 -339
  768. zscaler_sdk_python-1.9.27/zscaler/zins/web_traffic.py +0 -488
  769. zscaler_sdk_python-1.9.27/zscaler/zins/zins_service.py +0 -78
  770. zscaler_sdk_python-1.9.27/zscaler/zms/agent_groups.py +0 -212
  771. zscaler_sdk_python-1.9.27/zscaler/zms/agents.py +0 -289
  772. zscaler_sdk_python-1.9.27/zscaler/zms/app_catalog.py +0 -141
  773. zscaler_sdk_python-1.9.27/zscaler/zms/app_zones.py +0 -132
  774. zscaler_sdk_python-1.9.27/zscaler/zms/models/__init__.py +0 -19
  775. zscaler_sdk_python-1.9.27/zscaler/zms/models/common.py +0 -447
  776. zscaler_sdk_python-1.9.27/zscaler/zms/models/inputs.py +0 -535
  777. zscaler_sdk_python-1.9.27/zscaler/zms/nonces.py +0 -216
  778. zscaler_sdk_python-1.9.27/zscaler/zms/policy_rules.py +0 -230
  779. zscaler_sdk_python-1.9.27/zscaler/zms/resource_groups.py +0 -315
  780. zscaler_sdk_python-1.9.27/zscaler/zms/resources.py +0 -287
  781. zscaler_sdk_python-1.9.27/zscaler/zms/tags.py +0 -339
  782. zscaler_sdk_python-1.9.27/zscaler/zms/zms_service.py +0 -105
  783. zscaler_sdk_python-1.9.27/zscaler/zpa/admin_sso_controller.py +0 -128
  784. zscaler_sdk_python-1.9.27/zscaler/zpa/administrator_controller.py +0 -304
  785. zscaler_sdk_python-1.9.27/zscaler/zpa/api_keys.py +0 -307
  786. zscaler_sdk_python-1.9.27/zscaler/zpa/app_connector_groups.py +0 -470
  787. zscaler_sdk_python-1.9.27/zscaler/zpa/app_connector_schedule.py +0 -219
  788. zscaler_sdk_python-1.9.27/zscaler/zpa/app_connectors.py +0 -281
  789. zscaler_sdk_python-1.9.27/zscaler/zpa/app_protection.py +0 -1199
  790. zscaler_sdk_python-1.9.27/zscaler/zpa/app_segment_by_type.py +0 -147
  791. zscaler_sdk_python-1.9.27/zscaler/zpa/app_segments_ba.py +0 -530
  792. zscaler_sdk_python-1.9.27/zscaler/zpa/app_segments_ba_v2.py +0 -486
  793. zscaler_sdk_python-1.9.27/zscaler/zpa/app_segments_inspection.py +0 -516
  794. zscaler_sdk_python-1.9.27/zscaler/zpa/app_segments_pra.py +0 -483
  795. zscaler_sdk_python-1.9.27/zscaler/zpa/application_segment.py +0 -1247
  796. zscaler_sdk_python-1.9.27/zscaler/zpa/branch_connector_group.py +0 -161
  797. zscaler_sdk_python-1.9.27/zscaler/zpa/branch_connectors.py +0 -94
  798. zscaler_sdk_python-1.9.27/zscaler/zpa/browser_protection.py +0 -230
  799. zscaler_sdk_python-1.9.27/zscaler/zpa/c2c_ip_ranges.py +0 -402
  800. zscaler_sdk_python-1.9.27/zscaler/zpa/cbi_banner.py +0 -256
  801. zscaler_sdk_python-1.9.27/zscaler/zpa/cbi_certificate.py +0 -249
  802. zscaler_sdk_python-1.9.27/zscaler/zpa/cbi_profile.py +0 -383
  803. zscaler_sdk_python-1.9.27/zscaler/zpa/cbi_region.py +0 -77
  804. zscaler_sdk_python-1.9.27/zscaler/zpa/cbi_zpa_profile.py +0 -135
  805. zscaler_sdk_python-1.9.27/zscaler/zpa/certificates.py +0 -358
  806. zscaler_sdk_python-1.9.27/zscaler/zpa/client_settings.py +0 -204
  807. zscaler_sdk_python-1.9.27/zscaler/zpa/cloud_connector_controller.py +0 -93
  808. zscaler_sdk_python-1.9.27/zscaler/zpa/cloud_connector_groups.py +0 -193
  809. zscaler_sdk_python-1.9.27/zscaler/zpa/config_override_controller.py +0 -217
  810. zscaler_sdk_python-1.9.27/zscaler/zpa/customer_controller.py +0 -71
  811. zscaler_sdk_python-1.9.27/zscaler/zpa/customer_domain.py +0 -170
  812. zscaler_sdk_python-1.9.27/zscaler/zpa/customer_dr_tool.py +0 -94
  813. zscaler_sdk_python-1.9.27/zscaler/zpa/customer_version_profile.py +0 -183
  814. zscaler_sdk_python-1.9.27/zscaler/zpa/emergency_access.py +0 -346
  815. zscaler_sdk_python-1.9.27/zscaler/zpa/enrollment_certificates.py +0 -447
  816. zscaler_sdk_python-1.9.27/zscaler/zpa/extranet_resource.py +0 -93
  817. zscaler_sdk_python-1.9.27/zscaler/zpa/idp.py +0 -148
  818. zscaler_sdk_python-1.9.27/zscaler/zpa/legacy.py +0 -1045
  819. zscaler_sdk_python-1.9.27/zscaler/zpa/location_controller.py +0 -229
  820. zscaler_sdk_python-1.9.27/zscaler/zpa/lss.py +0 -569
  821. zscaler_sdk_python-1.9.27/zscaler/zpa/machine_groups.py +0 -205
  822. zscaler_sdk_python-1.9.27/zscaler/zpa/managed_browser_profile.py +0 -99
  823. zscaler_sdk_python-1.9.27/zscaler/zpa/microtenants.py +0 -394
  824. zscaler_sdk_python-1.9.27/zscaler/zpa/models/administrator_controller.py +0 -147
  825. zscaler_sdk_python-1.9.27/zscaler/zpa/models/api_keys.py +0 -103
  826. zscaler_sdk_python-1.9.27/zscaler/zpa/models/app_connector_groups.py +0 -297
  827. zscaler_sdk_python-1.9.27/zscaler/zpa/models/app_connector_schedule.py +0 -56
  828. zscaler_sdk_python-1.9.27/zscaler/zpa/models/app_connectors.py +0 -177
  829. zscaler_sdk_python-1.9.27/zscaler/zpa/models/app_protection_predefined_controls.py +0 -221
  830. zscaler_sdk_python-1.9.27/zscaler/zpa/models/app_protection_profile.py +0 -826
  831. zscaler_sdk_python-1.9.27/zscaler/zpa/models/application_segment.py +0 -1129
  832. zscaler_sdk_python-1.9.27/zscaler/zpa/models/application_segment_lb.py +0 -96
  833. zscaler_sdk_python-1.9.27/zscaler/zpa/models/application_servers.py +0 -63
  834. zscaler_sdk_python-1.9.27/zscaler/zpa/models/branch_connectors.py +0 -93
  835. zscaler_sdk_python-1.9.27/zscaler/zpa/models/browser_protection.py +0 -296
  836. zscaler_sdk_python-1.9.27/zscaler/zpa/models/c2c_ip_ranges.py +0 -109
  837. zscaler_sdk_python-1.9.27/zscaler/zpa/models/cbi_banner.py +0 -61
  838. zscaler_sdk_python-1.9.27/zscaler/zpa/models/cbi_certificate.py +0 -50
  839. zscaler_sdk_python-1.9.27/zscaler/zpa/models/cbi_profile.py +0 -528
  840. zscaler_sdk_python-1.9.27/zscaler/zpa/models/cbi_region.py +0 -46
  841. zscaler_sdk_python-1.9.27/zscaler/zpa/models/cbi_zpa_profile.py +0 -120
  842. zscaler_sdk_python-1.9.27/zscaler/zpa/models/certificates.py +0 -94
  843. zscaler_sdk_python-1.9.27/zscaler/zpa/models/client_settings.py +0 -80
  844. zscaler_sdk_python-1.9.27/zscaler/zpa/models/cloud_connector_groups.py +0 -63
  845. zscaler_sdk_python-1.9.27/zscaler/zpa/models/common.py +0 -574
  846. zscaler_sdk_python-1.9.27/zscaler/zpa/models/config_override_controller.py +0 -88
  847. zscaler_sdk_python-1.9.27/zscaler/zpa/models/customer_controller.py +0 -131
  848. zscaler_sdk_python-1.9.27/zscaler/zpa/models/customer_domain.py +0 -73
  849. zscaler_sdk_python-1.9.27/zscaler/zpa/models/customer_version_profile.py +0 -151
  850. zscaler_sdk_python-1.9.27/zscaler/zpa/models/emergency_access.py +0 -73
  851. zscaler_sdk_python-1.9.27/zscaler/zpa/models/enrollment_certificates.py +0 -116
  852. zscaler_sdk_python-1.9.27/zscaler/zpa/models/idp.py +0 -224
  853. zscaler_sdk_python-1.9.27/zscaler/zpa/models/lss.py +0 -166
  854. zscaler_sdk_python-1.9.27/zscaler/zpa/models/machine_groups.py +0 -70
  855. zscaler_sdk_python-1.9.27/zscaler/zpa/models/managed_browser_profile.py +0 -135
  856. zscaler_sdk_python-1.9.27/zscaler/zpa/models/microtenants.py +0 -83
  857. zscaler_sdk_python-1.9.27/zscaler/zpa/models/npn_client_controller.py +0 -78
  858. zscaler_sdk_python-1.9.27/zscaler/zpa/models/oauth2_user_code.py +0 -67
  859. zscaler_sdk_python-1.9.27/zscaler/zpa/models/policyset_controller_v1.py +0 -313
  860. zscaler_sdk_python-1.9.27/zscaler/zpa/models/policyset_controller_v2.py +0 -303
  861. zscaler_sdk_python-1.9.27/zscaler/zpa/models/posture_profiles.py +0 -107
  862. zscaler_sdk_python-1.9.27/zscaler/zpa/models/pra_approval.py +0 -135
  863. zscaler_sdk_python-1.9.27/zscaler/zpa/models/pra_console.py +0 -156
  864. zscaler_sdk_python-1.9.27/zscaler/zpa/models/pra_cred_pool_controller.py +0 -77
  865. zscaler_sdk_python-1.9.27/zscaler/zpa/models/pra_credential.py +0 -68
  866. zscaler_sdk_python-1.9.27/zscaler/zpa/models/pra_portal.py +0 -109
  867. zscaler_sdk_python-1.9.27/zscaler/zpa/models/private_cloud_controller.py +0 -475
  868. zscaler_sdk_python-1.9.27/zscaler/zpa/models/private_cloud_group.py +0 -224
  869. zscaler_sdk_python-1.9.27/zscaler/zpa/models/provisioning_keys.py +0 -78
  870. zscaler_sdk_python-1.9.27/zscaler/zpa/models/role_controller.py +0 -387
  871. zscaler_sdk_python-1.9.27/zscaler/zpa/models/saml_attributes.py +0 -65
  872. zscaler_sdk_python-1.9.27/zscaler/zpa/models/scim_attributes.py +0 -80
  873. zscaler_sdk_python-1.9.27/zscaler/zpa/models/scim_groups.py +0 -59
  874. zscaler_sdk_python-1.9.27/zscaler/zpa/models/segment_group.py +0 -79
  875. zscaler_sdk_python-1.9.27/zscaler/zpa/models/server_group.py +0 -115
  876. zscaler_sdk_python-1.9.27/zscaler/zpa/models/service_edge_groups.py +0 -149
  877. zscaler_sdk_python-1.9.27/zscaler/zpa/models/service_edge_schedule.py +0 -56
  878. zscaler_sdk_python-1.9.27/zscaler/zpa/models/service_edges.py +0 -161
  879. zscaler_sdk_python-1.9.27/zscaler/zpa/models/stepup_auth_level.py +0 -82
  880. zscaler_sdk_python-1.9.27/zscaler/zpa/models/tag_group.py +0 -162
  881. zscaler_sdk_python-1.9.27/zscaler/zpa/models/tag_key.py +0 -115
  882. zscaler_sdk_python-1.9.27/zscaler/zpa/models/tag_namespace.py +0 -88
  883. zscaler_sdk_python-1.9.27/zscaler/zpa/models/trusted_network.py +0 -67
  884. zscaler_sdk_python-1.9.27/zscaler/zpa/models/user_portal_aup.py +0 -83
  885. zscaler_sdk_python-1.9.27/zscaler/zpa/models/user_portal_controller.py +0 -109
  886. zscaler_sdk_python-1.9.27/zscaler/zpa/models/user_portal_link.py +0 -137
  887. zscaler_sdk_python-1.9.27/zscaler/zpa/npn_client_controller.py +0 -96
  888. zscaler_sdk_python-1.9.27/zscaler/zpa/oauth2_user_code.py +0 -174
  889. zscaler_sdk_python-1.9.27/zscaler/zpa/policies.py +0 -4434
  890. zscaler_sdk_python-1.9.27/zscaler/zpa/posture_profiles.py +0 -148
  891. zscaler_sdk_python-1.9.27/zscaler/zpa/pra_approval.py +0 -389
  892. zscaler_sdk_python-1.9.27/zscaler/zpa/pra_console.py +0 -433
  893. zscaler_sdk_python-1.9.27/zscaler/zpa/pra_credential.py +0 -382
  894. zscaler_sdk_python-1.9.27/zscaler/zpa/pra_credential_pool.py +0 -341
  895. zscaler_sdk_python-1.9.27/zscaler/zpa/pra_portal.py +0 -290
  896. zscaler_sdk_python-1.9.27/zscaler/zpa/private_cloud_controller.py +0 -279
  897. zscaler_sdk_python-1.9.27/zscaler/zpa/private_cloud_group.py +0 -435
  898. zscaler_sdk_python-1.9.27/zscaler/zpa/provisioning.py +0 -455
  899. zscaler_sdk_python-1.9.27/zscaler/zpa/role_controller.py +0 -415
  900. zscaler_sdk_python-1.9.27/zscaler/zpa/saml_attributes.py +0 -324
  901. zscaler_sdk_python-1.9.27/zscaler/zpa/scim_attributes.py +0 -189
  902. zscaler_sdk_python-1.9.27/zscaler/zpa/scim_groups.py +0 -156
  903. zscaler_sdk_python-1.9.27/zscaler/zpa/segment_groups.py +0 -361
  904. zscaler_sdk_python-1.9.27/zscaler/zpa/server_groups.py +0 -343
  905. zscaler_sdk_python-1.9.27/zscaler/zpa/servers.py +0 -353
  906. zscaler_sdk_python-1.9.27/zscaler/zpa/service_edge_group.py +0 -355
  907. zscaler_sdk_python-1.9.27/zscaler/zpa/service_edge_schedule.py +0 -219
  908. zscaler_sdk_python-1.9.27/zscaler/zpa/service_edges.py +0 -265
  909. zscaler_sdk_python-1.9.27/zscaler/zpa/stepup_auth_level.py +0 -100
  910. zscaler_sdk_python-1.9.27/zscaler/zpa/tag_group.py +0 -262
  911. zscaler_sdk_python-1.9.27/zscaler/zpa/tag_key.py +0 -325
  912. zscaler_sdk_python-1.9.27/zscaler/zpa/tag_namespace.py +0 -351
  913. zscaler_sdk_python-1.9.27/zscaler/zpa/trusted_networks.py +0 -152
  914. zscaler_sdk_python-1.9.27/zscaler/zpa/user_portal_aup.py +0 -380
  915. zscaler_sdk_python-1.9.27/zscaler/zpa/user_portal_controller.py +0 -309
  916. zscaler_sdk_python-1.9.27/zscaler/zpa/user_portal_link.py +0 -464
  917. zscaler_sdk_python-1.9.27/zscaler/zpa/workload_tag_group.py +0 -85
  918. zscaler_sdk_python-1.9.27/zscaler/zpa/zia_customer_config.py +0 -262
  919. zscaler_sdk_python-1.9.27/zscaler/zpa/zpa_service.py +0 -447
  920. zscaler_sdk_python-1.9.27/zscaler/ztb/alarms.py +0 -434
  921. zscaler_sdk_python-1.9.27/zscaler/ztb/api_key.py +0 -190
  922. zscaler_sdk_python-1.9.27/zscaler/ztb/app_connector_config.py +0 -152
  923. zscaler_sdk_python-1.9.27/zscaler/ztb/devices.py +0 -459
  924. zscaler_sdk_python-1.9.27/zscaler/ztb/groups_router.py +0 -346
  925. zscaler_sdk_python-1.9.27/zscaler/ztb/legacy.py +0 -550
  926. zscaler_sdk_python-1.9.27/zscaler/ztb/logs.py +0 -84
  927. zscaler_sdk_python-1.9.27/zscaler/ztb/models/alarms.py +0 -196
  928. zscaler_sdk_python-1.9.27/zscaler/ztb/models/api_key.py +0 -92
  929. zscaler_sdk_python-1.9.27/zscaler/ztb/models/common.py +0 -66
  930. zscaler_sdk_python-1.9.27/zscaler/ztb/models/ransomware_kill.py +0 -138
  931. zscaler_sdk_python-1.9.27/zscaler/ztb/policy_comments.py +0 -203
  932. zscaler_sdk_python-1.9.27/zscaler/ztb/ransomware_kill.py +0 -254
  933. zscaler_sdk_python-1.9.27/zscaler/ztb/site.py +0 -510
  934. zscaler_sdk_python-1.9.27/zscaler/ztb/site2site_vpn.py +0 -353
  935. zscaler_sdk_python-1.9.27/zscaler/ztb/template_router.py +0 -410
  936. zscaler_sdk_python-1.9.27/zscaler/ztw/account_details.py +0 -300
  937. zscaler_sdk_python-1.9.27/zscaler/ztw/account_groups.py +0 -383
  938. zscaler_sdk_python-1.9.27/zscaler/ztw/activation.py +0 -117
  939. zscaler_sdk_python-1.9.27/zscaler/ztw/admin_roles.py +0 -330
  940. zscaler_sdk_python-1.9.27/zscaler/ztw/admin_users.py +0 -398
  941. zscaler_sdk_python-1.9.27/zscaler/ztw/api_keys.py +0 -137
  942. zscaler_sdk_python-1.9.27/zscaler/ztw/discovery_service.py +0 -112
  943. zscaler_sdk_python-1.9.27/zscaler/ztw/ec_groups.py +0 -333
  944. zscaler_sdk_python-1.9.27/zscaler/ztw/forwarding_gateways.py +0 -253
  945. zscaler_sdk_python-1.9.27/zscaler/ztw/forwarding_rules.py +0 -405
  946. zscaler_sdk_python-1.9.27/zscaler/ztw/ip_destination_groups.py +0 -409
  947. zscaler_sdk_python-1.9.27/zscaler/ztw/ip_groups.py +0 -256
  948. zscaler_sdk_python-1.9.27/zscaler/ztw/ip_source_groups.py +0 -260
  949. zscaler_sdk_python-1.9.27/zscaler/ztw/legacy.py +0 -537
  950. zscaler_sdk_python-1.9.27/zscaler/ztw/location_management.py +0 -274
  951. zscaler_sdk_python-1.9.27/zscaler/ztw/location_template.py +0 -397
  952. zscaler_sdk_python-1.9.27/zscaler/ztw/models/account_groups.py +0 -73
  953. zscaler_sdk_python-1.9.27/zscaler/ztw/models/activation.py +0 -58
  954. zscaler_sdk_python-1.9.27/zscaler/ztw/models/admin_roles.py +0 -98
  955. zscaler_sdk_python-1.9.27/zscaler/ztw/models/admin_users.py +0 -151
  956. zscaler_sdk_python-1.9.27/zscaler/ztw/models/api_keys.py +0 -92
  957. zscaler_sdk_python-1.9.27/zscaler/ztw/models/common.py +0 -117
  958. zscaler_sdk_python-1.9.27/zscaler/ztw/models/discovery_service.py +0 -80
  959. zscaler_sdk_python-1.9.27/zscaler/ztw/models/ec_group_vm.py +0 -122
  960. zscaler_sdk_python-1.9.27/zscaler/ztw/models/ecgroup.py +0 -458
  961. zscaler_sdk_python-1.9.27/zscaler/ztw/models/forwarding_gateways.py +0 -112
  962. zscaler_sdk_python-1.9.27/zscaler/ztw/models/forwarding_rules.py +0 -360
  963. zscaler_sdk_python-1.9.27/zscaler/ztw/models/ip_destination_groups.py +0 -73
  964. zscaler_sdk_python-1.9.27/zscaler/ztw/models/ip_groups.py +0 -59
  965. zscaler_sdk_python-1.9.27/zscaler/ztw/models/ip_source_groups.py +0 -59
  966. zscaler_sdk_python-1.9.27/zscaler/ztw/models/location_management.py +0 -256
  967. zscaler_sdk_python-1.9.27/zscaler/ztw/models/location_templates.py +0 -174
  968. zscaler_sdk_python-1.9.27/zscaler/ztw/models/nw_service.py +0 -96
  969. zscaler_sdk_python-1.9.27/zscaler/ztw/models/nw_service_groups.py +0 -57
  970. zscaler_sdk_python-1.9.27/zscaler/ztw/models/provisioning_url.py +0 -225
  971. zscaler_sdk_python-1.9.27/zscaler/ztw/models/traffic_vpn_credentials.py +0 -91
  972. zscaler_sdk_python-1.9.27/zscaler/ztw/models/workload_groups.py +0 -204
  973. zscaler_sdk_python-1.9.27/zscaler/ztw/models/zpa_resources.py +0 -62
  974. zscaler_sdk_python-1.9.27/zscaler/ztw/nw_service.py +0 -303
  975. zscaler_sdk_python-1.9.27/zscaler/ztw/nw_service_groups.py +0 -105
  976. zscaler_sdk_python-1.9.27/zscaler/ztw/provisioning_url.py +0 -294
  977. zscaler_sdk_python-1.9.27/zscaler/ztw/public_cloud_info.py +0 -670
  978. zscaler_sdk_python-1.9.27/zscaler/ztw/workload_groups.py +0 -90
  979. zscaler_sdk_python-1.9.27/zscaler/ztw/ztw_service.py +0 -220
  980. zscaler_sdk_python-1.9.27/zscaler/zwa/audit_logs.py +0 -134
  981. zscaler_sdk_python-1.9.27/zscaler/zwa/dlp_incidents.py +0 -644
  982. zscaler_sdk_python-1.9.27/zscaler/zwa/legacy.py +0 -280
  983. zscaler_sdk_python-1.9.27/zscaler/zwa/models/audit_logs.py +0 -136
  984. zscaler_sdk_python-1.9.27/zscaler/zwa/models/change_history.py +0 -62
  985. zscaler_sdk_python-1.9.27/zscaler/zwa/models/common.py +0 -713
  986. zscaler_sdk_python-1.9.27/zscaler/zwa/models/generated_tickets.py +0 -153
  987. zscaler_sdk_python-1.9.27/zscaler/zwa/models/incident_details.py +0 -204
  988. zscaler_sdk_python-1.9.27/zscaler/zwa/models/incident_evidence.py +0 -58
  989. zscaler_sdk_python-1.9.27/zscaler/zwa/models/incident_group_search.py +0 -60
  990. zscaler_sdk_python-1.9.27/zscaler/zwa/models/incident_search.py +0 -94
  991. zscaler_sdk_python-1.9.27/zscaler/zwa/models/incident_trigger.py +0 -46
  992. zscaler_sdk_python-1.9.27/zscaler/zwa/zwa_service.py +0 -41
  993. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/LICENSE.md +0 -0
  994. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/README.md +0 -0
  995. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/cache/__init__.py +0 -0
  996. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/cache/cache.py +0 -0
  997. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/cache/no_op_cache.py +0 -0
  998. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/cache/zscaler_cache.py +0 -0
  999. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/config/__init__.py +0 -0
  1000. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/constants.py +0 -0
  1001. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/errors/error.py +0 -0
  1002. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/exceptions/__init__.py +0 -0
  1003. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/exceptions/exceptions.py +0 -0
  1004. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ratelimiter/__init__.py +0 -0
  1005. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ratelimiter/ratelimiter.py +0 -0
  1006. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/user_agent.py +0 -0
  1007. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zaiguard/__init__.py +0 -0
  1008. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zaiguard/models/__init__.py +0 -0
  1009. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zaiguard/zaiguard_service.py +0 -0
  1010. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zbi/__init__.py +0 -0
  1011. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zbi/models/__init__.py +0 -0
  1012. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zbi/reports.py +0 -0
  1013. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zbi/zbi_service.py +0 -0
  1014. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zcc/__init__.py +0 -0
  1015. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zcc/_serialize.py +0 -0
  1016. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zcc/models/failopenpolicy.py +0 -0
  1017. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zcc/models/trustednetworks.py +0 -0
  1018. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zcc/models/webappservice.py +0 -0
  1019. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  1020. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  1021. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zdx/__init__.py +0 -0
  1022. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zeasm/__init__.py +0 -0
  1023. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zeasm/models/__init__.py +0 -0
  1024. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/__init__.py +0 -0
  1025. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/models/__init__.py +0 -0
  1026. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  1027. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  1028. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/models/filetyperules.py +0 -0
  1029. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/models/remoteassistance.py +0 -0
  1030. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/models/sandboxrules.py +0 -0
  1031. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/models/traffic_extranet.py +0 -0
  1032. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  1033. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zid/__init__.py +0 -0
  1034. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zins/__init__.py +0 -0
  1035. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zins/models/enums.py +0 -0
  1036. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zms/__init__.py +0 -0
  1037. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zms/models/enums.py +0 -0
  1038. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zpa/__init__.py +0 -0
  1039. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zpa/models/cloud_connector_controller.py +0 -0
  1040. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zpa/models/customer_dr_tool.py +0 -0
  1041. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zpa/models/zia_customer_config.py +0 -0
  1042. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/__init__.py +0 -0
  1043. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/__init__.py +0 -0
  1044. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/app_connector_config.py +0 -0
  1045. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/devices.py +0 -0
  1046. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/groups_router.py +0 -0
  1047. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/logs.py +0 -0
  1048. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/policy_comments.py +0 -0
  1049. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/site.py +0 -0
  1050. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/site2site_vpn.py +0 -0
  1051. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/models/template_router.py +0 -0
  1052. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztb/ztb_service.py +0 -0
  1053. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztw/__init__.py +0 -0
  1054. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/ztw/models/public_cloud_info.py +0 -0
  1055. {zscaler_sdk_python-1.9.27 → zscaler_sdk_python-1.9.29}/zscaler/zwa/__init__.py +0 -0
@@ -0,0 +1,1925 @@
1
+ Metadata-Version: 2.1
2
+ Name: zscaler-sdk-python
3
+ Version: 1.9.29
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,zid,zidentity
8
+ Author: Zscaler, Inc.
9
+ Author-email: devrel@zscaler.com
10
+ Requires-Python: >=3.10,<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: Topic :: Security
20
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
+ Provides-Extra: dev
22
+ Requires-Dist: PyJWT (>=2.10.1)
23
+ Requires-Dist: aenum (>=3.1.11)
24
+ Requires-Dist: arrow (>=1.3.0)
25
+ Requires-Dist: cryptography (>=45.0.2)
26
+ Requires-Dist: jmespath (>=1.0.0)
27
+ Requires-Dist: jwcrypto (>=1.5.6)
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: pytz (>=2024.2)
32
+ Requires-Dist: pyyaml (>=6.0.0)
33
+ Requires-Dist: requests (>=2.32.3)
34
+ Requires-Dist: urllib3 (>=2.6.0)
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
+ [![Automation Hub](https://img.shields.io/badge/automation-hub-blue)](https://automate.zscaler.com/docs/tools/sdk-documentation/sdk-getting-started)
49
+ [![Zscaler Community](https://img.shields.io/badge/zscaler-community-blue)](https://community.zscaler.com/)
50
+
51
+ ## Support Disclaimer
52
+
53
+ -> **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.
54
+
55
+ > ## 🚧 Heads up: Zscaler Python SDK **v2.x is now in Public Preview / Beta**
56
+ >
57
+ > A new, **data-driven** version of the Zscaler Python SDK — generated directly from the official Zscaler OpenAPI specifications — is now available as a pre-release (`2.0.0bN`) on PyPI.
58
+ >
59
+ > - **v1.x (this README) is the current GA release** and remains the recommended choice for production workloads.
60
+ > - **v2.x is OneAPI-only.** Legacy per-product authentication (ZIA `username`/`password`/`api_key`, ZPA `client_id`/`client_secret`, etc.) is **not** supported and will **not** be added.
61
+ > - **Limited product coverage in v2.x today:** ZIA, ZDX, and ZIdentity. Other products are still being migrated.
62
+ > - **Migrating existing v1.x code to v2.x will introduce breaking changes** — import paths, method signatures, and models all change.
63
+ > - **Install the beta** with `pip install --pre --upgrade "zscaler-sdk-python>=2.0.0b1"` (the default `pip install zscaler-sdk-python` continues to install the latest v1.x GA release).
64
+ >
65
+ > **Get started with v2.x:** [Zscaler Automation Hub – Python SDK](https://automate.zscaler.com/docs/tools/sdk-documentation/sdk-getting-started) · **Migrate from v1.x:** [`UPGRADE_GUIDE.md`](./UPGRADE_GUIDE.md)
66
+
67
+ # Official Zscaler Python SDK Overview
68
+
69
+ * [Release status](#release-status)
70
+ * [Migrating to v2.x (Beta)](#migrating-to-v2x-beta)
71
+ * [Breaking Changes & Migration Guide to Multi-Client SDK](#breaking-changes--migration-guide-to-multi-client-sdk)
72
+ * [Need help?](#need-help)
73
+ * [Getting Started](#getting-started)
74
+ - [Building the SDK](#building-the-sdk)
75
+ * [Usage guide](#usage-guide)
76
+ * [Authentication](#authentication)
77
+ * [Zscaler OneAPI New Framework](#zscaler-oneapi-new-framework)
78
+ * [Zscaler Legacy API Framework](#zscaler-legacy-api-framework)
79
+ * [Configuration reference](#configuration-reference)
80
+ * [Pagination](#pagination)
81
+ * [Client-Side Filtering with JMESPath](#client-side-filtering-with-jmespath)
82
+ * [Contributing](#contributing)
83
+
84
+ The Zscaler SDK for Python includes functionality to accelerate development via [Python](https://www.python.org/). This SDK can be
85
+ used in your server-side code to interact with the Zscaler API platform across multiple products such as:
86
+
87
+ * [ZPA API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zpa)
88
+ * [ZIA API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zia)
89
+ * [ZDX API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zdx)
90
+ * [ZCC API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zcc)
91
+ * [ZIdentity (zid)](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zid)
92
+ * [ZTW API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zcloudconnector)
93
+ * [ZTB API (Zero Trust Branch)](https://help.zscaler.com/)
94
+ * [ZWA API](https://help.zscaler.com/workflow-automation/getting-started-workflow-automation-api)
95
+ * [EASM API](https://hhttps://help.zscaler.com/easm/easm-api/api-developer-reference-guide/reference-guide)
96
+ * [Z-Insights - ZINS](https://help.zscaler.com/zscaler-analytics/getting-started) — GraphQL Analytics API
97
+ * [ZMS - Zscaler Microsegmentation](https://help.zscaler.com/legacy-apis/using-zscaler-microsegmentation-api) — GraphQL Microsegmentation API
98
+ * [Business Insights](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/bi)
99
+
100
+ This SDK is designed to support the new Zscaler API framework [OneAPI](https://automate.zscaler.com/docs/getting-started/getting-started)
101
+ via a single OAuth2 HTTP client. The SDK is also backwards compatible with the previous
102
+ Zscaler API framework, and each package is supported by an individual and robust HTTP client
103
+ designed to handle failures on different levels by performing intelligent retries.
104
+
105
+ ## Release Status
106
+
107
+ This library uses semantic versioning and updates are posted in ([release notes](/docs/guides/release-notes.md)) |
108
+
109
+ | Version | Status |
110
+ | ------- | ---------------------------------------------------------------------------- |
111
+ | 0.x | :warning: Beta Release (Retired) |
112
+ | 1.x | :heavy_check_mark: General Availability (recommended for production) |
113
+ | 2.x | :test_tube: Public Preview / Beta — OneAPI only, limited product coverage |
114
+
115
+ The latest release can always be found on the ([releases page](github-releases))
116
+
117
+ > Requires Python version 3.10 or higher.
118
+ Zscaler SDK for Python is compatible with Python 3.10, 3.11, and 3.12.
119
+
120
+ ## Migrating to v2.x (Beta)
121
+
122
+ The next major version of this SDK — `zscaler-sdk-python` **2.x** — is a complete redesign and is now available as a **public preview / beta** pre-release on PyPI. v2.x is **data-driven**: every model, request, and response is generated from the official Zscaler OpenAPI specifications, so the SDK stays in lock-step with the public API contract.
123
+
124
+ > ⚠️ **Important — please read before adopting v2.x:**
125
+ >
126
+ > - **v2.x is in public preview / beta.** APIs, models, and import paths may change before GA. Do not use v2.x for production workloads.
127
+ > - **v2.x supports OneAPI exclusively.** Legacy per-product authentication helpers (`LegacyZIAClient`, `LegacyZPAClient`, `LegacyZCCClient`, `LegacyZDXClient`, `LegacyZIdentityClient`, `LegacyZTWClient`, etc.) are **not** available in v2.x and will **not** be added. Your tenant must be on [Zidentity](https://help.zscaler.com/zidentity/what-zidentity) before you can adopt v2.x.
128
+ > - **Limited product coverage today.** The v2.x beta currently supports **ZIA, ZDX, and ZIdentity**. Other Zscaler products (ZPA, ZCC, ZTW, ZTB, ZWA, …) remain available on **v1.x** and will be migrated to v2.x progressively.
129
+ > - **Breaking changes.** Migrating existing v1.x code to v2.x will require code changes — import paths, method signatures, models, and error classes all change.
130
+
131
+ **Install the v2.x beta**
132
+
133
+ ```bash
134
+ pip install --pre --upgrade "zscaler-sdk-python>=2.0.0b1"
135
+ ```
136
+
137
+ > The default `pip install zscaler-sdk-python` continues to install the latest **v1.x GA** release. Pre-releases (`2.0.0bN`) must be requested explicitly with `--pre` or by pinning a specific beta version.
138
+
139
+ **Where to go next**
140
+
141
+ - 📖 **Full v2.x documentation, getting-started, and per-product API reference:** [Zscaler Automation Hub – Python SDK](https://automate.zscaler.com/docs/tools/sdk-documentation/sdk-getting-started)
142
+ - 🔁 **Migration guide from v1.x to v2.x:** [`UPGRADE_GUIDE.md`](./UPGRADE_GUIDE.md)
143
+ - 🔐 **OneAPI / Zidentity onboarding:** [OneAPI Getting Started](https://automate.zscaler.com/docs/getting-started/getting-started)
144
+
145
+ If your code depends on a product that is **not yet** in the v2.x beta — or if your tenant has **not** been migrated to Zidentity — continue to use the **v1.x** documentation in the rest of this README. v1.x will keep receiving bug fixes and security updates until v2.x reaches General Availability with full product parity.
146
+
147
+ ## Need help?
148
+
149
+ 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))
150
+
151
+ - Ask questions on the [Zenith Community][zenith]
152
+ - Post [issues on GitHub][github-issues] (for code errors)
153
+ - Support [customer support portal][zscaler-support]
154
+
155
+ ## Breaking Changes & Migration Guide to Multi-Client SDK
156
+
157
+ 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:
158
+
159
+ ### What's Changed
160
+
161
+ | Feature | Legacy SDK (Restfly + Box) | New SDK (OneAPI + Pythonic Dict) |
162
+ |---------------------------------|--------------------------------------------------|--------------------------------------------------|
163
+ | **Data Structure** | Used `Python-Box` objects (dot notation) | Uses native Python `dict` with `snake_case` |
164
+ | **HTTP Engine** | [Restfly](https://github.com/tdunham/restfly) | Custom HTTP executor with retries, caching, etc.|
165
+ | **Auth Model** | One set of credentials per service | Unified OAuth2 (Zidentity) with scoped access |
166
+ | **Multi-Service Support** | Separate SDKs or config per service | Unified client with `.zia`, `.zpa`, `.zcc` |
167
+ | **Pagination** | Inconsistent or manual | Built-in with `resp.has_next()` and `resp.next()` |
168
+ | **Error Handling** | Raw HTTP exceptions | Returns `(result, response, error)` tuples |
169
+ | **Models** | Custom models + `.attribute` access | Plain Python dict access: `object["field"]` |
170
+ | **Return Types** | Box-style nested objects | Pure JSON-serializable `dict` responses |
171
+
172
+ ### Legacy SDK Examples
173
+
174
+ ```py
175
+ # Old SDK (Pyzscaler / Restfly)
176
+ client = ZIAClientHelper(api_key="...", cloud="...")
177
+
178
+ users = client.users.list()
179
+ print(users[0].name) # Box-style access
180
+ ```
181
+
182
+ ### New SDK Example
183
+ ```py
184
+ from zscaler import ZscalerClient
185
+
186
+ config = {
187
+ "clientId": "...",
188
+ "clientSecret": "...",
189
+ "vanityDomain": "...",
190
+ "cloud": "beta", # (Optional)
191
+ }
192
+
193
+ with ZscalerClient(config) as client:
194
+ users, _, err = client.zia.user_management.list_users()
195
+ if err:
196
+ print("Error:", err)
197
+ else:
198
+ print(users[0]["name"]) # Pythonic dict access
199
+ ```
200
+
201
+ ### Migration Summary
202
+
203
+ If you're upgrading from a previous version:
204
+
205
+ * Refactor any `.attribute` access to dictionary access: `user["name"]` instead of `user.name`
206
+ * Update authentication to use OAuth2 via OneAPI:
207
+ Choose either:
208
+ ```py
209
+ client = ZscalerClient({
210
+ "client_id": "...",
211
+ "client_secret": "...",
212
+ "vanity_domain": "..."
213
+ })
214
+ ```
215
+
216
+ or (for JWT private key auth):
217
+ ```py
218
+ client = ZscalerClient({
219
+ "client_id": "...",
220
+ "private_key": "...",
221
+ "vanity_domain": "..."
222
+ })
223
+ ```
224
+
225
+ * If your tenant is still `NOT` migrated to Zidentity:
226
+ You can still use this SDK by instantiating the respective legacy API client directly. See section: [Zscaler Legacy API Framework](#zscaler-legacy-api-framework)
227
+ ```py
228
+ from zscaler.oneapi_client import LegacyZIAClient
229
+
230
+ def main():
231
+ with LegacyZIAClient(config) as client:
232
+ users, _, _ = client.user_management.list_users()
233
+ ...
234
+ ```
235
+
236
+ * All data returned from the SDK is pure `dict` — no Box, no attribute-style access — just native, Pythonic, serializable output.
237
+
238
+ ## Getting started
239
+
240
+ To install the Zscaler Python SDK in your project:
241
+
242
+ ```sh
243
+ pip install zscaler-sdk-python
244
+ ```
245
+
246
+ ## Building the SDK
247
+
248
+ 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:
249
+
250
+ - Clone the repo
251
+ - Install `poetry`
252
+ - Run `poetry build` from the root of the project
253
+ - Run `pip install dist/zscalerdist/zscaler_sdk_python-x.x.x.tar.gz`
254
+
255
+ ### You'll also need
256
+
257
+ * An administrator account in the Zscaler products you want to interact with.
258
+ * [OneAPI](https://automate.zscaler.com/docs/getting-started/getting-started): 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)
259
+ * Legacy Framework: If using the legacy API framework you must have API Keys credentials in the the respective Zscaler cloud products.
260
+ * For more information on getting started with Zscaler APIs visit one of the following links:
261
+
262
+ * [OneAPI](https://automate.zscaler.com/docs/getting-started/getting-started)
263
+ * [ZPA API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zpa)
264
+ * [ZIA API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zia)
265
+ * [ZDX API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zdx)
266
+ * [ZCC API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zcc)
267
+ * [ZIdentity (ZID)](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zid)
268
+ * [ZTW API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zcloudconnector)
269
+ * [ZTB API (Zero Trust Branch)](https://help.zscaler.com/)
270
+ * [ZWA API](https://help.zscaler.com/workflow-automation/getting-started-workflow-automation-api)
271
+ * [EASM API](https://hhttps://help.zscaler.com/easm/easm-api/api-developer-reference-guide/reference-guide)
272
+ * [Z-Insights - ZINS](https://help.zscaler.com/zscaler-analytics/getting-started) — GraphQL Analytics API
273
+ * [ZMS - Zscaler Microsegmentation](https://help.zscaler.com/legacy-apis/using-zscaler-microsegmentation-api) — GraphQL Microsegmentation API
274
+ * [Zscaler AI Guard API](https://help.zscaler.com/ai-guard)
275
+ * [Business Insights](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/bi)
276
+
277
+ ## Usage guide
278
+
279
+ These examples will help you understand how to use this library.
280
+
281
+ 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.
282
+
283
+ **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.
284
+
285
+ ## Authentication
286
+
287
+ 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://automate.zscaler.com/docs/getting-started/getting-started) framework and the legacy API platform.
288
+
289
+ 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)
290
+
291
+ :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.
292
+
293
+ ## Zscaler OneAPI New Framework
294
+
295
+ As of the publication of SDK version => 1.7.x, OneAPI is available for programmatic interaction with the following products:
296
+
297
+ * [ZPA API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zpa)
298
+ * [ZIA API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zia)
299
+ * [ZDX API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zdx)
300
+ * [ZCC API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zcc)
301
+ * [ZIdentity (zid)](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zid)
302
+ * [ZTW API](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/zcloudconnector)
303
+ * [ZTB API (Zero Trust Branch)](https://help.zscaler.com/)
304
+ * [ZWA API](https://help.zscaler.com/workflow-automation/getting-started-workflow-automation-api)
305
+ * [EASM API](https://hhttps://help.zscaler.com/easm/easm-api/api-developer-reference-guide/reference-guide)
306
+ * [Z-Insights - ZINS](https://help.zscaler.com/zscaler-analytics/getting-started) — GraphQL Analytics API
307
+ * [ZMS - Zscaler Microsegmentation](https://help.zscaler.com/legacy-apis/using-zscaler-microsegmentation-api) — GraphQL Microsegmentation API
308
+ * [Zscaler AI Guard API](https://help.zscaler.com/ai-guard)
309
+ * [Business Insights](https://automate.zscaler.com/docs/docs/api-reference-and-guides/api-reference/bi)
310
+
311
+ **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.
312
+
313
+ ### OneAPI (API Client Scope)
314
+
315
+ OneAPI Resources are automatically created within the ZIdentity Admin UI based on the RBAC Roles
316
+ applicable to APIs within the various products. For example, in ZIA, navigate to `Administration -> Role Management` and select `Add API Role`.
317
+
318
+ Once this role has been saved, return to the ZIdentity Admin UI and from the Integration menu
319
+ select API Resources. Click the `View` icon to the right of Zscaler APIs and under the ZIA
320
+ dropdown you will see the newly created Role. In the event a newly created role is not seen in the
321
+ ZIdentity Admin UI a `Sync Now` button is provided in the API Resources menu which will initiate an
322
+ on-demand sync of newly created roles.
323
+
324
+ **WARNING**: Attention Government customers. OneAPI and Zidentity is not currently supported for the following ZIA clouds: `zscalergov` and `zscalerten` or ZPA `GOV`, and `GOVUS`.
325
+
326
+ ### Default Environment Variables
327
+
328
+ 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.
329
+
330
+ | Argument | Description | Environment variable |
331
+ |--------------|-------------|-------------------|
332
+ | `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
333
+ | `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
334
+ | `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
335
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
336
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$api.<cloud_name>.zsapi.net`.| `ZSCALER_CLOUD` |
337
+ | `partnerId` | _(String)_ Optional partner ID. When provided, the SDK automatically includes the `x-partner-id` header in all API requests.| `ZSCALER_PARTNER_ID` |
338
+ | `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
339
+ | `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
340
+
341
+ ### Alternative OneAPI Cloud Environments
342
+
343
+ 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:
344
+
345
+ | Argument | Description | Environment variable |
346
+ |--------------|-------------|-------------------|
347
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
348
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$api.<cloud_name>.zsapi.net`.| `ZSCALER_CLOUD` |
349
+
350
+ For example: Authenticating to Zscaler Beta environment:
351
+
352
+ ```sh
353
+ export ZSCALER_VANITY_DOMAIN="acme"
354
+ export ZSCALER_CLOUD="beta"
355
+ ```
356
+
357
+ **Note 1**: The attribute `cloud` or environment variable `ZSCALER_CLOUD` is optional and only required when authenticating to an alternative Zidentity cloud environment.
358
+
359
+ **Note 2**: By default this SDK will send the authentication request and subsequent API calls to the default base URL.
360
+
361
+ **Note 3**: Authentication to Zscaler Sandbox requires the attribute/parameter `sandboxCloud`.The following cloud environments are supported:
362
+
363
+ * `zscaler`
364
+ * `zscalerone`
365
+ * `zscalertwo`
366
+ * `zscalerthree`
367
+ * `zscloud`
368
+ * `zscalerbeta`
369
+ * `zscalergov`
370
+ * `zscalerten`
371
+ * `zspreview`
372
+
373
+ ### Authenticating to Zscaler Private Access (ZPA)
374
+
375
+ The authentication to Zscaler Private Access (ZPA) via the OneAPI framework, requires the extra attribute called `customerId` and optionally the attributes `microtenantId` and `partnerId`.
376
+
377
+ | Argument | Description | Environment variable |
378
+ |--------------|-------------|-------------------|
379
+ | `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
380
+ | `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
381
+ | `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
382
+ | `customerId` | _(String)_ The ZPA tenant ID found under Configuration & Control > Public API > API Keys menu in the ZPA console.| `ZPA_CUSTOMER_ID` |
383
+ | `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` |
384
+ | `partnerId` | _(String)_ Optional partner ID. When provided, the SDK automatically includes the `x-partner-id` header in all API requests.| `ZSCALER_PARTNER_ID` |
385
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
386
+ | `cloud`
387
+
388
+ ### Initialize OneAPI OAuth 2.0 Client
389
+
390
+ #### OneAPI Client ID and Client Secret Authentication
391
+
392
+ Construct a client instance by passing your Zidentity `clientId`, `clientSecret` and `vanityDomain`:
393
+
394
+ ```py
395
+ from zscaler import ZscalerClient
396
+
397
+ config = {
398
+ "clientId": '{yourClientId}',
399
+ "clientSecret": '{yourClientSecret}',
400
+ "vanityDomain": '{yourvanityDomain}',
401
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
402
+ "customerId": "", # Optional parameter. Required only when using ZPA
403
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
404
+ "partnerId": "", # Optional parameter. When provided, automatically includes x-partner-id header in all requests
405
+ "logging": {"enabled": False, "verbose": False},
406
+ }
407
+
408
+ def main():
409
+ with ZscalerClient(config) as client:
410
+ idp_id = "72058304855015574"
411
+ query_params = {'page': '1', 'page_size': '100'}
412
+ groups, resp, err = client.zpa.scim_groups.list_scim_groups(idp_id=idp_id, query_params=query_params)
413
+ if err:
414
+ print(f"Error listing SCIM groups: {err}")
415
+ return
416
+ if groups:
417
+ print(f"Processing {len(groups)} groups:")
418
+ for group in groups:
419
+ print(group)
420
+
421
+ try:
422
+ resp.next()
423
+ except StopIteration:
424
+ print("No more groups to retrieve.")
425
+
426
+ if __name__ == "__main__":
427
+ main()
428
+ ```
429
+
430
+ #### OneAPI Client ID and Private Key Authentication
431
+
432
+ ```py
433
+ from zscaler import ZscalerClient
434
+
435
+ config = {
436
+ "clientId": '{yourClientId}',
437
+ "privateKey": '{yourPrivateKey}',
438
+ "vanityDomain": '{yourvanityDomain}',
439
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
440
+ "customerId": "", # Optional parameter. Required only when using ZPA
441
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
442
+ "partnerId": "", # Optional parameter. When provided, automatically includes x-partner-id header in all requests
443
+ "logging": {"enabled": False, "verbose": False},
444
+ }
445
+
446
+ def main():
447
+ with ZscalerClient(config) as client:
448
+ idp_id = "72058304855015574"
449
+ query_params = {'page': '1', 'page_size': '100'}
450
+ groups, resp, err = client.zpa.scim_groups.list_scim_groups(idp_id=idp_id, query_params=query_params)
451
+ if err:
452
+ print(f"Error listing SCIM groups: {err}")
453
+ return
454
+ if groups:
455
+ print(f"Processing {len(groups)} groups:")
456
+ for group in groups:
457
+ print(group)
458
+
459
+ try:
460
+ resp.next()
461
+ except StopIteration:
462
+ print("No more groups to retrieve.")
463
+
464
+ if __name__ == "__main__":
465
+ main()
466
+ ```
467
+
468
+ Note, that `privateKey` can be passed in JWK format or in PEM format, i.e. (examples generated with https://mkjwk.org):
469
+
470
+ > 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.
471
+
472
+ > **NOTE**: THIS IS NOT A PRODUCTION KEY AND IS DISPLAYED FOR EXAMPLE PURPOSES ONLY
473
+
474
+ ![JWK Example](https://raw.githubusercontent.com/zscaler/zscaler-sdk-python/refs/heads/master/docsrc/jwk.svg)
475
+
476
+ or
477
+
478
+ > **NOTE**: THIS IS NOT A PRODUCTION KEY AND IS DISPLAYED FOR EXAMPLE PURPOSES ONLY
479
+
480
+ ```
481
+ -----BEGIN PRIVATE KEY-----
482
+ # Example private key (not a real key)
483
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCv3krdYg3z7h0H
484
+ 60QoePJMghllQxsfPxp3mgFfYEaIbF88Z8dvPZEfhAtP19/Mv62ASjwgqzQzKHRV
485
+ -----END PRIVATE KEY-----
486
+ ```
487
+
488
+ ### Get and set custom headers
489
+
490
+ 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`.
491
+
492
+ ```py
493
+ from zscaler import ZscalerClient
494
+
495
+ def main():
496
+ with ZscalerClient(config) as client:
497
+ client.set_custom_headers({'Custom-Header': 'custom value'})
498
+ groups, resp, err = client.zpa.segment_groups.list_groups()
499
+ for group in groups:
500
+ print(group.name, group.description)
501
+
502
+ # clear all custom headers
503
+ client.clear_custom_headers()
504
+
505
+ # output should be: {}
506
+ print(client.get_custom_headers())
507
+ ```
508
+
509
+ Note, that custom headers will be overwritten with default headers with the same name.
510
+ This doesn't allow breaking the client. Get default headers:
511
+
512
+ ### Automatic x-partner-id Header Injection
513
+
514
+ 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.
515
+
516
+ **How it works:**
517
+ - 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
518
+ - If `partnerId` is not provided, the header is not included
519
+ - No additional code is required - the header injection is handled automatically by the SDK
520
+
521
+ **Example:**
522
+
523
+ ```py
524
+ from zscaler import ZscalerClient
525
+
526
+ config = {
527
+ "clientId": '{yourClientId}',
528
+ "clientSecret": '{yourClientSecret}',
529
+ "vanityDomain": '{yourvanityDomain}',
530
+ "partnerId": "542585sdsdw", # Automatically adds x-partner-id header to all requests
531
+ "logging": {"enabled": False, "verbose": False},
532
+ }
533
+
534
+ def main():
535
+ with ZscalerClient(config) as client:
536
+ # All API requests will automatically include: x-partner-id: 542585sdsdw
537
+ groups, resp, err = client.zpa.segment_groups.list_groups()
538
+ # ... rest of your code
539
+ ```
540
+
541
+ **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.
542
+
543
+ ### ZIA and ZTW Context Manager
544
+
545
+ 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.
546
+
547
+ #### How Context Manager Works
548
+
549
+ When you use the `with` statement with a Zscaler client, the following happens automatically:
550
+
551
+ 1. **Authentication**: The client authenticates when entering the context
552
+ 2. **Session Management**: A session is established and maintained throughout the context
553
+ 3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
554
+
555
+ #### Implicit Activation Process
556
+
557
+ The context manager implements an "implicit activation" approach where:
558
+
559
+ - **All changes are final**: Configuration changes are automatically activated when the context exits
560
+ - **No manual activation required**: You don't need to remember to call activation endpoints
561
+ - **Deterministic behavior**: You always know that exiting the context will activate changes
562
+ - **Automation-friendly**: Perfect for scripts and automation scenarios
563
+
564
+ #### Example Usage
565
+
566
+ ```py
567
+ from zscaler import ZscalerClient
568
+
569
+ config = {
570
+ "clientId": '{yourClientId}',
571
+ "clientSecret": '{yourClientSecret}',
572
+ "vanityDomain": '{yourvanityDomain}',
573
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
574
+ "customerId": "", # Optional parameter. Required only when using ZPA
575
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
576
+ "partnerId": "", # Optional parameter. When provided, automatically includes x-partner-id header in all requests
577
+ "logging": {"enabled": False, "verbose": False},
578
+ }
579
+
580
+ def main():
581
+ with ZscalerClient(config) as client:
582
+ # Make ZIA configuration changes
583
+ added_role, response, error = client.zia.admin_roles.add_role(
584
+ name="New API Role",
585
+ description="Role created via API",
586
+ feature_permissions={"ZIA_ADMIN_ROLE": "READ"}
587
+ )
588
+ if error:
589
+ print(f"Error adding role: {error}")
590
+ return
591
+
592
+ # Make ZTW configuration changes
593
+ added_group, response, error = client.ztw.ip_destination_groups.add_group(
594
+ name="New IP Group",
595
+ description="IP group created via API"
596
+ )
597
+ if error:
598
+ print(f"Error adding IP group: {error}")
599
+ return
600
+
601
+ print("All changes made successfully")
602
+
603
+ # Context manager automatically deauthenticates here
604
+ # All staged changes are activated automatically for both ZIA and ZTW
605
+ print("Context exited - all changes have been activated")
606
+
607
+ if __name__ == "__main__":
608
+ main()
609
+ ```
610
+
611
+ #### Benefits
612
+
613
+ - **Automatic cleanup**: No need to manually deauthenticate
614
+ - **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
615
+ - **Staged configuration activation**: All changes are activated when the context exits
616
+ - **Simplified code**: No need to remember activation steps
617
+ - **Multi-service support**: Works seamlessly with both ZIA and ZTW services
618
+
619
+ ## Zscaler OneAPI Rate Limiting
620
+
621
+ 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.
622
+
623
+ ### Built-In Retry
624
+
625
+ 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.
626
+
627
+ 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:
628
+
629
+ * [ZCC Rate Limiting][rate-limiting-zcc] for rate limiting requirements.
630
+ * [ZIA Rate Limiting][rate-limiting-zia] for rate limiting requirements.
631
+ * [ZPA Rate Limiting][rate-limiting-zpa] for rate limiting requirements.
632
+
633
+ ## Pagination
634
+
635
+ The pagination system in this SDK is unified across `ZCC`, `ZTW`, `ZDX`, `ZIA`, `ZPA`, `ZWA`
636
+ and is applied transparently whether you're using the Legacy API Client or the new OneAPI OAuth2 Client.
637
+
638
+ ✅ This means no code changes are needed when transitioning from the legacy API framework to OneAPI framework.
639
+
640
+ 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:
641
+
642
+ ```py
643
+ items, response, error = client.zia.user_management.list_groups()
644
+ ```
645
+
646
+ You can then use the `response.has_next()` and `response.next()` methods to retrieve subsequent pages.
647
+
648
+ ### Basic Pagination Example
649
+
650
+ ```py
651
+ query_parameters = {'page_size': 100}
652
+ groups, resp, err = client.zia.user_management.list_groups(query_parameters)
653
+
654
+ while resp.has_next():
655
+ more_groups, resp, err = resp.next() # Unpack all 3 return values
656
+ if err:
657
+ break
658
+ if more_groups:
659
+ groups.extend(more_groups)
660
+ ```
661
+
662
+ ### ZPA Searching and Filtering
663
+
664
+ 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.
665
+
666
+ #### Simple Name Search (Automatic Conversion)
667
+
668
+ 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:
669
+
670
+ ```py
671
+ # Simple string search - automatically converted to name+EQ+CDE Segment Group
672
+ query_parameters = {'search': 'CDE Segment Group'}
673
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
674
+ ```
675
+
676
+ #### Advanced Filtering (Explicit Format)
677
+
678
+ To search by other fields or use different operators, you must provide the complete filter format: `fieldName+operator+fieldValue`. Common operators include:
679
+
680
+ - `EQ` - Equals
681
+ - `NE` - Not equals
682
+ - `GT` - Greater than
683
+ - `LT` - Less than
684
+ - `GE` - Greater than or equal
685
+ - `LE` - Less than or equal
686
+ - `CONTAINS` - Contains substring
687
+ - `STARTSWITH` - Starts with
688
+ - `ENDSWITH` - Ends with
689
+
690
+ **Examples:**
691
+
692
+ ```py
693
+ # Search by enabled status
694
+ query_parameters = {'search': 'enabled+EQ+true'}
695
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
696
+
697
+ # Search by description with CONTAINS operator
698
+ query_parameters = {'search': 'description+CONTAINS+test'}
699
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
700
+
701
+ # Search by name with STARTSWITH operator
702
+ query_parameters = {'search': 'name+STARTSWITH+CDE'}
703
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
704
+ ```
705
+
706
+ **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.
707
+
708
+ #### Combining Search with Pagination
709
+
710
+ You can combine search filters with pagination parameters:
711
+
712
+ ```py
713
+ query_parameters = {
714
+ 'search': 'name+EQ+CDE Segment Group',
715
+ 'page': 1,
716
+ 'pagesize': 20
717
+ }
718
+ groups, resp, err = client.zpa.segment_groups.list_groups(query_parameters)
719
+
720
+ # Pagination works seamlessly with filtered searches
721
+ while resp.has_next():
722
+ more_groups, resp, err = resp.next()
723
+ if err:
724
+ break
725
+ if more_groups:
726
+ groups.extend(more_groups)
727
+ ```
728
+
729
+ ### Full Example with Error Handling
730
+ ```py
731
+ def main():
732
+ with ZscalerClient(config) as client:
733
+ query_parameters = {}
734
+ groups, resp, err = client.zia.user_management.list_groups(query_parameters)
735
+
736
+ if err:
737
+ print(f"Error: {err}")
738
+ return
739
+
740
+ print(f"Processing {len(groups)} groups:")
741
+ for group in groups:
742
+ print(group)
743
+
744
+ while resp.has_next():
745
+ next_page, resp, err = resp.next() # Unpack all 3 return values
746
+ if err:
747
+ print(f"Error fetching next page: {err}")
748
+ break
749
+ if next_page:
750
+ for group in next_page:
751
+ print(group)
752
+
753
+ try:
754
+ resp.next() # Will raise StopIteration if no more data
755
+ except StopIteration:
756
+ print("✅ No more groups to retrieve.")
757
+
758
+ if __name__ == "__main__":
759
+ main()
760
+ ```
761
+
762
+ ### Pagination Limits and Controls
763
+
764
+ Each Zscaler service has its own pagination requirements and limits. The SDK automatically respects these API defaults when no `page_size` is provided:
765
+
766
+ | Service | API Default Page Size | Max Page Size | Pagination Parameters |
767
+ |---------|-----------------------|---------------|-------------------------------------------------|
768
+ | ZCC | Varies by endpoint | Varies | Uses `page`, `pageSize` |
769
+ | ZDX | 10 | Varies | Uses `limit` + `offset` (cursor-based) |
770
+ | ZIA | 100 | 1000 | Uses `page`, `pageSize` |
771
+ | ZPA | 20 | 500 | Uses `page`, `pagesize` |
772
+ | ZTW | 100 | Varies | Uses `page`, `pageSize` |
773
+ | ZWA | Varies by endpoint | Varies | Uses `page`, `pageSize` |
774
+
775
+ **Important Notes:**
776
+ - ✅ The SDK automatically uses each API's default page size when no `page_size` is specified
777
+ - ✅ Always use `snake_case` for parameter names (e.g., `page_size`). The SDK handles conversion internally
778
+ - ✅ Pagination stops automatically when fewer results than the page size are returned
779
+
780
+
781
+ You can control how many total items or pages the SDK will fetch even if more data is available.
782
+
783
+ ### Internal Pagination Handling
784
+
785
+ The `ZscalerAPIResponse` object returned as resp handles:
786
+
787
+ * Tracking the current page
788
+ * Automatically applying proper pagination parameters per service
789
+ * Mapping pagination fields like page, pagesize, limit, offset, next_offset, etc.
790
+ * Fallback handling when the API doesn't indicate the total count
791
+
792
+ You don’t need to worry about API quirks—just use `resp.has_next()` and `resp.next()` safely.
793
+
794
+ ⚠️ Note on StopIteration
795
+ The SDK raises a StopIteration if `next()` is called and no more pages are available:
796
+
797
+ ```py
798
+ try:
799
+ resp.next()
800
+ except StopIteration:
801
+ print("All data fetched.")
802
+ ```
803
+
804
+ ### Client-Side Filtering with JMESPath
805
+
806
+ The SDK supports client-side filtering and projection of API results using [JMESPath](https://jmespath.org/) expressions. After any list call, you can use `resp.search(expression)` to filter, project, or reshape the response data without making additional API calls.
807
+
808
+ JMESPath is a query language for JSON that lets you declaratively extract and transform elements from JSON documents. The `.search()` method applies a JMESPath expression to the current page of results and returns a list of matching items.
809
+
810
+ #### Basic Filtering
811
+
812
+ ```py
813
+ # Fetch users and filter admin users client-side
814
+ users, resp, err = client.zia.user_management.list_users()
815
+ admin_users = resp.search("[?adminUser==`true`]")
816
+ print(f"Found {len(admin_users)} admin users")
817
+ ```
818
+
819
+ #### Projection (Selecting Specific Fields)
820
+
821
+ ```py
822
+ # Extract only names and emails
823
+ users, resp, err = client.zia.user_management.list_users()
824
+ names_emails = resp.search("[*].{name: name, email: email}")
825
+ for item in names_emails:
826
+ print(f"{item['name']}: {item['email']}")
827
+ ```
828
+
829
+ #### Combined Filtering and Projection
830
+
831
+ ```py
832
+ # Filter by role and project specific fields
833
+ users, resp, err = client.zia.user_management.list_users()
834
+ result = resp.search("[?adminUser==`true`].{name: name, id: id}")
835
+ ```
836
+
837
+ #### Nested Field Filtering
838
+
839
+ ```py
840
+ # Filter users by department name
841
+ users, resp, err = client.zia.user_management.list_users()
842
+ eng_users = resp.search("[?department.name=='Engineering'].name")
843
+ ```
844
+
845
+ #### Using with Paginated Results
846
+
847
+ `.search()` operates on the current page. To filter across all pages, apply it to each page as you paginate:
848
+
849
+ ```py
850
+ users, resp, err = client.zia.user_management.list_users(
851
+ query_params={"page_size": 1000}
852
+ )
853
+ all_admins = resp.search("[?adminUser==`true`]")
854
+
855
+ while resp.has_next():
856
+ next_page, resp, err = resp.next()
857
+ if err:
858
+ break
859
+ if next_page:
860
+ all_admins.extend(resp.search("[?adminUser==`true`]"))
861
+
862
+ print(f"Total admins across all pages: {len(all_admins)}")
863
+ ```
864
+
865
+ #### Using with Wrapped Responses
866
+
867
+ For APIs that wrap results in a named key (e.g., ZDX `items`, ZBI `reports`), reference the key in the expression:
868
+
869
+ ```py
870
+ # ZDX software inventory
871
+ items, resp, err = client.zdx.software.list_inventory()
872
+ zscaler_sw = resp.search(
873
+ "items[?vendor=='Zscaler'].{name: software_name, devices: device_total}"
874
+ )
875
+
876
+ # ZBI reports
877
+ reports, resp, err = client.zbi.reports.list_reports(report_type="APPLICATION")
878
+ completed = resp.search("reports[?status=='COMPLETED']")
879
+ ```
880
+
881
+ #### JMESPath Built-in Functions
882
+
883
+ JMESPath supports built-in functions like `length()`, `sort_by()`, `max_by()`, and more:
884
+
885
+ ```py
886
+ # Users with at least one group assigned
887
+ users, resp, err = client.zia.user_management.list_users()
888
+ with_groups = resp.search("[?length(groups || `[]`) > `0`]")
889
+ ```
890
+
891
+ For the full JMESPath specification and function reference, see [jmespath.org](https://jmespath.org/).
892
+
893
+ ## Logging
894
+
895
+ The Zscaler SDK Python, provides robust logging for debug purposes.
896
+ Logs are disabled by default and should be enabled explicitly via client configuration or via a [configuration file](#configuration-reference):
897
+
898
+ ```py
899
+ from zscaler import ZscalerClient
900
+
901
+ config = {"logging": {"enabled": True}}
902
+ client = ZscalerClient(config)
903
+ ```
904
+ You can also enable debug logging via the following environment variables:
905
+ * `ZSCALER_SDK_LOG` - Turn on logging
906
+ * `ZSCALER_SDK_VERBOSE` - Turn on logging in verbose mode
907
+
908
+ ```sh
909
+ export ZSCALER_SDK_LOG=true
910
+ export ZSCALER_SDK_VERBOSE=true
911
+ ```
912
+
913
+ 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`.
914
+
915
+ **NOTE**: DO NOT SET DEBUG LEVEL IN PRODUCTION!
916
+
917
+ ```py
918
+ from zscaler import ZscalerClient
919
+
920
+ config = {
921
+ "clientId": '{yourClientId}',
922
+ "clientSecret": '{yourClientSecret}',
923
+ "vanityDomain": '{yourvanityDomain}',
924
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
925
+ "customerId": "", # Optional parameter. Required only when using ZPA
926
+ "microtenantId": "", # Optional parameter. Required only when using ZPA with Microtenant
927
+ "logging": {"enabled": True, "verbose": True},
928
+ }
929
+
930
+ def main():
931
+ with ZscalerClient(config) as client:
932
+ groups, resp, err = client.zpa.segment_groups.list_groups()
933
+ for group in groups:
934
+ print(group.name, group.description)
935
+ if __name__ == "__main__":
936
+ main()
937
+ ```
938
+
939
+ 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.
940
+
941
+ What it being logged? `requests`, `responses`, `http errors`, `caching responses`.
942
+
943
+ ### Using Your Own Logger (Optional)
944
+ 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:
945
+
946
+ ```py
947
+ import logging
948
+
949
+ my_logger = logging.getLogger("my_app_logger")
950
+ my_logger.setLevel(logging.INFO)
951
+ handler = logging.StreamHandler()
952
+ handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
953
+ my_logger.addHandler(handler)
954
+
955
+ my_logger.info("This is your app-level log, independent from the SDK.")
956
+ ```
957
+
958
+ To control SDK logging separately, use:
959
+
960
+ ```py
961
+ logging.getLogger("zscaler-sdk-python").setLevel(logging.WARNING) # or .ERROR to silence SDK logs
962
+ ```
963
+
964
+ The SDK will never globally disable logging or interfere with your existing logging configuration.
965
+
966
+ ## Configuration reference
967
+
968
+ This library looks for configuration in the following sources:
969
+
970
+ 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)
971
+ 1. A `zscaler.yaml` file in the application or project's root directory. See a sample [YAML Configuration](#yaml-configuration)
972
+ 2. [Environment variables](#environment-variables)
973
+ 3. Configuration explicitly passed to the constructor (see the example in [Getting started](#getting-started))
974
+
975
+ > Only ONE source needs to be provided!
976
+
977
+ 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.
978
+
979
+ **NOTE:** This option is only supported for OneAPI Zidentity credentials at the moment.
980
+
981
+ ### YAML configuration
982
+
983
+ When you use an API Token instead of OAuth 2.0 the full YAML configuration looks like:
984
+
985
+ ```yaml
986
+ zscaler:
987
+ client:
988
+ clientId: { yourClientId }
989
+ clientSecret: { yourClientSecret }
990
+ vanityDomain: { yourVanityDomain }
991
+ customerId: { yourCustomerId}
992
+ proxy:
993
+ port: { proxy_port }
994
+ host: { proxy_host }
995
+ username: { proxy_username }
996
+ password: { proxy_password }
997
+ logging:
998
+ enabled: true
999
+ verbose: true
1000
+ ```
1001
+
1002
+ > **NOTE**: THIS IS NOT A PRODUCTION KEY AND IS DISPLAYED FOR EXAMPLE PURPOSES ONLY
1003
+
1004
+ When you use OAuth 2.0 the full YAML configuration looks like:
1005
+
1006
+ ```yaml
1007
+ zscaler:
1008
+ client:
1009
+ clientId: "YOUR_CLIENT_ID"
1010
+ privateKey: |
1011
+ -----BEGIN RSA PRIVATE KEY-----
1012
+ MIIEogIBAAKCAQEAl4F5CrP6Wu2kKwH1Z+CNBdo0iteHhVRIXeHdeoqIB1iXvuv4
1013
+ THQdM5PIlot6XmeV1KUKuzw2ewDeb5zcasA4QHPcSVh2+KzbttPQ+RUXCUAr5t+r
1014
+ 0r6gBc5Dy1IPjCFsqsPJXFwqe3RzUb...
1015
+ -----END RSA PRIVATE KEY-----
1016
+ vanityDomain: { yourVanityDomain }
1017
+ customerId: { yourCustomerId}
1018
+ proxy:
1019
+ port: { proxy_port }
1020
+ host: { proxy_host }
1021
+ username: { proxy_username }
1022
+ password: { proxy_password }
1023
+ logging:
1024
+ enabled: true
1025
+ verbose: true
1026
+ ```
1027
+
1028
+ ### Environment variables
1029
+
1030
+ 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:
1031
+
1032
+ | Argument | Description | Environment variable |
1033
+ |--------------|-------------|-------------------|
1034
+ | `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
1035
+ | `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
1036
+ | `privateKey` | _(String)_ A string Private key value.| `ZSCALER_CLIENT_PRIVATEKEY` |
1037
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
1038
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$api.<cloud_name>.zsapi.net`.| `ZSCALER_CLOUD` |
1039
+ | `userAgent` | _(String)_ Append additional information to the HTTP User-Agent | `ZSCALER_CLIENT_USERAGENT` |
1040
+ | `cache.enabled` | _(String)_ Use request memory cache | `ZSCALER_CLIENT_CACHE_ENABLED` |
1041
+ | `cache.defaultTti` | _(String)_ Cache clean up interval in seconds | `ZSCALER_CLIENT_CACHE_DEFAULTTTI` |
1042
+ | `cache.defaultTtl` | _(String)_ Cache time to live in seconds | `ZSCALER_CLIENT_CACHE_DEFAULTTTL` |
1043
+ | `proxyPort` | _(String)_ HTTP proxy port | `ZSCALER_CLIENT_PROXY_PORT` |
1044
+ | `proxyHost` | _(String)_ HTTP proxy host | `ZSCALER_CLIENT_PROXY_HOST` |
1045
+ | `proxyUsername` | _(String)_ HTTP proxy username | `ZSCALER_CLIENT_PROXY_USERNAME` |
1046
+ | `proxyPassword` | _(String)_ HTTP proxy password | `ZSCALER_CLIENT_PROXY_PASSWORD` |
1047
+ | `disableHttpsCheck` | _(String)_ Disable SSL checks | `ZSCALER_TESTING_TESTINGDISABLEHTTPSCHECK` |
1048
+ | `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
1049
+ | `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
1050
+
1051
+ ### Zscaler ZIdentity API (zid)
1052
+
1053
+ This SDK supports programmatic integration with the Zscaler ZIdentity API service.
1054
+
1055
+ The authentication to Zscaler ZIdentity service via the OneAPI framework, requires uses the API client `ZscalerClient`
1056
+
1057
+ Access via `client.zid` (primary) or `client.zidentity` (backward-compatible alias).
1058
+
1059
+ #### ZIdentity Pagination
1060
+
1061
+ ZIdentity API supports pagination with a maximum page size of 100 records per request. The SDK automatically handles pagination for ZIdentity endpoints.
1062
+
1063
+ **Key Features:**
1064
+ - **Maximum Page Size**: 100 records per page (enforced by API)
1065
+ - **Automatic Pagination**: SDK handles pagination transparently
1066
+ - **Response Format**: Returns data in `records` field with pagination metadata
1067
+
1068
+ **Example Usage:**
1069
+
1070
+ ```py
1071
+ from zscaler import ZscalerClient
1072
+
1073
+ config = {
1074
+ "clientId": '{yourClientId}',
1075
+ "clientSecret": '{yourClientSecret}',
1076
+ "vanityDomain": '{yourvanityDomain}',
1077
+ "cloud": "beta",
1078
+ }
1079
+
1080
+ def main():
1081
+ with ZscalerClient(config) as client:
1082
+ # Request 300 groups (will automatically fetch 3 pages)
1083
+ groups_response, response, error = client.zid.groups.list_groups(
1084
+ query_params={'page_size': 300}
1085
+ )
1086
+
1087
+ if error:
1088
+ print(f"Error listing groups: {error}")
1089
+ return
1090
+
1091
+ print(f"Total groups in response: {len(groups_response.records)}")
1092
+ print(f"Total available: {groups_response.results_total}")
1093
+ print(f"Page offset: {groups_response.page_offset}")
1094
+ print(f"Page size: {groups_response.page_size}")
1095
+
1096
+ # Access individual groups
1097
+ for group in groups_response.records:
1098
+ print(f"Group: {group.name} (ID: {group.id})")
1099
+
1100
+ # Manual pagination using response object
1101
+ while response.has_next():
1102
+ next_results, error = response.next()
1103
+ if error:
1104
+ print(f"Error fetching next page: {error}")
1105
+ break
1106
+
1107
+ print(f"Next page: {len(next_results)} groups")
1108
+ for group in next_results:
1109
+ print(f"Group: {group['name']} (ID: {group['id']})")
1110
+
1111
+ if __name__ == "__main__":
1112
+ main()
1113
+ ```
1114
+
1115
+ **Pagination Metadata:**
1116
+ - `results_total`: Total number of records available
1117
+ - `page_offset`: Current page offset
1118
+ - `page_size`: Number of records per page (max 100)
1119
+ - `next_link`: URL for next page (if available)
1120
+ - `prev_link`: URL for previous page (if available)
1121
+
1122
+ | Argument | Description | Environment variable |
1123
+ |--------------|-------------|-------------------|
1124
+ | `clientId` | _(String)_ Zscaler API Client ID, used with `clientSecret` or `PrivateKey` OAuth auth mode.| `ZSCALER_CLIENT_ID` |
1125
+ | `clientSecret` | _(String)_ A string that contains the password for the API admin.| `ZSCALER_CLIENT_SECRET` |
1126
+ | `privateKey` | _(String)_ A string Private key value.| `ZSCALER_PRIVATE_KEY` |
1127
+ | `vanityDomain` | _(String)_ Refers to the domain name used by your organization `https://<vanity_domain>.zslogin.net/oauth2/v1/token` | `ZSCALER_VANITY_DOMAIN` |
1128
+ | `cloud`
1129
+
1130
+ ### Initialize OneAPI OAuth 2.0 Client
1131
+
1132
+ #### ZIdentity OneAPI Client ID and Client Secret Authentication
1133
+
1134
+ Construct a client instance by passing your ZIdentity `clientId`, `clientSecret` and `vanityDomain`:
1135
+
1136
+ ```py
1137
+ from zscaler import ZscalerClient
1138
+
1139
+ config = {
1140
+ "clientId": '{yourClientId}',
1141
+ "clientSecret": '{yourClientSecret}',
1142
+ "vanityDomain": '{yourvanityDomain}',
1143
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
1144
+ "logging": {"enabled": False, "verbose": False},
1145
+ }
1146
+
1147
+ def main():
1148
+ with ZscalerClient(config) as client:
1149
+ users, _, error = client.zid.groups.list_groups()
1150
+ if error:
1151
+ print(f"Error listing users: {error}")
1152
+ return
1153
+
1154
+ print(f"Total users found: {len(users)}")
1155
+
1156
+ if __name__ == "__main__":
1157
+ main()
1158
+ ```
1159
+
1160
+ #### ZIdentity OneAPI Client ID and Private Key Authentication
1161
+
1162
+ ```py
1163
+ from zscaler import ZscalerClient
1164
+
1165
+ config = {
1166
+ "clientId": '{yourClientId}',
1167
+ "privateKey": '{yourPrivateKey}',
1168
+ "vanityDomain": '{yourvanityDomain}',
1169
+ "cloud": "beta", # Optional when authenticating to an alternative cloud environment
1170
+ "logging": {"enabled": False, "verbose": False},
1171
+ }
1172
+
1173
+ def main():
1174
+ with ZscalerClient(config) as client:
1175
+ users, _, error = client.zid.groups.list_groups()
1176
+ if error:
1177
+ print(f"Error listing users: {error}")
1178
+ return
1179
+
1180
+ print(f"Total users found: {len(users)}")
1181
+
1182
+ if __name__ == "__main__":
1183
+ main()
1184
+ ```
1185
+
1186
+ ### Zscaler Sandbox Authentication
1187
+
1188
+ To authenticate to the Zscaler Sandbox service you must authenticate by instantiating the `ZscalerClient`.
1189
+
1190
+ Authentication to Zscaler Sandbox requires the attribute/parameter `sandboxCloud`. The following cloud environments are supported:
1191
+
1192
+ * `zscaler`
1193
+ * `zscalerone`
1194
+ * `zscalertwo`
1195
+ * `zscalerthree`
1196
+ * `zscloud`
1197
+ * `zscalerbeta`
1198
+ * `zscalergov`
1199
+ * `zscalerten`
1200
+ * `zspreview`
1201
+
1202
+ ### Environment variables
1203
+
1204
+ You can provide credentials via the `ZSCALER_SANDBOX_TOKEN`, `ZSCALER_SANDBOX_CLOUD` environment variables, representing your Zscaler Sandbox authentication paraemters respectively `sandboxToken`, `sandboxCloud`
1205
+
1206
+ | Argument | Description | Environment variable |
1207
+ |--------------|-------------|-------------------|
1208
+ | `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
1209
+ | `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
1210
+
1211
+ ### Zscaler Sandbox Client Initialization
1212
+
1213
+ ```py
1214
+ from zscaler import ZscalerClient
1215
+
1216
+ config = {
1217
+ "sandboxToken": '{yourSandboxToken}',
1218
+ "sandboxCloud": '{yourSandboxCloud}',
1219
+ "logging": {"enabled": False, "verbose": False},
1220
+ }
1221
+
1222
+ def main():
1223
+
1224
+ script_dir = os.path.dirname(os.path.abspath(__file__))
1225
+ file_path = os.path.join(script_dir, "test-pe-file.exe")
1226
+ force_analysis = True
1227
+
1228
+ with ZscalerClient(config) as client:
1229
+ submit, _, err = client.zia.sandbox.submit_file(file_path=file_path, force=force_analysis)
1230
+
1231
+ if err:
1232
+ print(f"Error submitting file: {err}")
1233
+ else:
1234
+ print("File submitted successfully!")
1235
+ print(f"Response: {submit}")
1236
+
1237
+ if __name__ == "__main__":
1238
+ main()
1239
+ ```
1240
+
1241
+ ### ZIA Legacy Client Initialization
1242
+
1243
+ ```py
1244
+ import random
1245
+ from zscaler import ZscalerClient
1246
+
1247
+ config = {
1248
+ "sandboxToken": '{yourSandboxToken}',
1249
+ "sandboxCloud": '{yourSandboxCloud}',
1250
+ "logging": {"enabled": False, "verbose": False},
1251
+ }
1252
+
1253
+ def main():
1254
+
1255
+ script_dir = os.path.dirname(os.path.abspath(__file__))
1256
+ file_path = os.path.join(script_dir, "test-pe-file.exe")
1257
+ force_analysis = True
1258
+
1259
+ with ZscalerClient(config) as client:
1260
+ submit, _, err = client.zia.sandbox.submit_file(file_path=file_path, force=force_analysis)
1261
+
1262
+ if err:
1263
+ print(f"Error submitting file: {err}")
1264
+ else:
1265
+ print("File submitted successfully!")
1266
+ print(f"Response: {submit}")
1267
+
1268
+ if __name__ == "__main__":
1269
+ main()
1270
+ ```
1271
+
1272
+ ### Z-Insights (zins) — GraphQL Analytics API
1273
+
1274
+ Z-Insights provides visibility and analytics across web traffic, firewall, IoT, SaaS security, shadow IT, and cyber security domains via a GraphQL API.
1275
+
1276
+ **Note:** Z-Insights only supports OneAPI authentication. Legacy client authentication is not supported.
1277
+
1278
+ ```py
1279
+ from zscaler import ZscalerClient
1280
+
1281
+ config = {
1282
+ "clientId": '{yourClientId}',
1283
+ "clientSecret": '{yourClientSecret}',
1284
+ "vanityDomain": '{yourvanityDomain}',
1285
+ "cloud": "beta",
1286
+ }
1287
+
1288
+ def main():
1289
+ with ZscalerClient(config) as client:
1290
+ entries, _, err = client.zins.web_traffic.get_traffic_by_location(
1291
+ start_time=start_time, end_time=end_time,
1292
+ traffic_unit="TRANSACTIONS", limit=10
1293
+ )
1294
+ if err:
1295
+ print(f"Error: {err}")
1296
+ return
1297
+ print(f"Entries: {len(entries) if entries else 0}")
1298
+
1299
+ if __name__ == "__main__":
1300
+ main()
1301
+ ```
1302
+
1303
+ **Available Resources (via `client.zins.<resource>`):**
1304
+
1305
+ - `web_traffic` — Traffic by location, protocols, threat categories, no-grouping
1306
+ - `firewall` — Traffic by action, location, network services
1307
+ - `cyber_security` — Incidents
1308
+ - `saas_security` — CASB app reports
1309
+ - `shadow_it` — Shadow IT app discovery
1310
+ - `iot` — IoT device statistics
1311
+
1312
+ **Note:** `client.zinsights` is available as a backward-compatible alias for `client.zins`.
1313
+
1314
+ ### ZMS (Zscaler Microsegmentation) — GraphQL API
1315
+
1316
+ ZMS provides microsegmentation management for agents, resources, policy rules, app zones, and tagging via a GraphQL API.
1317
+
1318
+ **Note:** ZMS only supports OneAPI authentication. Legacy client authentication is not supported.
1319
+
1320
+ ```py
1321
+ from zscaler import ZscalerClient
1322
+
1323
+ config = {
1324
+ "clientId": '{yourClientId}',
1325
+ "clientSecret": '{yourClientSecret}',
1326
+ "vanityDomain": '{yourvanityDomain}',
1327
+ "cloud": "beta",
1328
+ }
1329
+
1330
+ def main():
1331
+ with ZscalerClient(config) as client:
1332
+ result, _, err = client.zms.agents.list_agents(
1333
+ customer_id="123456789", page=1, page_size=20
1334
+ )
1335
+ if err:
1336
+ print(f"Error: {err}")
1337
+ return
1338
+ for agent in result.get("nodes", []):
1339
+ print(agent.get("name"))
1340
+
1341
+ if __name__ == "__main__":
1342
+ main()
1343
+ ```
1344
+
1345
+ **Available Resources (via `client.zms.<resource>`):**
1346
+
1347
+ - `agents` — List agents, connection status statistics, version statistics
1348
+ - `agent_groups` — List agent groups, get TOTP secrets
1349
+ - `nonces` — List nonces (provisioning keys), get nonce by ID
1350
+ - `resources` — List resources, protection status, event metadata
1351
+ - `resource_groups` — List resource groups, get members, protection status
1352
+ - `policy_rules` — List policy rules, list default policy rules
1353
+ - `app_zones` — List app zones with filtering and pagination
1354
+ - `app_catalog` — List app catalog entries with filtering and ordering
1355
+ - `tags` — List tag namespaces, tag keys, and tag values
1356
+
1357
+ **Note:** `client.zmicroseg` is available as an alias for `client.zms`.
1358
+
1359
+ ## Zscaler Legacy API Framework
1360
+
1361
+ 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.
1362
+
1363
+ ### ZIA Legacy Authentication
1364
+
1365
+ Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZIA API credentials.
1366
+ This SDK provides a dedicated API client `LegacyZIAClient` compatible with the legacy framework, which must be used in this scenario.
1367
+
1368
+ - For authentication via Zscaler Internet Access, you must provide `username`, `password`, `api_key` and `cloud`
1369
+
1370
+ 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:
1371
+
1372
+ * `zscaler`
1373
+ * `zscalerone`
1374
+ * `zscalertwo`
1375
+ * `zscalerthree`
1376
+ * `zscloud`
1377
+ * `zscalerbeta`
1378
+ * `zscalergov`
1379
+ * `zscalerten`
1380
+ * `zspreview`
1381
+
1382
+ ### Environment variables
1383
+
1384
+ 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.
1385
+
1386
+ | Argument | Description | Environment variable |
1387
+ |--------------|-------------|-------------------|
1388
+ | `username` | _(String)_ A string that contains the email ID of the API admin.| `ZIA_USERNAME` |
1389
+ | `password` | _(String)_ A string that contains the password for the API admin.| `ZIA_PASSWORD` |
1390
+ | `api_key` | _(String)_ A string that contains the obfuscated API key (i.e., the return value of the obfuscateApiKey() method).| `ZIA_API_KEY` |
1391
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$zsapi.<Zscaler Cloud Name>/api/v1`.| `ZIA_CLOUD` |
1392
+ | `sandboxToken` | _(String)_ The Zscaler Internet Access Sandbox Token | `ZSCALER_SANDBOX_TOKEN` |
1393
+ | `sandboxCloud` | _(String)_ The Zscaler Internet Access Sandbox cloud name | `ZSCALER_SANDBOX_CLOUD` |
1394
+
1395
+ ### ZIA Legacy Client Initialization
1396
+
1397
+ ```py
1398
+ import random
1399
+ from zscaler.oneapi_client import LegacyZIAClient
1400
+
1401
+ config = {
1402
+ "username": '{yourUsername}',
1403
+ "password": '{yourPassword}',
1404
+ "api_key": '{yourApiKey}',
1405
+ "cloud": '{yourCloud}',
1406
+ "logging": {"enabled": False, "verbose": False},
1407
+ }
1408
+
1409
+ def main():
1410
+ with LegacyZIAClient(config) as client:
1411
+ added_label, response, error = client.zia.rule_labels.add_label(
1412
+ name=f"NewLabel_{random.randint(1000, 10000)}",
1413
+ description=f"NewLabel_{random.randint(1000, 10000)}",
1414
+ )
1415
+ if err:
1416
+ print(f"Error adding label: {err}")
1417
+ return
1418
+ print(f"Label added successfully: {added_label.as_dict()}")
1419
+
1420
+ if __name__ == "__main__":
1421
+ main()
1422
+ ```
1423
+
1424
+ ### ZIA and ZTW Context Manager
1425
+
1426
+ 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.
1427
+
1428
+ #### How Context Manager Works
1429
+
1430
+ When you use the `with` statement with a Zscaler client, the following happens automatically:
1431
+
1432
+ 1. **Authentication**: The client authenticates when entering the context
1433
+ 2. **Session Management**: A session is established and maintained throughout the context
1434
+ 3. **Automatic Deauthentication**: When exiting the context, the client automatically deauthenticates, which activates all staged configuration changes
1435
+
1436
+ #### Implicit Activation Process
1437
+
1438
+ The context manager implements an "implicit activation" approach where:
1439
+
1440
+ - **All changes are final**: Configuration changes are automatically activated when the context exits
1441
+ - **No manual activation required**: You don't need to remember to call activation endpoints
1442
+ - **Deterministic behavior**: You always know that exiting the context will activate changes
1443
+ - **Automation-friendly**: Perfect for scripts and automation scenarios
1444
+
1445
+ #### Example Usage
1446
+
1447
+ ```py
1448
+ import random
1449
+ from zscaler.oneapi_client import LegacyZIAClient
1450
+
1451
+ config = {
1452
+ "username": '{yourUsername}',
1453
+ "password": '{yourPassword}',
1454
+ "api_key": '{yourApiKey}',
1455
+ "cloud": '{yourCloud}',
1456
+ "logging": {"enabled": False, "verbose": False},
1457
+ }
1458
+
1459
+ def main():
1460
+ with LegacyZIAClient(config) as client:
1461
+ # Make configuration changes
1462
+ added_label, response, error = client.zia.rule_labels.add_label(
1463
+ name=f"NewLabel_{random.randint(1000, 10000)}",
1464
+ description=f"NewLabel_{random.randint(1000, 10000)}",
1465
+ )
1466
+ if error:
1467
+ print(f"Error adding label: {error}")
1468
+ return
1469
+
1470
+ # Make more changes
1471
+ updated_role, response, error = client.zia.admin_roles.update_role(
1472
+ role_id="12345",
1473
+ name="Updated Role Name"
1474
+ )
1475
+ if error:
1476
+ print(f"Error updating role: {error}")
1477
+ return
1478
+
1479
+ print("All changes made successfully")
1480
+
1481
+ # Context manager automatically deauthenticates here
1482
+ # All staged changes are activated automatically
1483
+ print("Context exited - all changes have been activated")
1484
+
1485
+ if __name__ == "__main__":
1486
+ main()
1487
+ ```
1488
+
1489
+ #### Benefits
1490
+
1491
+ - **Automatic cleanup**: No need to manually deauthenticate
1492
+ - **Error handling**: Even if an exception occurs, the context manager ensures proper cleanup
1493
+ - **Staged configuration activation**: All changes are activated when the context exits
1494
+ - **Simplified code**: No need to remember activation steps
1495
+
1496
+ ### ZTW Legacy Authentication
1497
+
1498
+ Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZTW API credentials.
1499
+ This SDK provides a dedicated API client `LegacyZTWClient` compatible with the legacy framework, which must be used in this scenario.
1500
+
1501
+ - For authentication via Zscaler Internet Access, you must provide `username`, `password`, `api_key` and `cloud`
1502
+
1503
+ 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:
1504
+
1505
+ * `zscaler`
1506
+ * `zscalerone`
1507
+ * `zscalertwo`
1508
+ * `zscalerthree`
1509
+ * `zscloud`
1510
+ * `zscalerbeta`
1511
+ * `zscalergov`
1512
+ * `zscalerten`
1513
+ * `zspreview`
1514
+
1515
+ ### Environment variables
1516
+
1517
+ 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.
1518
+
1519
+ | Argument | Description | Environment variable |
1520
+ |--------------|-------------|-------------------|
1521
+ | `username` | _(String)_ A string that contains the email ID of the API admin.| `ZTW_USERNAME` |
1522
+ | `password` | _(String)_ A string that contains the password for the API admin.| `ZTW_PASSWORD` |
1523
+ | `api_key` | _(String)_ A string that contains the obfuscated API key (i.e., the return value of the obfuscateApiKey() method).| `ZTW_API_KEY` |
1524
+ | `cloud` | _(String)_ The host and basePath for the cloud services API is `$zsapi.<Zscaler Cloud Name>/api/v1`.| `ZTW_CLOUD` |
1525
+
1526
+ ### ZTW Legacy Client Initialization
1527
+
1528
+ ```py
1529
+ import random
1530
+ from zscaler.oneapi_client import LegacyZTWClient
1531
+
1532
+ config = {
1533
+ "username": '{yourUsername}',
1534
+ "password": '{yourPassword}',
1535
+ "api_key": '{yourApiKey}',
1536
+ "cloud": '{yourCloud}',
1537
+ "logging": {"enabled": False, "verbose": False},
1538
+ }
1539
+
1540
+ def main():
1541
+ with LegacyZTWClient(config) as client:
1542
+ fetched_prov_url, response, error = client.ZTW.provisioning_url.list_provisioning_url()
1543
+ if error:
1544
+ print(f"Error fetching prov url by ID: {error}")
1545
+ return
1546
+ print(f"Fetched prov url by ID: {fetched_prov_url.as_dict()}")
1547
+
1548
+ if __name__ == "__main__":
1549
+ main()
1550
+ ```
1551
+
1552
+ ### ZPA Legacy Authentication
1553
+
1554
+ Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZPA API credentials.
1555
+ This SDK provides a dedicated API client `LegacyZPAClient` compatible with the legacy framework, which must be used in this scenario.
1556
+
1557
+ - For authentication via Zscaler Private Access, you must provide `client_id`, `client_secret`, `customer_id` and `cloud`
1558
+
1559
+ 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:
1560
+
1561
+ * `PRODUCTION`
1562
+ * `ZPATWO`
1563
+ * `BETA`
1564
+ * `GOV`
1565
+ * `GOVUS`
1566
+
1567
+ ### Environment variables
1568
+
1569
+ 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.
1570
+
1571
+ ~> **NOTE** `ZPA_CLOUD` environment variable is required, and is used to identify the correct API gateway where the API requests should be forwarded to.
1572
+
1573
+ | Argument | Description | Environment variable |
1574
+ |--------------|-------------|-------------------|
1575
+ | `clientId` | _(String)_ The ZPA API client ID generated from the ZPA console.| `ZPA_CLIENT_ID` |
1576
+ | `clientSecret` | _(String)_ The ZPA API client secret generated from the ZPA console.| `ZPA_CLIENT_SECRET` |
1577
+ | `customerId` | _(String)_ The ZPA tenant ID found in the Administration > Company menu in the ZPA console.| `ZPA_CUSTOMER_ID` |
1578
+ | `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` |
1579
+ | `partnerId` | _(String)_ Optional partner ID. When provided, the SDK automatically includes the `x-partner-id` header in all API requests.| `ZSCALER_PARTNER_ID` |
1580
+ | `cloud` | _(String)_ The Zscaler cloud for your tenancy.| `ZPA_CLOUD` |
1581
+
1582
+ ### ZPA Legacy Client Initialization
1583
+
1584
+ ```py
1585
+ import random
1586
+ from zscaler.oneapi_client import LegacyZPAClient
1587
+
1588
+ config = {
1589
+ "clientId": '{yourClientId}',
1590
+ "clientSecret": '{yourClientSecret}',
1591
+ "customerId": '{yourCustomerId}',
1592
+ "microtenantId": '{yourMicrotenantId}',
1593
+ "partnerId": "", # Optional parameter. When provided, automatically includes x-partner-id header in all requests
1594
+ "cloud": '{yourCloud}',
1595
+ "logging": {"enabled": False, "verbose": False},
1596
+ }
1597
+
1598
+ def main():
1599
+ with LegacyZPAClient(config) as client:
1600
+ added_label, response, error = client.zpa.segment_groups.add_group(
1601
+ name=f"NewGroup_{random.randint(1000, 10000)}",
1602
+ description=f"NewGroup_{random.randint(1000, 10000)}",
1603
+ enabled=True
1604
+ )
1605
+ if err:
1606
+ print(f"Error adding segment group: {err}")
1607
+ return
1608
+ print(f"Segment Group added successfully: {added_label.as_dict()}")
1609
+
1610
+ if __name__ == "__main__":
1611
+ main()
1612
+ ```
1613
+
1614
+ ### ZCC Legacy Authentication
1615
+
1616
+ Organizations whose tenant is still not migrated to Zidentity must continue using their previous ZCC API credentials.
1617
+ This SDK provides a dedicated API client `LegacyZCCClient` compatible with the legacy framework, which must be used in this scenario.
1618
+
1619
+ - For authentication via Zscaler Client Connector (ZCC), you must provide `api_key`, `secret_key`, and `cloud`
1620
+
1621
+ 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:
1622
+
1623
+ * `zscaler`
1624
+ * `zscalerone`
1625
+ * `zscalertwo`
1626
+ * `zscalerthree`
1627
+ * `zscloud`
1628
+ * `zscalerbeta`
1629
+ * `zscalergov`
1630
+ * `zscalerten`
1631
+ * `zspreview`
1632
+
1633
+ ### Environment variables
1634
+
1635
+ 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.
1636
+
1637
+ ~> **NOTE** `ZCC_CLOUD` environment variable is required, and is used to identify the correct API gateway where the API requests should be forwarded to.
1638
+
1639
+ | Argument | Description | Environment variable |
1640
+ |--------------|-------------|-------------------|
1641
+ | `api_key` | _(String)_ A string that contains the apiKey for the Mobile Portal.| `ZCC_CLIENT_ID` |
1642
+ | `secret_key` | _(String)_ A string that contains the secret key for the Mobile Portal.| `ZCC_CLIENT_SECRET` |
1643
+ | `cloud` | _(String)_ The host and basePath for the ZCC cloud services API is `$mobileadmin.<Zscaler Cloud Name>/papi`.| `ZCC_CLOUD` |
1644
+
1645
+ ### ZCC Legacy Client Initialization
1646
+
1647
+ ```py
1648
+ import random
1649
+ from zscaler.oneapi_client import LegacyZCCClient
1650
+
1651
+ config = {
1652
+ "api_key": '{yourApiKey}',
1653
+ "secret_key": '{yourSecreKey}',
1654
+ "cloud": '{yourCloud}',
1655
+ "logging": {"enabled": False, "verbose": False},
1656
+ }
1657
+
1658
+ with LegacyZCCClient(config) as client:
1659
+
1660
+ for group in client.zcc.devices.list_devices():
1661
+ print(group)
1662
+ if __name__ == "__main__":
1663
+ main()
1664
+ ```
1665
+
1666
+ ### ZDX Legacy Authentication
1667
+
1668
+ This SDK provides a dedicated API client `LegacyZDXClient` compatible with the legacy framework, which must be used in this scenario.
1669
+
1670
+ - For authentication via Zscaler Digital Experience (ZDX), you must provide `key_id`, `key_secret`
1671
+
1672
+ 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``
1673
+
1674
+ * ``zdxcloud``
1675
+ * ``zdxbeta``
1676
+
1677
+ ### ZDX Environment variables
1678
+
1679
+ 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.
1680
+
1681
+ | Argument | Description | Environment variable |
1682
+ |--------------|-------------|-------------------|
1683
+ | `key_id` | _(String)_ A string that contains the key_id for the ZDX Portal.| `ZDX_CLIENT_ID` |
1684
+ | `key_secret` | _(String)_ A string that contains the key_secret key for the ZDX Portal.| `ZDX_CLIENT_SECRET` |
1685
+ | `cloud` | _(String)_ The cloud name prefix that identifies the correct API endpoint.| `ZDX_CLOUD` |
1686
+
1687
+ ### ZDX Legacy Client Initialization
1688
+
1689
+ ```py
1690
+ import random
1691
+ from zscaler.oneapi_client import LegacyZDXClient
1692
+
1693
+ config = {
1694
+ "key_id": '{yourKeyId}',
1695
+ "key_secret": '{yourKeySecret}',
1696
+ "cloud": '{yourCloud}',
1697
+ "logging": {"enabled": False, "verbose": False},
1698
+ }
1699
+
1700
+ def main():
1701
+ with LegacyZDXClient(config) as client:
1702
+ app_list, _, err = client.zdx.apps.list_apps(query_params{"since": 2})
1703
+ if err:
1704
+ print(f"Error listing applications: {err}")
1705
+ return
1706
+ for app in app_list:
1707
+ print(app.as_dict())
1708
+
1709
+ if __name__ == "__main__":
1710
+ main()
1711
+ ```
1712
+
1713
+ ### ZWA Legacy Authentication
1714
+
1715
+ This SDK provides a dedicated API client `LegacyZWAClient` compatible with the legacy framework, which must be used in this scenario.
1716
+
1717
+ - For authentication via Zscaler Workflow Automation (ZWA), you must provide `key_id`, `key_secret`
1718
+
1719
+ 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``
1720
+
1721
+ * ``us1``
1722
+
1723
+ For authentication via Zscaler Workflow Automation (ZWA), you must provide `key_id`, `key_secret`
1724
+
1725
+ ### ZWA Environment variables
1726
+
1727
+ 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.
1728
+
1729
+ | Argument | Description | Environment variable |
1730
+ |--------------|-------------|-------------------|
1731
+ | `key_id` | _(String)_ The ZWA string that contains the API key ID.| `ZWA_CLIENT_ID` |
1732
+ | `key_secret` | _(String)_ The ZWA string that contains the key secret.| `ZWA_CLIENT_SECRET` |
1733
+ | `cloud` | _(String)_ The ZWA string containing cloud provisioned for your organization.| `ZWA_CLOUD` |
1734
+
1735
+ ### ZWA Legacy Client Initialization
1736
+
1737
+ ```py
1738
+ import random
1739
+ from zscaler.oneapi_client import LegacyZWAClient
1740
+
1741
+ config = {
1742
+ "key_id": '{yourKeyId}',
1743
+ "key_secret": '{yourKeySecret}',
1744
+ "cloud": '{yourCloud}',
1745
+ "logging": {"enabled": False, "verbose": False},
1746
+ }
1747
+
1748
+ def main():
1749
+ with LegacyZWAClient(config) as client:
1750
+ transactions, _, err = client.zwa.dlp_incidents.get_incident_transactions('SVDP-17410643229970491392')
1751
+ if err:
1752
+ print(f"Error listing transactions: {err}")
1753
+ return
1754
+ for incident in transactions:
1755
+ print(incident.as_dict())
1756
+
1757
+ if __name__ == "__main__":
1758
+ main()
1759
+ ```
1760
+
1761
+ ### Zero Trust Branch (ZTB) API
1762
+
1763
+ ZTB (Zero Trust Branch) authenticates via **API key**. The client calls
1764
+ `POST /api/v3/api-key-auth/login` with `{"api_key": "..."}` and receives a
1765
+ `delegate_token` used as `Authorization: Bearer <token>` for all subsequent requests.
1766
+ Unlike ZIA/ZTW, ZTB does **not** use JSESSIONID session cookies.
1767
+
1768
+ **Environment Variables:**
1769
+
1770
+ | Variable | Required | Description |
1771
+ |---|---|---|
1772
+ | `ZTB_API_KEY` | Yes (or pass `api_key`) | ZTB API key created in the ZTB UI |
1773
+ | `ZTB_CLOUD` | Yes* (or pass `cloud`) | Cloud subdomain for your tenancy (e.g. `zscalerbd-api`). Used to build base URL: `https://{cloud}.goairgap.com` |
1774
+ | `ZTB_OVERRIDE_URL` | No (or pass `override_url`) | Full base URL override (e.g. `https://zscalerbd-api.goairgap.com`). If set, `cloud` is not required. Use for non-standard or test URLs. |
1775
+ | `ZSCALER_PARTNER_ID` | No | Partner ID for `x-partner-id` header |
1776
+
1777
+ \* Either `ZTB_CLOUD` or `ZTB_OVERRIDE_URL` must be provided.
1778
+
1779
+ **Configuration Options:**
1780
+
1781
+ | Option | Default | Description |
1782
+ |---|---|---|
1783
+ | `api_key` | _(required)_ | ZTB API key from the ZTB console |
1784
+ | `cloud` | _(required if no override_url)_ | Cloud subdomain (e.g. `zscalerbd-api`) |
1785
+ | `override_url` | `None` | Full base URL override. When set, `cloud` is ignored. Include protocol (`https://`). |
1786
+ | `partner_id` | `None` | Partner ID for `x-partner-id` header |
1787
+ | `timeout` | `240` | Request timeout in seconds |
1788
+ | `max_retries` | `5` | Max retry attempts for 429/5xx/network errors |
1789
+
1790
+ **Important Notes:**
1791
+
1792
+ - On **401 Unauthorized**, the client automatically re-authenticates and retries once.
1793
+ - On **429** (rate limit) or **5xx** (502/503/504), the SDK retries with exponential backoff.
1794
+ - ZTB is available only via the **Legacy** client (`LegacyZTBClient`). OneAPI/OAuth2 is not supported for ZTB.
1795
+
1796
+ **Available Resources (via `client.ztb.<resource>`):**
1797
+
1798
+ - `alarms` — Alarms API
1799
+ - `api_keys` — API key auth
1800
+ - `app_connector_config` — App connector configuration
1801
+ - `devices` — Active devices, device tags, OS list, device details, DHCP history, filter values
1802
+ - `groups_router` — Groups router
1803
+ - `logs` — Logs and visibility charts
1804
+ - `policy_comments` — Policy comments
1805
+ - `ransomware_kill` — Ransomware kill
1806
+ - `site` — Site management
1807
+ - `site2site_vpn` — Site-to-site VPN (Cloud Gateway)
1808
+ - `template_router` — Template router
1809
+
1810
+ **Usage Example (Legacy Client):**
1811
+
1812
+ ```py
1813
+ from zscaler.oneapi_client import LegacyZTBClient
1814
+
1815
+ config = {
1816
+ "api_key": "{yourZTBAPIKey}",
1817
+ "cloud": "zscalerbd-api", # or use override_url for full URL
1818
+ "logging": {"enabled": False, "verbose": False},
1819
+ }
1820
+
1821
+ def main():
1822
+ with LegacyZTBClient(config) as client:
1823
+ alarms, response, error = client.ztb.alarms.list_alarms()
1824
+ if error:
1825
+ print(f"Error listing alarms: {error}")
1826
+ return
1827
+ print(f"Alarms: {alarms}")
1828
+
1829
+ devices, _, err = client.ztb.devices.list_active_devices(
1830
+ query_params={"page": 1, "limit": 25}
1831
+ )
1832
+ if not err:
1833
+ for d in devices:
1834
+ print(d.hostname)
1835
+
1836
+ if __name__ == "__main__":
1837
+ main()
1838
+ ```
1839
+
1840
+ **Using override_url (e.g. for test or custom tenant):**
1841
+
1842
+ ```py
1843
+ config = {
1844
+ "api_key": "{yourZTBAPIKey}",
1845
+ "override_url": "https://{yourSubdomain}.goairgap.com",
1846
+ }
1847
+ ```
1848
+
1849
+ ## Zscaler Legacy API Rate Limiting
1850
+
1851
+ 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.
1852
+ Please see:
1853
+
1854
+ 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:
1855
+ * [ZCC Rate Limiting][rate-limiting-zcc] for rate limiting requirements.
1856
+
1857
+ 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:
1858
+ * [ZDX Rate Limiting][rate-limiting-zdx] for rate limiting requirements.
1859
+ * [ZWA Rate Limiting][rate-limiting-zwa] for rate limiting requirements.
1860
+
1861
+ 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.
1862
+ * [ZTW Rate Limiting][rate-limiting-ZTW] for a complete list of which endpoints are rate limited.
1863
+ * [ZIA Rate Limiting][rate-limiting-zia] for a complete list of which endpoints are rate limited.
1864
+
1865
+ 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.
1866
+ * [ZPA Rate Limiting][rate-limiting-zpa] for rate limiting requirements.
1867
+
1868
+ ### Built-In Retry
1869
+
1870
+ 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.
1871
+
1872
+ | Configuration Option | Description |
1873
+ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
1874
+ | client.rateLimit.maxRetries | The number of times to retry (on retryable errors)
1875
+ | client.rateLimit.maxRetrySeconds | Max wait duration allowed for a retry backoff
1876
+
1877
+ ## Contributing
1878
+
1879
+ 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.
1880
+
1881
+ [zenith]: https://community.zscaler.com/
1882
+ [zscaler-support]: https://help.zscaler.com/contact-support
1883
+ [github-issues]: https://github.com/zscaler/zscaler-sdk-python/issues
1884
+ [rate-limiting-zcc]: https://automate.zscaler.com/docs/api-reference-and-guides/guides/rate-limiting/client-connector
1885
+ [rate-limiting-ZTW]: https://automate.zscaler.com/docs/api-reference-and-guides/guides/rate-limiting/cloud-branch-connector
1886
+ [rate-limiting-zdx]: https://automate.zscaler.com/docs/api-reference-and-guides/guides/rate-limiting/zdx
1887
+ [rate-limiting-zia]: https://automate.zscaler.com/docs/api-reference-and-guides/guides/rate-limiting/zia
1888
+ [rate-limiting-zpa]: https://automate.zscaler.com/docs/api-reference-and-guides/guides/rate-limiting/zpa
1889
+ [rate-limiting-bi]: https://automate.zscaler.com/docs/api-reference-and-guides/guides/rate-limiting/bi
1890
+ [rate-limiting-zwa]: https://help.zscaler.com/workflow-automation/understanding-api-rate-limiting-workflow-automation-api
1891
+
1892
+
1893
+ Contributors
1894
+ ------------
1895
+
1896
+ - William Guilherme - [willguibr](https://github.com/willguibr)
1897
+ - Eddie Parra - [eparra](https://github.com/eparra)
1898
+ - Paul Abbot - [abbottp](https://github.com/abbottp)
1899
+
1900
+ Thank you to [Mitch Kelly](https://github.com/mitchos/pyZscaler), creator of the [PyZscaler](https://github.com/mitchos/pyZscaler) SDK, which this SDK was inspired on.
1901
+
1902
+ ## MIT License
1903
+
1904
+ =======
1905
+
1906
+ Copyright (c) 2023 [Zscaler](https://github.com/zscaler)
1907
+
1908
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1909
+ of this software and associated documentation files (the "Software"), to deal
1910
+ in the Software without restriction, including without limitation the rights
1911
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1912
+ copies of the Software, and to permit persons to whom the Software is
1913
+ furnished to do so, subject to the following conditions:
1914
+
1915
+ The above copyright notice and this permission notice shall be included in all
1916
+ copies or substantial portions of the Software.
1917
+
1918
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1919
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1920
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1921
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1922
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1923
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1924
+ SOFTWARE.
1925
+