zscaler-sdk-python 1.2.0__tar.gz → 1.2.2__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 (382) hide show
  1. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/PKG-INFO +1 -1
  2. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/pyproject.toml +1 -1
  3. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/__init__.py +1 -1
  4. zscaler_sdk_python-1.2.2/zscaler/helpers.py +264 -0
  5. zscaler_sdk_python-1.2.2/zscaler/logger.py +124 -0
  6. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/oneapi_object.py +7 -21
  7. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/oneapi_response.py +28 -49
  8. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/request_executor.py +10 -2
  9. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/utils.py +47 -1
  10. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/admin_user.py +11 -13
  11. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/company.py +15 -10
  12. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/devices.py +60 -44
  13. zscaler_sdk_python-1.2.2/zscaler/zcc/models/admin_user.py +145 -0
  14. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/devices.py +198 -0
  15. zscaler_sdk_python-1.2.2/zscaler/zcc/models/getcompanyinfo.py +1322 -0
  16. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/bandwidth_classes.py +13 -7
  17. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/legacy.py +10 -13
  18. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/app_connector_groups.py +1 -1
  19. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/app_connectors.py +1 -1
  20. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/app_segment_by_type.py +1 -68
  21. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/app_segments_inspection.py +1 -2
  22. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/app_segments_pra.py +1 -2
  23. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/application_segment.py +1 -1
  24. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/certificates.py +2 -2
  25. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/cloud_connector_groups.py +1 -1
  26. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/customer_version_profile.py +1 -1
  27. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/emergency_access.py +1 -1
  28. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/enrollment_certificates.py +1 -1
  29. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/idp.py +1 -1
  30. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/legacy.py +2 -2
  31. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/lss.py +1 -1
  32. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/machine_groups.py +1 -3
  33. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/microtenants.py +1 -1
  34. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/policies.py +1 -3
  35. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/posture_profiles.py +1 -1
  36. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/pra_approval.py +1 -1
  37. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/pra_console.py +1 -1
  38. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/pra_credential.py +1 -1
  39. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/pra_credential_pool.py +1 -1
  40. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/pra_portal.py +1 -1
  41. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/provisioning.py +1 -1
  42. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/saml_attributes.py +1 -1
  43. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/scim_attributes.py +1 -4
  44. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/scim_groups.py +1 -1
  45. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/segment_groups.py +1 -1
  46. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/server_groups.py +2 -2
  47. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/servers.py +1 -1
  48. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/service_edge_group.py +1 -1
  49. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/service_edges.py +1 -1
  50. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/trusted_networks.py +1 -1
  51. zscaler_sdk_python-1.2.0/zscaler/helpers.py +0 -160
  52. zscaler_sdk_python-1.2.0/zscaler/logger.py +0 -181
  53. zscaler_sdk_python-1.2.0/zscaler/zcc/models/admin_user.py +0 -69
  54. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/LICENSE.md +0 -0
  55. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/README.md +0 -0
  56. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/api_client.py +0 -0
  57. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/cache/__init__.py +0 -0
  58. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/cache/cache.py +0 -0
  59. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/cache/no_op_cache.py +0 -0
  60. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/cache/zscaler_cache.py +0 -0
  61. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/config/__init__.py +0 -0
  62. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/config/config_setter.py +0 -0
  63. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/config/config_validator.py +0 -0
  64. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/constants.py +0 -0
  65. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/error_messages.py +0 -0
  66. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/errors/__init__.py +0 -0
  67. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/errors/error.py +0 -0
  68. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/errors/http_error.py +0 -0
  69. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/errors/zscaler_api_error.py +0 -0
  70. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/exceptions/__init__.py +0 -0
  71. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/exceptions/exceptions.py +0 -0
  72. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/oneapi_client.py +0 -0
  73. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/oneapi_collection.py +0 -0
  74. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/oneapi_http_client.py +0 -0
  75. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/oneapi_oauth_client.py +0 -0
  76. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ratelimiter/__init__.py +0 -0
  77. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ratelimiter/ratelimiter.py +0 -0
  78. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/user_agent.py +0 -0
  79. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/__init__.py +0 -0
  80. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/entitlements.py +0 -0
  81. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/fail_open_policy.py +0 -0
  82. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/forwarding_profile.py +0 -0
  83. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/legacy.py +0 -0
  84. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/manage_pass.py +0 -0
  85. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/admin_roles.py +0 -0
  86. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/failopenpolicy.py +0 -0
  87. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/forwardingprofile.py +0 -0
  88. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/manage_pass.py +0 -0
  89. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/secrets_otp.py +0 -0
  90. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/secrets_passwords.py +0 -0
  91. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/trustednetworks.py +0 -0
  92. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/webappservice.py +0 -0
  93. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/webpolicy.py +0 -0
  94. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/webprivacy.py +0 -0
  95. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  96. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  97. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/secrets.py +0 -0
  98. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/trusted_networks.py +0 -0
  99. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/web_app_service.py +0 -0
  100. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/web_policy.py +0 -0
  101. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/web_privacy.py +0 -0
  102. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zcc/zcc_service.py +0 -0
  103. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/__init__.py +0 -0
  104. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/admin.py +0 -0
  105. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/alerts.py +0 -0
  106. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/apps.py +0 -0
  107. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/devices.py +0 -0
  108. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/inventory.py +0 -0
  109. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/legacy.py +0 -0
  110. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/activeapplications.py +0 -0
  111. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/administration.py +0 -0
  112. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/alerts.py +0 -0
  113. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/application_users.py +0 -0
  114. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/applications.py +0 -0
  115. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  116. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/common.py +0 -0
  117. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/devices.py +0 -0
  118. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/software_inventory.py +0 -0
  119. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/troubleshooting.py +0 -0
  120. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/models/users.py +0 -0
  121. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/troubleshooting.py +0 -0
  122. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/users.py +0 -0
  123. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zdx/zdx_service.py +0 -0
  124. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/__init__.py +0 -0
  125. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/activate.py +0 -0
  126. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/admin_roles.py +0 -0
  127. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/admin_users.py +0 -0
  128. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/advanced_settings.py +0 -0
  129. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/alert_subscriptions.py +0 -0
  130. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/apptotal.py +0 -0
  131. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/atp_policy.py +0 -0
  132. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/audit_logs.py +0 -0
  133. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/authentication_settings.py +0 -0
  134. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/bandwidth_control_rules.py +0 -0
  135. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_app_instances.py +0 -0
  136. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_applications.py +0 -0
  137. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_apps.py +0 -0
  138. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_browser_isolation.py +0 -0
  139. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_firewall.py +0 -0
  140. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_firewall_dns.py +0 -0
  141. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_firewall_ips.py +0 -0
  142. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_firewall_rules.py +0 -0
  143. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloud_nss.py +0 -0
  144. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/cloudappcontrol.py +0 -0
  145. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/dedicated_ip_gateways.py +0 -0
  146. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/device_management.py +0 -0
  147. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/dlp_dictionary.py +0 -0
  148. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/dlp_engine.py +0 -0
  149. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/dlp_resources.py +0 -0
  150. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/dlp_templates.py +0 -0
  151. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/dlp_web_rules.py +0 -0
  152. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/dns_gatways.py +0 -0
  153. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/end_user_notification.py +0 -0
  154. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/file_type_control_rule.py +0 -0
  155. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/forwarding_control.py +0 -0
  156. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/ftp_control_policy.py +0 -0
  157. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/gre_tunnel.py +0 -0
  158. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/intermediate_certificates.py +0 -0
  159. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/iot_report.py +0 -0
  160. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/ipv6_config.py +0 -0
  161. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/locations.py +0 -0
  162. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/malware_protection_policy.py +0 -0
  163. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/mobile_threat_settings.py +0 -0
  164. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/__init__.py +0 -0
  165. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/activation.py +0 -0
  166. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/admin_roles.py +0 -0
  167. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/admin_users.py +0 -0
  168. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/advanced_settings.py +0 -0
  169. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  170. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/alert_subscriptions.py +0 -0
  171. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/apptotal.py +0 -0
  172. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/authentication_settings.py +0 -0
  173. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/bandwidth_classes.py +0 -0
  174. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
  175. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_app_instances.py +0 -0
  176. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_app_policy.py +0 -0
  177. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  178. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  179. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  180. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  181. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  182. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  183. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  184. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  185. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  186. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
  187. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  188. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  189. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloud_nss.py +0 -0
  190. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/cloudappcontrol.py +0 -0
  191. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/common.py +0 -0
  192. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
  193. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/device_groups.py +0 -0
  194. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/devices.py +0 -0
  195. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/dlp_dictionary.py +0 -0
  196. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/dlp_engine.py +0 -0
  197. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/dlp_resources.py +0 -0
  198. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/dlp_templates.py +0 -0
  199. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/dlp_web_rules.py +0 -0
  200. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/dns_gatways.py +0 -0
  201. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/endusernotification.py +0 -0
  202. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/filetyperules.py +0 -0
  203. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  204. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/ftp_control_policy.py +0 -0
  205. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/gre_recommended_list.py +0 -0
  206. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  207. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/gre_tunnels.py +0 -0
  208. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/gre_vips.py +0 -0
  209. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/intermediate_certificates.py +0 -0
  210. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/iotreport.py +0 -0
  211. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/ipv6_config.py +0 -0
  212. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/location_group.py +0 -0
  213. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/location_management.py +0 -0
  214. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/malware_protection_settings.py +0 -0
  215. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/mobile_threat_settings.py +0 -0
  216. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/nat_control_policy.py +0 -0
  217. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/nss_servers.py +0 -0
  218. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/organization_information.py +0 -0
  219. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/pac_files.py +0 -0
  220. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/proxies.py +0 -0
  221. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/proxy_gatways.py +0 -0
  222. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/remoteassistance.py +0 -0
  223. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/risk_profiles.py +0 -0
  224. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/rule_labels.py +0 -0
  225. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/sandboxrules.py +0 -0
  226. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/security_policy_settings.py +0 -0
  227. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/shadow_it_report.py +0 -0
  228. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  229. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/subclouds.py +0 -0
  230. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/system_audit.py +0 -0
  231. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
  232. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/time_intervals.py +0 -0
  233. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/traffic_datacenters.py +0 -0
  234. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
  235. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/traffic_extranet.py +0 -0
  236. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/traffic_static_ip.py +0 -0
  237. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  238. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  239. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/url_filtering_rules.py +0 -0
  240. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/urlcategory.py +0 -0
  241. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/user_management.py +0 -0
  242. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/workload_groups.py +0 -0
  243. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/models/zpa_gateway.py +0 -0
  244. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/nat_control_policy.py +0 -0
  245. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/nss_servers.py +0 -0
  246. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/organization_information.py +0 -0
  247. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/pac_files.py +0 -0
  248. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/policy_export.py +0 -0
  249. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/proxies.py +0 -0
  250. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/remote_assistance.py +0 -0
  251. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/risk_profiles.py +0 -0
  252. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/rule_labels.py +0 -0
  253. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/sandbox.py +0 -0
  254. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/sandbox_rules.py +0 -0
  255. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/security_policy_settings.py +0 -0
  256. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/ssl_inspection_rules.py +0 -0
  257. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/sub_clouds.py +0 -0
  258. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/system_audit.py +0 -0
  259. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/tenancy_restriction_profile.py +0 -0
  260. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/time_intervals.py +0 -0
  261. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/traffic_datacenters.py +0 -0
  262. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/traffic_extranet.py +0 -0
  263. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/traffic_static_ip.py +0 -0
  264. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  265. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/url_categories.py +0 -0
  266. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/url_filtering.py +0 -0
  267. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/user_management.py +0 -0
  268. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/workload_groups.py +0 -0
  269. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/zia_service.py +0 -0
  270. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zia/zpa_gateway.py +0 -0
  271. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/__init__.py +0 -0
  272. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/administrator_controller.py +0 -0
  273. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/app_connector_schedule.py +0 -0
  274. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/app_protection.py +0 -0
  275. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/cbi_banner.py +0 -0
  276. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/cbi_certificate.py +0 -0
  277. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/cbi_profile.py +0 -0
  278. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/cbi_region.py +0 -0
  279. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  280. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/client_settings.py +0 -0
  281. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/customer_controller.py +0 -0
  282. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/administrator_controller.py +0 -0
  283. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/app_connector_groups.py +0 -0
  284. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  285. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/app_connectors.py +0 -0
  286. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/app_protection.py +0 -0
  287. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  288. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/application_segment.py +0 -0
  289. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/application_segment_inspection.py +0 -0
  290. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/application_segment_pra.py +0 -0
  291. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/application_servers.py +0 -0
  292. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/cbi_banner.py +0 -0
  293. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/cbi_certificate.py +0 -0
  294. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/cbi_profile.py +0 -0
  295. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/cbi_region.py +0 -0
  296. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  297. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/certificates.py +0 -0
  298. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/client_settings.py +0 -0
  299. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  300. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/common.py +0 -0
  301. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/customer_controller.py +0 -0
  302. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/customer_version_profile.py +0 -0
  303. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/emergency_access.py +0 -0
  304. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  305. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/idp.py +0 -0
  306. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/lss.py +0 -0
  307. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/machine_groups.py +0 -0
  308. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/microtenants.py +0 -0
  309. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
  310. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
  311. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/posture_profiles.py +0 -0
  312. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/pra_approval.py +0 -0
  313. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/pra_console.py +0 -0
  314. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  315. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/pra_credential.py +0 -0
  316. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/pra_portal.py +0 -0
  317. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/provisioning_keys.py +0 -0
  318. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/role_controller.py +0 -0
  319. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/saml_attributes.py +0 -0
  320. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/scim_attributes.py +0 -0
  321. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/scim_groups.py +0 -0
  322. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/segment_group.py +0 -0
  323. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/server_group.py +0 -0
  324. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/service_edge_groups.py +0 -0
  325. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  326. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/service_edges.py +0 -0
  327. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/models/trusted_network.py +0 -0
  328. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/role_controller.py +0 -0
  329. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/service_edge_schedule.py +0 -0
  330. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zpa/zpa_service.py +0 -0
  331. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/__init__.py +0 -0
  332. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/account_details.py +0 -0
  333. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/activation.py +0 -0
  334. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/admin_roles.py +0 -0
  335. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/admin_users.py +0 -0
  336. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/api_keys.py +0 -0
  337. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/ec_groups.py +0 -0
  338. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/forwarding_gateways.py +0 -0
  339. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/forwarding_rules.py +0 -0
  340. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/ip_destination_groups.py +0 -0
  341. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/ip_groups.py +0 -0
  342. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/ip_source_groups.py +0 -0
  343. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/legacy.py +0 -0
  344. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/location_management.py +0 -0
  345. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/location_template.py +0 -0
  346. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/activation.py +0 -0
  347. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/admin_roles.py +0 -0
  348. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/admin_users.py +0 -0
  349. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/api_keys.py +0 -0
  350. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/common.py +0 -0
  351. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/ec_group_vm.py +0 -0
  352. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/ecgroup.py +0 -0
  353. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  354. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/forwarding_rules.py +0 -0
  355. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  356. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/ip_groups.py +0 -0
  357. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/ip_source_groups.py +0 -0
  358. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/location_management.py +0 -0
  359. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/location_templates.py +0 -0
  360. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/nw_service.py +0 -0
  361. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/nw_service_groups.py +0 -0
  362. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/provisioning_url.py +0 -0
  363. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  364. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/models/zpa_resources.py +0 -0
  365. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/nw_service.py +0 -0
  366. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/nw_service_groups.py +0 -0
  367. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/provisioning_url.py +0 -0
  368. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/ztw/ztw_service.py +0 -0
  369. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/__init__.py +0 -0
  370. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/audit_logs.py +0 -0
  371. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/dlp_incidents.py +0 -0
  372. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/legacy.py +0 -0
  373. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/audit_logs.py +0 -0
  374. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/change_history.py +0 -0
  375. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/common.py +0 -0
  376. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/generated_tickets.py +0 -0
  377. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/incident_details.py +0 -0
  378. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/incident_evidence.py +0 -0
  379. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/incident_group_search.py +0 -0
  380. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/incident_search.py +0 -0
  381. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/zscaler/zwa/models/incident_trigger.py +0 -0
  382. {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.2}/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.2
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.2"
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.2"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -0,0 +1,264 @@
1
+ """
2
+ Module contains different helper functions.
3
+ Module is independent from any zscaler modules.
4
+ """
5
+
6
+ import re
7
+
8
+
9
+ def to_snake_case(string):
10
+ """
11
+ Converts camelCase or PascalCase to snake_case.
12
+ Applies known field-specific corrections first.
13
+ """
14
+ FIELD_EXCEPTIONS = {
15
+ "predefinedADPControls": "predefined_adp_controls",
16
+ "surrogateIP": "surrogate_ip",
17
+ "surrogateIPEnforcedForKnownBrowsers": "surrogate_ip_enforced_for_known_browsers",
18
+ "capturePCAP": "capture_pcap",
19
+ "internalIpRange": "internal_ip_range",
20
+ "startIPAddress": "start_ip_address",
21
+ "endIPAddress": "end_ip_address",
22
+ "minTLSVersion": "min_tls_version",
23
+ "minClientTLSVersion": "min_client_tls_version",
24
+ "minServerTLSVersion": "min_server_tls_version",
25
+ "pacWithStaticIPs": "pac_with_static_ips",
26
+ "primaryGW": "primary_gw",
27
+ "secondaryGW": "secondary_gw",
28
+ "greTunnelIP": "gre_tunnel_ip",
29
+ "tunID": "tun_id",
30
+ "isIncompleteDRConfig": "is_incomplete_dr_config",
31
+ "nameL10nTag": "name_l10n_tag",
32
+ "isNameL10nTag": "is_name_l10n_tag",
33
+ "routableIP": "routable_ip",
34
+ "validSSLCertificate": "valid_ssl_certificate",
35
+ "ecVMs": "ec_vms",
36
+ "ipV6Enabled": "ipv6_enabled",
37
+ "emailIds": "email_ids",
38
+ "showEUN": "show_eun",
39
+ "showEUNATP": "show_eunatp",
40
+ "enableCIPACompliance": "enable_cipa_compliance",
41
+ "enablePOEPrompt": "enable_poe_prompt",
42
+ "cookieStealingPCAPEnabled": "cookie_stealing_pcap_enabled",
43
+ "alertForUnknownOrSuspiciousC2Traffic": "alert_for_unknown_or_suspicious_c2_traffic",
44
+ "enableIPv6DnsResolutionOnTransparentProxy": "enable_ipv6_dns_resolution_on_transparent_proxy",
45
+ "enableEvaluatePolicyOnGlobalSSLBypass": "enable_evaluate_policy_on_global_ssl_bypass",
46
+ "dnsResolutionOnTransparentProxyIPv6ExemptApps": "dns_resolution_on_transparent_proxy_ipv6_exempt_apps",
47
+ "dnsResolutionOnTransparentProxyIPv6UrlCategories": "dns_resolution_on_transparent_proxy_ipv6_url_categories",
48
+ "dnsResolutionOnTransparentProxyIPv6Apps": "dns_resolution_on_transparent_proxy_ipv6_apps",
49
+ "enableIPv6DnsOptimizationOnAllTransparentProxy": "enable_ipv6_dns_optimization_on_all_transparent_proxy",
50
+ "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories": "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories",
51
+ "endPointDLPLogType": "end_point_dlp_log_type",
52
+ "emailDLPLogType": "email_dlp_log_type",
53
+ "extranetDNSList": "extranet_dns_list",
54
+ "primaryDNSServer": "primary_dns_server",
55
+ "secondaryDNSServer": "secondary_dns_server",
56
+
57
+ # ZCC Edge Case Attributes
58
+ "enableUDPTransportSelection": "enable_udp_transport_selection",
59
+ "interceptZIATrafficAllAdapters": "intercept_zia_traffic_all_adapters",
60
+ "enablePortBasedZPAFilter": "enable_port_based_zpa_filter",
61
+ "addAppBypassToVPNGateway": "add_app_bypass_to_vpn_gateway",
62
+ "showVPNTunNotification": "show_vpn_tun_notification",
63
+ "enableSetProxyOnVPNAdapters": "enable_set_proxy_on_vpn_adapters",
64
+ "disableDNSRouteExclusion": "disable_dns_route_exclusion",
65
+ "enableReactUI": "enable_react_ui",
66
+ "ziaGlobalDbUrlForDR": "zia_global_db_url_for_dr",
67
+ "useDefaultAdapterForDNS": "use_default_adapter_for_dns",
68
+ "enablePublicAPI": "enable_public_api",
69
+ "launchReactUIbyDefault": "launch_react_u_iby_default",
70
+ "addZDXServiceEntitlement": "add_zdx_service_entitlement",
71
+ "computeDeviceGroupsForZIA": "compute_device_groups_for_zia",
72
+ "computeDeviceGroupsForZPA": "compute_device_groups_for_zpa",
73
+ "computeDeviceGroupsForZAD": "compute_device_groups_for_zad",
74
+ "computeDeviceGroupsForZAD": "compute_device_groups_for_zad",
75
+ "deleteDHCPOption121RoutesVisibility": "delete_dhcp_option121_routes_visibility",
76
+ "enableOneIDAdminMigrationChanges": "enable_one_id_admin_migration_changes",
77
+ "purgeKerberosPreferredDCCacheVisibility": "purge_kerberos_preferred_dc_cache_visibility",
78
+ "slowRolloutZCC": "slow_rollout_zcc",
79
+ "supportMultiplePWLPostures": "support_multiple_pwl_postures",
80
+ "truncateLargeUDPDNSResponseVisibility": "truncate_large_udpdns_response_visibility",
81
+ "enforceSplitDNSVisibility": "enforce_split_dns_visibility",
82
+ "zccSyntheticIPRangeVisibility": "zcc_synthetic_ip_range_visibility",
83
+ "enableSetProxyOnVPNAdaptersVisibility": "enable_set_proxy_on_vpn_adapters_visibility",
84
+ "customMTUForZpaVisibility": "custom_mtu_for_zpa_visibility",
85
+ "flowLoggerZCCBlockedTrafficVisibility": "flow_logger_zcc_blocked_traffic_visibility",
86
+ "postureCrowdStrikeZTAScoreVisibilityForLinux": "posture_crowd_strike_zta_score_visibility_for_linux",
87
+ "flowLoggerVPNTunnelTypeVisibility": "flow_logger_vpn_tunnel_type_visibility",
88
+ "flowLoggerVPNTypeVisibility": "flow_logger_vpn_type_visibility",
89
+ "flowLoggerZPATypeVisibility": "flow_logger_zpa_type_visibility",
90
+ "useDefaultAdapterForDNSVisibility": "use_default_adapter_for_dns_visibility",
91
+ "useCustomDNS": "use_custom_dns",
92
+ "notificationForZPAReauthVisibility": "notification_for_zpa_reauth_visibility",
93
+ "crowdStrikeZTAScoreVisibility": "crowd_strike_zta_score_visibility",
94
+ "hideDTLSSupportSettings": "hide_dtls_support_settings",
95
+ "dynamicZPAServiceEdgeAssignmenttVisibility": "dynamic_zpa_service_edge_assignmentt_visibility",
96
+ "domainInclusionExclusionForDNSRequestVisibility": "domain_inclusion_exclusion_for_dns_request_visibility",
97
+ "overrideATCmdByPolicyVisibility": "override_at_cmd_by_policy_visibility",
98
+ "windowsAPCaptivePortalDetectionVisibility": "windows_ap_captive_portal_detection_visibility",
99
+ "windowsAPEnableFailOpenVisibility": "windows_ap_enable_fail_open_visibility",
100
+ "enableOneIDPhase2Changes": "enable_one_id_phase2_changes",
101
+ "linuxRPMBuildVisibility": "linux_rpm_build_visibility",
102
+ "crowdStrikeZTAOsScoreVisibility": "crowd_strike_zta_os_score_visibility",
103
+ "crowdStrikeZTASensorConfigScoreVisibility": "crowd_strike_zta_sensor_config_score_visibility",
104
+ "enableZCCFailCloseSettingsForSEMode": "enable_zcc_fail_close_settings_for_se_mode",
105
+ "defaultProtocolForZPA": "default_protocol_for_zpa",
106
+ "tunnelTwoForiOSDevices": "tunnel_two_fori_os_devices",
107
+ "prioritizeIPv4OverIpv6": "prioritize_ipv4_over_ipv6",
108
+ }
109
+
110
+ if string in FIELD_EXCEPTIONS:
111
+ return FIELD_EXCEPTIONS[string]
112
+
113
+ # Generic fallback logic
114
+ string = re.sub(r"(?<!^)(?=[A-Z])", "_", string).lower()
115
+ return string.replace("__", "_").strip("_")
116
+
117
+
118
+ def to_lower_camel_case(string):
119
+ """
120
+ Converts snake_case to camelCase with support for known edge-case field mappings.
121
+
122
+ Examples:
123
+ "internal_ip_range" -> "internalIpRange"
124
+ "surrogate_ip" -> "surrogateIP"
125
+ "capture_pcap" -> "capturePCAP"
126
+ """
127
+
128
+ FIELD_EXCEPTIONS = {
129
+ "predefined_adp_controls": "predefinedADPControls",
130
+ "surrogate_ip": "surrogateIP",
131
+ "internal_ip_range": "internalIpRange",
132
+ "start_ip_address": "startIPAddress",
133
+ "end_ip_address": "endIPAddress",
134
+ "capture_pcap": "capturePCAP",
135
+ "min_tls_version": "minTLSVersion",
136
+ "min_client_tls_version": "minClientTLSVersion",
137
+ "min_server_tls_version": "minServerTLSVersion",
138
+ "pac_with_static_ips": "pacWithStaticIPs",
139
+ "primary_gw": "primaryGW",
140
+ "secondary_gw": "secondaryGW",
141
+ "greTunnel_ip": "greTunnelIP",
142
+ "tun_id": "tunID",
143
+ "is_incomplete_dr_config": "isIncompleteDRConfig",
144
+ "name_l10n_tag": "nameL10nTag",
145
+ "is_name_l10n_tag": "isNameL10nTag",
146
+ "routable_ip": "routableIP",
147
+ "valid_ssl_certificate": "validSSLCertificate",
148
+ "ec_vms": "ecVMs",
149
+ "ipv6_enabled": "ipV6Enabled",
150
+ "email_ids": "emailIds",
151
+ "show_eun": "showEUN",
152
+ "show_eunatp": "showEUNATP",
153
+ "enable_cipa_compliance": "enableCIPACompliance",
154
+ "enable_poe_prompt": "enablePOEPrompt",
155
+ "cookie_stealing_pcap_enabled": "cookieStealingPCAPEnabled",
156
+ "alert_for_unknown_or_suspicious_c2_traffic": "alertForUnknownOrSuspiciousC2Traffic",
157
+ "enable_ipv6_dns_resolution_on_transparent_proxy": "enableIPv6DnsResolutionOnTransparentProxy",
158
+ "enable_evaluate_policy_on_global_ssl_bypass": "enableEvaluatePolicyOnGlobalSSLBypass",
159
+ "dns_resolution_on_transparent_proxy_ipv6_exempt_apps": "dnsResolutionOnTransparentProxyIPv6ExemptApps",
160
+ "dns_resolution_on_transparent_proxy_ipv6_url_categories": "dnsResolutionOnTransparentProxyIPv6UrlCategories",
161
+ "dns_resolution_on_transparent_proxy_ipv6_apps": "dnsResolutionOnTransparentProxyIPv6Apps",
162
+ "enable_ipv6_dns_optimization_on_all_transparent_proxy": "enableIPv6DnsOptimizationOnAllTransparentProxy",
163
+ "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories": "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories",
164
+ "end_point_dlp_log_type": "endPointDLPLogType",
165
+ "email_dlp_log_type": "emailDLPLogType",
166
+ "extranet_dns_list": "extranetDNSList",
167
+ "primary_dns_server": "primaryDNSServer",
168
+ "secondary_dns_server": "secondaryDNSServer",
169
+
170
+ # ZCC Edge Case Attributes
171
+ "enable_udp_transport_selection": "enableUDPTransportSelection",
172
+ "intercept_zia_traffic_all_adapters": "interceptZIATrafficAllAdapters",
173
+ "enable_port_based_zpa_filter": "enablePortBasedZPAFilter",
174
+ "add_app_bypass_to_vpn_gateway": "addAppBypassToVPNGateway",
175
+ "show_vpn_tun_notification": "showVPNTunNotification",
176
+ "enable_set_proxy_on_vpn_adapters": "enableSetProxyOnVPNAdapters",
177
+ "disable_dns_route_exclusion": "disableDNSRouteExclusion",
178
+ "enable_react_ui": "enableReactUI",
179
+ "zia_global_db_url_for_dr": "ziaGlobalDbUrlForDR",
180
+ "use_default_adapter_for_dns": "useDefaultAdapterForDNS",
181
+ "enable_public_api": "enablePublicAPI",
182
+ "launch_react_u_iby_default": "launchReactUIbyDefault",
183
+ "add_zdx_service_entitlement": "addZDXServiceEntitlement",
184
+ "compute_device_groups_for_zia": "computeDeviceGroupsForZIA",
185
+ "compute_device_groups_for_zpa": "computeDeviceGroupsForZPA",
186
+ "compute_device_groups_for_zad": "computeDeviceGroupsForZAD",
187
+ "delete_dhcp_option121_routes_visibility": "deleteDHCPOption121RoutesVisibility",
188
+ "enable_one_id_admin_migration_changes": "enableOneIDAdminMigrationChanges",
189
+ "purge_kerberos_preferred_dc_cache_visibility": "purgeKerberosPreferredDCCacheVisibility",
190
+ "slow_rollout_zcc": "slowRolloutZCC",
191
+ "support_multiple_pwl_postures": "supportMultiplePWLPostures",
192
+ "truncate_large_udpdns_response_visibility": "truncateLargeUDPDNSResponseVisibility",
193
+ "enforce_split_dns_visibility": "enforceSplitDNSVisibility",
194
+ "zcc_synthetic_ip_range_visibility": "zccSyntheticIPRangeVisibility",
195
+ "enable_set_proxy_on_vpn_adapters_visibility": "enableSetProxyOnVPNAdaptersVisibility",
196
+ "custom_mtu_for_zpa_visibility": "customMTUForZpaVisibility",
197
+ "flow_logger_zcc_blocked_traffic_visibility": "flowLoggerZCCBlockedTrafficVisibility",
198
+ "posture_crowd_strike_zta_score_visibility_for_linux": "postureCrowdStrikeZTAScoreVisibilityForLinux",
199
+ "flow_logger_vpn_tunnel_type_visibility": "flowLoggerVPNTunnelTypeVisibility",
200
+ "flow_logger_vpn_type_visibility": "flowLoggerVPNTypeVisibility",
201
+ "flow_logger_zpa_type_visibility": "flowLoggerZPATypeVisibility",
202
+ "use_default_adapter_for_dns_visibility": "useDefaultAdapterForDNSVisibility",
203
+ "use_custom_dns": "useCustomDNS",
204
+ "notification_for_zpa_reauth_visibility": "notificationForZPAReauthVisibility",
205
+ "crowd_strike_zta_score_visibility": "crowdStrikeZTAScoreVisibility",
206
+ "hide_dtls_support_settings": "hideDTLSSupportSettings",
207
+ "dynamic_zpa_service_edge_assignmentt_visibility": "dynamicZPAServiceEdgeAssignmenttVisibility",
208
+ "domain_inclusion_exclusion_for_dns_request_visibility": "domainInclusionExclusionForDNSRequestVisibility",
209
+ "override_at_cmd_by_policy_visibility": "overrideATCmdByPolicyVisibility",
210
+ "windows_ap_captive_portal_detection_visibility": "windowsAPCaptivePortalDetectionVisibility",
211
+ "windows_ap_enable_fail_open_visibility": "windowsAPEnableFailOpenVisibility",
212
+ "enable_one_id_phase2_changes": "enableOneIDPhase2Changes",
213
+ "linux_rpm_build_visibility": "linuxRPMBuildVisibility",
214
+ "crowd_strike_zta_os_score_visibility": "crowdStrikeZTAOsScoreVisibility",
215
+ "crowd_strike_zta_sensor_config_score_visibility": "crowdStrikeZTASensorConfigScoreVisibility",
216
+ "enable_zcc_fail_close_settings_for_se_mode": "enableZCCFailCloseSettingsForSEMode",
217
+ "default_protocol_for_zpa": "defaultProtocolForZPA",
218
+ "tunnelTwoForiOSDevices": "tunnel_two_fori_os_devices",
219
+ "prioritize_ipv4_over_ipv6": "prioritizeIPv4OverIpv6",
220
+
221
+ }
222
+
223
+ if string in FIELD_EXCEPTIONS:
224
+ return FIELD_EXCEPTIONS[string]
225
+
226
+ if not string or "_" not in string:
227
+ return string
228
+
229
+ components = string.split("_")
230
+ converted = []
231
+
232
+ for i, comp in enumerate(components):
233
+ lower = comp.lower()
234
+ if i == 0:
235
+ converted.append(lower)
236
+ else:
237
+ converted.append(comp.capitalize())
238
+
239
+ return "".join(converted)
240
+
241
+
242
+ def convert_keys_to_snake_case(data):
243
+ """
244
+ Convert all keys in a dictionary or list to snake_case.
245
+ """
246
+ if isinstance(data, dict):
247
+ return {to_snake_case(k): convert_keys_to_snake_case(v) for k, v in data.items()}
248
+ elif isinstance(data, list):
249
+ return [convert_keys_to_snake_case(item) for item in data]
250
+ else:
251
+ return data
252
+
253
+
254
+ def convert_keys_to_camel_case(data):
255
+ """
256
+ Recursively convert all keys in a dictionary or list to camelCase.
257
+ Handles nested lists and dictionaries.
258
+ """
259
+ if isinstance(data, dict):
260
+ return {to_lower_camel_case(k): convert_keys_to_camel_case(v) for k, v in data.items()}
261
+ elif isinstance(data, list):
262
+ return [convert_keys_to_camel_case(item) for item in data]
263
+ else:
264
+ return data
@@ -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,
@@ -80,19 +78,7 @@ class ZscalerAPIResponse:
80
78
 
81
79
  if res_details:
82
80
  content_type = res_details.headers.get("Content-Type", "").lower()
83
- # if "application/json" in content_type:
84
- # self._build_json_response(response_body)
85
- # else:
86
- # # Attempt JSON parse, else store as text
87
- # try:
88
- # self._build_json_response(response_body)
89
- # except json.JSONDecodeError:
90
- # self._body = response_body
91
- # else:
92
- # try:
93
- # self._build_json_response(response_body)
94
- # except json.JSONDecodeError:
95
- # self._body = response_body
81
+
96
82
  if "application/json" in content_type:
97
83
  try:
98
84
  self._build_json_response(response_body)
@@ -180,13 +166,21 @@ class ZscalerAPIResponse:
180
166
 
181
167
  self._items_fetched += len(self._list)
182
168
  self._pages_fetched += 1
183
-
169
+
184
170
  def get_results(self):
185
171
  """
186
172
  Returns the current page of results.
187
173
  The initial call to the API returns only one page.
188
174
  """
189
175
  logger.debug("Fetching current page results")
176
+
177
+ if self._service_type.upper() == "ZCC" and self._type:
178
+ try:
179
+ return [self._type(item) for item in self._list if isinstance(item, dict)]
180
+ except Exception as wrap_error:
181
+ logger.warning(f"Failed to wrap results with {self._type}: {wrap_error}")
182
+ return self._list
183
+
190
184
  return self._list
191
185
 
192
186
  def has_next(self):
@@ -199,35 +193,28 @@ class ZscalerAPIResponse:
199
193
  return self._has_next()
200
194
 
201
195
  def next(self):
202
- """
203
- Fetch the next page of results if available.
196
+ if not self.has_next():
197
+ raise StopIteration("No more pages available.")
204
198
 
205
- Returns:
206
- tuple: (list of items, error)
199
+ results, error = self._fetch_next_page()
200
+ if error:
201
+ return None, self, error
202
+ if not results:
203
+ return None, self, None
204
+
205
+ if self._type:
206
+ try:
207
+ results = [self._type(item) for item in results if isinstance(item, dict)]
208
+ except Exception as wrap_error:
209
+ logger.warning(f"Failed to wrap pagination results with {self._type}: {wrap_error}")
210
+
211
+ return results, self, None
207
212
 
208
- If there's an error fetching the next page, returns (None, error).
209
- If no more pages exist, returns (None, None).
210
- """
211
- 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)
223
213
 
224
214
  def _fetch_next_page(self):
225
- """
226
- Internal method that fetches and returns the next page of results.
227
- """
228
215
  if not self._has_next():
229
216
  logger.debug("No more pages to fetch")
230
- return []
217
+ return [], None
231
218
 
232
219
  if self._service_type == "ZDX":
233
220
  self._params["offset"] = self._next_offset
@@ -248,20 +235,12 @@ class ZscalerAPIResponse:
248
235
 
249
236
  if error:
250
237
  logger.error(f"Error fetching the next page: {error}")
251
- return None
238
+ return None, error
252
239
 
253
- # Rebuild the response body for the next page
254
240
  self._build_json_response(response_body)
255
- return self._list
241
+ return self._list, None
256
242
 
257
243
  def _has_next(self):
258
- # Check max_items or max_pages constraints
259
- # if self._max_items is not None and self._items_fetched >= self._max_items:
260
- # logger.debug("Reached max items limit: %d", self._max_items)
261
- # return False
262
- # if self._max_pages is not None and self._pages_fetched >= self._max_pages:
263
- # logger.debug("Reached max pages limit: %d", self._max_pages)
264
- # return False
265
244
 
266
245
  if self._service_type == "ZPA":
267
246
  # More pages if current page < total_pages
@@ -14,8 +14,9 @@ from zscaler.zdx.legacy import LegacyZDXClientHelper
14
14
  from zscaler.zpa.legacy import LegacyZPAClientHelper
15
15
  from zscaler.zia.legacy import LegacyZIAClientHelper
16
16
  from zscaler.zwa.legacy import LegacyZWAClientHelper
17
+ # from zscaler.logger import setup_logging # ✅ Import here
17
18
 
18
- logger = logging.getLogger(__name__)
19
+ logger = logging.getLogger('zscaler-sdk-python')
19
20
 
20
21
 
21
22
  class RequestExecutor:
@@ -75,6 +76,13 @@ class RequestExecutor:
75
76
  self._config = config
76
77
  self._cache = cache
77
78
 
79
+ # ✅ Setup logging based on config flags
80
+ # log_config = self._config["client"].get("logging", {})
81
+ # setup_logging(
82
+ # enabled=log_config.get("enabled", False),
83
+ # verbose=log_config.get("verbose", False),
84
+ # )
85
+
78
86
  # Retrieve cloud, service, and customer ID (optional)
79
87
  self.cloud = self._config["client"].get("cloud", "production").lower()
80
88
  self.sandbox_cloud = self._config["client"].get("sandboxCloud", "").lower()
@@ -462,7 +470,7 @@ class RequestExecutor:
462
470
  req_timeout = self._request_timeout
463
471
 
464
472
  if req_timeout > 0 and (current_req_start_time - request_start_time) > req_timeout:
465
- logger.error("Request Timeout exceeded.")
473
+ logger.warning("Request Timeout exceeded.")
466
474
  return None, None, None, Exception("Request Timeout exceeded.")
467
475
 
468
476
  response, error = self._http_client.send_request(request)