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