zscaler-sdk-python 1.9.10__tar.gz → 1.9.12__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 (484) hide show
  1. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/PKG-INFO +4 -2
  2. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/pyproject.toml +27 -4
  3. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/__init__.py +1 -1
  4. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_oauth_client.py +14 -3
  5. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/utils.py +1 -0
  6. zscaler_sdk_python-1.9.12/zscaler/zia/models/sandbox.py +86 -0
  7. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/sandbox.py +38 -10
  8. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/url_filtering.py +15 -13
  9. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/cyber_security.py +28 -17
  10. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/firewall.py +29 -25
  11. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/iot.py +13 -1
  12. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/models/common.py +0 -41
  13. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/saas_security.py +27 -9
  14. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/shadow_it.py +38 -9
  15. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/web_traffic.py +46 -36
  16. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/forwarding_rules.py +5 -0
  17. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/legacy.py +10 -0
  18. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/forwarding_rules.py +6 -0
  19. zscaler_sdk_python-1.9.12/zscaler/ztw/models/workload_groups.py +210 -0
  20. zscaler_sdk_python-1.9.12/zscaler/ztw/workload_groups.py +92 -0
  21. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ztw_service.py +9 -1
  22. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/LICENSE.md +0 -0
  23. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/README.md +0 -0
  24. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/api_client.py +0 -0
  25. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/cache/__init__.py +0 -0
  26. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/cache/cache.py +0 -0
  27. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/cache/no_op_cache.py +0 -0
  28. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/cache/zscaler_cache.py +0 -0
  29. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/config/__init__.py +0 -0
  30. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/config/config_setter.py +0 -0
  31. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/config/config_validator.py +0 -0
  32. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/constants.py +0 -0
  33. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/error_messages.py +0 -0
  34. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/__init__.py +0 -0
  35. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/error.py +0 -0
  36. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/graphql_error.py +0 -0
  37. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/http_error.py +0 -0
  38. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/response_checker.py +0 -0
  39. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/errors/zscaler_api_error.py +0 -0
  40. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/exceptions/__init__.py +0 -0
  41. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/exceptions/exceptions.py +0 -0
  42. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/helpers.py +0 -0
  43. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/logger.py +0 -0
  44. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_client.py +0 -0
  45. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_collection.py +0 -0
  46. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_http_client.py +0 -0
  47. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_object.py +0 -0
  48. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/oneapi_response.py +0 -0
  49. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ratelimiter/__init__.py +0 -0
  50. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ratelimiter/ratelimiter.py +0 -0
  51. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/request_executor.py +0 -0
  52. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/types.py +0 -0
  53. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/user_agent.py +0 -0
  54. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/__init__.py +0 -0
  55. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/admin_user.py +0 -0
  56. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/company.py +0 -0
  57. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/devices.py +0 -0
  58. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/entitlements.py +0 -0
  59. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/fail_open_policy.py +0 -0
  60. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/forwarding_profile.py +0 -0
  61. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/legacy.py +0 -0
  62. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/admin_roles.py +0 -0
  63. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/admin_user.py +0 -0
  64. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/devices.py +0 -0
  65. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/failopenpolicy.py +0 -0
  66. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/forwardingprofile.py +0 -0
  67. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/getcompanyinfo.py +0 -0
  68. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/manage_pass.py +0 -0
  69. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/secrets_otp.py +0 -0
  70. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/secrets_passwords.py +0 -0
  71. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/trustednetworks.py +0 -0
  72. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/webappservice.py +0 -0
  73. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/webpolicy.py +0 -0
  74. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/webprivacy.py +0 -0
  75. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  76. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  77. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/secrets.py +0 -0
  78. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/trusted_networks.py +0 -0
  79. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/web_app_service.py +0 -0
  80. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/web_policy.py +0 -0
  81. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/web_privacy.py +0 -0
  82. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zcc/zcc_service.py +0 -0
  83. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/__init__.py +0 -0
  84. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/admin.py +0 -0
  85. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/alerts.py +0 -0
  86. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/apps.py +0 -0
  87. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/devices.py +0 -0
  88. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/inventory.py +0 -0
  89. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/legacy.py +0 -0
  90. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/administration.py +0 -0
  91. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/alerts.py +0 -0
  92. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/application_users.py +0 -0
  93. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/applications.py +0 -0
  94. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  95. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/common.py +0 -0
  96. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/devices.py +0 -0
  97. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/snapshot.py +0 -0
  98. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/software_inventory.py +0 -0
  99. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/troubleshooting.py +0 -0
  100. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/models/users.py +0 -0
  101. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/snapshot.py +0 -0
  102. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/troubleshooting.py +0 -0
  103. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/users.py +0 -0
  104. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zdx/zdx_service.py +0 -0
  105. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/__init__.py +0 -0
  106. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/findings.py +0 -0
  107. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/lookalike_domains.py +0 -0
  108. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/__init__.py +0 -0
  109. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/common.py +0 -0
  110. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/findings.py +0 -0
  111. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/lookalike_domains.py +0 -0
  112. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/models/organizations.py +0 -0
  113. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/organizations.py +0 -0
  114. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zeasm/zeasm_service.py +0 -0
  115. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/__init__.py +0 -0
  116. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/activate.py +0 -0
  117. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/admin_roles.py +0 -0
  118. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/admin_users.py +0 -0
  119. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/advanced_settings.py +0 -0
  120. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/alert_subscriptions.py +0 -0
  121. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/apptotal.py +0 -0
  122. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/atp_policy.py +0 -0
  123. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/audit_logs.py +0 -0
  124. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/authentication_settings.py +0 -0
  125. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/bandwidth_classes.py +0 -0
  126. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/bandwidth_control_rules.py +0 -0
  127. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/browser_control_settings.py +0 -0
  128. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/casb_dlp_rules.py +0 -0
  129. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/casb_malware_rules.py +0 -0
  130. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_app_instances.py +0 -0
  131. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_applications.py +0 -0
  132. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_browser_isolation.py +0 -0
  133. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_firewall.py +0 -0
  134. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_firewall_dns.py +0 -0
  135. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_firewall_ips.py +0 -0
  136. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_firewall_rules.py +0 -0
  137. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_nss.py +0 -0
  138. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloud_to_cloud_ir.py +0 -0
  139. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/cloudappcontrol.py +0 -0
  140. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dedicated_ip_gateways.py +0 -0
  141. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/device_management.py +0 -0
  142. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_dictionary.py +0 -0
  143. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_engine.py +0 -0
  144. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_resources.py +0 -0
  145. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_templates.py +0 -0
  146. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dlp_web_rules.py +0 -0
  147. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/dns_gatways.py +0 -0
  148. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/end_user_notification.py +0 -0
  149. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/file_type_control_rule.py +0 -0
  150. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/forwarding_control.py +0 -0
  151. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/ftp_control_policy.py +0 -0
  152. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/gre_tunnel.py +0 -0
  153. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/intermediate_certificates.py +0 -0
  154. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/iot_report.py +0 -0
  155. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/ipv6_config.py +0 -0
  156. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/legacy.py +0 -0
  157. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/locations.py +0 -0
  158. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/malware_protection_policy.py +0 -0
  159. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/mobile_threat_settings.py +0 -0
  160. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/__init__.py +0 -0
  161. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/activation.py +0 -0
  162. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/admin_roles.py +0 -0
  163. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/admin_users.py +0 -0
  164. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/advanced_settings.py +0 -0
  165. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  166. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/alert_subscriptions.py +0 -0
  167. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/apptotal.py +0 -0
  168. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/authentication_settings.py +0 -0
  169. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/bandwidth_classes.py +0 -0
  170. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
  171. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/browser_control_settings.py +0 -0
  172. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/casb_dlp_rules.py +0 -0
  173. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/casb_malware_rules.py +0 -0
  174. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_app_instances.py +0 -0
  175. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_app_policy.py +0 -0
  176. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  177. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  178. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  179. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  180. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  181. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  182. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  183. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  184. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  185. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
  186. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  187. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  188. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_nss.py +0 -0
  189. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloud_to_cloud_ir.py +0 -0
  190. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/cloudappcontrol.py +0 -0
  191. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/common.py +0 -0
  192. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
  193. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/device_groups.py +0 -0
  194. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/devices.py +0 -0
  195. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_dictionary.py +0 -0
  196. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_engine.py +0 -0
  197. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_resources.py +0 -0
  198. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_templates.py +0 -0
  199. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dlp_web_rules.py +0 -0
  200. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/dns_gateways.py +0 -0
  201. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/endusernotification.py +0 -0
  202. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/filetyperules.py +0 -0
  203. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  204. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/ftp_control_policy.py +0 -0
  205. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/gre_recommended_list.py +0 -0
  206. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  207. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/gre_tunnels.py +0 -0
  208. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/gre_vips.py +0 -0
  209. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/intermediate_certificates.py +0 -0
  210. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/iotreport.py +0 -0
  211. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/ipv6_config.py +0 -0
  212. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/location_group.py +0 -0
  213. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/location_management.py +0 -0
  214. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/malware_protection_settings.py +0 -0
  215. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/mobile_threat_settings.py +0 -0
  216. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/nat_control_policy.py +0 -0
  217. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/nss_servers.py +0 -0
  218. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/organization_information.py +0 -0
  219. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/pac_files.py +0 -0
  220. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/proxies.py +0 -0
  221. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/proxy_gateways.py +0 -0
  222. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/remoteassistance.py +0 -0
  223. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/risk_profiles.py +0 -0
  224. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/rule_labels.py +0 -0
  225. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/saas_security_api.py +0 -0
  226. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/sandboxrules.py +0 -0
  227. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/security_policy_settings.py +0 -0
  228. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/shadow_it_report.py +0 -0
  229. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  230. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/subclouds.py +0 -0
  231. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/system_audit.py +0 -0
  232. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
  233. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/time_intervals.py +0 -0
  234. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_capture.py +0 -0
  235. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_datacenters.py +0 -0
  236. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
  237. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_extranet.py +0 -0
  238. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_static_ip.py +0 -0
  239. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  240. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  241. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/url_filtering_rules.py +0 -0
  242. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/urlcategory.py +0 -0
  243. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/user_management.py +0 -0
  244. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/vzen_clusters.py +0 -0
  245. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/vzen_nodes.py +0 -0
  246. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/workload_groups.py +0 -0
  247. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/models/zpa_gateway.py +0 -0
  248. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/nat_control_policy.py +0 -0
  249. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/nss_servers.py +0 -0
  250. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/organization_information.py +0 -0
  251. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/pac_files.py +0 -0
  252. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/policy_export.py +0 -0
  253. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/proxies.py +0 -0
  254. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/remote_assistance.py +0 -0
  255. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/risk_profiles.py +0 -0
  256. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/rule_labels.py +0 -0
  257. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/saas_security_api.py +0 -0
  258. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/sandbox_rules.py +0 -0
  259. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/security_policy_settings.py +0 -0
  260. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/shadow_it_report.py +0 -0
  261. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/ssl_inspection_rules.py +0 -0
  262. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/sub_clouds.py +0 -0
  263. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/system_audit.py +0 -0
  264. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/tenancy_restriction_profile.py +0 -0
  265. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/time_intervals.py +0 -0
  266. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_capture.py +0 -0
  267. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_datacenters.py +0 -0
  268. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_extranet.py +0 -0
  269. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_static_ip.py +0 -0
  270. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  271. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/url_categories.py +0 -0
  272. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/user_management.py +0 -0
  273. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/vzen_clusters.py +0 -0
  274. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/vzen_nodes.py +0 -0
  275. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/workload_groups.py +0 -0
  276. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/zia_service.py +0 -0
  277. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zia/zpa_gateway.py +0 -0
  278. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/__init__.py +0 -0
  279. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/api_client.py +0 -0
  280. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/groups.py +0 -0
  281. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/api_client.py +0 -0
  282. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/common.py +0 -0
  283. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/groups.py +0 -0
  284. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/resource_servers.py +0 -0
  285. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/user_entitlement.py +0 -0
  286. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/models/users.py +0 -0
  287. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/resource_servers.py +0 -0
  288. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/user_entitlement.py +0 -0
  289. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/users.py +0 -0
  290. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zidentity/zidentity_service.py +0 -0
  291. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/__init__.py +0 -0
  292. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/models/__init__.py +0 -0
  293. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/models/enums.py +0 -0
  294. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/models/inputs.py +0 -0
  295. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zinsights/zinsights_service.py +0 -0
  296. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/__init__.py +0 -0
  297. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/admin_sso_controller.py +0 -0
  298. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/administrator_controller.py +0 -0
  299. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/api_keys.py +0 -0
  300. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_connector_groups.py +0 -0
  301. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_connector_schedule.py +0 -0
  302. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_connectors.py +0 -0
  303. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_protection.py +0 -0
  304. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segment_by_type.py +0 -0
  305. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segments_ba.py +0 -0
  306. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segments_ba_v2.py +0 -0
  307. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segments_inspection.py +0 -0
  308. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/app_segments_pra.py +0 -0
  309. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/application_segment.py +0 -0
  310. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/branch_connector_group.py +0 -0
  311. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/branch_connectors.py +0 -0
  312. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/browser_protection.py +0 -0
  313. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/c2c_ip_ranges.py +0 -0
  314. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_banner.py +0 -0
  315. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_certificate.py +0 -0
  316. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_profile.py +0 -0
  317. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_region.py +0 -0
  318. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  319. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/certificates.py +0 -0
  320. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/client_settings.py +0 -0
  321. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cloud_connector_controller.py +0 -0
  322. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/cloud_connector_groups.py +0 -0
  323. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/config_override_controller.py +0 -0
  324. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/customer_controller.py +0 -0
  325. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/customer_domain.py +0 -0
  326. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/customer_dr_tool.py +0 -0
  327. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/customer_version_profile.py +0 -0
  328. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/emergency_access.py +0 -0
  329. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/enrollment_certificates.py +0 -0
  330. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/extranet_resource.py +0 -0
  331. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/idp.py +0 -0
  332. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/legacy.py +0 -0
  333. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/location_controller.py +0 -0
  334. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/lss.py +0 -0
  335. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/machine_groups.py +0 -0
  336. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/managed_browser_profile.py +0 -0
  337. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/microtenants.py +0 -0
  338. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/administrator_controller.py +0 -0
  339. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/api_keys.py +0 -0
  340. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_connector_groups.py +0 -0
  341. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  342. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_connectors.py +0 -0
  343. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  344. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/app_protection_profile.py +0 -0
  345. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/application_segment.py +0 -0
  346. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/application_segment_lb.py +0 -0
  347. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/application_servers.py +0 -0
  348. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/branch_connectors.py +0 -0
  349. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/browser_protection.py +0 -0
  350. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/c2c_ip_ranges.py +0 -0
  351. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_banner.py +0 -0
  352. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_certificate.py +0 -0
  353. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_profile.py +0 -0
  354. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_region.py +0 -0
  355. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  356. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/certificates.py +0 -0
  357. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/client_settings.py +0 -0
  358. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cloud_connector_controller.py +0 -0
  359. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  360. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/common.py +0 -0
  361. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/config_override_controller.py +0 -0
  362. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/customer_controller.py +0 -0
  363. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/customer_domain.py +0 -0
  364. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/customer_dr_tool.py +0 -0
  365. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/customer_version_profile.py +0 -0
  366. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/emergency_access.py +0 -0
  367. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  368. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/idp.py +0 -0
  369. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/lss.py +0 -0
  370. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/machine_groups.py +0 -0
  371. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/managed_browser_profile.py +0 -0
  372. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/microtenants.py +0 -0
  373. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/npn_client_controller.py +0 -0
  374. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/oauth2_user_code.py +0 -0
  375. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
  376. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
  377. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/posture_profiles.py +0 -0
  378. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_approval.py +0 -0
  379. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_console.py +0 -0
  380. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  381. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_credential.py +0 -0
  382. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/pra_portal.py +0 -0
  383. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/private_cloud_controller.py +0 -0
  384. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/private_cloud_group.py +0 -0
  385. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/provisioning_keys.py +0 -0
  386. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/role_controller.py +0 -0
  387. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/saml_attributes.py +0 -0
  388. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/scim_attributes.py +0 -0
  389. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/scim_groups.py +0 -0
  390. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/segment_group.py +0 -0
  391. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/server_group.py +0 -0
  392. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/service_edge_groups.py +0 -0
  393. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  394. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/service_edges.py +0 -0
  395. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/stepup_auth_level.py +0 -0
  396. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/trusted_network.py +0 -0
  397. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/user_portal_aup.py +0 -0
  398. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/user_portal_controller.py +0 -0
  399. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/user_portal_link.py +0 -0
  400. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/models/zia_customer_config.py +0 -0
  401. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/npn_client_controller.py +0 -0
  402. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/oauth2_user_code.py +0 -0
  403. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/policies.py +0 -0
  404. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/posture_profiles.py +0 -0
  405. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_approval.py +0 -0
  406. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_console.py +0 -0
  407. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_credential.py +0 -0
  408. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_credential_pool.py +0 -0
  409. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/pra_portal.py +0 -0
  410. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/private_cloud_controller.py +0 -0
  411. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/private_cloud_group.py +0 -0
  412. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/provisioning.py +0 -0
  413. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/role_controller.py +0 -0
  414. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/saml_attributes.py +0 -0
  415. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/scim_attributes.py +0 -0
  416. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/scim_groups.py +0 -0
  417. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/segment_groups.py +0 -0
  418. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/server_groups.py +0 -0
  419. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/servers.py +0 -0
  420. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/service_edge_group.py +0 -0
  421. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/service_edge_schedule.py +0 -0
  422. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/service_edges.py +0 -0
  423. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/stepup_auth_level.py +0 -0
  424. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/trusted_networks.py +0 -0
  425. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/user_portal_aup.py +0 -0
  426. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/user_portal_controller.py +0 -0
  427. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/user_portal_link.py +0 -0
  428. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/workload_tag_group.py +0 -0
  429. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/zia_customer_config.py +0 -0
  430. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zpa/zpa_service.py +0 -0
  431. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/__init__.py +0 -0
  432. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/account_details.py +0 -0
  433. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/account_groups.py +0 -0
  434. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/activation.py +0 -0
  435. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/admin_roles.py +0 -0
  436. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/admin_users.py +0 -0
  437. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/api_keys.py +0 -0
  438. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/discovery_service.py +0 -0
  439. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ec_groups.py +0 -0
  440. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/forwarding_gateways.py +0 -0
  441. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ip_destination_groups.py +0 -0
  442. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ip_groups.py +0 -0
  443. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/ip_source_groups.py +0 -0
  444. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/location_management.py +0 -0
  445. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/location_template.py +0 -0
  446. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/account_groups.py +0 -0
  447. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/activation.py +0 -0
  448. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/admin_roles.py +0 -0
  449. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/admin_users.py +0 -0
  450. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/api_keys.py +0 -0
  451. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/common.py +0 -0
  452. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/discovery_service.py +0 -0
  453. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ec_group_vm.py +0 -0
  454. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ecgroup.py +0 -0
  455. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  456. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  457. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ip_groups.py +0 -0
  458. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/ip_source_groups.py +0 -0
  459. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/location_management.py +0 -0
  460. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/location_templates.py +0 -0
  461. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/nw_service.py +0 -0
  462. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/nw_service_groups.py +0 -0
  463. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/provisioning_url.py +0 -0
  464. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/public_cloud_info.py +0 -0
  465. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  466. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/models/zpa_resources.py +0 -0
  467. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/nw_service.py +0 -0
  468. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/nw_service_groups.py +0 -0
  469. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/provisioning_url.py +0 -0
  470. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/ztw/public_cloud_info.py +0 -0
  471. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/__init__.py +0 -0
  472. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/audit_logs.py +0 -0
  473. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/dlp_incidents.py +0 -0
  474. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/legacy.py +0 -0
  475. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/audit_logs.py +0 -0
  476. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/change_history.py +0 -0
  477. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/common.py +0 -0
  478. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/generated_tickets.py +0 -0
  479. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_details.py +0 -0
  480. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_evidence.py +0 -0
  481. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_group_search.py +0 -0
  482. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_search.py +0 -0
  483. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/models/incident_trigger.py +0 -0
  484. {zscaler_sdk_python-1.9.10 → zscaler_sdk_python-1.9.12}/zscaler/zwa/zwa_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zscaler-sdk-python
3
- Version: 1.9.10
3
+ Version: 1.9.12
4
4
  Summary: Official Python SDK for the Zscaler Products
5
5
  Home-page: https://github.com/zscaler/zscaler-sdk-python
6
6
  License: MIT
@@ -20,17 +20,19 @@ Classifier: Programming Language :: Python :: 3.9
20
20
  Classifier: Topic :: Security
21
21
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
22
  Provides-Extra: dev
23
+ Requires-Dist: PyJWT (>=2.10.1)
23
24
  Requires-Dist: aenum (>=3.1.11)
24
25
  Requires-Dist: arrow (>=1.3.0)
25
26
  Requires-Dist: cryptography (>=45.0.2)
26
27
  Requires-Dist: flatdict (>=4.0.0)
28
+ Requires-Dist: jwcrypto (>=1.5.6)
27
29
  Requires-Dist: pydash (>=8.0.3)
28
30
  Requires-Dist: python-box (>=7.3.0)
29
31
  Requires-Dist: python-dateutil (>=2.9.0)
30
- Requires-Dist: python-jose[cryptography] (>=3.5.0)
31
32
  Requires-Dist: pytz (>=2024.2)
32
33
  Requires-Dist: pyyaml (>=6.0.0)
33
34
  Requires-Dist: requests (>=2.32.3)
35
+ Requires-Dist: urllib3 (>=2.6.0)
34
36
  Project-URL: Bug Tracker, https://github.com/zscaler/zscaler-sdk-python/issues
35
37
  Project-URL: Documentation, https://zscaler-sdk-python.readthedocs.io
36
38
  Project-URL: Repository, https://github.com/zscaler/zscaler-sdk-python
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zscaler-sdk-python"
3
- version = "1.9.10"
3
+ version = "1.9.12"
4
4
  description = "Official Python SDK for the Zscaler Products"
5
5
  authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
6
6
  license = "MIT"
@@ -30,13 +30,15 @@ packages = [
30
30
  [tool.poetry.dependencies]
31
31
  python = ">=3.9.2,<4.0"
32
32
  requests = ">=2.32.3"
33
+ urllib3 = ">=2.6.0"
33
34
  cryptography = ">=45.0.2"
34
35
  pyyaml = ">=6.0.0"
35
36
  pytz = ">=2024.2"
36
37
  python-box = ">=7.3.0"
37
38
  python-dateutil = ">=2.9.0"
38
39
  flatdict = ">=4.0.0"
39
- python-jose = {extras = ["cryptography"], version = ">=3.5.0"}
40
+ PyJWT = ">=2.10.1"
41
+ jwcrypto = ">=1.5.6"
40
42
  aenum = ">=3.1.11"
41
43
  pydash = ">=8.0.3"
42
44
  arrow = ">=1.3.0"
@@ -50,7 +52,7 @@ pytest-mock = ">=3.12.0"
50
52
  pytest-asyncio = ">=0.23.0"
51
53
  pytest-cov = ">=6.2.1"
52
54
  pytest-recording = ">=0.13.1"
53
- vcrpy = ">=7.0.0" # Requires 7.0+ for urllib3 2.x support on Python 3.10+
55
+ vcrpy = {version = ">=8.1.0", python = ">=3.10"}
54
56
  pyfakefs = ">=5.7.0"
55
57
  responses = ">=0.25.7"
56
58
  sphinx = ">=7.2.0"
@@ -59,7 +61,7 @@ sphinx_rtd_theme = ">=1.3.0"
59
61
  wheel = ">=0.42.0"
60
62
 
61
63
  [tool.poetry.extras]
62
- dev = ["black", "pytest", "pytest-asyncio", "pytest-mock", "pytest-recording", "pytest-cov", "pyfakefs", "vcrpy", "isort", "wheel"]
64
+ dev = ["black", "pytest", "pytest-asyncio", "pytest-mock", "pytest-recording", "pytest-cov", "pyfakefs", "isort", "wheel"]
63
65
 
64
66
  [build-system]
65
67
  requires = ["poetry-core>=1.0.0"]
@@ -85,3 +87,24 @@ max-line-length = 127
85
87
 
86
88
  [tool.isort]
87
89
  profile = "black"
90
+
91
+ [tool.coverage.run]
92
+ omit = [
93
+ "*/models/*",
94
+ "zscaler/*/models/*",
95
+ "tests/*",
96
+ "*/__init__.py",
97
+ ]
98
+
99
+ [tool.coverage.report]
100
+ omit = [
101
+ "*/models/*",
102
+ "zscaler/*/models/*",
103
+ "tests/*",
104
+ "*/__init__.py",
105
+ ]
106
+ exclude_lines = [
107
+ "pragma: no cover",
108
+ "def __repr__",
109
+ "raise NotImplementedError",
110
+ ]
@@ -29,7 +29,7 @@ __license__ = "MIT"
29
29
  __contributors__ = [
30
30
  "William Guilherme",
31
31
  ]
32
- __version__ = "1.9.10"
32
+ __version__ = "1.9.12"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -3,11 +3,15 @@ import logging
3
3
  import json
4
4
  import os
5
5
  import requests
6
- from jose import jwt
7
6
  import time
8
7
  from cryptography.hazmat.backends import default_backend
9
8
  from cryptography.hazmat.primitives import serialization
10
9
  from cryptography.hazmat.primitives.asymmetric import rsa
10
+
11
+ # JWT handling - using PyJWT instead of python-jose to avoid ecdsa dependency (CVE-2024-23342)
12
+ import jwt as pyjwt
13
+ from jwcrypto.jwk import JWK
14
+
11
15
  from zscaler.user_agent import UserAgent
12
16
  from zscaler.oneapi_http_client import HTTPClient
13
17
  from zscaler.errors.response_checker import check_response_for_error
@@ -335,9 +339,15 @@ class OAuth:
335
339
  private_key_obj: Union[rsa.RSAPrivateKey, Any]
336
340
  if private_key.strip().startswith("{"):
337
341
  # **JWK JSON Format**
342
+ # Using jwcrypto instead of python-jose to avoid ecdsa dependency (CVE-2024-23342)
338
343
  logging.info("Using JWK JSON format for private key.")
339
344
  jwk_key: Dict[str, Any] = json.loads(private_key.strip()) # Convert JWK string to dict
340
- private_key_obj = jwt.algorithms.RSAAlgorithm.from_jwk(json.dumps(jwk_key))
345
+ # Convert JWK to PEM using jwcrypto, then load with cryptography
346
+ jwk_obj = JWK.from_json(json.dumps(jwk_key))
347
+ pem_bytes = jwk_obj.export_to_pem(private_key=True, password=None)
348
+ private_key_obj = serialization.load_pem_private_key(
349
+ pem_bytes, password=None, backend=default_backend()
350
+ )
341
351
 
342
352
  elif "BEGIN PRIVATE KEY" in private_key:
343
353
  # **Raw PEM Private Key**
@@ -365,7 +375,8 @@ class OAuth:
365
375
  }
366
376
 
367
377
  # **Generate the JWT assertion using the private key**
368
- assertion: str = jwt.encode(payload, private_key_obj, algorithm="RS256")
378
+ # Using PyJWT instead of python-jose to avoid ecdsa dependency (CVE-2024-23342)
379
+ assertion: str = pyjwt.encode(payload, private_key_obj, algorithm="RS256")
369
380
 
370
381
  # **Step 3: Prepare OAuth Request**
371
382
  form_data: Dict[str, str] = {
@@ -91,6 +91,7 @@ reformat_params = [
91
91
  ("entity_group_ids", "entityGroups"),
92
92
  ("scope_entity_ids", "adminScopeScopeEntities"),
93
93
  ("supported_region_ids", "supportedRegions"),
94
+ ("src_workload_groups_ids", "srcWorkloadGroups"),
94
95
  ]
95
96
 
96
97
 
@@ -0,0 +1,86 @@
1
+ """
2
+ Copyright (c) 2023, Zscaler Inc.
3
+
4
+ Permission to use, copy, modify, and/or distribute this software for any
5
+ purpose with or without fee is hereby granted, provided that the above
6
+ copyright notice and this permission notice appear in all copies.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
+ """
16
+
17
+ from typing import Dict, List, Optional, Any, Union
18
+ from zscaler.oneapi_object import ZscalerObject
19
+ from zscaler.oneapi_collection import ZscalerCollection
20
+ from zscaler.zia.models import common
21
+
22
+
23
+ class BehavioralAnalysisAdvancedSettings(ZscalerObject):
24
+ """
25
+ A class for Behavioral Analysis Advanced Settings objects.
26
+ """
27
+
28
+ def __init__(self, config: Optional[Dict[str, Any]] = None) -> None:
29
+ """
30
+ Initialize the Behavioral Analysis Advanced Settings model based on API response.
31
+
32
+ Args:
33
+ config (dict): A dictionary representing the configuration.
34
+ """
35
+ super().__init__(config)
36
+
37
+ if config:
38
+ self.md5_hash_value_list = ZscalerCollection.form_list(
39
+ config["md5HashValueList"] if "md5HashValueList" in config else [], MD5HashValueList
40
+ )
41
+ else:
42
+ self.md5_hash_value_list = []
43
+
44
+ def request_format(self) -> Dict[str, Any]:
45
+ """
46
+ Return the object as a dictionary in the format expected for API requests.
47
+ """
48
+ parent_req_format = super().request_format()
49
+ current_obj_format = {
50
+ "md5HashValueList": self.md5_hash_value_list,
51
+ }
52
+ parent_req_format.update(current_obj_format)
53
+ return parent_req_format
54
+
55
+
56
+ class MD5HashValueList(ZscalerObject):
57
+ """
58
+ A class for MD5 Hash Value List objects.
59
+ """
60
+
61
+ def __init__(self, config: Optional[Dict[str, Any]] = None) -> None:
62
+ """
63
+ Initialize the MD5 Hash Value List model based on API response.
64
+ """
65
+ super().__init__(config)
66
+ if config:
67
+ self.url = config["url"] if "url" in config else None
68
+ self.url_comment = config["urlComment"] if "urlComment" in config else None
69
+ self.type = config["type"] if "type" in config else None
70
+ else:
71
+ self.url = None
72
+ self.url_comment = None
73
+ self.type = None
74
+
75
+ def request_format(self) -> Dict[str, Any]:
76
+ """
77
+ Return the object as a dictionary in the format expected for API requests.
78
+ """
79
+ parent_req_format = super().request_format()
80
+ current_obj_format = {
81
+ "url": self.url,
82
+ "urlComment": self.url_comment,
83
+ "type": self.type,
84
+ }
85
+ parent_req_format.update(current_obj_format)
86
+ return parent_req_format
@@ -19,10 +19,12 @@ import mimetypes
19
19
  import time
20
20
  from zscaler.request_executor import RequestExecutor
21
21
  from zscaler.utils import format_url
22
+ from zscaler.api_client import APIClient
22
23
  from zscaler.types import APIResult
24
+ from zscaler.zia.models.sandbox import BehavioralAnalysisAdvancedSettings
23
25
 
24
26
 
25
- class CloudSandboxAPI:
27
+ class CloudSandboxAPI(APIClient):
26
28
  """
27
29
  A Client object for the Cloud Sandbox resource.
28
30
  """
@@ -31,6 +33,7 @@ class CloudSandboxAPI:
31
33
  _zia_base_endpoint = "/zia/api/v1"
32
34
 
33
35
  def __init__(self, request_executor: "RequestExecutor") -> None:
36
+ super().__init__()
34
37
  self._request_executor: RequestExecutor = request_executor
35
38
 
36
39
  def submit_file(self, file_path: str, force: bool = False) -> APIResult[dict]:
@@ -268,10 +271,9 @@ class CloudSandboxAPI:
268
271
  return (None, response, error)
269
272
 
270
273
  try:
271
- result = response.get_body()
274
+ result = BehavioralAnalysisAdvancedSettings(self.form_response_body(response.get_body()))
272
275
  except Exception as error:
273
276
  return (None, response, error)
274
-
275
277
  return (result, response, None)
276
278
 
277
279
  def get_file_hash_count(self) -> APIResult[dict]:
@@ -314,16 +316,37 @@ class CloudSandboxAPI:
314
316
 
315
317
  return (result, response, None)
316
318
 
317
- def add_hash_to_custom_list(self, file_hashes_to_be_blocked: list) -> APIResult[dict]:
319
+ def add_hash_to_custom_list(
320
+ self,
321
+ md5_hash_value_list: List[Dict[str, str]],
322
+ ) -> APIResult[BehavioralAnalysisAdvancedSettings]:
318
323
  """
319
324
  Updates the custom list of MD5 file hashes that are blocked by Sandbox.
320
325
 
321
326
  Args:
322
- file_hashes_to_be_blocked (:obj:`list` of :obj:`str`):
323
- The list of MD5 Hashes to be added. Pass an empty list to clear the blocklist.
327
+ md5_hash_value_list (list[dict]): A list of MD5 hash entries to be blocked.
328
+ Each entry should be a dictionary with the following keys:
329
+ - url (str): The MD5 hash value.
330
+ - urlComment (str): A comment describing the hash.
331
+ - type (str): The type of threat, e.g., "MALWARE".
332
+ Pass an empty list to clear the blocklist.
324
333
 
325
334
  Returns:
326
- tuple: A tuple containing the result, response, and error.
335
+ tuple: A tuple containing (BehavioralAnalysisAdvancedSettings, Response, error).
336
+
337
+ Examples:
338
+ Add MD5 hashes to the sandbox blocklist:
339
+
340
+ >>> hash_list = [
341
+ ... {
342
+ ... "url": "42914d6d213a20a2684064be5c80ffa9",
343
+ ... "urlComment": "Malicious file detected",
344
+ ... "type": "MALWARE"
345
+ ... }
346
+ ... ]
347
+ >>> result, response, error = client.zia.sandbox.add_hash_to_custom_list(
348
+ ... md5_hash_value_list=hash_list
349
+ ... )
327
350
  """
328
351
  http_method = "put".upper()
329
352
  api_url = format_url(
@@ -333,7 +356,7 @@ class CloudSandboxAPI:
333
356
  """
334
357
  )
335
358
 
336
- payload = {"fileHashesToBeBlocked": file_hashes_to_be_blocked}
359
+ payload = {"md5HashValueList": md5_hash_value_list}
337
360
 
338
361
  request, error = self._request_executor.create_request(method=http_method, endpoint=api_url, body=payload)
339
362
 
@@ -344,5 +367,10 @@ class CloudSandboxAPI:
344
367
 
345
368
  if error:
346
369
  return (None, response, error)
347
- time.sleep(2)
348
- return self.get_behavioral_analysis()
370
+
371
+ try:
372
+ result = BehavioralAnalysisAdvancedSettings(self.form_response_body(response.get_body()))
373
+ except Exception as error:
374
+ return (None, response, error)
375
+
376
+ return (result, response, None)
@@ -62,11 +62,18 @@ class URLFilteringAPI(APIClient):
62
62
  query_params {dict}: Map of query parameters for the request.
63
63
  ``[query_params.search]`` {str}: Search string for filtering results by rule name.
64
64
 
65
+ ``[query_params.page]`` (int): Specifies the page offset.
66
+
67
+ ``[query_params.page_size]`` (int): Specifies the page size.
68
+ The default size is 100, but the maximum size is 100.
69
+
65
70
  Returns:
66
71
  tuple: A tuple containing (list of url filtering rules instances, Response, error)
67
72
 
68
73
  Examples:
69
- >>> rules_list, _, error = client.zia.url_filtering.list_rules()
74
+ >>> rules_list, _, error = client.zia.url_filtering.list_rules(
75
+ ... query_params={'page': 1, 'page_size': 10}
76
+ )
70
77
  >>> if error:
71
78
  ... print(f"Error listing url filtering rules: {error}")
72
79
  ... return
@@ -84,31 +91,26 @@ class URLFilteringAPI(APIClient):
84
91
 
85
92
  query_params = query_params or {}
86
93
 
87
- local_search = query_params.pop("search", None)
88
-
89
94
  body = {}
90
95
  headers = {}
91
96
 
92
97
  request, error = self._request_executor.create_request(http_method, api_url, body, headers, params=query_params)
98
+
93
99
  if error:
94
100
  return (None, None, error)
95
101
 
96
102
  response, error = self._request_executor.execute(request)
103
+
97
104
  if error:
98
105
  return (None, response, error)
99
106
 
100
107
  try:
101
- results = []
108
+ result = []
102
109
  for item in response.get_results():
103
- results.append(URLFilteringRule(self.form_response_body(item)))
104
- except Exception as exc:
105
- return (None, response, exc)
106
-
107
- if local_search:
108
- lower_search = local_search.lower()
109
- results = [r for r in results if lower_search in (r.name.lower() if r.name else "")]
110
-
111
- return (results, response, None)
110
+ result.append(URLFilteringRule(self.form_response_body(item)))
111
+ except Exception as error:
112
+ return (None, response, error)
113
+ return (result, response, None)
112
114
 
113
115
  def get_rule(
114
116
  self,
@@ -14,11 +14,12 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
14
  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
15
  """
16
16
 
17
- from typing import Optional, List
17
+ from typing import Optional, List, Tuple, Any, Dict
18
18
 
19
19
  from zscaler.api_client import APIClient
20
20
  from zscaler.request_executor import RequestExecutor
21
21
  from zscaler.utils import format_url
22
+ from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
22
23
 
23
24
 
24
25
  class CyberSecurityAPI(APIClient):
@@ -37,6 +38,30 @@ class CyberSecurityAPI(APIClient):
37
38
  super().__init__()
38
39
  self._request_executor = request_executor
39
40
 
41
+ def _extract_graphql_response(
42
+ self,
43
+ response,
44
+ api_url: str,
45
+ domain: str,
46
+ field: str,
47
+ ) -> Tuple[Optional[List[Dict[str, Any]]], Any, Optional[Exception]]:
48
+ """Extract data from GraphQL response and handle errors."""
49
+ try:
50
+ body = response.get_body() if response else {}
51
+ if is_graphql_error_response(body):
52
+ error = GraphQLAPIError(
53
+ url=api_url,
54
+ response_details=response._response,
55
+ response_body=body,
56
+ service_type="zins"
57
+ )
58
+ return (None, response, error)
59
+ data = body.get("data", {}) if isinstance(body, dict) else {}
60
+ entries = data.get(domain, {}).get(field, {}).get("entries", [])
61
+ return (entries, response, None)
62
+ except Exception as ex:
63
+ return (None, response, ex)
64
+
40
65
  def get_incidents(
41
66
  self,
42
67
  start_time: int,
@@ -124,14 +149,7 @@ class CyberSecurityAPI(APIClient):
124
149
  if error:
125
150
  return (None, response, error)
126
151
 
127
- try:
128
- body = response.get_body() if response else {}
129
- # GraphQL responses have data wrapped in "data" key
130
- data = body.get("data", {}) if isinstance(body, dict) else {}
131
- entries = data.get("CYBER_SECURITY", {}).get("incidents", {}).get("entries", [])
132
- return (entries, response, None)
133
- except Exception as ex:
134
- return (None, response, ex)
152
+ return self._extract_graphql_response(response, api_url, "CYBER_SECURITY", "incidents")
135
153
 
136
154
  def get_incidents_by_location(
137
155
  self,
@@ -210,11 +228,4 @@ class CyberSecurityAPI(APIClient):
210
228
  if error:
211
229
  return (None, response, error)
212
230
 
213
- try:
214
- body = response.get_body() if response else {}
215
- # GraphQL responses have data wrapped in "data" key
216
- data = body.get("data", {}) if isinstance(body, dict) else {}
217
- entries = data.get("CYBER_SECURITY", {}).get("cyber_security_location", {}).get("entries", [])
218
- return (entries, response, None)
219
- except Exception as ex:
220
- return (None, response, ex)
231
+ return self._extract_graphql_response(response, api_url, "CYBER_SECURITY", "cyber_security_location")
@@ -14,12 +14,13 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
14
  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
15
  """
16
16
 
17
- from typing import Optional, List
17
+ from typing import Optional, List, Tuple, Any, Dict
18
18
 
19
19
  from zscaler.api_client import APIClient
20
20
  from zscaler.request_executor import RequestExecutor
21
21
  from zscaler.utils import format_url
22
22
  from zscaler.zinsights.models.inputs import FirewallEntriesFilterBy, FirewallEntryOrderBy
23
+ from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
23
24
 
24
25
 
25
26
  class FirewallAPI(APIClient):
@@ -38,6 +39,30 @@ class FirewallAPI(APIClient):
38
39
  super().__init__()
39
40
  self._request_executor = request_executor
40
41
 
42
+ def _extract_graphql_response(
43
+ self,
44
+ response,
45
+ api_url: str,
46
+ domain: str,
47
+ field: str,
48
+ ) -> Tuple[Optional[List[Dict[str, Any]]], Any, Optional[Exception]]:
49
+ """Extract data from GraphQL response and handle errors."""
50
+ try:
51
+ body = response.get_body() if response else {}
52
+ if is_graphql_error_response(body):
53
+ error = GraphQLAPIError(
54
+ url=api_url,
55
+ response_details=response._response,
56
+ response_body=body,
57
+ service_type="zins"
58
+ )
59
+ return (None, response, error)
60
+ data = body.get("data", {}) if isinstance(body, dict) else {}
61
+ entries = data.get(domain, {}).get(field, {}).get("entries", [])
62
+ return (entries, response, None)
63
+ except Exception as ex:
64
+ return (None, response, ex)
65
+
41
66
  def get_traffic_by_action(
42
67
  self,
43
68
  start_time: int,
@@ -108,14 +133,7 @@ class FirewallAPI(APIClient):
108
133
  if error:
109
134
  return (None, response, error)
110
135
 
111
- try:
112
- body = response.get_body() if response else {}
113
- # GraphQL responses have data wrapped in "data" key
114
- data = body.get("data", {}) if isinstance(body, dict) else {}
115
- entries = data.get("ZERO_TRUST_FIREWALL", {}).get("action", {}).get("entries", [])
116
- return (entries, response, None)
117
- except Exception as ex:
118
- return (None, response, ex)
136
+ return self._extract_graphql_response(response, api_url, "ZERO_TRUST_FIREWALL", "action")
119
137
 
120
138
  def get_traffic_by_location(
121
139
  self,
@@ -209,14 +227,7 @@ class FirewallAPI(APIClient):
209
227
  if error:
210
228
  return (None, response, error)
211
229
 
212
- try:
213
- body = response.get_body() if response else {}
214
- # GraphQL responses have data wrapped in "data" key
215
- data = body.get("data", {}) if isinstance(body, dict) else {}
216
- entries = data.get("ZERO_TRUST_FIREWALL", {}).get("location_firewall", {}).get("entries", [])
217
- return (entries, response, None)
218
- except Exception as ex:
219
- return (None, response, ex)
230
+ return self._extract_graphql_response(response, api_url, "ZERO_TRUST_FIREWALL", "location_firewall")
220
231
 
221
232
  def get_network_services(
222
233
  self,
@@ -281,11 +292,4 @@ class FirewallAPI(APIClient):
281
292
  if error:
282
293
  return (None, response, error)
283
294
 
284
- try:
285
- body = response.get_body() if response else {}
286
- # GraphQL responses have data wrapped in "data" key
287
- data = body.get("data", {}) if isinstance(body, dict) else {}
288
- entries = data.get("ZERO_TRUST_FIREWALL", {}).get("network_service", {}).get("entries", [])
289
- return (entries, response, None)
290
- except Exception as ex:
291
- return (None, response, ex)
295
+ return self._extract_graphql_response(response, api_url, "ZERO_TRUST_FIREWALL", "network_service")
@@ -14,12 +14,13 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
14
  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
15
  """
16
16
 
17
- from typing import Optional, List
17
+ from typing import Optional, List, Tuple, Any, Dict
18
18
 
19
19
  from zscaler.api_client import APIClient
20
20
  from zscaler.request_executor import RequestExecutor
21
21
  from zscaler.utils import format_url
22
22
  from zscaler.zinsights.models.inputs import IoTDeviceFilterBy, IoTDeviceOrderBy
23
+ from zscaler.errors.graphql_error import is_graphql_error_response, GraphQLAPIError
23
24
 
24
25
 
25
26
  class IotAPI(APIClient):
@@ -127,6 +128,17 @@ class IotAPI(APIClient):
127
128
 
128
129
  try:
129
130
  body = response.get_body() if response else {}
131
+
132
+ # Check for GraphQL errors in the response
133
+ if is_graphql_error_response(body):
134
+ error = GraphQLAPIError(
135
+ url=api_url,
136
+ response_details=response._response,
137
+ response_body=body,
138
+ service_type="zins"
139
+ )
140
+ return (None, response, error)
141
+
130
142
  # GraphQL responses have data wrapped in "data" key
131
143
  data = body.get("data", {}) if isinstance(body, dict) else {}
132
144
  device_stats = data.get("IOT", {}).get("device_stats", {})
@@ -271,46 +271,6 @@ class FirewallReportEntry(ZscalerObject):
271
271
  return parent_req_format
272
272
 
273
273
 
274
- class RiskScoreEvent(ZscalerObject):
275
- """
276
- A risk score event entry.
277
-
278
- Attributes:
279
- time_stamp: The timestamp in epoch milliseconds.
280
- threats_blocked_count: Number of threats blocked.
281
- suspicious_activity_count: Number of suspicious activities.
282
- active_infection_count: Number of active infections.
283
- score: The calculated risk score.
284
- """
285
-
286
- def __init__(self, config: Optional[Dict[str, Any]] = None) -> None:
287
- super().__init__(config)
288
- if config:
289
- self.time_stamp: Optional[int] = config.get("time_stamp")
290
- self.threats_blocked_count: Optional[int] = config.get("threats_blocked_count")
291
- self.suspicious_activity_count: Optional[int] = config.get("suspicious_activity_count")
292
- self.active_infection_count: Optional[int] = config.get("active_infection_count")
293
- self.score: Optional[int] = config.get("score")
294
- else:
295
- self.time_stamp = None
296
- self.threats_blocked_count = None
297
- self.suspicious_activity_count = None
298
- self.active_infection_count = None
299
- self.score = None
300
-
301
- def request_format(self) -> Dict[str, Any]:
302
- parent_req_format = super().request_format()
303
- current_obj_format = {
304
- "time_stamp": self.time_stamp,
305
- "threats_blocked_count": self.threats_blocked_count,
306
- "suspicious_activity_count": self.suspicious_activity_count,
307
- "active_infection_count": self.active_infection_count,
308
- "score": self.score,
309
- }
310
- parent_req_format.update(current_obj_format)
311
- return parent_req_format
312
-
313
-
314
274
  # Export all common types
315
275
  __all__ = [
316
276
  "WebReportEntry",
@@ -321,5 +281,4 @@ __all__ = [
321
281
  "IoTDeviceStat",
322
282
  "ShadowITApp",
323
283
  "FirewallReportEntry",
324
- "RiskScoreEvent",
325
284
  ]