zscaler-sdk-python 1.2.0__tar.gz → 1.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/PKG-INFO +1 -1
  2. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/pyproject.toml +1 -1
  3. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/__init__.py +1 -1
  4. zscaler_sdk_python-1.2.1/zscaler/logger.py +124 -0
  5. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_object.py +7 -21
  6. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_response.py +134 -29
  7. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/bandwidth_classes.py +13 -7
  8. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/legacy.py +10 -13
  9. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/application_segment.py +1 -1
  10. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/legacy.py +2 -2
  11. zscaler_sdk_python-1.2.0/zscaler/logger.py +0 -181
  12. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/LICENSE.md +0 -0
  13. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/README.md +0 -0
  14. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/api_client.py +0 -0
  15. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/cache/__init__.py +0 -0
  16. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/cache/cache.py +0 -0
  17. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/cache/no_op_cache.py +0 -0
  18. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/cache/zscaler_cache.py +0 -0
  19. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/config/__init__.py +0 -0
  20. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/config/config_setter.py +0 -0
  21. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/config/config_validator.py +0 -0
  22. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/constants.py +0 -0
  23. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/error_messages.py +0 -0
  24. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/errors/__init__.py +0 -0
  25. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/errors/error.py +0 -0
  26. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/errors/http_error.py +0 -0
  27. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/errors/zscaler_api_error.py +0 -0
  28. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/exceptions/__init__.py +0 -0
  29. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/exceptions/exceptions.py +0 -0
  30. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/helpers.py +0 -0
  31. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_client.py +0 -0
  32. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_collection.py +0 -0
  33. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_http_client.py +0 -0
  34. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_oauth_client.py +0 -0
  35. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ratelimiter/__init__.py +0 -0
  36. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ratelimiter/ratelimiter.py +0 -0
  37. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/request_executor.py +0 -0
  38. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/user_agent.py +0 -0
  39. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/utils.py +0 -0
  40. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/__init__.py +0 -0
  41. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/admin_user.py +0 -0
  42. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/company.py +0 -0
  43. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/devices.py +0 -0
  44. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/entitlements.py +0 -0
  45. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/fail_open_policy.py +0 -0
  46. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/forwarding_profile.py +0 -0
  47. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/legacy.py +0 -0
  48. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/manage_pass.py +0 -0
  49. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/admin_roles.py +0 -0
  50. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/admin_user.py +0 -0
  51. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/devices.py +0 -0
  52. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/failopenpolicy.py +0 -0
  53. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/forwardingprofile.py +0 -0
  54. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/manage_pass.py +0 -0
  55. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/secrets_otp.py +0 -0
  56. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/secrets_passwords.py +0 -0
  57. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/trustednetworks.py +0 -0
  58. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/webappservice.py +0 -0
  59. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/webpolicy.py +0 -0
  60. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/webprivacy.py +0 -0
  61. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  62. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  63. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/secrets.py +0 -0
  64. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/trusted_networks.py +0 -0
  65. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/web_app_service.py +0 -0
  66. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/web_policy.py +0 -0
  67. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/web_privacy.py +0 -0
  68. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/zcc_service.py +0 -0
  69. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/__init__.py +0 -0
  70. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/admin.py +0 -0
  71. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/alerts.py +0 -0
  72. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/apps.py +0 -0
  73. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/devices.py +0 -0
  74. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/inventory.py +0 -0
  75. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/legacy.py +0 -0
  76. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/activeapplications.py +0 -0
  77. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/administration.py +0 -0
  78. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/alerts.py +0 -0
  79. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/application_users.py +0 -0
  80. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/applications.py +0 -0
  81. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  82. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/common.py +0 -0
  83. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/devices.py +0 -0
  84. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/software_inventory.py +0 -0
  85. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/troubleshooting.py +0 -0
  86. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/users.py +0 -0
  87. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/troubleshooting.py +0 -0
  88. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/users.py +0 -0
  89. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/zdx_service.py +0 -0
  90. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/__init__.py +0 -0
  91. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/activate.py +0 -0
  92. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/admin_roles.py +0 -0
  93. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/admin_users.py +0 -0
  94. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/advanced_settings.py +0 -0
  95. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/alert_subscriptions.py +0 -0
  96. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/apptotal.py +0 -0
  97. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/atp_policy.py +0 -0
  98. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/audit_logs.py +0 -0
  99. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/authentication_settings.py +0 -0
  100. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/bandwidth_control_rules.py +0 -0
  101. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_app_instances.py +0 -0
  102. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_applications.py +0 -0
  103. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_apps.py +0 -0
  104. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_browser_isolation.py +0 -0
  105. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_firewall.py +0 -0
  106. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_firewall_dns.py +0 -0
  107. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_firewall_ips.py +0 -0
  108. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_firewall_rules.py +0 -0
  109. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_nss.py +0 -0
  110. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloudappcontrol.py +0 -0
  111. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dedicated_ip_gateways.py +0 -0
  112. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/device_management.py +0 -0
  113. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_dictionary.py +0 -0
  114. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_engine.py +0 -0
  115. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_resources.py +0 -0
  116. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_templates.py +0 -0
  117. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_web_rules.py +0 -0
  118. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dns_gatways.py +0 -0
  119. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/end_user_notification.py +0 -0
  120. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/file_type_control_rule.py +0 -0
  121. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/forwarding_control.py +0 -0
  122. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/ftp_control_policy.py +0 -0
  123. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/gre_tunnel.py +0 -0
  124. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/intermediate_certificates.py +0 -0
  125. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/iot_report.py +0 -0
  126. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/ipv6_config.py +0 -0
  127. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/locations.py +0 -0
  128. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/malware_protection_policy.py +0 -0
  129. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/mobile_threat_settings.py +0 -0
  130. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/__init__.py +0 -0
  131. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/activation.py +0 -0
  132. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/admin_roles.py +0 -0
  133. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/admin_users.py +0 -0
  134. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/advanced_settings.py +0 -0
  135. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  136. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/alert_subscriptions.py +0 -0
  137. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/apptotal.py +0 -0
  138. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/authentication_settings.py +0 -0
  139. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/bandwidth_classes.py +0 -0
  140. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
  141. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_app_instances.py +0 -0
  142. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_app_policy.py +0 -0
  143. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  144. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  145. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  146. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  147. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  148. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  149. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  150. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  151. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  152. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
  153. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  154. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  155. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_nss.py +0 -0
  156. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloudappcontrol.py +0 -0
  157. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/common.py +0 -0
  158. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
  159. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/device_groups.py +0 -0
  160. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/devices.py +0 -0
  161. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_dictionary.py +0 -0
  162. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_engine.py +0 -0
  163. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_resources.py +0 -0
  164. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_templates.py +0 -0
  165. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_web_rules.py +0 -0
  166. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dns_gatways.py +0 -0
  167. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/endusernotification.py +0 -0
  168. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/filetyperules.py +0 -0
  169. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  170. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/ftp_control_policy.py +0 -0
  171. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/gre_recommended_list.py +0 -0
  172. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  173. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/gre_tunnels.py +0 -0
  174. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/gre_vips.py +0 -0
  175. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/intermediate_certificates.py +0 -0
  176. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/iotreport.py +0 -0
  177. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/ipv6_config.py +0 -0
  178. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/location_group.py +0 -0
  179. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/location_management.py +0 -0
  180. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/malware_protection_settings.py +0 -0
  181. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/mobile_threat_settings.py +0 -0
  182. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/nat_control_policy.py +0 -0
  183. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/nss_servers.py +0 -0
  184. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/organization_information.py +0 -0
  185. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/pac_files.py +0 -0
  186. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/proxies.py +0 -0
  187. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/proxy_gatways.py +0 -0
  188. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/remoteassistance.py +0 -0
  189. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/risk_profiles.py +0 -0
  190. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/rule_labels.py +0 -0
  191. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/sandboxrules.py +0 -0
  192. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/security_policy_settings.py +0 -0
  193. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/shadow_it_report.py +0 -0
  194. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  195. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/subclouds.py +0 -0
  196. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/system_audit.py +0 -0
  197. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
  198. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/time_intervals.py +0 -0
  199. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_datacenters.py +0 -0
  200. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
  201. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_extranet.py +0 -0
  202. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_static_ip.py +0 -0
  203. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  204. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  205. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/url_filtering_rules.py +0 -0
  206. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/urlcategory.py +0 -0
  207. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/user_management.py +0 -0
  208. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/workload_groups.py +0 -0
  209. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/zpa_gateway.py +0 -0
  210. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/nat_control_policy.py +0 -0
  211. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/nss_servers.py +0 -0
  212. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/organization_information.py +0 -0
  213. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/pac_files.py +0 -0
  214. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/policy_export.py +0 -0
  215. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/proxies.py +0 -0
  216. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/remote_assistance.py +0 -0
  217. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/risk_profiles.py +0 -0
  218. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/rule_labels.py +0 -0
  219. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/sandbox.py +0 -0
  220. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/sandbox_rules.py +0 -0
  221. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/security_policy_settings.py +0 -0
  222. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/ssl_inspection_rules.py +0 -0
  223. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/sub_clouds.py +0 -0
  224. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/system_audit.py +0 -0
  225. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/tenancy_restriction_profile.py +0 -0
  226. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/time_intervals.py +0 -0
  227. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/traffic_datacenters.py +0 -0
  228. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/traffic_extranet.py +0 -0
  229. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/traffic_static_ip.py +0 -0
  230. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  231. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/url_categories.py +0 -0
  232. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/url_filtering.py +0 -0
  233. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/user_management.py +0 -0
  234. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/workload_groups.py +0 -0
  235. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/zia_service.py +0 -0
  236. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/zpa_gateway.py +0 -0
  237. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/__init__.py +0 -0
  238. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/administrator_controller.py +0 -0
  239. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_connector_groups.py +0 -0
  240. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_connector_schedule.py +0 -0
  241. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_connectors.py +0 -0
  242. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_protection.py +0 -0
  243. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_segment_by_type.py +0 -0
  244. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_segments_inspection.py +0 -0
  245. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_segments_pra.py +0 -0
  246. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_banner.py +0 -0
  247. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_certificate.py +0 -0
  248. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_profile.py +0 -0
  249. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_region.py +0 -0
  250. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  251. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/certificates.py +0 -0
  252. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/client_settings.py +0 -0
  253. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cloud_connector_groups.py +0 -0
  254. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/customer_controller.py +0 -0
  255. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/customer_version_profile.py +0 -0
  256. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/emergency_access.py +0 -0
  257. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/enrollment_certificates.py +0 -0
  258. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/idp.py +0 -0
  259. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/lss.py +0 -0
  260. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/machine_groups.py +0 -0
  261. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/microtenants.py +0 -0
  262. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/administrator_controller.py +0 -0
  263. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_connector_groups.py +0 -0
  264. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  265. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_connectors.py +0 -0
  266. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_protection.py +0 -0
  267. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  268. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/application_segment.py +0 -0
  269. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/application_segment_inspection.py +0 -0
  270. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/application_segment_pra.py +0 -0
  271. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/application_servers.py +0 -0
  272. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_banner.py +0 -0
  273. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_certificate.py +0 -0
  274. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_profile.py +0 -0
  275. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_region.py +0 -0
  276. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  277. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/certificates.py +0 -0
  278. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/client_settings.py +0 -0
  279. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  280. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/common.py +0 -0
  281. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/customer_controller.py +0 -0
  282. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/customer_version_profile.py +0 -0
  283. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/emergency_access.py +0 -0
  284. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  285. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/idp.py +0 -0
  286. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/lss.py +0 -0
  287. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/machine_groups.py +0 -0
  288. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/microtenants.py +0 -0
  289. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
  290. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
  291. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/posture_profiles.py +0 -0
  292. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_approval.py +0 -0
  293. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_console.py +0 -0
  294. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  295. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_credential.py +0 -0
  296. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_portal.py +0 -0
  297. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/provisioning_keys.py +0 -0
  298. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/role_controller.py +0 -0
  299. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/saml_attributes.py +0 -0
  300. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/scim_attributes.py +0 -0
  301. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/scim_groups.py +0 -0
  302. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/segment_group.py +0 -0
  303. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/server_group.py +0 -0
  304. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/service_edge_groups.py +0 -0
  305. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  306. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/service_edges.py +0 -0
  307. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/trusted_network.py +0 -0
  308. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/policies.py +0 -0
  309. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/posture_profiles.py +0 -0
  310. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_approval.py +0 -0
  311. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_console.py +0 -0
  312. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_credential.py +0 -0
  313. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_credential_pool.py +0 -0
  314. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_portal.py +0 -0
  315. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/provisioning.py +0 -0
  316. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/role_controller.py +0 -0
  317. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/saml_attributes.py +0 -0
  318. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/scim_attributes.py +0 -0
  319. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/scim_groups.py +0 -0
  320. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/segment_groups.py +0 -0
  321. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/server_groups.py +0 -0
  322. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/servers.py +0 -0
  323. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/service_edge_group.py +0 -0
  324. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/service_edge_schedule.py +0 -0
  325. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/service_edges.py +0 -0
  326. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/trusted_networks.py +0 -0
  327. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/zpa_service.py +0 -0
  328. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/__init__.py +0 -0
  329. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/account_details.py +0 -0
  330. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/activation.py +0 -0
  331. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/admin_roles.py +0 -0
  332. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/admin_users.py +0 -0
  333. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/api_keys.py +0 -0
  334. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ec_groups.py +0 -0
  335. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/forwarding_gateways.py +0 -0
  336. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/forwarding_rules.py +0 -0
  337. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ip_destination_groups.py +0 -0
  338. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ip_groups.py +0 -0
  339. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ip_source_groups.py +0 -0
  340. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/legacy.py +0 -0
  341. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/location_management.py +0 -0
  342. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/location_template.py +0 -0
  343. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/activation.py +0 -0
  344. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/admin_roles.py +0 -0
  345. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/admin_users.py +0 -0
  346. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/api_keys.py +0 -0
  347. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/common.py +0 -0
  348. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ec_group_vm.py +0 -0
  349. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ecgroup.py +0 -0
  350. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  351. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/forwarding_rules.py +0 -0
  352. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  353. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ip_groups.py +0 -0
  354. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ip_source_groups.py +0 -0
  355. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/location_management.py +0 -0
  356. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/location_templates.py +0 -0
  357. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/nw_service.py +0 -0
  358. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/nw_service_groups.py +0 -0
  359. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/provisioning_url.py +0 -0
  360. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  361. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/zpa_resources.py +0 -0
  362. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/nw_service.py +0 -0
  363. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/nw_service_groups.py +0 -0
  364. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/provisioning_url.py +0 -0
  365. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ztw_service.py +0 -0
  366. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/__init__.py +0 -0
  367. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/audit_logs.py +0 -0
  368. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/dlp_incidents.py +0 -0
  369. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/legacy.py +0 -0
  370. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/audit_logs.py +0 -0
  371. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/change_history.py +0 -0
  372. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/common.py +0 -0
  373. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/generated_tickets.py +0 -0
  374. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_details.py +0 -0
  375. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_evidence.py +0 -0
  376. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_group_search.py +0 -0
  377. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_search.py +0 -0
  378. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_trigger.py +0 -0
  379. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/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.2.0
3
+ Version: 1.2.1
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
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zscaler-sdk-python"
3
- version = "1.2.0"
3
+ version = "1.2.1"
4
4
  description = "Official Python SDK for the Zscaler Products"
5
5
  authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
6
6
  license = "MIT"
@@ -29,7 +29,7 @@ __license__ = "MIT"
29
29
  __contributors__ = [
30
30
  "William Guilherme",
31
31
  ]
32
- __version__ = "1.2.0"
32
+ __version__ = "1.2.1"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -0,0 +1,124 @@
1
+ import logging
2
+ import json as jsonp
3
+ import os
4
+ import time
5
+ from urllib.parse import urlencode
6
+ from http.client import HTTPConnection
7
+
8
+ LOG_FORMAT = "%(asctime)s - %(name)s - %(module)s - %(levelname)s - %(message)s"
9
+
10
+
11
+ def setup_logging(logger_name="zscaler-sdk-python", enabled=None, verbose=None):
12
+ """
13
+ Set up logging with specified level and logger name.
14
+ Log level is controlled via ZSCALER_SDK_VERBOSE environment variable.
15
+ Logging can be enabled/disabled via ZSCALER_SDK_LOG environment variable.
16
+
17
+ Parameters:
18
+ - logger_name (str, optional): Logger name. Defaults to "zscaler-sdk-python".
19
+ - enabled (bool, optional): Enable logging. Defaults to None, which uses the environment variable.
20
+ - verbose (bool, optional): Set verbose logging. Defaults to None, which uses the environment variable.
21
+ """
22
+ if enabled is None:
23
+ enabled = os.getenv("ZSCALER_SDK_LOG", "false").lower() == "true"
24
+
25
+ if not enabled:
26
+ # If logging is not enabled, set up a null handler
27
+ logging.disable(logging.INFO)
28
+ return
29
+
30
+ if verbose is None:
31
+ verbose = os.getenv("ZSCALER_SDK_VERBOSE", "false").lower() == "true"
32
+
33
+ log_level = logging.DEBUG if verbose else logging.INFO
34
+ HTTPConnection.debuglevel = 0
35
+ # Create a logger with the specified name
36
+ logger = logging.getLogger(logger_name)
37
+ default_logger = logging.getLogger()
38
+
39
+ # If the logger already has handlers, remove them to avoid duplicate logging
40
+ for handler in logger.handlers[:]:
41
+ logger.removeHandler(handler)
42
+
43
+ for handler in default_logger.handlers[:]:
44
+ default_logger.removeHandler(handler)
45
+
46
+ # Set log level
47
+ logger.setLevel(log_level)
48
+ default_logger.setLevel(log_level)
49
+ logging.basicConfig(level=log_level)
50
+ # Create a stream handler with the specified level and formatter
51
+ stream_handler = logging.StreamHandler()
52
+ stream_handler.setLevel(log_level)
53
+ log_formatter = logging.Formatter(LOG_FORMAT)
54
+ stream_handler.setFormatter(log_formatter)
55
+
56
+ # Add the handler to the logger
57
+ logger.addHandler(stream_handler)
58
+
59
+ # Option: Add FileHandler if you want logs to be written to a file.
60
+ if os.getenv("LOG_TO_FILE", "false").lower() == "true":
61
+ file_handler = logging.FileHandler(os.getenv("LOG_FILE_PATH", "sdk.log"))
62
+ file_handler.setLevel(log_level)
63
+ file_handler.setFormatter(log_formatter)
64
+ logger.addHandler(file_handler)
65
+
66
+
67
+ def dump_request(logger, url: str, method: str, json, params, headers, request_uuid: str, body=True):
68
+ request_headers_filtered = {key: value for key, value in headers.items() if key != "Authorization"}
69
+ # Log the request details before sending the request
70
+ log_lines = []
71
+ request_body = ""
72
+ if body:
73
+ request_body = jsonp.dumps(json)
74
+ log_lines.append(f"\n---[ ZSCALER SDK REQUEST | ID:{request_uuid} ]-------------------------------")
75
+ full_url = url
76
+ if params:
77
+ full_url += "?" + urlencode(params)
78
+ log_lines.append(f"{method} {full_url}")
79
+ for key, value in request_headers_filtered.items():
80
+ log_lines.append(f"{key}: {value}")
81
+ if body and request_body != "" and request_body != "null":
82
+ log_lines.append(f"\n{request_body}")
83
+ log_lines.append("--------------------------------------------------------------------")
84
+ logger.info("\n".join(log_lines))
85
+
86
+
87
+ def dump_response(
88
+ logger,
89
+ url: str,
90
+ method: str,
91
+ resp,
92
+ params,
93
+ request_uuid: str,
94
+ start_time,
95
+ from_cache: bool = None,
96
+ ):
97
+ # Calculate the duration in seconds
98
+ end_time = time.time()
99
+ duration_seconds = end_time - start_time
100
+ # Convert the duration to milliseconds
101
+ duration_ms = duration_seconds * 1000
102
+ # Convert the headers to a regular dictionary
103
+ response_headers_dict = dict(resp.headers)
104
+ full_url = url
105
+ if params:
106
+ full_url += "?" + urlencode(params)
107
+ log_lines = []
108
+
109
+ if from_cache:
110
+ log_lines.append(
111
+ f"\n---[ ZSCALER SDK RESPONSE | ID:{request_uuid} | " f"FROM CACHE | DURATION:{duration_ms}ms ]" + "-" * 31
112
+ )
113
+ else:
114
+ log_lines.append(f"\n---[ ZSCALER SDK RESPONSE | ID:{request_uuid} | " f"DURATION:{duration_ms}ms ]" + "-" * 46)
115
+ log_lines.append(f"{method} {full_url}")
116
+ for key, value in response_headers_dict.items():
117
+ log_lines.append(f"{key}: {value}")
118
+ response_body = ""
119
+ if resp.text:
120
+ response_body = resp.text
121
+ if response_body and response_body != "" and response_body != "null":
122
+ log_lines.append(f"\n{response_body}")
123
+ log_lines.append("-" * 68)
124
+ logger.info("\n".join(log_lines))
@@ -13,27 +13,13 @@ class ZscalerObject:
13
13
  def __repr__(self):
14
14
  return str(vars(self))
15
15
 
16
- # def as_dict(self):
17
- # """
18
- # Returns dictionary object of ZscalerObject with keys in snake_case for user-facing output.
19
- # """
20
- # result = {}
21
- # for key, val in self.request_format().items():
22
- # if val is None:
23
- # continue
24
- # if isinstance(val, list):
25
- # formatted_list = []
26
- # for item in val:
27
- # if isinstance(item, ZscalerObject):
28
- # formatted_list.append(item.as_dict()) # Recursive call for nested objects
29
- # else:
30
- # formatted_list.append(item)
31
- # result[to_snake_case(key)] = formatted_list # Convert key to snake_case
32
- # elif not isinstance(val, ZscalerObject):
33
- # result[to_snake_case(key)] = val # Convert key to snake_case for simple types
34
- # else:
35
- # result[to_snake_case(key)] = val.as_dict() # Convert nested objects
36
- # return result
16
+ def __getitem__(self, key):
17
+ if hasattr(self, key):
18
+ return getattr(self, key)
19
+ raise KeyError(f"{key} not found in {self.__class__.__name__}")
20
+
21
+ def __contains__(self, key):
22
+ return hasattr(self, key)
37
23
 
38
24
  def as_dict(self):
39
25
  result = {}
@@ -26,8 +26,6 @@ class ZscalerAPIResponse:
26
26
  res_details=None,
27
27
  response_body="",
28
28
  data_type=None,
29
- # max_items=None,
30
- # max_pages=None,
31
29
  all_entries=False,
32
30
  sort_order=None,
33
31
  sort_by=None,
@@ -181,6 +179,46 @@ class ZscalerAPIResponse:
181
179
  self._items_fetched += len(self._list)
182
180
  self._pages_fetched += 1
183
181
 
182
+ # def _build_json_response(self, response_body):
183
+ # """
184
+ # Converts JSON response text into Python dictionary.
185
+ # Ensures consistent model conversion for all pages.
186
+ # """
187
+ # self._body = json.loads(response_body)
188
+
189
+ # # Extract the list based on service type
190
+ # if isinstance(self._body, list):
191
+ # self._list = self._body
192
+ # elif self._service_type == "ZDX":
193
+ # self._list = self._body.get("items", [])
194
+ # self._next_offset = self._body.get("next_offset")
195
+ # else:
196
+ # self._list = self._body.get("list", [])
197
+ # if self._service_type == "ZPA":
198
+ # self._total_pages = int(self._body.get("totalPages", 1))
199
+ # self._total_count = int(self._body.get("totalCount", 0))
200
+
201
+ # # Clean and convert items
202
+ # cleaned_list = []
203
+ # for item in self._list:
204
+ # if not isinstance(item, dict):
205
+ # logger.warning("Non-dict item found in response list, skipping: %s", item)
206
+ # continue
207
+
208
+ # # Convert to model if type is specified
209
+ # if self._type:
210
+ # try:
211
+ # cleaned_list.append(self._type(**item))
212
+ # except Exception as e:
213
+ # logger.error("Failed to convert item to model: %s", e)
214
+ # cleaned_list.append(item)
215
+ # else:
216
+ # cleaned_list.append(item)
217
+
218
+ # self._list = cleaned_list
219
+ # self._items_fetched += len(self._list)
220
+ # self._pages_fetched += 1
221
+
184
222
  def get_results(self):
185
223
  """
186
224
  Returns the current page of results.
@@ -198,36 +236,104 @@ class ZscalerAPIResponse:
198
236
  """
199
237
  return self._has_next()
200
238
 
201
- def next(self):
202
- """
203
- Fetch the next page of results if available.
204
-
205
- Returns:
206
- tuple: (list of items, error)
239
+ # def next(self):
240
+ # """
241
+ # Fetch the next page of results if available.
242
+
243
+ # Returns:
244
+ # tuple: (list of items, error)
245
+
246
+ # If there's an error fetching the next page, returns (None, error).
247
+ # If no more pages exist, returns (None, None).
248
+ # """
249
+ # if not self.has_next():
250
+ # logger.debug("No further pages to retrieve.")
251
+ # return (None, None)
252
+
253
+ # next_page_results = self._fetch_next_page()
254
+ # if next_page_results is None:
255
+ # # An error occurred, already logged
256
+ # return (None, ValueError("Error fetching next page."))
257
+ # if not next_page_results:
258
+ # # Empty result means no more data
259
+ # return (None, None)
260
+ # return (next_page_results, None)
261
+
262
+ ### Latest working function
263
+ # def next(self):
264
+ # if not self.has_next():
265
+ # raise StopIteration("No more pages available.")
266
+
267
+ # results, error = self._fetch_next_page()
268
+ # if error:
269
+ # return None, error
270
+ # if not results:
271
+ # return None, None
272
+
273
+ # if self._type:
274
+ # try:
275
+ # results = [self._type(item) for item in results if isinstance(item, dict)]
276
+ # except Exception as wrap_error:
277
+ # logger.warning(f"Failed to wrap pagination results with {self._type}: {wrap_error}")
278
+
279
+ # return results, None
207
280
 
208
- If there's an error fetching the next page, returns (None, error).
209
- If no more pages exist, returns (None, None).
210
- """
281
+ def next(self):
211
282
  if not self.has_next():
212
- logger.debug("No further pages to retrieve.")
213
- return (None, None)
214
-
215
- next_page_results = self._fetch_next_page()
216
- if next_page_results is None:
217
- # An error occurred, already logged
218
- return (None, ValueError("Error fetching next page."))
219
- if not next_page_results:
220
- # Empty result means no more data
221
- return (None, None)
222
- return (next_page_results, None)
283
+ raise StopIteration("No more pages available.")
284
+
285
+ results, error = self._fetch_next_page()
286
+ if error:
287
+ return None, self, error
288
+ if not results:
289
+ return None, self, None
290
+
291
+ if self._type:
292
+ try:
293
+ results = [self._type(item) for item in results if isinstance(item, dict)]
294
+ except Exception as wrap_error:
295
+ logger.warning(f"Failed to wrap pagination results with {self._type}: {wrap_error}")
296
+
297
+ return results, self, None
298
+
299
+
300
+ # def _fetch_next_page(self):
301
+ # """
302
+ # Internal method that fetches and returns the next page of results.
303
+ # """
304
+ # if not self._has_next():
305
+ # logger.debug("No more pages to fetch")
306
+ # return []
307
+
308
+ # if self._service_type == "ZDX":
309
+ # self._params["offset"] = self._next_offset
310
+ # else:
311
+ # self._page += 1
312
+ # self._params["page"] = self._page
313
+
314
+ # logger.debug(f"Requesting next page with params: {self._params}")
315
+
316
+ # req = {
317
+ # "method": "GET",
318
+ # "url": self._url,
319
+ # "headers": self._headers,
320
+ # "params": self._params,
321
+ # "uuid": uuid.uuid4(),
322
+ # }
323
+ # _, _, response_body, error = self._request_executor.fire_request(req)
324
+
325
+ # if error:
326
+ # logger.error(f"Error fetching the next page: {error}")
327
+ # return None
328
+
329
+ # # Rebuild the response body for the next page
330
+ # self._build_json_response(response_body)
331
+ # return self._list
223
332
 
224
333
  def _fetch_next_page(self):
225
- """
226
- Internal method that fetches and returns the next page of results.
227
- """
228
334
  if not self._has_next():
229
335
  logger.debug("No more pages to fetch")
230
- return []
336
+ return [], None
231
337
 
232
338
  if self._service_type == "ZDX":
233
339
  self._params["offset"] = self._next_offset
@@ -248,11 +354,10 @@ class ZscalerAPIResponse:
248
354
 
249
355
  if error:
250
356
  logger.error(f"Error fetching the next page: {error}")
251
- return None
357
+ return None, error
252
358
 
253
- # Rebuild the response body for the next page
254
359
  self._build_json_response(response_body)
255
- return self._list
360
+ return self._list, None
256
361
 
257
362
  def _has_next(self):
258
363
  # Check max_items or max_pages constraints
@@ -65,26 +65,32 @@ class BandwidthClassesAPI(APIClient):
65
65
 
66
66
  query_params = query_params or {}
67
67
 
68
+ local_search = query_params.pop("search", None)
69
+
68
70
  body = {}
69
71
  headers = {}
70
72
 
71
73
  request, error = self._request_executor.create_request(http_method, api_url, body, headers, params=query_params)
72
-
73
74
  if error:
74
75
  return (None, None, error)
75
76
 
76
77
  response, error = self._request_executor.execute(request)
77
-
78
78
  if error:
79
79
  return (None, response, error)
80
80
 
81
81
  try:
82
- result = []
82
+ results = []
83
83
  for item in response.get_results():
84
- result.append(BandwidthClasses(self.form_response_body(item)))
85
- except Exception as error:
86
- return (None, response, error)
87
- return (result, response, None)
84
+ results.append(BandwidthClasses(self.form_response_body(item)))
85
+ except Exception as exc:
86
+ return (None, response, exc)
87
+
88
+ if local_search:
89
+ lower_search = local_search.lower()
90
+ results = [r for r in results if lower_search in (r.name.lower() if r.name else "")]
91
+
92
+ return (results, response, None)
93
+
88
94
 
89
95
  def list_classes_lite(self) -> tuple:
90
96
  """
@@ -289,19 +289,16 @@ class LegacyZIAClientHelper:
289
289
  continue
290
290
 
291
291
  if resp.status_code >= 400:
292
- try:
293
- response_body = resp.json()
294
- except Exception:
295
- response_body = {"message": resp.text}
296
-
297
- error = ZscalerAPIError(
298
- url=url,
299
- response_details=resp,
300
- response_body=response_body,
301
- service_type="zia", # Or dynamically inferred
302
- )
303
- logger.error(f"{error}")
304
- raise error
292
+ logger.error(f"Request failed: {resp.status_code}, {resp.text}")
293
+ raise ValueError(f"Request failed with status {resp.status_code}")
294
+
295
+ return resp, {
296
+ "method": method,
297
+ "url": url,
298
+ "params": params or {},
299
+ "headers": headers_with_user_agent,
300
+ "json": json or {},
301
+ }
305
302
  except requests.RequestException as e:
306
303
  logger.error(f"Request to {url} failed: {e}")
307
304
  if attempts == 4:
@@ -88,7 +88,7 @@ class ApplicationSegmentAPI(APIClient):
88
88
  if error:
89
89
  return (None, None, error)
90
90
 
91
- response, error = self._request_executor.execute(request)
91
+ response, error = self._request_executor.execute(request, ApplicationSegment)
92
92
  if error:
93
93
  return (None, response, error)
94
94
 
@@ -198,9 +198,9 @@ class LegacyZPAClientHelper:
198
198
  self._session = session
199
199
 
200
200
  @property
201
- def authdomains(self):
201
+ def customer_controller(self):
202
202
  """
203
- The interface object for the :ref:`ZPA Auth Domains interface <zpa-authdomains>`.
203
+ The interface object for the :ref:`ZPA Auth Domains interface <zpa-customer_controller>`.
204
204
 
205
205
  """
206
206
  from zscaler.zpa.customer_controller import CustomerControllerAPI
@@ -1,181 +0,0 @@
1
- import logging
2
- import json as jsonp
3
- import os
4
- import time
5
- from urllib.parse import urlencode
6
- from http.client import HTTPConnection
7
-
8
- LOG_FORMAT = "%(asctime)s - %(name)s - %(module)s - %(levelname)s - %(message)s"
9
-
10
-
11
- # def setup_logging(logger_name="zscaler-sdk-python", enabled=None, verbose=None):
12
- # """
13
- # Set up logging with specified level and logger name.
14
- # Log level is controlled via ZSCALER_SDK_VERBOSE environment variable.
15
- # Logging can be enabled/disabled via ZSCALER_SDK_LOG environment variable.
16
-
17
- # Parameters:
18
- # - logger_name (str, optional): Logger name. Defaults to "zscaler-sdk-python".
19
- # - enabled (bool, optional): Enable logging. Defaults to None, which uses the environment variable.
20
- # - verbose (bool, optional): Set verbose logging. Defaults to None, which uses the environment variable.
21
- # """
22
- # if enabled is None:
23
- # enabled = os.getenv("ZSCALER_SDK_LOG", "false").lower() == "true"
24
-
25
- # # if not enabled:
26
- # # # If logging is not enabled, set up a null handler
27
- # # logging.disable(logging.INFO)
28
- # # return
29
-
30
- # if not enabled:
31
- # # Do not globally disable logging
32
- # # Just keep the SDK logger silent
33
- # sdk_logger = logging.getLogger(logger_name)
34
- # sdk_logger.addHandler(logging.NullHandler())
35
- # return
36
-
37
- # if verbose is None:
38
- # verbose = os.getenv("ZSCALER_SDK_VERBOSE", "false").lower() == "true"
39
-
40
- # log_level = logging.DEBUG if verbose else logging.INFO
41
- # HTTPConnection.debuglevel = 0
42
- # # Create a logger with the specified name
43
- # logger = logging.getLogger(logger_name)
44
- # default_logger = logging.getLogger()
45
-
46
- # # If the logger already has handlers, remove them to avoid duplicate logging
47
- # for handler in logger.handlers[:]:
48
- # logger.removeHandler(handler)
49
-
50
- # for handler in default_logger.handlers[:]:
51
- # default_logger.removeHandler(handler)
52
-
53
- # # Set log level
54
- # logger.setLevel(log_level)
55
- # default_logger.setLevel(log_level)
56
- # logging.basicConfig(level=log_level)
57
- # # Create a stream handler with the specified level and formatter
58
- # stream_handler = logging.StreamHandler()
59
- # stream_handler.setLevel(log_level)
60
- # log_formatter = logging.Formatter(LOG_FORMAT)
61
- # stream_handler.setFormatter(log_formatter)
62
-
63
- # # Add the handler to the logger
64
- # logger.addHandler(stream_handler)
65
-
66
-
67
- # # Option: Add FileHandler if you want logs to be written to a file.
68
- # if os.getenv("LOG_TO_FILE", "false").lower() == "true":
69
- # file_handler = logging.FileHandler(os.getenv("LOG_FILE_PATH", "sdk.log"))
70
- # file_handler.setLevel(log_level)
71
- # file_handler.setFormatter(log_formatter)
72
- # logger.addHandler(file_handler)
73
- def setup_logging(logger_name="zscaler-sdk-python", enabled=None, verbose=None):
74
- """
75
- Set up logging for the Zscaler SDK.
76
-
77
- Logging behavior can be controlled via environment variables or config:
78
-
79
- Environment Variables:
80
- ZSCALER_SDK_LOG (true/false): Enable or disable SDK logging.
81
- ZSCALER_SDK_VERBOSE (true/false): Enable verbose (DEBUG) logging.
82
- LOG_TO_FILE (true/false): Enable file-based logging.
83
- LOG_FILE_PATH: File path for logs (default: sdk.log)
84
-
85
- Parameters:
86
- logger_name (str): Name of the logger. Defaults to "zscaler-sdk-python".
87
- enabled (bool): Enable logging. If None, reads from env.
88
- verbose (bool): Enable DEBUG-level logging. If None, reads from env.
89
- """
90
- if enabled is None:
91
- enabled = os.getenv("ZSCALER_SDK_LOG", "false").lower() == "true"
92
-
93
- if not enabled:
94
- # Do NOT disable global logging.
95
- # Just suppress SDK logs quietly with a NullHandler.
96
- logging.getLogger(logger_name).addHandler(logging.NullHandler())
97
- return
98
-
99
- if verbose is None:
100
- verbose = os.getenv("ZSCALER_SDK_VERBOSE", "false").lower() == "true"
101
-
102
- log_level = logging.DEBUG if verbose else logging.INFO
103
- HTTPConnection.debuglevel = 0 # Optional: Enable HTTP debug logging
104
-
105
- # SDK logger (isolated)
106
- logger = logging.getLogger(logger_name)
107
- logger.setLevel(log_level)
108
-
109
- # Clean up any duplicate handlers
110
- if not logger.handlers:
111
- stream_handler = logging.StreamHandler()
112
- stream_handler.setLevel(log_level)
113
- stream_handler.setFormatter(logging.Formatter(LOG_FORMAT))
114
- logger.addHandler(stream_handler)
115
-
116
- # Optional file logging
117
- if os.getenv("LOG_TO_FILE", "false").lower() == "true":
118
- file_handler = logging.FileHandler(os.getenv("LOG_FILE_PATH", "sdk.log"))
119
- file_handler.setLevel(log_level)
120
- file_handler.setFormatter(logging.Formatter(LOG_FORMAT))
121
- logger.addHandler(file_handler)
122
-
123
-
124
- def dump_request(logger, url: str, method: str, json, params, headers, request_uuid: str, body=True):
125
- request_headers_filtered = {key: value for key, value in headers.items() if key != "Authorization"}
126
- # Log the request details before sending the request
127
- log_lines = []
128
- request_body = ""
129
- if body:
130
- request_body = jsonp.dumps(json)
131
- log_lines.append(f"\n---[ ZSCALER SDK REQUEST | ID:{request_uuid} ]-------------------------------")
132
- full_url = url
133
- if params:
134
- full_url += "?" + urlencode(params)
135
- log_lines.append(f"{method} {full_url}")
136
- for key, value in request_headers_filtered.items():
137
- log_lines.append(f"{key}: {value}")
138
- if body and request_body != "" and request_body != "null":
139
- log_lines.append(f"\n{request_body}")
140
- log_lines.append("--------------------------------------------------------------------")
141
- logger.info("\n".join(log_lines))
142
-
143
-
144
- def dump_response(
145
- logger,
146
- url: str,
147
- method: str,
148
- resp,
149
- params,
150
- request_uuid: str,
151
- start_time,
152
- from_cache: bool = None,
153
- ):
154
- # Calculate the duration in seconds
155
- end_time = time.time()
156
- duration_seconds = end_time - start_time
157
- # Convert the duration to milliseconds
158
- duration_ms = duration_seconds * 1000
159
- # Convert the headers to a regular dictionary
160
- response_headers_dict = dict(resp.headers)
161
- full_url = url
162
- if params:
163
- full_url += "?" + urlencode(params)
164
- log_lines = []
165
-
166
- if from_cache:
167
- log_lines.append(
168
- f"\n---[ ZSCALER SDK RESPONSE | ID:{request_uuid} | " f"FROM CACHE | DURATION:{duration_ms}ms ]" + "-" * 31
169
- )
170
- else:
171
- log_lines.append(f"\n---[ ZSCALER SDK RESPONSE | ID:{request_uuid} | " f"DURATION:{duration_ms}ms ]" + "-" * 46)
172
- log_lines.append(f"{method} {full_url}")
173
- for key, value in response_headers_dict.items():
174
- log_lines.append(f"{key}: {value}")
175
- response_body = ""
176
- if resp.text:
177
- response_body = resp.text
178
- if response_body and response_body != "" and response_body != "null":
179
- log_lines.append(f"\n{response_body}")
180
- log_lines.append("-" * 68)
181
- logger.info("\n".join(log_lines))