zscaler-sdk-python 1.0.3__tar.gz → 1.1.0__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 (368) hide show
  1. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/PKG-INFO +1 -1
  2. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/pyproject.toml +3 -3
  3. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/__init__.py +1 -1
  4. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/helpers.py +6 -0
  5. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/utils.py +22 -2
  6. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/legacy.py +102 -50
  7. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/admin_roles.py +106 -0
  8. zscaler_sdk_python-1.1.0/zscaler/zia/alert_subscriptions.py +224 -0
  9. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/atp_policy.py +14 -8
  10. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/authentication_settings.py +2 -2
  11. zscaler_sdk_python-1.1.0/zscaler/zia/bandwidth_classes.py +326 -0
  12. zscaler_sdk_python-1.1.0/zscaler/zia/bandwidth_control_rules.py +399 -0
  13. zscaler_sdk_python-1.1.0/zscaler/zia/cloud_app_instances.py +304 -0
  14. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloudappcontrol.py +0 -10
  15. zscaler_sdk_python-1.1.0/zscaler/zia/dedicated_ip_gateways.py +82 -0
  16. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_web_rules.py +0 -1
  17. zscaler_sdk_python-1.1.0/zscaler/zia/dns_gatways.py +269 -0
  18. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/forwarding_control.py +0 -43
  19. zscaler_sdk_python-1.1.0/zscaler/zia/ftp_control_policy.py +148 -0
  20. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/gre_tunnel.py +2 -4
  21. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/intermediate_certificates.py +2 -5
  22. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/legacy.py +130 -0
  23. zscaler_sdk_python-1.1.0/zscaler/zia/mobile_threat_settings.py +151 -0
  24. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/admin_roles.py +38 -0
  25. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/advanced_settings.py +2 -1
  26. zscaler_sdk_python-1.1.0/zscaler/zia/models/alert_subscriptions.py +83 -0
  27. zscaler_sdk_python-1.1.0/zscaler/zia/models/bandwidth_classes.py +74 -0
  28. zscaler_sdk_python-1.1.0/zscaler/zia/models/bandwidth_control_rules.py +148 -0
  29. zscaler_sdk_python-1.1.0/zscaler/zia/models/cloud_app_instances.py +139 -0
  30. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_rules.py +6 -1
  31. zscaler_sdk_python-1.1.0/zscaler/zia/models/dedicated_ip_gateways.py +102 -0
  32. zscaler_sdk_python-1.1.0/zscaler/zia/models/dns_gatways.py +108 -0
  33. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/filetyperules.py +12 -1
  34. zscaler_sdk_python-1.1.0/zscaler/zia/models/ftp_control_policy.py +61 -0
  35. zscaler_sdk_python-1.1.0/zscaler/zia/models/mobile_threat_settings.py +91 -0
  36. zscaler_sdk_python-1.1.0/zscaler/zia/models/proxies.py +99 -0
  37. zscaler_sdk_python-1.1.0/zscaler/zia/models/risk_profiles.py +174 -0
  38. zscaler_sdk_python-1.1.0/zscaler/zia/models/tenancy_restriction_profile.py +97 -0
  39. zscaler_sdk_python-1.1.0/zscaler/zia/models/time_intervals.py +62 -0
  40. zscaler_sdk_python-1.1.0/zscaler/zia/models/traffic_datacenters.py +114 -0
  41. zscaler_sdk_python-1.1.0/zscaler/zia/models/traffic_dc_exclusions.py +81 -0
  42. zscaler_sdk_python-1.1.0/zscaler/zia/proxies.py +395 -0
  43. zscaler_sdk_python-1.1.0/zscaler/zia/risk_profiles.py +451 -0
  44. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/rule_labels.py +57 -14
  45. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/system_audit.py +1 -0
  46. zscaler_sdk_python-1.1.0/zscaler/zia/tenancy_restriction_profile.py +405 -0
  47. zscaler_sdk_python-1.1.0/zscaler/zia/time_intervals.py +284 -0
  48. zscaler_sdk_python-1.1.0/zscaler/zia/traffic_datacenters.py +356 -0
  49. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/traffic_extranet.py +87 -24
  50. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/url_categories.py +2 -9
  51. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/user_management.py +2 -4
  52. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/workload_groups.py +1 -2
  53. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/zia_service.py +130 -0
  54. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/emergency_access.py +1 -2
  55. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/enrollment_certificates.py +1 -2
  56. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_credential_pool.py +10 -21
  57. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/scim_attributes.py +1 -2
  58. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/zpa_service.py +1 -1
  59. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/LICENSE.md +0 -0
  60. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/README.md +0 -0
  61. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/api_client.py +0 -0
  62. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/cache/__init__.py +0 -0
  63. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/cache/cache.py +0 -0
  64. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/cache/no_op_cache.py +0 -0
  65. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/cache/zscaler_cache.py +0 -0
  66. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/config/__init__.py +0 -0
  67. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/config/config_setter.py +0 -0
  68. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/config/config_validator.py +0 -0
  69. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/constants.py +0 -0
  70. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/error_messages.py +0 -0
  71. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/errors/__init__.py +0 -0
  72. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/errors/error.py +0 -0
  73. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/errors/http_error.py +0 -0
  74. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/errors/zscaler_api_error.py +0 -0
  75. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/exceptions/__init__.py +0 -0
  76. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/exceptions/exceptions.py +0 -0
  77. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/logger.py +0 -0
  78. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_client.py +0 -0
  79. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_collection.py +0 -0
  80. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_http_client.py +0 -0
  81. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_oauth_client.py +0 -0
  82. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_object.py +0 -0
  83. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/oneapi_response.py +0 -0
  84. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ratelimiter/__init__.py +0 -0
  85. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ratelimiter/ratelimiter.py +0 -0
  86. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/request_executor.py +0 -0
  87. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/user_agent.py +0 -0
  88. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/__init__.py +0 -0
  89. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/admin_user.py +0 -0
  90. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/company.py +0 -0
  91. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/devices.py +0 -0
  92. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/entitlements.py +0 -0
  93. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/fail_open_policy.py +0 -0
  94. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/forwarding_profile.py +0 -0
  95. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/legacy.py +0 -0
  96. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/manage_pass.py +0 -0
  97. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/admin_roles.py +0 -0
  98. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/admin_user.py +0 -0
  99. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/devices.py +0 -0
  100. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/failopenpolicy.py +0 -0
  101. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/forwardingprofile.py +0 -0
  102. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/manage_pass.py +0 -0
  103. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/secrets_otp.py +0 -0
  104. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/secrets_passwords.py +0 -0
  105. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/trustednetworks.py +0 -0
  106. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/webappservice.py +0 -0
  107. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/webpolicy.py +0 -0
  108. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/webprivacy.py +0 -0
  109. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  110. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  111. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/secrets.py +0 -0
  112. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/trusted_networks.py +0 -0
  113. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/web_app_service.py +0 -0
  114. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/web_policy.py +0 -0
  115. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/web_privacy.py +0 -0
  116. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zcc/zcc_service.py +0 -0
  117. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/__init__.py +0 -0
  118. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/admin.py +0 -0
  119. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/alerts.py +0 -0
  120. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/apps.py +0 -0
  121. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/devices.py +0 -0
  122. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/inventory.py +0 -0
  123. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/activeapplications.py +0 -0
  124. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/administration.py +0 -0
  125. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/alerts.py +0 -0
  126. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/application_users.py +0 -0
  127. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/applications.py +0 -0
  128. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  129. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/common.py +0 -0
  130. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/devices.py +0 -0
  131. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/software_inventory.py +0 -0
  132. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/troubleshooting.py +0 -0
  133. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/models/users.py +0 -0
  134. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/troubleshooting.py +0 -0
  135. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/users.py +0 -0
  136. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zdx/zdx_service.py +0 -0
  137. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/__init__.py +0 -0
  138. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/activate.py +0 -0
  139. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/admin_users.py +0 -0
  140. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/advanced_settings.py +0 -0
  141. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/apptotal.py +0 -0
  142. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/audit_logs.py +0 -0
  143. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_applications.py +0 -0
  144. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_apps.py +0 -0
  145. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_browser_isolation.py +0 -0
  146. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_firewall.py +0 -0
  147. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_firewall_dns.py +0 -0
  148. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_firewall_ips.py +0 -0
  149. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_firewall_rules.py +0 -0
  150. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/cloud_nss.py +0 -0
  151. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/device_management.py +0 -0
  152. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_dictionary.py +0 -0
  153. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_engine.py +0 -0
  154. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_resources.py +0 -0
  155. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/dlp_templates.py +0 -0
  156. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/end_user_notification.py +0 -0
  157. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/file_type_control_rule.py +0 -0
  158. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/iot_report.py +0 -0
  159. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/ipv6_config.py +0 -0
  160. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/locations.py +0 -0
  161. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/malware_protection_policy.py +0 -0
  162. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/__init__.py +0 -0
  163. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/activation.py +0 -0
  164. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/admin_users.py +0 -0
  165. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  166. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/apptotal.py +0 -0
  167. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/authentication_settings.py +0 -0
  168. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_app_policy.py +0 -0
  169. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  170. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  171. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  172. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  173. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  174. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  175. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  176. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  177. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  178. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  179. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  180. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloud_nss.py +0 -0
  181. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/cloudappcontrol.py +0 -0
  182. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/common.py +0 -0
  183. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/device_groups.py +0 -0
  184. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/devices.py +0 -0
  185. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_dictionary.py +0 -0
  186. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_engine.py +0 -0
  187. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_resources.py +0 -0
  188. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_templates.py +0 -0
  189. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/dlp_web_rules.py +0 -0
  190. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/endusernotification.py +0 -0
  191. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  192. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/gre_recommended_list.py +0 -0
  193. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  194. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/gre_tunnels.py +0 -0
  195. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/gre_vips.py +0 -0
  196. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/intermediate_certificates.py +0 -0
  197. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/iotreport.py +0 -0
  198. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/ipv6_config.py +0 -0
  199. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/location_group.py +0 -0
  200. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/location_management.py +0 -0
  201. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/malware_protection_settings.py +0 -0
  202. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/organization_information.py +0 -0
  203. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/pac_files.py +0 -0
  204. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/proxy_gatways.py +0 -0
  205. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/remoteassistance.py +0 -0
  206. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/rule_labels.py +0 -0
  207. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/sandboxrules.py +0 -0
  208. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/security_policy_settings.py +0 -0
  209. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/shadow_it_report.py +0 -0
  210. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  211. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/subclouds.py +0 -0
  212. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/system_audit.py +0 -0
  213. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/traffic_extranet.py +0 -0
  214. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/traffic_static_ip.py +0 -0
  215. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  216. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  217. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/url_filtering_rules.py +0 -0
  218. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/urlcategory.py +0 -0
  219. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/user_management.py +0 -0
  220. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/workload_groups.py +0 -0
  221. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/models/zpa_gateway.py +0 -0
  222. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/organization_information.py +0 -0
  223. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/pac_files.py +0 -0
  224. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/policy_export.py +0 -0
  225. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/remote_assistance.py +0 -0
  226. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/sandbox.py +0 -0
  227. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/sandbox_rules.py +0 -0
  228. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/security_policy_settings.py +0 -0
  229. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/ssl_inspection_rules.py +0 -0
  230. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/sub_clouds.py +0 -0
  231. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/traffic_static_ip.py +0 -0
  232. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  233. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/url_filtering.py +0 -0
  234. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zia/zpa_gateway.py +0 -0
  235. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/__init__.py +0 -0
  236. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_connector_groups.py +0 -0
  237. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_connector_schedule.py +0 -0
  238. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_connectors.py +0 -0
  239. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_protection.py +0 -0
  240. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_segment_by_type.py +0 -0
  241. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_segments_inspection.py +0 -0
  242. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/app_segments_pra.py +0 -0
  243. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/application_segment.py +0 -0
  244. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/authdomains.py +0 -0
  245. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_banner.py +0 -0
  246. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_certificate.py +0 -0
  247. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_profile.py +0 -0
  248. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_region.py +0 -0
  249. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  250. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/certificates.py +0 -0
  251. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/cloud_connector_groups.py +0 -0
  252. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/customer_version_profile.py +0 -0
  253. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/idp.py +0 -0
  254. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/legacy.py +0 -0
  255. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/lss.py +0 -0
  256. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/machine_groups.py +0 -0
  257. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/microtenants.py +0 -0
  258. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_connector_groups.py +0 -0
  259. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  260. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_connectors.py +0 -0
  261. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_protection.py +0 -0
  262. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  263. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/application_segment.py +0 -0
  264. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/application_segment_inspection.py +0 -0
  265. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/application_segment_pra.py +0 -0
  266. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/application_servers.py +0 -0
  267. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/auth_domain.py +0 -0
  268. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_banner.py +0 -0
  269. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_certificate.py +0 -0
  270. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_profile.py +0 -0
  271. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_region.py +0 -0
  272. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  273. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/certificates.py +0 -0
  274. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  275. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/common.py +0 -0
  276. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/customer_version_profile.py +0 -0
  277. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/emergency_access.py +0 -0
  278. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  279. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/idp.py +0 -0
  280. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/lss.py +0 -0
  281. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/machine_groups.py +0 -0
  282. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/microtenants.py +0 -0
  283. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
  284. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
  285. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/posture_profiles.py +0 -0
  286. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_approval.py +0 -0
  287. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_console.py +0 -0
  288. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  289. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_credential.py +0 -0
  290. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/pra_portal.py +0 -0
  291. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/provisioning_keys.py +0 -0
  292. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/saml_attributes.py +0 -0
  293. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/scim_attributes.py +0 -0
  294. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/scim_groups.py +0 -0
  295. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/segment_group.py +0 -0
  296. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/server_group.py +0 -0
  297. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/service_edge_groups.py +0 -0
  298. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  299. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/service_edges.py +0 -0
  300. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/models/trusted_network.py +0 -0
  301. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/policies.py +0 -0
  302. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/posture_profiles.py +0 -0
  303. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_approval.py +0 -0
  304. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_console.py +0 -0
  305. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_credential.py +0 -0
  306. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/pra_portal.py +0 -0
  307. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/provisioning.py +0 -0
  308. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/saml_attributes.py +0 -0
  309. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/scim_groups.py +0 -0
  310. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/segment_groups.py +0 -0
  311. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/server_groups.py +0 -0
  312. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/servers.py +0 -0
  313. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/service_edge_group.py +0 -0
  314. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/service_edge_schedule.py +0 -0
  315. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/service_edges.py +0 -0
  316. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zpa/trusted_networks.py +0 -0
  317. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/__init__.py +0 -0
  318. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/account_details.py +0 -0
  319. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/activation.py +0 -0
  320. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/admin_roles.py +0 -0
  321. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/admin_users.py +0 -0
  322. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/api_keys.py +0 -0
  323. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ec_groups.py +0 -0
  324. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/forwarding_gateways.py +0 -0
  325. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/forwarding_rules.py +0 -0
  326. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ip_destination_groups.py +0 -0
  327. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ip_groups.py +0 -0
  328. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ip_source_groups.py +0 -0
  329. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/legacy.py +0 -0
  330. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/location_management.py +0 -0
  331. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/location_template.py +0 -0
  332. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/activation.py +0 -0
  333. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/admin_roles.py +0 -0
  334. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/admin_users.py +0 -0
  335. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/api_keys.py +0 -0
  336. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/common.py +0 -0
  337. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ec_group_vm.py +0 -0
  338. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ecgroup.py +0 -0
  339. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  340. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/forwarding_rules.py +0 -0
  341. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  342. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ip_groups.py +0 -0
  343. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/ip_source_groups.py +0 -0
  344. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/location_management.py +0 -0
  345. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/location_templates.py +0 -0
  346. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/nw_service.py +0 -0
  347. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/nw_service_groups.py +0 -0
  348. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/provisioning_url.py +0 -0
  349. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  350. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/models/zpa_resources.py +0 -0
  351. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/nw_service.py +0 -0
  352. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/nw_service_groups.py +0 -0
  353. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/provisioning_url.py +0 -0
  354. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/ztw/ztw_service.py +0 -0
  355. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/__init__.py +0 -0
  356. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/audit_logs.py +0 -0
  357. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/dlp_incidents.py +0 -0
  358. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/legacy.py +0 -0
  359. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/audit_logs.py +0 -0
  360. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/change_history.py +0 -0
  361. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/common.py +0 -0
  362. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/generated_tickets.py +0 -0
  363. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_details.py +0 -0
  364. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_evidence.py +0 -0
  365. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_group_search.py +0 -0
  366. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_search.py +0 -0
  367. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/zscaler/zwa/models/incident_trigger.py +0 -0
  368. {zscaler_sdk_python-1.0.3 → zscaler_sdk_python-1.1.0}/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.0.3
3
+ Version: 1.1.0
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.0.3"
3
+ version = "1.1.0"
4
4
  description = "Official Python SDK for the Zscaler Products"
5
5
  authors = ["Zscaler, Inc. <devrel@zscaler.com>"]
6
6
  license = "MIT"
@@ -45,12 +45,12 @@ arrow = ">=1.3.0"
45
45
  black = ">=24.3.0"
46
46
  flake8 = ">=7.0.0"
47
47
  isort = ">=5.13.0"
48
- pytest = ">=8.0.0"
48
+ pytest = ">=8.3.5"
49
49
  pytest-mock = ">=3.12.0"
50
50
  pytest-asyncio = ">=0.23.0"
51
51
  pytest-cov = ">=4.1.0"
52
52
  pyfakefs = ">=5.7.0"
53
- responses = ">=0.25.0"
53
+ responses = ">=0.25.7"
54
54
  sphinx = ">=7.2.0"
55
55
  sphinx-autobuild = ">=2024.1.0"
56
56
  sphinx_rtd_theme = ">=1.3.0"
@@ -29,7 +29,7 @@ __license__ = "MIT"
29
29
  __contributors__ = [
30
30
  "William Guilherme",
31
31
  ]
32
- __version__ = "1.0.3"
32
+ __version__ = "1.1.0"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -50,6 +50,9 @@ def to_snake_case(string):
50
50
  "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories": "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories",
51
51
  "endPointDLPLogType": "end_point_dlp_log_type",
52
52
  "emailDLPLogType": "email_dlp_log_type",
53
+ "extranetDNSList": "extranet_dns_list",
54
+ "primaryDNSServer": "primary_dns_server",
55
+ "secondaryDNSServer": "secondary_dns_server",
53
56
  }
54
57
 
55
58
  if string in FIELD_EXCEPTIONS:
@@ -108,6 +111,9 @@ def to_lower_camel_case(string):
108
111
  "dns_resolution_on_transparent_proxy_ipv6_exempt_url_categories": "dnsResolutionOnTransparentProxyIPv6ExemptUrlCategories",
109
112
  "end_point_dlp_log_type": "endPointDLPLogType",
110
113
  "email_dlp_log_type": "emailDLPLogType",
114
+ "extranet_dns_list": "extranetDNSList",
115
+ "primary_dns_server": "primaryDNSServer",
116
+ "secondary_dns_server": "secondaryDNSServer",
111
117
  }
112
118
 
113
119
  if string in FIELD_EXCEPTIONS:
@@ -75,7 +75,7 @@ reformat_params = [
75
75
  ("zpa_application_segment_groups", "zpaApplicationSegmentGroups"),
76
76
  ("workload_groups", "workloadGroups"),
77
77
  ("service_ids", "services"),
78
- # etc. expand as needed
78
+ ("bandwidth_class_ids", "bandwidthClasses"),
79
79
  ]
80
80
 
81
81
 
@@ -675,7 +675,6 @@ def is_valid_ssh_key(private_key: str) -> bool:
675
675
  ]
676
676
  return any(re.search(pattern, private_key) for pattern in ssh_key_patterns)
677
677
 
678
-
679
678
  def validate_and_convert_times(start_time_str, end_time_str, time_zone_str):
680
679
  """
681
680
  Validates and converts provided time strings to epoch.
@@ -731,6 +730,27 @@ def validate_and_convert_times(start_time_str, end_time_str, time_zone_str):
731
730
 
732
731
  return start_epoch, end_epoch
733
732
 
733
+ def convert_dc_exclusion_times(start_time_str, end_time_str, time_zone_str):
734
+ """
735
+ Converts and validates DC exclusion times based on API rules:
736
+ - start_time must be >= 5 min in the future and within 30 days
737
+ - end_time must be >= 2 hours after start_time and within 15 days
738
+ """
739
+ start_epoch, end_epoch = validate_and_convert_times(start_time_str, end_time_str, time_zone_str)
740
+
741
+ now = int(datetime.datetime.now(pytz.timezone(time_zone_str)).timestamp())
742
+
743
+ if start_epoch < now + 300:
744
+ raise ValueError("Start time must be at least 5 minutes in the future.")
745
+ if start_epoch > now + (30 * 86400):
746
+ raise ValueError("Start time must be within 30 days from now.")
747
+
748
+ if end_epoch < start_epoch + 7200:
749
+ raise ValueError("End time must be at least 2 hours after start time.")
750
+ if end_epoch > start_epoch + (15 * 86400):
751
+ raise ValueError("End time must be within 15 days from start time.")
752
+
753
+ return start_epoch, end_epoch
734
754
 
735
755
  def convert_date_time_to_seconds(date_time):
736
756
  """
@@ -1,8 +1,8 @@
1
1
  import logging
2
2
  import os
3
3
  import time
4
- import json
5
4
  import requests
5
+ import random
6
6
  from hashlib import sha256
7
7
  from zscaler import __version__
8
8
  from zscaler.cache.no_op_cache import NoOpCache
@@ -12,6 +12,8 @@ from zscaler.user_agent import UserAgent
12
12
  # Setup the logger
13
13
  setup_logging(logger_name="zscaler-sdk-python")
14
14
  logger = logging.getLogger("zscaler-sdk-python")
15
+ _token_cache = {}
16
+ _jwks_cache = {}
15
17
 
16
18
 
17
19
  class LegacyZDXClientHelper:
@@ -82,20 +84,37 @@ class LegacyZDXClientHelper:
82
84
  Helper method to perform a GET request with rate limiting retry logic.
83
85
  """
84
86
  max_retries = self.config["client"]["rateLimit"].get("maxRetries", 3)
87
+ retry_threshold = self.config["client"]["rateLimit"].get("remainingThreshold", 2)
88
+
85
89
  for attempt in range(max_retries):
86
90
  response = session.get(url, timeout=self.timeout)
87
- if response.status_code == 429:
88
- rate_limit_reset = response.headers.get("RateLimit-Reset")
89
- try:
90
- delay = int(rate_limit_reset) + 1 if rate_limit_reset else 1
91
- except Exception:
92
- delay = 1
91
+
92
+ remaining = response.headers.get("X-Ratelimit-Remaining-Second")
93
+ limit = response.headers.get("X-Ratelimit-Limit-Second")
94
+
95
+ try:
96
+ remaining_int = int(remaining) if remaining else None
97
+ limit_int = int(limit) if limit else None
98
+ except Exception:
99
+ remaining_int, limit_int = None, None
100
+
101
+ # Proactive backoff before hitting the limit
102
+ if remaining_int is not None and remaining_int < retry_threshold:
103
+ delay = 1 + random.uniform(0, 0.5) # Add jitter
93
104
  sanitized_url = url.split("?")[0]
94
105
  logger.info(
95
- f"Rate limit hit on GET {sanitized_url}.Retrying in {delay} seconds (attempt {attempt + 1}/{max_retries})"
106
+ f"Rate limit approaching on GET {sanitized_url}. "
107
+ f"Remaining={remaining_int}, Limit={limit_int}. "
108
+ f"Backing off for {delay:.2f}s (attempt {attempt + 1}/{max_retries})"
96
109
  )
97
110
  time.sleep(delay)
98
111
  continue
112
+
113
+ if response.status_code == 429:
114
+ logger.warning(f"429 received from {url}. Retrying with fallback delay.")
115
+ time.sleep(1 + random.uniform(0, 0.5))
116
+ continue
117
+
99
118
  try:
100
119
  response.raise_for_status()
101
120
  except Exception as e:
@@ -117,31 +136,6 @@ class LegacyZDXClientHelper:
117
136
 
118
137
  session.headers.update({"Authorization": f"Bearer {token}"})
119
138
 
120
- validate_url = f"{self.url}/v1/oauth/validate"
121
- try:
122
- validate_response = self._get_with_rate_limiting(session, validate_url)
123
- validate_data = validate_response.json()
124
- # logger.debug(f"Token validation response: {validate_data}")
125
- logger.debug(f"Token validation response: {{'valid': {validate_data.get('valid', False)}}}")
126
- if not validate_data.get("valid", False):
127
- raise Exception("Token validation failed: token is not valid.")
128
- else:
129
- logger.info("Token validated successfully.")
130
- except Exception as e:
131
- logger.error("Token validation failed: %s", e)
132
- raise Exception(f"Token validation failed: {e}")
133
-
134
- jwks_url = f"{self.url}/v1/oauth/jwks"
135
- try:
136
- jwks_response = self._get_with_rate_limiting(session, jwks_url)
137
- jwks_data = jwks_response.json()
138
- # logger.debug(f"JWKS response: {json.dumps(jwks_data, indent=2)}")
139
- sanitized_jwks_data = {"keys": [{"kid": key.get("kid")} for key in jwks_data.get("keys", [])]}
140
- logger.debug(f"Sanitized JWKS response: {json.dumps(sanitized_jwks_data, indent=2)}")
141
- except Exception as e:
142
- logger.error("Failed to retrieve JWKS: %s", e)
143
- raise Exception(f"Failed to retrieve JWKS: {e}")
144
-
145
139
  return session
146
140
 
147
141
  def create_token(self):
@@ -152,6 +146,13 @@ class LegacyZDXClientHelper:
152
146
  Raises:
153
147
  Exception: If token retrieval fails.
154
148
  """
149
+ cache_key = f"{self._client_id}:{self._client_secret}"
150
+ if cache_key in _token_cache:
151
+ logger.info("Using cached ZDX token.")
152
+ self.auth_token = _token_cache[cache_key]
153
+ self.request_executor._default_headers["Authorization"] = f"Bearer {self.auth_token}"
154
+ return {"token": self.auth_token}
155
+
155
156
  max_retries = self.config["client"]["rateLimit"].get("maxRetries", 3)
156
157
  for attempt in range(max_retries):
157
158
  epoch_time = int(time.time())
@@ -165,7 +166,6 @@ class LegacyZDXClientHelper:
165
166
  }
166
167
 
167
168
  token_url = f"{self.url}/v1/oauth/token"
168
- # logger.debug(f"Token request URL: {token_url}")
169
169
  response = requests.post(
170
170
  token_url,
171
171
  json=payload,
@@ -177,22 +177,25 @@ class LegacyZDXClientHelper:
177
177
  )
178
178
 
179
179
  if response.status_code == 429:
180
- rate_limit_reset = response.headers.get("RateLimit-Reset")
180
+ remaining = response.headers.get("X-Ratelimit-Remaining-Second")
181
181
  try:
182
- delay = int(rate_limit_reset) + 1 if rate_limit_reset else 1
182
+ remaining_int = int(remaining) if remaining else None
183
183
  except Exception:
184
- delay = 1
185
- logger.info(
186
- # f"Rate limit hit on token request. Retrying in {delay} seconds (attempt {attempt + 1}/{max_retries})."
187
- "Rate limit hit on token request. Retrying after a delay. Attempt %d of %d.",
188
- attempt + 1,
189
- max_retries,
190
- )
191
- time.sleep(delay)
192
- continue
184
+ remaining_int = None
185
+
186
+ delay = 1 + random.uniform(0, 0.5) # Default 1s backoff + jitter
187
+ if remaining_int is not None and remaining_int < 2:
188
+ logger.warning(
189
+ "Rate limit exceeded on token request. Retrying in %.2fs (attempt %d/%d)",
190
+ delay,
191
+ attempt + 1,
192
+ max_retries,
193
+ )
194
+ time.sleep(delay)
195
+ continue
193
196
 
194
197
  try:
195
- response.raise_for_status() # Raise exception for non-2xx responses
198
+ response.raise_for_status()
196
199
  except Exception as e:
197
200
  logger.error("Failed to retrieve token: %s", e)
198
201
  raise Exception(f"Failed to retrieve token: {e}")
@@ -204,6 +207,7 @@ class LegacyZDXClientHelper:
204
207
 
205
208
  # Save the token and update default headers for subsequent requests
206
209
  self.auth_token = token
210
+ _token_cache[cache_key] = token # ✅ Cache it
207
211
  self.request_executor._default_headers["Authorization"] = f"Bearer {token}"
208
212
 
209
213
  return token_data
@@ -231,12 +235,60 @@ class LegacyZDXClientHelper:
231
235
  Returns:
232
236
  dict: The JWKS response.
233
237
  """
234
- response, error = self.request_executor.execute(self.request_executor.create_request("GET", "/v1/oauth/jwks"))
238
+ if self._client_id in _jwks_cache:
239
+ logger.info("Using cached JWKS data.")
240
+ return _jwks_cache[self._client_id]
235
241
 
236
- if error:
237
- raise Exception(f"Failed to retrieve JWKS: {error}")
242
+ jwks_url = f"{self.url}/v1/oauth/jwks"
243
+ max_retries = self.config["client"]["rateLimit"].get("maxRetries", 3)
244
+ retry_threshold = self.config["client"]["rateLimit"].get("remainingThreshold", 2)
238
245
 
239
- return response.data
246
+ for attempt in range(max_retries):
247
+ response = requests.get(
248
+ jwks_url,
249
+ headers={
250
+ "Authorization": f"Bearer {self.auth_token}",
251
+ "User-Agent": self.user_agent,
252
+ },
253
+ timeout=self.timeout,
254
+ )
255
+
256
+ remaining = response.headers.get("X-Ratelimit-Remaining-Second")
257
+ try:
258
+ remaining_int = int(remaining) if remaining else None
259
+ except Exception:
260
+ remaining_int = None
261
+
262
+ # Proactive backoff
263
+ if remaining_int is not None and remaining_int < retry_threshold:
264
+ delay = 1 + random.uniform(0, 0.5)
265
+ logger.info(
266
+ "Rate limit approaching on JWKS request. Remaining=%s. Backing off %.2fs (attempt %d/%d)",
267
+ remaining,
268
+ delay,
269
+ attempt + 1,
270
+ max_retries,
271
+ )
272
+ time.sleep(delay)
273
+ continue
274
+
275
+ if response.status_code == 429:
276
+ delay = 1 + random.uniform(0, 0.5)
277
+ logger.warning("429 on JWKS request. Retrying after %.2fs (attempt %d/%d)", delay, attempt + 1, max_retries)
278
+ time.sleep(delay)
279
+ continue
280
+
281
+ try:
282
+ response.raise_for_status()
283
+ except Exception as e:
284
+ logger.error("Failed to retrieve JWKS: %s", e)
285
+ raise Exception(f"Failed to retrieve JWKS: {e}")
286
+
287
+ jwks_data = response.json()
288
+ _jwks_cache[self._client_id] = jwks_data # ✅ Cache the JWKS data
289
+ return jwks_data
290
+
291
+ raise Exception(f"Failed to retrieve JWKS after {max_retries} attempts due to rate limiting.")
240
292
 
241
293
  def get_base_url(self, endpoint):
242
294
  return self.url
@@ -17,6 +17,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
17
  from zscaler.api_client import APIClient
18
18
  from zscaler.request_executor import RequestExecutor
19
19
  from zscaler.zia.models.admin_roles import AdminRoles
20
+ from zscaler.zia.models.admin_roles import PasswordExpiry
20
21
  from zscaler.utils import format_url
21
22
 
22
23
 
@@ -242,3 +243,108 @@ class AdminRolesAPI(APIClient):
242
243
  if error:
243
244
  return (None, response, error)
244
245
  return (None, response, None)
246
+
247
+ def get_password_expiry_settings(self) -> tuple:
248
+ """
249
+ Retrieves the password expiration information for all the admins
250
+
251
+ Note: This method is not compatible with Zidentity enabled Tenants
252
+
253
+ Returns:
254
+ tuple: A tuple containing:
255
+ - PasswordExpiry: The current password expiry settings object.
256
+ - Response: The raw HTTP response returned by the API.
257
+ - error: An error message if the request failed; otherwise, `None`.
258
+
259
+ Examples:
260
+ Retrieves the password expiration information for all the admins
261
+
262
+ >>> settings, _, err = client.zia.admin_roles.get_password_expiry_settings()
263
+ >>> if err:
264
+ ... print(f"Error fetching password expiry settings: {err}")
265
+ ... return
266
+ ... print("Current password expiry settings fetched successfully.")
267
+ ... print(settings)
268
+ """
269
+ http_method = "get".upper()
270
+ api_url = format_url(
271
+ f"""
272
+ {self._zia_base_endpoint}
273
+ /passwordExpiry/settings
274
+ """
275
+ )
276
+
277
+ request, error = self._request_executor.create_request(http_method, api_url)
278
+
279
+ if error:
280
+ return (None, None, error)
281
+
282
+ response, error = self._request_executor.execute(request)
283
+
284
+ if error:
285
+ return (None, response, error)
286
+
287
+ try:
288
+ advanced_settings = PasswordExpiry(response.get_body())
289
+ return (advanced_settings, response, None)
290
+ except Exception as ex:
291
+ return (None, response, ex)
292
+
293
+ def update_password_expiry_settings(self, **kwargs) -> tuple:
294
+ """
295
+ Updates the password expiration information for all the admins.
296
+
297
+ Note: This method is not compatible with Zidentity enabled Tenants
298
+
299
+ Args:
300
+ Supported attributes:
301
+ - password_expiration_enabled (bool): Specifies whether password expiration is enabled for the admin
302
+ - password_expiry_days (int): Password expiration duration, calculated in days
303
+
304
+ Returns:
305
+ tuple: A tuple containing:
306
+ - PasswordExpiry: The updated password expiry settings object.
307
+ - Response: The raw HTTP response returned by the API.
308
+ - error: An error message if the update failed; otherwise, `None`.
309
+
310
+ Examples:
311
+ Update advanced threat protection settings by blocking specific threats:
312
+
313
+ >>> settings, _, err = client.zia.admin_roles.update_password_expiry_settings(
314
+ ... password_expiration_enabled = True,
315
+ ... password_expiry_days = '90',
316
+ ... )
317
+ >>> if err:
318
+ ... print(f"Error fetching password expiry: {err}")
319
+ ... return
320
+ ... print("Current password expiry fetched successfully.")
321
+ ... print(settings)
322
+ """
323
+ http_method = "put".upper()
324
+ api_url = format_url(
325
+ f"""
326
+ {self._zia_base_endpoint}
327
+ /cyberThreatProtection/advancedThreatSettings
328
+ """
329
+ )
330
+
331
+ body = {}
332
+ body.update(kwargs)
333
+
334
+ request, error = self._request_executor.create_request(http_method, api_url, body, {}, {})
335
+ if error:
336
+ return (None, None, error)
337
+
338
+ response, error = self._request_executor.execute(request, PasswordExpiry)
339
+ if error:
340
+ return (None, response, error)
341
+
342
+ try:
343
+ if response and hasattr(response, "get_body") and response.get_body():
344
+ result = PasswordExpiry(self.form_response_body(response.get_body()))
345
+ else:
346
+ result = PasswordExpiry()
347
+ except Exception as error:
348
+ return (None, response, error)
349
+
350
+ return (result, response, None)
@@ -0,0 +1,224 @@
1
+ """
2
+ Copyright (c) 2023, Zscaler Inc.
3
+
4
+ Permission to use, copy, modify, and/or distribute this software for any
5
+ purpose with or without fee is hereby granted, provided that the above
6
+ copyright notice and this permission notice appear in all copies.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
+ """
16
+
17
+ from zscaler.api_client import APIClient
18
+ from zscaler.request_executor import RequestExecutor
19
+ from zscaler.zia.models.alert_subscriptions import AlertSubscriptions
20
+ from zscaler.utils import format_url
21
+
22
+
23
+ class AlertSubscriptionsAPI(APIClient):
24
+ """
25
+ A Client object for the Alert Subscriptions resource.
26
+ """
27
+
28
+ _zia_base_endpoint = "/zia/api/v1"
29
+
30
+ def __init__(self, request_executor):
31
+ super().__init__()
32
+ self._request_executor: RequestExecutor = request_executor
33
+
34
+ def list_alert_subscriptions(self) -> tuple:
35
+ """
36
+ Retrieves a list of all alert subscriptions.
37
+
38
+ This method makes a GET request to the ZIA Admin API and returns detailed advanced settings,
39
+ including various bypass rules, DNS optimization configurations, and traffic control settings.
40
+
41
+ Returns:
42
+ tuple: A tuple containing:
43
+ - AdvancedSettings: The current advanced settings object.
44
+ - Response: The raw HTTP response returned by the API.
45
+ - error: An error message if the request failed; otherwise, `None`.
46
+
47
+ Examples:
48
+ Retrieve and print the current advanced settings:
49
+
50
+ >>> settings, response, err = client.zia.advanced_settings.get_advanced_settings()
51
+ >>> if err:
52
+ ... print(f"Error fetching settings: {err}")
53
+ ... else:
54
+ ... print(f"Enable Office365: {settings.enable_office365}")
55
+ """
56
+ http_method = "get".upper()
57
+ api_url = format_url(
58
+ f"""
59
+ {self._zia_base_endpoint}
60
+ /alertSubscriptions
61
+ """
62
+ )
63
+
64
+ request, error = self._request_executor.create_request(http_method, api_url)
65
+
66
+ if error:
67
+ return (None, None, error)
68
+
69
+ response, error = self._request_executor.execute(request)
70
+
71
+ if error:
72
+ return (None, response, error)
73
+
74
+ try:
75
+ advanced_settings = AlertSubscriptions(response.get_body())
76
+ return (advanced_settings, response, None)
77
+ except Exception as ex:
78
+ return (None, response, ex)
79
+
80
+ def get_alert_subscription(self, subscription_id: int) -> tuple:
81
+ """
82
+ Retrieves the alert subscription information based on the specified ID
83
+
84
+ Args:
85
+ subscription_id (int): The unique identifier for the Alert Subscription.
86
+
87
+ Returns:
88
+ tuple: A tuple containing (Alert Subscriptioninstance, Response, error).
89
+ """
90
+ http_method = "get".upper()
91
+ api_url = format_url(
92
+ f"""
93
+ {self._zia_base_endpoint}
94
+ /alertSubscriptions/{subscription_id}
95
+ """
96
+ )
97
+
98
+ body = {}
99
+ headers = {}
100
+
101
+ request, error = self._request_executor.create_request(http_method, api_url, body, headers)
102
+
103
+ if error:
104
+ return (None, None, error)
105
+
106
+ response, error = self._request_executor.execute(request, AlertSubscriptions)
107
+ if error:
108
+ return (None, response, error)
109
+
110
+ try:
111
+ result = AlertSubscriptions(self.form_response_body(response.get_body()))
112
+ except Exception as error:
113
+ return (None, response, error)
114
+ return (result, response, None)
115
+
116
+ def add_alert_subscription(self, **kwargs) -> tuple:
117
+ """
118
+ Adds a new alert subscription.
119
+
120
+ Args:
121
+
122
+ Returns:
123
+ tuple: A tuple containing the newly added alert subscription, response, and error.
124
+ """
125
+ http_method = "post".upper()
126
+ api_url = format_url(
127
+ f"""
128
+ {self._zia_base_endpoint}
129
+ /alertSubscriptions
130
+ """
131
+ )
132
+
133
+ body = kwargs
134
+
135
+ request, error = self._request_executor.create_request(
136
+ method=http_method,
137
+ endpoint=api_url,
138
+ body=body,
139
+ )
140
+
141
+ if error:
142
+ return (None, None, error)
143
+
144
+ response, error = self._request_executor.execute(request, AlertSubscriptions)
145
+ if error:
146
+ return (None, response, error)
147
+
148
+ try:
149
+ result = AlertSubscriptions(self.form_response_body(response.get_body()))
150
+ except Exception as error:
151
+ return (None, response, error)
152
+ return (result, response, None)
153
+
154
+ def update_alert_subscription(self, subscription_id: int, **kwargs) -> tuple:
155
+ """
156
+ Updates an existing alert subscription based on the specified ID
157
+
158
+ Args:
159
+ settings (:obj:`AlertSubscriptions`):
160
+ An instance of `AlertSubscriptions` containing the updated configuration.
161
+
162
+ Supported attributes:
163
+ - block_apps_with_malicious_activity (bool): Blocks apps known to be malicious or hidden from users
164
+ - block_apps_with_known_vulnerabilities (bool): Blocks apps with known vulnerabilities or insecure modules
165
+ - block_apps_sending_unencrypted_user_credentials (bool): Blocks apps leaking user credentials unencrypted
166
+ - block_apps_sending_location_info (bool): Blocks apps leaking device location unencrypted or unknown purpose
167
+ - block_apps_sending_personally_identifiable_info (bool): Blocks apps leaking PII in unencrypted communications
168
+ - block_apps_sending_device_identifier (bool): Blocks apps leaking device identifiers in unencrypted form
169
+ - block_apps_communicating_with_ad_websites (bool): Blocks apps communicating with known ad websites
170
+ - block_apps_communicating_with_remote_unknown_servers (bool): Blocks apps communicating with unknown servers
171
+
172
+ Returns:
173
+ tuple:
174
+ - **MobileAdvancedThreatSettings**: The updated advanced settings object.
175
+ - **Response**: The raw HTTP response returned by the API.
176
+ - **error**: An error message if the update failed; otherwise, `None`.
177
+
178
+ Examples:
179
+ Update mobile setting options:
180
+
181
+ >>> malware_settings, _, err = client.zia.mobile_threat_settings.update_mobile_advanced_settings(
182
+ ... block_apps_with_malicious_activity = True,
183
+ ... block_apps_with_known_vulnerabilities = True,
184
+ ... block_apps_sending_unencrypted_user_credentials = True,
185
+ ... block_apps_sending_location_info = True,
186
+ ... block_apps_sending_personally_identifiable_info = True,
187
+ ... block_apps_sending_device_identifier = True,
188
+ ... block_apps_communicating_with_ad_websites = True,
189
+ ... block_apps_communicating_with_remote_unknown_servers = True
190
+ ... )
191
+ >>> if err:
192
+ ... print(f"Error fetching malware settings: {err}")
193
+ ... return
194
+ ... print("Current malware settings fetched successfully.")
195
+ ... print(malware_settings)
196
+ """
197
+ http_method = "put".upper()
198
+ api_url = format_url(
199
+ f"""
200
+ {self._zia_base_endpoint}
201
+ /alertSubscriptions/{subscription_id}
202
+ """
203
+ )
204
+
205
+ body = {}
206
+ body.update(kwargs)
207
+
208
+ request, error = self._request_executor.create_request(http_method, api_url, body, {}, {})
209
+ if error:
210
+ return (None, None, error)
211
+
212
+ response, error = self._request_executor.execute(request, AlertSubscriptions)
213
+ if error:
214
+ return (None, response, error)
215
+
216
+ try:
217
+ if response and hasattr(response, "get_body") and response.get_body():
218
+ result = AlertSubscriptions(self.form_response_body(response.get_body()))
219
+ else:
220
+ result = AlertSubscriptions()
221
+ except Exception as error:
222
+ return (None, response, error)
223
+
224
+ return (result, response, None)