zscaler-sdk-python 1.8.0__tar.gz → 1.8.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 (427) hide show
  1. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/PKG-INFO +1 -1
  2. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/pyproject.toml +1 -1
  3. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/__init__.py +1 -1
  4. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/oneapi_object.py +16 -0
  5. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/oneapi_response.py +0 -3
  6. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/utils.py +98 -0
  7. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/devices.py +99 -0
  8. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/intermediate_certificates.py +42 -5
  9. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/application_segment.py +1 -1
  10. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/common.py +52 -0
  11. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/policyset_controller_v1.py +10 -0
  12. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/policyset_controller_v2.py +10 -0
  13. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/LICENSE.md +0 -0
  14. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/README.md +0 -0
  15. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/api_client.py +0 -0
  16. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/cache/__init__.py +0 -0
  17. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/cache/cache.py +0 -0
  18. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/cache/no_op_cache.py +0 -0
  19. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/cache/zscaler_cache.py +0 -0
  20. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/config/__init__.py +0 -0
  21. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/config/config_setter.py +0 -0
  22. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/config/config_validator.py +0 -0
  23. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/constants.py +0 -0
  24. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/error_messages.py +0 -0
  25. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/errors/__init__.py +0 -0
  26. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/errors/error.py +0 -0
  27. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/errors/http_error.py +0 -0
  28. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/errors/response_checker.py +0 -0
  29. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/errors/zscaler_api_error.py +0 -0
  30. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/exceptions/__init__.py +0 -0
  31. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/exceptions/exceptions.py +0 -0
  32. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/helpers.py +0 -0
  33. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/logger.py +0 -0
  34. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/oneapi_client.py +0 -0
  35. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/oneapi_collection.py +0 -0
  36. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/oneapi_http_client.py +0 -0
  37. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/oneapi_oauth_client.py +0 -0
  38. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ratelimiter/__init__.py +0 -0
  39. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ratelimiter/ratelimiter.py +0 -0
  40. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/request_executor.py +0 -0
  41. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/user_agent.py +0 -0
  42. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/__init__.py +0 -0
  43. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/admin_user.py +0 -0
  44. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/company.py +0 -0
  45. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/entitlements.py +0 -0
  46. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/fail_open_policy.py +0 -0
  47. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/forwarding_profile.py +0 -0
  48. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/legacy.py +0 -0
  49. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/admin_roles.py +0 -0
  50. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/admin_user.py +0 -0
  51. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/devices.py +0 -0
  52. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/failopenpolicy.py +0 -0
  53. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/forwardingprofile.py +0 -0
  54. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/getcompanyinfo.py +0 -0
  55. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/manage_pass.py +0 -0
  56. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/secrets_otp.py +0 -0
  57. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/secrets_passwords.py +0 -0
  58. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/trustednetworks.py +0 -0
  59. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/webappservice.py +0 -0
  60. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/webpolicy.py +0 -0
  61. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/webprivacy.py +0 -0
  62. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  63. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  64. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/secrets.py +0 -0
  65. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/trusted_networks.py +0 -0
  66. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/web_app_service.py +0 -0
  67. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/web_policy.py +0 -0
  68. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/web_privacy.py +0 -0
  69. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zcc/zcc_service.py +0 -0
  70. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/__init__.py +0 -0
  71. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/admin.py +0 -0
  72. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/alerts.py +0 -0
  73. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/apps.py +0 -0
  74. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/devices.py +0 -0
  75. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/inventory.py +0 -0
  76. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/legacy.py +0 -0
  77. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/administration.py +0 -0
  78. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/alerts.py +0 -0
  79. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/application_users.py +0 -0
  80. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/applications.py +0 -0
  81. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  82. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/common.py +0 -0
  83. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/devices.py +0 -0
  84. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/snapshot.py +0 -0
  85. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/software_inventory.py +0 -0
  86. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/troubleshooting.py +0 -0
  87. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/models/users.py +0 -0
  88. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/snapshot.py +0 -0
  89. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/troubleshooting.py +0 -0
  90. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/users.py +0 -0
  91. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zdx/zdx_service.py +0 -0
  92. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/__init__.py +0 -0
  93. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/activate.py +0 -0
  94. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/admin_roles.py +0 -0
  95. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/admin_users.py +0 -0
  96. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/advanced_settings.py +0 -0
  97. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/alert_subscriptions.py +0 -0
  98. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/apptotal.py +0 -0
  99. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/atp_policy.py +0 -0
  100. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/audit_logs.py +0 -0
  101. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/authentication_settings.py +0 -0
  102. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/bandwidth_classes.py +0 -0
  103. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/bandwidth_control_rules.py +0 -0
  104. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/browser_control_settings.py +0 -0
  105. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/casb_dlp_rules.py +0 -0
  106. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/casb_malware_rules.py +0 -0
  107. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_app_instances.py +0 -0
  108. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_applications.py +0 -0
  109. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_browser_isolation.py +0 -0
  110. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_firewall.py +0 -0
  111. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_firewall_dns.py +0 -0
  112. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_firewall_ips.py +0 -0
  113. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_firewall_rules.py +0 -0
  114. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_nss.py +0 -0
  115. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloud_to_cloud_ir.py +0 -0
  116. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/cloudappcontrol.py +0 -0
  117. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/dedicated_ip_gateways.py +0 -0
  118. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/device_management.py +0 -0
  119. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/dlp_dictionary.py +0 -0
  120. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/dlp_engine.py +0 -0
  121. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/dlp_resources.py +0 -0
  122. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/dlp_templates.py +0 -0
  123. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/dlp_web_rules.py +0 -0
  124. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/dns_gatways.py +0 -0
  125. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/end_user_notification.py +0 -0
  126. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/file_type_control_rule.py +0 -0
  127. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/forwarding_control.py +0 -0
  128. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/ftp_control_policy.py +0 -0
  129. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/gre_tunnel.py +0 -0
  130. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/iot_report.py +0 -0
  131. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/ipv6_config.py +0 -0
  132. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/legacy.py +0 -0
  133. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/locations.py +0 -0
  134. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/malware_protection_policy.py +0 -0
  135. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/mobile_threat_settings.py +0 -0
  136. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/__init__.py +0 -0
  137. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/activation.py +0 -0
  138. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/admin_roles.py +0 -0
  139. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/admin_users.py +0 -0
  140. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/advanced_settings.py +0 -0
  141. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  142. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/alert_subscriptions.py +0 -0
  143. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/apptotal.py +0 -0
  144. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/authentication_settings.py +0 -0
  145. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/bandwidth_classes.py +0 -0
  146. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
  147. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/browser_control_settings.py +0 -0
  148. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/casb_dlp_rules.py +0 -0
  149. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/casb_malware_rules.py +0 -0
  150. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_app_instances.py +0 -0
  151. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_app_policy.py +0 -0
  152. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  153. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  154. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  155. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  156. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  157. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  158. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  159. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  160. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  161. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
  162. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  163. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  164. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_nss.py +0 -0
  165. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloud_to_cloud_ir.py +0 -0
  166. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/cloudappcontrol.py +0 -0
  167. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/common.py +0 -0
  168. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
  169. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/device_groups.py +0 -0
  170. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/devices.py +0 -0
  171. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/dlp_dictionary.py +0 -0
  172. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/dlp_engine.py +0 -0
  173. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/dlp_resources.py +0 -0
  174. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/dlp_templates.py +0 -0
  175. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/dlp_web_rules.py +0 -0
  176. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/dns_gateways.py +0 -0
  177. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/endusernotification.py +0 -0
  178. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/filetyperules.py +0 -0
  179. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  180. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/ftp_control_policy.py +0 -0
  181. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/gre_recommended_list.py +0 -0
  182. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  183. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/gre_tunnels.py +0 -0
  184. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/gre_vips.py +0 -0
  185. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/intermediate_certificates.py +0 -0
  186. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/iotreport.py +0 -0
  187. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/ipv6_config.py +0 -0
  188. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/location_group.py +0 -0
  189. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/location_management.py +0 -0
  190. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/malware_protection_settings.py +0 -0
  191. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/mobile_threat_settings.py +0 -0
  192. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/nat_control_policy.py +0 -0
  193. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/nss_servers.py +0 -0
  194. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/organization_information.py +0 -0
  195. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/pac_files.py +0 -0
  196. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/proxies.py +0 -0
  197. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/proxy_gateways.py +0 -0
  198. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/remoteassistance.py +0 -0
  199. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/risk_profiles.py +0 -0
  200. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/rule_labels.py +0 -0
  201. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/saas_security_api.py +0 -0
  202. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/sandboxrules.py +0 -0
  203. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/security_policy_settings.py +0 -0
  204. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/shadow_it_report.py +0 -0
  205. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  206. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/subclouds.py +0 -0
  207. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/system_audit.py +0 -0
  208. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
  209. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/time_intervals.py +0 -0
  210. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/traffic_datacenters.py +0 -0
  211. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
  212. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/traffic_extranet.py +0 -0
  213. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/traffic_static_ip.py +0 -0
  214. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  215. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  216. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/url_filtering_rules.py +0 -0
  217. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/urlcategory.py +0 -0
  218. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/user_management.py +0 -0
  219. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/vzen_clusters.py +0 -0
  220. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/vzen_nodes.py +0 -0
  221. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/workload_groups.py +0 -0
  222. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/models/zpa_gateway.py +0 -0
  223. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/nat_control_policy.py +0 -0
  224. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/nss_servers.py +0 -0
  225. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/organization_information.py +0 -0
  226. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/pac_files.py +0 -0
  227. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/policy_export.py +0 -0
  228. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/proxies.py +0 -0
  229. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/remote_assistance.py +0 -0
  230. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/risk_profiles.py +0 -0
  231. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/rule_labels.py +0 -0
  232. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/saas_security_api.py +0 -0
  233. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/sandbox.py +0 -0
  234. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/sandbox_rules.py +0 -0
  235. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/security_policy_settings.py +0 -0
  236. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/shadow_it_report.py +0 -0
  237. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/ssl_inspection_rules.py +0 -0
  238. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/sub_clouds.py +0 -0
  239. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/system_audit.py +0 -0
  240. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/tenancy_restriction_profile.py +0 -0
  241. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/time_intervals.py +0 -0
  242. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/traffic_datacenters.py +0 -0
  243. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/traffic_extranet.py +0 -0
  244. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/traffic_static_ip.py +0 -0
  245. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  246. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/url_categories.py +0 -0
  247. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/url_filtering.py +0 -0
  248. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/user_management.py +0 -0
  249. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/vzen_clusters.py +0 -0
  250. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/vzen_nodes.py +0 -0
  251. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/workload_groups.py +0 -0
  252. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/zia_service.py +0 -0
  253. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zia/zpa_gateway.py +0 -0
  254. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/__init__.py +0 -0
  255. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/api_client.py +0 -0
  256. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/groups.py +0 -0
  257. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/models/api_client.py +0 -0
  258. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/models/common.py +0 -0
  259. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/models/groups.py +0 -0
  260. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/models/resource_servers.py +0 -0
  261. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/models/user_entitlement.py +0 -0
  262. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/models/users.py +0 -0
  263. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/resource_servers.py +0 -0
  264. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/user_entitlement.py +0 -0
  265. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/users.py +0 -0
  266. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zidentity/zidentity_service.py +0 -0
  267. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/__init__.py +0 -0
  268. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/admin_sso_controller.py +0 -0
  269. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/administrator_controller.py +0 -0
  270. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/api_keys.py +0 -0
  271. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_connector_groups.py +0 -0
  272. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_connector_schedule.py +0 -0
  273. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_connectors.py +0 -0
  274. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_protection.py +0 -0
  275. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_segment_by_type.py +0 -0
  276. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_segments_ba.py +0 -0
  277. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_segments_ba_v2.py +0 -0
  278. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_segments_inspection.py +0 -0
  279. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/app_segments_pra.py +0 -0
  280. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/application_segment.py +0 -0
  281. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/c2c_ip_ranges.py +0 -0
  282. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/cbi_banner.py +0 -0
  283. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/cbi_certificate.py +0 -0
  284. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/cbi_profile.py +0 -0
  285. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/cbi_region.py +0 -0
  286. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  287. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/certificates.py +0 -0
  288. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/client_settings.py +0 -0
  289. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/cloud_connector_groups.py +0 -0
  290. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/config_override_controller.py +0 -0
  291. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/customer_controller.py +0 -0
  292. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/customer_domain.py +0 -0
  293. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/customer_version_profile.py +0 -0
  294. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/emergency_access.py +0 -0
  295. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/enrollment_certificates.py +0 -0
  296. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/idp.py +0 -0
  297. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/legacy.py +0 -0
  298. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/lss.py +0 -0
  299. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/machine_groups.py +0 -0
  300. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/microtenants.py +0 -0
  301. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/administrator_controller.py +0 -0
  302. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/api_keys.py +0 -0
  303. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/app_connector_groups.py +0 -0
  304. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  305. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/app_connectors.py +0 -0
  306. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  307. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/app_protection_profile.py +0 -0
  308. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/application_segment_lb.py +0 -0
  309. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/application_servers.py +0 -0
  310. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/c2c_ip_ranges.py +0 -0
  311. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/cbi_banner.py +0 -0
  312. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/cbi_certificate.py +0 -0
  313. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/cbi_profile.py +0 -0
  314. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/cbi_region.py +0 -0
  315. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  316. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/certificates.py +0 -0
  317. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/client_settings.py +0 -0
  318. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  319. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/config_override_controller.py +0 -0
  320. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/customer_controller.py +0 -0
  321. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/customer_domain.py +0 -0
  322. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/customer_version_profile.py +0 -0
  323. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/emergency_access.py +0 -0
  324. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  325. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/idp.py +0 -0
  326. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/lss.py +0 -0
  327. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/machine_groups.py +0 -0
  328. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/microtenants.py +0 -0
  329. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/npn_client_controller.py +0 -0
  330. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/posture_profiles.py +0 -0
  331. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/pra_approval.py +0 -0
  332. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/pra_console.py +0 -0
  333. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  334. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/pra_credential.py +0 -0
  335. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/pra_portal.py +0 -0
  336. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/private_cloud_controller.py +0 -0
  337. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/private_cloud_group.py +0 -0
  338. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/provisioning_keys.py +0 -0
  339. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/role_controller.py +0 -0
  340. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/saml_attributes.py +0 -0
  341. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/scim_attributes.py +0 -0
  342. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/scim_groups.py +0 -0
  343. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/segment_group.py +0 -0
  344. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/server_group.py +0 -0
  345. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/service_edge_groups.py +0 -0
  346. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  347. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/service_edges.py +0 -0
  348. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/trusted_network.py +0 -0
  349. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/user_portal_controller.py +0 -0
  350. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/models/user_portal_link.py +0 -0
  351. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/npn_client_controller.py +0 -0
  352. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/policies.py +0 -0
  353. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/posture_profiles.py +0 -0
  354. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/pra_approval.py +0 -0
  355. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/pra_console.py +0 -0
  356. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/pra_credential.py +0 -0
  357. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/pra_credential_pool.py +0 -0
  358. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/pra_portal.py +0 -0
  359. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/private_cloud_controller.py +0 -0
  360. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/private_cloud_group.py +0 -0
  361. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/provisioning.py +0 -0
  362. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/role_controller.py +0 -0
  363. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/saml_attributes.py +0 -0
  364. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/scim_attributes.py +0 -0
  365. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/scim_groups.py +0 -0
  366. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/segment_groups.py +0 -0
  367. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/server_groups.py +0 -0
  368. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/servers.py +0 -0
  369. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/service_edge_group.py +0 -0
  370. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/service_edge_schedule.py +0 -0
  371. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/service_edges.py +0 -0
  372. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/trusted_networks.py +0 -0
  373. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/user_portal_controller.py +0 -0
  374. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/user_portal_link.py +0 -0
  375. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zpa/zpa_service.py +0 -0
  376. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/__init__.py +0 -0
  377. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/account_details.py +0 -0
  378. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/activation.py +0 -0
  379. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/admin_roles.py +0 -0
  380. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/admin_users.py +0 -0
  381. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/api_keys.py +0 -0
  382. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/ec_groups.py +0 -0
  383. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/forwarding_gateways.py +0 -0
  384. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/forwarding_rules.py +0 -0
  385. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/ip_destination_groups.py +0 -0
  386. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/ip_groups.py +0 -0
  387. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/ip_source_groups.py +0 -0
  388. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/legacy.py +0 -0
  389. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/location_management.py +0 -0
  390. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/location_template.py +0 -0
  391. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/activation.py +0 -0
  392. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/admin_roles.py +0 -0
  393. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/admin_users.py +0 -0
  394. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/api_keys.py +0 -0
  395. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/common.py +0 -0
  396. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/ec_group_vm.py +0 -0
  397. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/ecgroup.py +0 -0
  398. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  399. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/forwarding_rules.py +0 -0
  400. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  401. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/ip_groups.py +0 -0
  402. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/ip_source_groups.py +0 -0
  403. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/location_management.py +0 -0
  404. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/location_templates.py +0 -0
  405. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/nw_service.py +0 -0
  406. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/nw_service_groups.py +0 -0
  407. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/provisioning_url.py +0 -0
  408. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  409. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/models/zpa_resources.py +0 -0
  410. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/nw_service.py +0 -0
  411. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/nw_service_groups.py +0 -0
  412. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/provisioning_url.py +0 -0
  413. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/ztw/ztw_service.py +0 -0
  414. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/__init__.py +0 -0
  415. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/audit_logs.py +0 -0
  416. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/dlp_incidents.py +0 -0
  417. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/legacy.py +0 -0
  418. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/audit_logs.py +0 -0
  419. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/change_history.py +0 -0
  420. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/common.py +0 -0
  421. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/generated_tickets.py +0 -0
  422. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/incident_details.py +0 -0
  423. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/incident_evidence.py +0 -0
  424. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/incident_group_search.py +0 -0
  425. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/incident_search.py +0 -0
  426. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.2}/zscaler/zwa/models/incident_trigger.py +0 -0
  427. {zscaler_sdk_python-1.8.0 → zscaler_sdk_python-1.8.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.8.0
3
+ Version: 1.8.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.8.0"
3
+ version = "1.8.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.8.0"
32
+ __version__ = "1.8.2"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -21,6 +21,22 @@ class ZscalerObject:
21
21
  def __contains__(self, key):
22
22
  return hasattr(self, key)
23
23
 
24
+ def get(self, key, default=None):
25
+ """
26
+ Get an attribute value with a default if the attribute doesn't exist.
27
+ Similar to dict.get() method.
28
+
29
+ Args:
30
+ key (str): The attribute name to get
31
+ default: The default value to return if the attribute doesn't exist
32
+
33
+ Returns:
34
+ The attribute value or the default value
35
+ """
36
+ if hasattr(self, key):
37
+ return getattr(self, key)
38
+ return default
39
+
24
40
  def as_dict(self):
25
41
  result = {}
26
42
  for key, val in self.request_format().items():
@@ -66,9 +66,6 @@ class ZscalerAPIResponse:
66
66
  if end_time:
67
67
  self._params["endTime"] = end_time
68
68
 
69
- # If service is ZPA and user did not specify a pagesize, set it to max=500 by default
70
- if self._service_type.upper() == "ZPA" and "pagesize" not in self._params:
71
- self._params["pagesize"] = self.SERVICE_PAGE_LIMITS["ZPA"]["max"]
72
69
 
73
70
  # If service is ZIA, ensure the pagination parameter is "pageSize" in camelCase
74
71
  if self._service_type == "zia":
@@ -819,6 +819,60 @@ def format_url(base_string):
819
819
 
820
820
  # return wrapper
821
821
 
822
+ def validate_and_format_date(date_str: str) -> str:
823
+ """
824
+ Validates and formats date string for ZCC API.
825
+ Accepts various date formats and returns ZCC API format (YYYY-MM-DD HH:MM:SS GMT).
826
+
827
+ Args:
828
+ date_str (str): Date string in various formats
829
+
830
+ Returns:
831
+ str: Date in ZCC API format (YYYY-MM-DD HH:MM:SS GMT)
832
+
833
+ Raises:
834
+ ValueError: If date format is invalid
835
+ """
836
+ if not date_str:
837
+ raise ValueError("Date string cannot be empty")
838
+
839
+ try:
840
+ # Try to parse the date string
841
+ parsed_date = parser.parse(date_str)
842
+
843
+ # If no timezone info, assume UTC
844
+ if parsed_date.tzinfo is None:
845
+ parsed_date = pytz.UTC.localize(parsed_date)
846
+
847
+ # Convert to ZCC API format: YYYY-MM-DD HH:MM:SS GMT
848
+ return parsed_date.strftime("%Y-%m-%d %H:%M:%S GMT")
849
+ except (ValueError, TypeError) as e:
850
+ raise ValueError(f"Invalid date format: {date_str}. Expected formats: YYYY-MM-DD, YYYY-MM-DD HH:MM:SS, YYYY-MM-DDTHH:MM:SS, etc. Error: {e}")
851
+
852
+
853
+ def validate_time_zone(time_zone_str: str) -> str:
854
+ """
855
+ Validates time zone string against IANA Time Zone database.
856
+
857
+ Args:
858
+ time_zone_str (str): IANA time zone string
859
+
860
+ Returns:
861
+ str: Validated time zone string
862
+
863
+ Raises:
864
+ ValueError: If time zone is invalid
865
+ """
866
+ if not time_zone_str:
867
+ raise ValueError("Time zone cannot be empty")
868
+
869
+ # Check if it's a valid IANA time zone
870
+ if time_zone_str not in pytz.all_timezones:
871
+ raise ValueError(f"Invalid time zone: {time_zone_str}. Please use a valid IANA time zone (e.g., 'America/New_York', 'UTC', 'Europe/London')")
872
+
873
+ return time_zone_str
874
+
875
+
822
876
  def zcc_param_mapper(func):
823
877
  @wraps(func)
824
878
  def wrapper(self, *args, **kwargs):
@@ -873,10 +927,54 @@ def zcc_param_mapper(func):
873
927
  else:
874
928
  mapped_params["registrationTypes"] = ",".join(mapped)
875
929
 
930
+ # Handle date parameters
931
+ start_date = (
932
+ query_params.get("start_date") or
933
+ query_params.get("startDate") or
934
+ body.get("start_date") or
935
+ body.get("startDate")
936
+ )
937
+
938
+ if start_date:
939
+ try:
940
+ mapped_params["startDate"] = validate_and_format_date(start_date)
941
+ except ValueError as e:
942
+ raise ValueError(f"Invalid start_date: {e}")
943
+
944
+ end_date = (
945
+ query_params.get("end_date") or
946
+ query_params.get("endDate") or
947
+ body.get("end_date") or
948
+ body.get("endDate")
949
+ )
950
+
951
+ if end_date:
952
+ try:
953
+ mapped_params["endDate"] = validate_and_format_date(end_date)
954
+ except ValueError as e:
955
+ raise ValueError(f"Invalid end_date: {e}")
956
+
957
+ # Handle time zone parameter
958
+ time_zone = (
959
+ query_params.get("time_zone") or
960
+ query_params.get("Time-Zone") or
961
+ body.get("time_zone") or
962
+ body.get("Time-Zone")
963
+ )
964
+
965
+ if time_zone:
966
+ try:
967
+ mapped_params["Time-Zone"] = validate_time_zone(time_zone)
968
+ except ValueError as e:
969
+ raise ValueError(f"Invalid time_zone: {e}")
970
+
876
971
  # Clean aliases
877
972
  for key in [
878
973
  "os_type", "os_types",
879
974
  "registration_type", "registration_types",
975
+ "start_date", "startDate",
976
+ "end_date", "endDate",
977
+ "time_zone", "Time-Zone",
880
978
  ]:
881
979
  query_params.pop(key, None)
882
980
  kwargs.pop(key, None)
@@ -209,6 +209,104 @@ class DevicesAPI(APIClient):
209
209
 
210
210
  return filename
211
211
 
212
+ @zcc_param_mapper
213
+ def download_disable_reasons(self, query_params=None, filename: str = None):
214
+ """
215
+ Downloads or exports a report as a CSV file showing the disable reasons of devices.
216
+
217
+ Args:
218
+ query_params (dict, optional): A dictionary containing supported filters.
219
+
220
+ ``[query_params.os_types]`` {list}: Filter by OS type. Valid values:
221
+ ios, android, windows, macos, linux.
222
+
223
+ ``[query_params.start_date]`` {str}: Start date for the report. Accepts various formats:
224
+ YYYY-MM-DD, YYYY-MM-DD HH:MM:SS, YYYY-MM-DDTHH:MM:SS, etc. Will be converted to ZCC API format.
225
+
226
+ ``[query_params.end_date]`` {str}: End date for the report. Accepts various formats:
227
+ YYYY-MM-DD, YYYY-MM-DD HH:MM:SS, YYYY-MM-DDTHH:MM:SS, etc. Will be converted to ZCC API format.
228
+
229
+ ``[query_params.time_zone]`` {str}: IANA time zone for date interpretation.
230
+ Examples: 'America/New_York', 'UTC', 'Europe/London'.
231
+
232
+ filename (str, optional): Custom filename for the CSV file. Defaults to timestamped name.
233
+
234
+ Returns:
235
+ str: Path to the downloaded CSV file.
236
+
237
+ Examples:
238
+ Download disable reasons report for Windows devices:
239
+
240
+ >>> try:
241
+ ... filename = client.zcc.devices.download_disable_reasons(
242
+ ... query_params={
243
+ ... "os_types": ["windows"],
244
+ ... "start_date": "2024-01-01",
245
+ ... "end_date": "2024-01-31",
246
+ ... "time_zone": "America/New_York"
247
+ ... },
248
+ ... filename="disable_reasons_jan2024.csv"
249
+ ... )
250
+ ... print(f"Disable reasons report downloaded successfully: {filename}")
251
+ ... except Exception as e:
252
+ ... print(f"Error during download: {e}")
253
+
254
+ Download disable reasons for all devices with specific date range:
255
+
256
+ >>> try:
257
+ ... filename = client.zcc.devices.download_disable_reasons(
258
+ ... query_params={
259
+ ... "start_date": "2024-01-01 00:00:00",
260
+ ... "end_date": "2024-01-31 23:59:59",
261
+ ... "time_zone": "UTC"
262
+ ... }
263
+ ... )
264
+ ... print(f"Report downloaded: {filename}")
265
+ ... except Exception as e:
266
+ ... print(f"Error: {e}")
267
+ """
268
+ query_params = query_params or {}
269
+
270
+ if not filename:
271
+ filename = f"zcc-disable-reasons-{datetime.now().strftime('%Y%m%d-%H_%M_%S')}.csv"
272
+
273
+ # The zcc_param_mapper decorator handles parameter mapping and validation
274
+ # We just need to pass the query_params through
275
+ params = query_params.copy()
276
+
277
+ http_method = "get".upper()
278
+ api_url = format_url(f"{self._zcc_base_endpoint}/downloadDisableReasons")
279
+
280
+ # Prepare headers - include Time-Zone if provided
281
+ headers = {"Accept": "*/*"}
282
+ if "Time-Zone" in params:
283
+ headers["Time-Zone"] = params.pop("Time-Zone")
284
+
285
+ request, error = self._request_executor.create_request(
286
+ http_method,
287
+ api_url,
288
+ params=params,
289
+ headers=headers
290
+ )
291
+
292
+ if error:
293
+ raise Exception("Error creating request for downloading disable reasons report.")
294
+
295
+ response, error = self._request_executor.execute(request, return_raw_response=True)
296
+ if error:
297
+ raise error
298
+ if response is None:
299
+ raise Exception("No response received when downloading disable reasons report.")
300
+
301
+ content_type = response.headers.get("Content-Type", "").lower()
302
+ if not content_type.startswith("application/octet-stream") and not response.text.startswith('"User","Device type"'):
303
+ raise Exception("Invalid response content type or unexpected response format.")
304
+
305
+ with open(filename, "wb") as f:
306
+ f.write(response.content)
307
+
308
+ return filename
309
+
212
310
  @zcc_param_mapper
213
311
  def list_devices(self, query_params=None) -> tuple:
214
312
  """
@@ -624,3 +722,4 @@ class DevicesAPI(APIClient):
624
722
  return None, response, error
625
723
 
626
724
  return result, response, None
725
+
@@ -414,7 +414,7 @@ class IntermediateCertsAPI(APIClient):
414
414
  api_url = format_url(
415
415
  f"""
416
416
  {self._zia_base_endpoint}
417
- //intermediateCaCertificate/downloadCsr/{cert_id}
417
+ /intermediateCaCertificate/downloadCsr/{cert_id}
418
418
  """
419
419
  )
420
420
 
@@ -575,12 +575,14 @@ class IntermediateCertsAPI(APIClient):
575
575
  return (None, response, error)
576
576
  return (result, response, None)
577
577
 
578
- def upload_cert(self, cert_id: int) -> tuple:
578
+ def upload_cert(self, cert_id: int, file_input_stream: str = None, file_path: str = None) -> tuple:
579
579
  """
580
580
  Uploads a custom intermediate CA certificate signed by your Certificate Authority (CA) for SSL inspection.
581
581
 
582
582
  Args:
583
583
  cert_id (int): The unique identifier for the intermediate CA certificate.
584
+ file_input_stream (str): The certificate content in PEM format (alternative to file_path).
585
+ file_path (str): Path to the certificate file (alternative to file_input_stream).
584
586
 
585
587
  Returns:
586
588
  tuple: A tuple containing (intermediate CA certificate instance, Response, error).
@@ -593,10 +595,45 @@ class IntermediateCertsAPI(APIClient):
593
595
  """
594
596
  )
595
597
 
596
- body = {}
597
- headers = {}
598
+ # Prepare file content
599
+ if file_path:
600
+ # Use file path for upload
601
+ with open(file_path, 'rb') as f:
602
+ file_content = f.read()
603
+ elif file_input_stream:
604
+ # Use string content for upload
605
+ file_content = file_input_stream.encode('utf-8')
606
+ else:
607
+ return (None, None, ValueError("Either file_path or file_input_stream must be provided"))
608
+
609
+ # Create multipart form data manually (like Postman does)
610
+ import io
611
+ import uuid
612
+
613
+ # Generate a random boundary (like Postman does)
614
+ boundary = f"----WebKitFormBoundary{str(uuid.uuid4()).replace('-', '')}"
615
+
616
+ # Build multipart form data
617
+ form_data = io.BytesIO()
618
+
619
+ # Add the file part
620
+ form_data.write(f'--{boundary}\r\n'.encode())
621
+ form_data.write(b'Content-Disposition: form-data; name="fileUpload"; filename="certificate.pem"\r\n')
622
+ form_data.write(b'Content-Type: application/octet-stream\r\n\r\n')
623
+ form_data.write(file_content)
624
+ form_data.write(f'\r\n--{boundary}--\r\n'.encode())
625
+
626
+ headers = {
627
+ 'Content-Type': f'multipart/form-data; boundary={boundary}'
628
+ }
598
629
 
599
- request, error = self._request_executor.create_request(http_method, api_url, body, headers)
630
+ request, error = self._request_executor.create_request(
631
+ http_method,
632
+ api_url,
633
+ body=form_data.getvalue(),
634
+ headers=headers,
635
+ use_raw_data_for_body=True
636
+ )
600
637
  if error:
601
638
  return (None, None, error)
602
639
 
@@ -1093,7 +1093,7 @@ class MultiMatchUnsupportedReferences(ZscalerObject):
1093
1093
  self.unsupported_features = ZscalerCollection.form_list(
1094
1094
  config["unsupportedFeatures"] if "unsupportedFeatures" in config else [], str
1095
1095
  )
1096
-
1096
+
1097
1097
  self.tcp_ports = ZscalerCollection.form_list(
1098
1098
  config["tcpPorts"] if "tcpPorts" in config else [], str
1099
1099
  )
@@ -16,6 +16,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
16
 
17
17
  from zscaler.oneapi_object import ZscalerObject
18
18
  from zscaler.oneapi_collection import ZscalerCollection
19
+ from zscaler.zpa.models import application_segment as application_segment
19
20
 
20
21
 
21
22
  class CommonIDName(ZscalerObject):
@@ -519,3 +520,54 @@ class SortBy(ZscalerObject):
519
520
  }
520
521
  parent_req_format.update(current_obj_format)
521
522
  return parent_req_format
523
+
524
+
525
+ class DesktopPolicyMappingsDTO(ZscalerObject):
526
+ """
527
+ A class for DesktopPolicyMappingsDTO objects.
528
+ Handles common block attributes shared across multiple resources
529
+ """
530
+
531
+ def __init__(self, config=None):
532
+ """
533
+ Initialize the DesktopPolicyMappingsDTO model based on API response.
534
+
535
+ Args:
536
+ config (dict): A dictionary representing the response.
537
+ """
538
+ super().__init__(config)
539
+ if config:
540
+ self.id = config["id"] if "id" in config else None
541
+ self.modified_time = config["modifiedTime"] if "modifiedTime" in config else None
542
+ self.creation_time = config["creationTime"] if "creationTime" in config else None
543
+ self.modified_by = config["modifiedBy"] if "modifiedBy" in config else None
544
+ self.image_id = config["imageId"] if "imageId" in config else None
545
+ self.image_name = config["imageName"] if "imageName" in config else None
546
+ self.app_segments = ZscalerCollection.form_list(
547
+ config["appSegments"] if "appSegments" in config else [], application_segment.ApplicationSegments
548
+ )
549
+ else:
550
+ self.id = None
551
+ self.modified_time = None
552
+ self.creation_time = None
553
+ self.modified_by = None
554
+ self.image_id = None
555
+ self.image_name = None
556
+ self.app_segments = []
557
+
558
+ def request_format(self):
559
+ """
560
+ Returns the object as a dictionary in the format expected for API requests.
561
+ """
562
+ parent_req_format = super().request_format()
563
+ current_obj_format = {
564
+ "id": self.id,
565
+ "modifiedTime": self.modified_time,
566
+ "creationTime": self.creation_time,
567
+ "modifiedBy": self.modified_by,
568
+ "imageId": self.image_id,
569
+ "imageName": self.image_name,
570
+ "appSegments": [segment.as_dict() for segment in self.app_segments],
571
+ }
572
+ parent_req_format.update(current_obj_format)
573
+ return parent_req_format
@@ -49,6 +49,8 @@ class PolicySetControllerV1(ZscalerObject):
49
49
  self.reauth_idle_timeout = config["reauthIdleTimeout"] if "reauthIdleTimeout" in config else None
50
50
  self.reauth_timeout = config["reauthTimeout"] if "reauthTimeout" in config else None
51
51
  self.custom_msg = config["customMsg"] if "customMsg" in config else None
52
+ self.device_posture_failure_notification_enabled = config["devicePostureFailureNotificationEnabled"] \
53
+ if "devicePostureFailureNotificationEnabled" in config else None
52
54
  self.disabled = config["disabled"] if "disabled" in config else None
53
55
  self.extranet_enabled = config["extranetEnabled"] if "extranetEnabled" in config else False
54
56
  self.microtenant_id = config["microtenantId"] if "microtenantId" in config else None
@@ -78,6 +80,10 @@ class PolicySetControllerV1(ZscalerObject):
78
80
  config["serviceEdgeGroups"] if "serviceEdgeGroups" in config else [], service_edge_groups.ServiceEdgeGroup
79
81
  )
80
82
 
83
+ self.desktop_policy_mappings = ZscalerCollection.form_list(
84
+ config["desktopPolicyMappings"] if "desktopPolicyMappings" in config else [], common.DesktopPolicyMappingsDTO
85
+ )
86
+
81
87
  if "privilegedCapabilities" in config:
82
88
  if isinstance(config["privilegedCapabilities"], common.PrivilegedCapabilitiesResource):
83
89
  self.privileged_capabilities = config["privilegedCapabilities"]
@@ -167,6 +173,8 @@ class PolicySetControllerV1(ZscalerObject):
167
173
  self.reauth_timeout = None
168
174
  self.read_only = None
169
175
  self.zscaler_managed = None
176
+ self.device_posture_failure_notification_enabled = None
177
+ self.desktop_policy_mappings = []
170
178
 
171
179
  def request_format(self):
172
180
  parent_req_format = super().request_format()
@@ -208,6 +216,8 @@ class PolicySetControllerV1(ZscalerObject):
208
216
  "appConnectorGroups": [group.request_format() for group in self.app_connector_groups],
209
217
  "appServerGroups": [group.request_format() for group in self.app_server_groups],
210
218
  "serviceEdgeGroups": [group.request_format() for group in self.service_edge_groups],
219
+ "devicePostureFailureNotificationEnabled": self.device_posture_failure_notification_enabled,
220
+ "desktopPolicyMappings": [mapping.request_format() for mapping in self.desktop_policy_mappings],
211
221
  }
212
222
  parent_req_format.update(current_obj_format)
213
223
  return parent_req_format
@@ -48,6 +48,8 @@ class PolicySetControllerV2(ZscalerObject):
48
48
  self.reauth_idle_timeout = config["reauthIdleTimeout"] if "reauthIdleTimeout" in config else None
49
49
  self.reauth_timeout = config["reauthTimeout"] if "reauthTimeout" in config else None
50
50
  self.custom_msg = config["customMsg"] if "customMsg" in config else None
51
+ self.device_posture_failure_notification_enabled = config["devicePostureFailureNotificationEnabled"] \
52
+ if "devicePostureFailureNotificationEnabled" in config else None
51
53
  self.disabled = config["disabled"] if "disabled" in config else None
52
54
  self.extranet_enabled = config["extranetEnabled"] if "extranetEnabled" in config else False
53
55
  self.microtenant_id = config["microtenantId"] if "microtenantId" in config else None
@@ -81,6 +83,10 @@ class PolicySetControllerV2(ZscalerObject):
81
83
  config["serviceEdgeGroups"] if "serviceEdgeGroups" in config else [], service_edge_groups.ServiceEdgeGroup
82
84
  )
83
85
 
86
+ self.desktop_policy_mappings = ZscalerCollection.form_list(
87
+ config["desktopPolicyMappings"] if "desktopPolicyMappings" in config else [], common.DesktopPolicyMappingsDTO
88
+ )
89
+
84
90
  if "privilegedCapabilities" in config:
85
91
  if isinstance(config["privilegedCapabilities"], common.PrivilegedCapabilitiesResource):
86
92
  self.privileged_capabilities = config["privilegedCapabilities"]
@@ -172,6 +178,8 @@ class PolicySetControllerV2(ZscalerObject):
172
178
  self.reauth_timeout = None
173
179
  self.read_only = None
174
180
  self.zscaler_managed = None
181
+ self.device_posture_failure_notification_enabled = None
182
+ self.desktop_policy_mappings = []
175
183
 
176
184
  def request_format(self):
177
185
  parent_req_format = super().request_format()
@@ -214,6 +222,8 @@ class PolicySetControllerV2(ZscalerObject):
214
222
  "appConnectorGroups": [group.request_format() for group in self.app_connector_groups],
215
223
  "appServerGroups": [group.request_format() for group in self.app_server_groups],
216
224
  "serviceEdgeGroups": [group.request_format() for group in self.service_edge_groups],
225
+ "devicePostureFailureNotificationEnabled": self.device_posture_failure_notification_enabled,
226
+ "desktopPolicyMappings": [mapping.request_format() for mapping in self.desktop_policy_mappings],
217
227
  }
218
228
  parent_req_format.update(current_obj_format)
219
229
  return parent_req_format