zscaler-sdk-python 1.9.23__tar.gz → 1.9.25__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 (560) hide show
  1. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/PKG-INFO +1 -1
  2. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/pyproject.toml +1 -1
  3. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/__init__.py +1 -1
  4. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/errors/zscaler_api_error.py +10 -2
  5. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/request_executor.py +10 -1
  6. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/utils.py +6 -1
  7. zscaler_sdk_python-1.9.25/zscaler/zcc/_field_introspect.py +181 -0
  8. zscaler_sdk_python-1.9.25/zscaler/zcc/_serialize.py +156 -0
  9. zscaler_sdk_python-1.9.25/zscaler/zcc/application_profiles.py +246 -0
  10. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/company.py +3 -3
  11. zscaler_sdk_python-1.9.25/zscaler/zcc/custom_ip_base_apps.py +124 -0
  12. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/legacy.py +93 -16
  13. zscaler_sdk_python-1.9.25/zscaler/zcc/models/application_profiles.py +1014 -0
  14. zscaler_sdk_python-1.9.25/zscaler/zcc/models/company_info.py +1513 -0
  15. zscaler_sdk_python-1.9.25/zscaler/zcc/models/custom_ip_base_apps.py +126 -0
  16. zscaler_sdk_python-1.9.25/zscaler/zcc/models/predefined_ip_based_apps.py +132 -0
  17. zscaler_sdk_python-1.9.25/zscaler/zcc/models/process_based_apps.py +77 -0
  18. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/webpolicy.py +35 -26
  19. zscaler_sdk_python-1.9.25/zscaler/zcc/predefined_ip_based_apps.py +124 -0
  20. zscaler_sdk_python-1.9.25/zscaler/zcc/process_based_apps.py +124 -0
  21. zscaler_sdk_python-1.9.25/zscaler/zcc/web_policy.py +506 -0
  22. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/zcc_service.py +36 -0
  23. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/advanced_settings.py +3 -6
  24. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/pac_files.py +3 -3
  25. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/pac_files.py +100 -43
  26. zscaler_sdk_python-1.9.23/zscaler/zcc/models/getcompanyinfo.py +0 -1393
  27. zscaler_sdk_python-1.9.23/zscaler/zcc/web_policy.py +0 -206
  28. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/LICENSE.md +0 -0
  29. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/README.md +0 -0
  30. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/api_client.py +0 -0
  31. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/cache/__init__.py +0 -0
  32. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/cache/cache.py +0 -0
  33. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/cache/no_op_cache.py +0 -0
  34. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/cache/zscaler_cache.py +0 -0
  35. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/config/__init__.py +0 -0
  36. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/config/config_setter.py +0 -0
  37. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/config/config_validator.py +0 -0
  38. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/constants.py +0 -0
  39. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/error_messages.py +0 -0
  40. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/errors/__init__.py +0 -0
  41. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/errors/error.py +0 -0
  42. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/errors/graphql_error.py +0 -0
  43. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/errors/http_error.py +0 -0
  44. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/errors/response_checker.py +0 -0
  45. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/exceptions/__init__.py +0 -0
  46. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/exceptions/exceptions.py +0 -0
  47. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/helpers.py +0 -0
  48. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/logger.py +0 -0
  49. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/oneapi_client.py +0 -0
  50. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/oneapi_collection.py +0 -0
  51. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/oneapi_http_client.py +0 -0
  52. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/oneapi_oauth_client.py +0 -0
  53. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/oneapi_object.py +0 -0
  54. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/oneapi_response.py +0 -0
  55. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ratelimiter/__init__.py +0 -0
  56. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ratelimiter/ratelimiter.py +0 -0
  57. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/types.py +0 -0
  58. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/user_agent.py +0 -0
  59. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zaiguard/__init__.py +0 -0
  60. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zaiguard/legacy.py +0 -0
  61. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zaiguard/models/__init__.py +0 -0
  62. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zaiguard/models/policy_detection.py +0 -0
  63. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zaiguard/policy_detection.py +0 -0
  64. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zaiguard/zaiguard_service.py +0 -0
  65. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zbi/__init__.py +0 -0
  66. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zbi/custom_apps.py +0 -0
  67. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zbi/models/__init__.py +0 -0
  68. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zbi/models/custom_apps.py +0 -0
  69. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zbi/models/report_configs.py +0 -0
  70. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zbi/report_configs.py +0 -0
  71. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zbi/reports.py +0 -0
  72. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zbi/zbi_service.py +0 -0
  73. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/__init__.py +0 -0
  74. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/admin_user.py +0 -0
  75. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/devices.py +0 -0
  76. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/entitlements.py +0 -0
  77. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/fail_open_policy.py +0 -0
  78. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/forwarding_profile.py +0 -0
  79. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/admin_roles.py +0 -0
  80. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/admin_user.py +0 -0
  81. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/devices.py +0 -0
  82. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/failopenpolicy.py +0 -0
  83. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/forwardingprofile.py +0 -0
  84. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/manage_pass.py +0 -0
  85. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/secrets_otp.py +0 -0
  86. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/secrets_passwords.py +0 -0
  87. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/trustednetworks.py +0 -0
  88. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/webappservice.py +0 -0
  89. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/webprivacy.py +0 -0
  90. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
  91. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
  92. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/secrets.py +0 -0
  93. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/trusted_networks.py +0 -0
  94. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/web_app_service.py +0 -0
  95. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zcc/web_privacy.py +0 -0
  96. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/__init__.py +0 -0
  97. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/admin.py +0 -0
  98. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/alerts.py +0 -0
  99. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/apps.py +0 -0
  100. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/devices.py +0 -0
  101. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/inventory.py +0 -0
  102. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/legacy.py +0 -0
  103. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/administration.py +0 -0
  104. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/alerts.py +0 -0
  105. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/application_users.py +0 -0
  106. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/applications.py +0 -0
  107. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/call_quality_metrics.py +0 -0
  108. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/common.py +0 -0
  109. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/devices.py +0 -0
  110. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/snapshot.py +0 -0
  111. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/software_inventory.py +0 -0
  112. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/troubleshooting.py +0 -0
  113. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/models/users.py +0 -0
  114. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/snapshot.py +0 -0
  115. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/troubleshooting.py +0 -0
  116. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/users.py +0 -0
  117. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zdx/zdx_service.py +0 -0
  118. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/__init__.py +0 -0
  119. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/findings.py +0 -0
  120. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/lookalike_domains.py +0 -0
  121. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/models/__init__.py +0 -0
  122. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/models/common.py +0 -0
  123. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/models/findings.py +0 -0
  124. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/models/lookalike_domains.py +0 -0
  125. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/models/organizations.py +0 -0
  126. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/organizations.py +0 -0
  127. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zeasm/zeasm_service.py +0 -0
  128. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/__init__.py +0 -0
  129. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/activate.py +0 -0
  130. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/admin_roles.py +0 -0
  131. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/admin_users.py +0 -0
  132. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/advanced_settings.py +0 -0
  133. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/alert_subscriptions.py +0 -0
  134. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/apptotal.py +0 -0
  135. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/atp_policy.py +0 -0
  136. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/audit_logs.py +0 -0
  137. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/authentication_settings.py +0 -0
  138. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/bandwidth_classes.py +0 -0
  139. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/bandwidth_control_rules.py +0 -0
  140. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/browser_control_settings.py +0 -0
  141. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/casb_dlp_rules.py +0 -0
  142. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/casb_malware_rules.py +0 -0
  143. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_app_instances.py +0 -0
  144. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_applications.py +0 -0
  145. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_browser_isolation.py +0 -0
  146. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_firewall.py +0 -0
  147. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_firewall_dns.py +0 -0
  148. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_firewall_ips.py +0 -0
  149. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_firewall_rules.py +0 -0
  150. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_nss.py +0 -0
  151. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloud_to_cloud_ir.py +0 -0
  152. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/cloudappcontrol.py +0 -0
  153. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/custom_file_types.py +0 -0
  154. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/dedicated_ip_gateways.py +0 -0
  155. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/device_management.py +0 -0
  156. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/dlp_dictionary.py +0 -0
  157. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/dlp_engine.py +0 -0
  158. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/dlp_resources.py +0 -0
  159. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/dlp_templates.py +0 -0
  160. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/dlp_web_rules.py +0 -0
  161. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/dns_gatways.py +0 -0
  162. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/end_user_notification.py +0 -0
  163. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/file_type_control_rule.py +0 -0
  164. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/forwarding_control.py +0 -0
  165. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/ftp_control_policy.py +0 -0
  166. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/gre_tunnel.py +0 -0
  167. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/intermediate_certificates.py +0 -0
  168. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/iot_report.py +0 -0
  169. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/ipv6_config.py +0 -0
  170. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/legacy.py +0 -0
  171. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/locations.py +0 -0
  172. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/malware_protection_policy.py +0 -0
  173. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/mobile_threat_settings.py +0 -0
  174. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/__init__.py +0 -0
  175. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/activation.py +0 -0
  176. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/admin_roles.py +0 -0
  177. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/admin_users.py +0 -0
  178. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/advanced_threat_settings.py +0 -0
  179. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/alert_subscriptions.py +0 -0
  180. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/apptotal.py +0 -0
  181. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/authentication_settings.py +0 -0
  182. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/bandwidth_classes.py +0 -0
  183. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
  184. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/browser_control_settings.py +0 -0
  185. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/casb_dlp_rules.py +0 -0
  186. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/casb_malware_rules.py +0 -0
  187. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_app_instances.py +0 -0
  188. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_app_policy.py +0 -0
  189. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
  190. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
  191. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
  192. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
  193. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
  194. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
  195. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
  196. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
  197. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
  198. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
  199. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
  200. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
  201. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_nss.py +0 -0
  202. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloud_to_cloud_ir.py +0 -0
  203. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/cloudappcontrol.py +0 -0
  204. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/common.py +0 -0
  205. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/custom_file_types.py +0 -0
  206. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
  207. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/device_groups.py +0 -0
  208. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/devices.py +0 -0
  209. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/dlp_dictionary.py +0 -0
  210. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/dlp_engine.py +0 -0
  211. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/dlp_resources.py +0 -0
  212. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/dlp_templates.py +0 -0
  213. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/dlp_web_rules.py +0 -0
  214. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/dns_gateways.py +0 -0
  215. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/endusernotification.py +0 -0
  216. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/filetyperules.py +0 -0
  217. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/forwarding_control_policy.py +0 -0
  218. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/ftp_control_policy.py +0 -0
  219. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/gre_recommended_list.py +0 -0
  220. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/gre_tunnel_info.py +0 -0
  221. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/gre_tunnels.py +0 -0
  222. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/gre_vips.py +0 -0
  223. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/intermediate_certificates.py +0 -0
  224. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/iotreport.py +0 -0
  225. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/ipv6_config.py +0 -0
  226. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/location_group.py +0 -0
  227. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/location_management.py +0 -0
  228. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/malware_protection_settings.py +0 -0
  229. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/mobile_threat_settings.py +0 -0
  230. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/nat_control_policy.py +0 -0
  231. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/nss_servers.py +0 -0
  232. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/organization_information.py +0 -0
  233. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/proxies.py +0 -0
  234. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/proxy_gateways.py +0 -0
  235. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/remoteassistance.py +0 -0
  236. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/risk_profiles.py +0 -0
  237. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/rule_labels.py +0 -0
  238. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/saas_security_api.py +0 -0
  239. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/sandbox.py +0 -0
  240. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/sandboxrules.py +0 -0
  241. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/security_policy_settings.py +0 -0
  242. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/shadow_it_report.py +0 -0
  243. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
  244. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/subclouds.py +0 -0
  245. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/system_audit.py +0 -0
  246. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
  247. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/time_intervals.py +0 -0
  248. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/traffic_capture.py +0 -0
  249. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/traffic_datacenters.py +0 -0
  250. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
  251. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/traffic_extranet.py +0 -0
  252. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/traffic_static_ip.py +0 -0
  253. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
  254. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
  255. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/url_filtering_rules.py +0 -0
  256. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/urlcategory.py +0 -0
  257. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/user_management.py +0 -0
  258. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/vzen_clusters.py +0 -0
  259. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/vzen_nodes.py +0 -0
  260. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/workload_groups.py +0 -0
  261. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/models/zpa_gateway.py +0 -0
  262. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/nat_control_policy.py +0 -0
  263. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/nss_servers.py +0 -0
  264. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/organization_information.py +0 -0
  265. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/policy_export.py +0 -0
  266. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/proxies.py +0 -0
  267. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/remote_assistance.py +0 -0
  268. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/risk_profiles.py +0 -0
  269. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/rule_labels.py +0 -0
  270. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/saas_security_api.py +0 -0
  271. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/sandbox.py +0 -0
  272. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/sandbox_rules.py +0 -0
  273. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/security_policy_settings.py +0 -0
  274. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/shadow_it_report.py +0 -0
  275. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/ssl_inspection_rules.py +0 -0
  276. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/sub_clouds.py +0 -0
  277. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/system_audit.py +0 -0
  278. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/tenancy_restriction_profile.py +0 -0
  279. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/time_intervals.py +0 -0
  280. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/traffic_capture.py +0 -0
  281. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/traffic_datacenters.py +0 -0
  282. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/traffic_extranet.py +0 -0
  283. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/traffic_static_ip.py +0 -0
  284. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/traffic_vpn_credentials.py +0 -0
  285. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/url_categories.py +0 -0
  286. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/url_filtering.py +0 -0
  287. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/user_management.py +0 -0
  288. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/vzen_clusters.py +0 -0
  289. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/vzen_nodes.py +0 -0
  290. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/workload_groups.py +0 -0
  291. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/zia_service.py +0 -0
  292. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zia/zpa_gateway.py +0 -0
  293. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/__init__.py +0 -0
  294. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/api_client.py +0 -0
  295. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/groups.py +0 -0
  296. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/models/api_client.py +0 -0
  297. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/models/common.py +0 -0
  298. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/models/groups.py +0 -0
  299. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/models/resource_servers.py +0 -0
  300. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/models/user_entitlement.py +0 -0
  301. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/models/users.py +0 -0
  302. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/resource_servers.py +0 -0
  303. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/user_entitlement.py +0 -0
  304. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/users.py +0 -0
  305. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zid/zid_service.py +0 -0
  306. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/__init__.py +0 -0
  307. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/cyber_security.py +0 -0
  308. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/firewall.py +0 -0
  309. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/iot.py +0 -0
  310. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/models/__init__.py +0 -0
  311. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/models/common.py +0 -0
  312. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/models/enums.py +0 -0
  313. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/models/inputs.py +0 -0
  314. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/saas_security.py +0 -0
  315. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/shadow_it.py +0 -0
  316. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/web_traffic.py +0 -0
  317. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zins/zins_service.py +0 -0
  318. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/__init__.py +0 -0
  319. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/agent_groups.py +0 -0
  320. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/agents.py +0 -0
  321. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/app_catalog.py +0 -0
  322. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/app_zones.py +0 -0
  323. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/models/__init__.py +0 -0
  324. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/models/common.py +0 -0
  325. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/models/enums.py +0 -0
  326. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/models/inputs.py +0 -0
  327. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/nonces.py +0 -0
  328. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/policy_rules.py +0 -0
  329. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/resource_groups.py +0 -0
  330. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/resources.py +0 -0
  331. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/tags.py +0 -0
  332. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zms/zms_service.py +0 -0
  333. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/__init__.py +0 -0
  334. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/admin_sso_controller.py +0 -0
  335. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/administrator_controller.py +0 -0
  336. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/api_keys.py +0 -0
  337. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_connector_groups.py +0 -0
  338. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_connector_schedule.py +0 -0
  339. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_connectors.py +0 -0
  340. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_protection.py +0 -0
  341. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_segment_by_type.py +0 -0
  342. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_segments_ba.py +0 -0
  343. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_segments_ba_v2.py +0 -0
  344. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_segments_inspection.py +0 -0
  345. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/app_segments_pra.py +0 -0
  346. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/application_segment.py +0 -0
  347. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/branch_connector_group.py +0 -0
  348. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/branch_connectors.py +0 -0
  349. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/browser_protection.py +0 -0
  350. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/c2c_ip_ranges.py +0 -0
  351. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/cbi_banner.py +0 -0
  352. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/cbi_certificate.py +0 -0
  353. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/cbi_profile.py +0 -0
  354. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/cbi_region.py +0 -0
  355. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/cbi_zpa_profile.py +0 -0
  356. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/certificates.py +0 -0
  357. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/client_settings.py +0 -0
  358. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/cloud_connector_controller.py +0 -0
  359. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/cloud_connector_groups.py +0 -0
  360. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/config_override_controller.py +0 -0
  361. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/customer_controller.py +0 -0
  362. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/customer_domain.py +0 -0
  363. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/customer_dr_tool.py +0 -0
  364. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/customer_version_profile.py +0 -0
  365. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/emergency_access.py +0 -0
  366. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/enrollment_certificates.py +0 -0
  367. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/extranet_resource.py +0 -0
  368. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/idp.py +0 -0
  369. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/legacy.py +0 -0
  370. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/location_controller.py +0 -0
  371. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/lss.py +0 -0
  372. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/machine_groups.py +0 -0
  373. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/managed_browser_profile.py +0 -0
  374. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/microtenants.py +0 -0
  375. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/administrator_controller.py +0 -0
  376. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/api_keys.py +0 -0
  377. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/app_connector_groups.py +0 -0
  378. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/app_connector_schedule.py +0 -0
  379. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/app_connectors.py +0 -0
  380. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
  381. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/app_protection_profile.py +0 -0
  382. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/application_segment.py +0 -0
  383. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/application_segment_lb.py +0 -0
  384. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/application_servers.py +0 -0
  385. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/branch_connectors.py +0 -0
  386. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/browser_protection.py +0 -0
  387. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/c2c_ip_ranges.py +0 -0
  388. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/cbi_banner.py +0 -0
  389. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/cbi_certificate.py +0 -0
  390. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/cbi_profile.py +0 -0
  391. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/cbi_region.py +0 -0
  392. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
  393. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/certificates.py +0 -0
  394. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/client_settings.py +0 -0
  395. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/cloud_connector_controller.py +0 -0
  396. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
  397. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/common.py +0 -0
  398. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/config_override_controller.py +0 -0
  399. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/customer_controller.py +0 -0
  400. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/customer_domain.py +0 -0
  401. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/customer_dr_tool.py +0 -0
  402. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/customer_version_profile.py +0 -0
  403. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/emergency_access.py +0 -0
  404. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/enrollment_certificates.py +0 -0
  405. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/idp.py +0 -0
  406. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/lss.py +0 -0
  407. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/machine_groups.py +0 -0
  408. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/managed_browser_profile.py +0 -0
  409. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/microtenants.py +0 -0
  410. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/npn_client_controller.py +0 -0
  411. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/oauth2_user_code.py +0 -0
  412. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
  413. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
  414. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/posture_profiles.py +0 -0
  415. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/pra_approval.py +0 -0
  416. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/pra_console.py +0 -0
  417. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
  418. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/pra_credential.py +0 -0
  419. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/pra_portal.py +0 -0
  420. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/private_cloud_controller.py +0 -0
  421. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/private_cloud_group.py +0 -0
  422. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/provisioning_keys.py +0 -0
  423. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/role_controller.py +0 -0
  424. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/saml_attributes.py +0 -0
  425. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/scim_attributes.py +0 -0
  426. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/scim_groups.py +0 -0
  427. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/segment_group.py +0 -0
  428. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/server_group.py +0 -0
  429. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/service_edge_groups.py +0 -0
  430. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/service_edge_schedule.py +0 -0
  431. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/service_edges.py +0 -0
  432. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/stepup_auth_level.py +0 -0
  433. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/tag_group.py +0 -0
  434. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/tag_key.py +0 -0
  435. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/tag_namespace.py +0 -0
  436. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/trusted_network.py +0 -0
  437. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/user_portal_aup.py +0 -0
  438. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/user_portal_controller.py +0 -0
  439. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/user_portal_link.py +0 -0
  440. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/models/zia_customer_config.py +0 -0
  441. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/npn_client_controller.py +0 -0
  442. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/oauth2_user_code.py +0 -0
  443. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/policies.py +0 -0
  444. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/posture_profiles.py +0 -0
  445. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/pra_approval.py +0 -0
  446. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/pra_console.py +0 -0
  447. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/pra_credential.py +0 -0
  448. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/pra_credential_pool.py +0 -0
  449. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/pra_portal.py +0 -0
  450. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/private_cloud_controller.py +0 -0
  451. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/private_cloud_group.py +0 -0
  452. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/provisioning.py +0 -0
  453. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/role_controller.py +0 -0
  454. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/saml_attributes.py +0 -0
  455. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/scim_attributes.py +0 -0
  456. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/scim_groups.py +0 -0
  457. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/segment_groups.py +0 -0
  458. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/server_groups.py +0 -0
  459. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/servers.py +0 -0
  460. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/service_edge_group.py +0 -0
  461. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/service_edge_schedule.py +0 -0
  462. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/service_edges.py +0 -0
  463. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/stepup_auth_level.py +0 -0
  464. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/tag_group.py +0 -0
  465. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/tag_key.py +0 -0
  466. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/tag_namespace.py +0 -0
  467. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/trusted_networks.py +0 -0
  468. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/user_portal_aup.py +0 -0
  469. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/user_portal_controller.py +0 -0
  470. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/user_portal_link.py +0 -0
  471. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/workload_tag_group.py +0 -0
  472. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/zia_customer_config.py +0 -0
  473. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zpa/zpa_service.py +0 -0
  474. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/__init__.py +0 -0
  475. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/alarms.py +0 -0
  476. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/api_key.py +0 -0
  477. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/app_connector_config.py +0 -0
  478. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/devices.py +0 -0
  479. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/groups_router.py +0 -0
  480. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/legacy.py +0 -0
  481. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/logs.py +0 -0
  482. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/__init__.py +0 -0
  483. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/alarms.py +0 -0
  484. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/api_key.py +0 -0
  485. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/app_connector_config.py +0 -0
  486. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/common.py +0 -0
  487. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/devices.py +0 -0
  488. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/groups_router.py +0 -0
  489. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/logs.py +0 -0
  490. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/policy_comments.py +0 -0
  491. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/ransomware_kill.py +0 -0
  492. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/site.py +0 -0
  493. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/site2site_vpn.py +0 -0
  494. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/models/template_router.py +0 -0
  495. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/policy_comments.py +0 -0
  496. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/ransomware_kill.py +0 -0
  497. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/site.py +0 -0
  498. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/site2site_vpn.py +0 -0
  499. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/template_router.py +0 -0
  500. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztb/ztb_service.py +0 -0
  501. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/__init__.py +0 -0
  502. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/account_details.py +0 -0
  503. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/account_groups.py +0 -0
  504. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/activation.py +0 -0
  505. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/admin_roles.py +0 -0
  506. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/admin_users.py +0 -0
  507. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/api_keys.py +0 -0
  508. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/discovery_service.py +0 -0
  509. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/ec_groups.py +0 -0
  510. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/forwarding_gateways.py +0 -0
  511. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/forwarding_rules.py +0 -0
  512. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/ip_destination_groups.py +0 -0
  513. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/ip_groups.py +0 -0
  514. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/ip_source_groups.py +0 -0
  515. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/legacy.py +0 -0
  516. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/location_management.py +0 -0
  517. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/location_template.py +0 -0
  518. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/account_groups.py +0 -0
  519. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/activation.py +0 -0
  520. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/admin_roles.py +0 -0
  521. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/admin_users.py +0 -0
  522. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/api_keys.py +0 -0
  523. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/common.py +0 -0
  524. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/discovery_service.py +0 -0
  525. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/ec_group_vm.py +0 -0
  526. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/ecgroup.py +0 -0
  527. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/forwarding_gateways.py +0 -0
  528. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/forwarding_rules.py +0 -0
  529. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/ip_destination_groups.py +0 -0
  530. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/ip_groups.py +0 -0
  531. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/ip_source_groups.py +0 -0
  532. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/location_management.py +0 -0
  533. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/location_templates.py +0 -0
  534. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/nw_service.py +0 -0
  535. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/nw_service_groups.py +0 -0
  536. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/provisioning_url.py +0 -0
  537. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/public_cloud_info.py +0 -0
  538. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
  539. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/workload_groups.py +0 -0
  540. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/models/zpa_resources.py +0 -0
  541. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/nw_service.py +0 -0
  542. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/nw_service_groups.py +0 -0
  543. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/provisioning_url.py +0 -0
  544. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/public_cloud_info.py +0 -0
  545. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/workload_groups.py +0 -0
  546. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/ztw/ztw_service.py +0 -0
  547. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/__init__.py +0 -0
  548. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/audit_logs.py +0 -0
  549. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/dlp_incidents.py +0 -0
  550. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/legacy.py +0 -0
  551. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/audit_logs.py +0 -0
  552. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/change_history.py +0 -0
  553. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/common.py +0 -0
  554. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/generated_tickets.py +0 -0
  555. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/incident_details.py +0 -0
  556. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/incident_evidence.py +0 -0
  557. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/incident_group_search.py +0 -0
  558. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/incident_search.py +0 -0
  559. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/models/incident_trigger.py +0 -0
  560. {zscaler_sdk_python-1.9.23 → zscaler_sdk_python-1.9.25}/zscaler/zwa/zwa_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zscaler-sdk-python
3
- Version: 1.9.23
3
+ Version: 1.9.25
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.9.23"
3
+ version = "1.9.25"
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.9.23"
32
+ __version__ = "1.9.25"
33
33
 
34
34
 
35
35
  from zscaler.oneapi_client import Client as ZscalerClient # noqa
@@ -17,10 +17,18 @@ class ZscalerAPIError(Exception):
17
17
  response_body = {"message": str(response_body)}
18
18
 
19
19
  self.error_code: Optional[Union[str, int]] = (
20
- response_body.get("code") or response_body.get("id") or response_body.get("errorCode")
20
+ response_body.get("code")
21
+ or response_body.get("id")
22
+ or response_body.get("errorCode")
23
+ # ZCC error envelope: {"title": "INVALID_FIELD_VALUE", "errorCode": null, ...}
24
+ or response_body.get("title")
21
25
  )
22
26
  self.error_message: Optional[str] = (
23
- response_body.get("message") or response_body.get("reason") or response_body.get("errorDetails")
27
+ response_body.get("message")
28
+ or response_body.get("reason")
29
+ or response_body.get("errorDetails")
30
+ # ZCC error envelope: {"errorMessage": "Policy with policyId: ...", ...}
31
+ or response_body.get("errorMessage")
24
32
  )
25
33
  self.params: List[Any] = response_body.get("params", [])
26
34
  self.path: Optional[str] = response_body.get("path")
@@ -358,9 +358,18 @@ class RequestExecutor:
358
358
  # Special handling for ZCC service - use selective conversion
359
359
  if "/zcc/" in endpoint and body:
360
360
  from zscaler.helpers import convert_keys_to_camel_case_selective
361
+ from zscaler.zcc._serialize import _ZccWireBody
361
362
  from zscaler.zcc.models.webpolicy import WebPolicy
362
363
 
363
- # Use the WebPolicy's snake_case keys for selective conversion
364
+ # If the API client method already serialized the body via the
365
+ # model-driven ``zcc_to_wire`` helper, every key is already in
366
+ # the exact wire form declared by the schema. Skip any further
367
+ # conversion to preserve the model's intent verbatim.
368
+ if isinstance(body, _ZccWireBody):
369
+ return dict(body)
370
+
371
+ # Legacy path for ZCC endpoints that have not yet been migrated
372
+ # to the model-driven serializer.
364
373
  body = convert_keys_to_camel_case_selective(body, WebPolicy.SNAKE_CASE_KEYS)
365
374
  return body
366
375
 
@@ -847,7 +847,12 @@ def zcc_param_mapper(func):
847
847
  raw_device_type = query_params.get("device_type") or body.get("device_type")
848
848
 
849
849
  if raw_device_type:
850
- raw_device_type = [raw_device_type] if isinstance(raw_device_type, str) else raw_device_type
850
+ # Accept str ("windows"), int (3, matching the API's numeric
851
+ # device_type code), or a list of either. Scalars get wrapped
852
+ # into a single-element list so the comprehension below can
853
+ # iterate uniformly.
854
+ if isinstance(raw_device_type, (str, int)):
855
+ raw_device_type = [raw_device_type]
851
856
  mapped = [
852
857
  str(zcc_param_map["os"].get(dt.lower()) if isinstance(dt, str) else dt)
853
858
  for dt in raw_device_type
@@ -0,0 +1,181 @@
1
+ """
2
+ ZCC-only model introspection.
3
+
4
+ This module derives the wire-level field mapping for any ZCC ZscalerObject
5
+ subclass directly from its existing ``request_format`` and ``__init__``
6
+ implementations. It does not modify or require any change to the model
7
+ classes themselves.
8
+
9
+ The serializer in ``_serialize.py`` uses the maps produced here to convert
10
+ user-supplied snake_case bodies into the exact key casing the ZCC API
11
+ expects, without relying on the heuristic snake-to-camel converter or its
12
+ hand-maintained ``FIELD_EXCEPTIONS`` table.
13
+
14
+ This module applies to ZCC only and does not affect other services.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import ast
20
+ import inspect
21
+ import sys
22
+ import textwrap
23
+ from functools import lru_cache
24
+ from typing import Any, Dict, Set, Type
25
+
26
+ from zscaler.oneapi_object import ZscalerObject
27
+
28
+
29
+ class _AttrTracer:
30
+ """Sentinel that records the snake_case attribute name accessed on the tracer."""
31
+
32
+ __slots__ = ("name",)
33
+
34
+ def __init__(self, name: str) -> None:
35
+ self.name = name
36
+
37
+ def __repr__(self) -> str: # pragma: no cover - debugging aid only
38
+ return f"_AttrTracer({self.name!r})"
39
+
40
+
41
+ def _make_tracer(cls: Type[ZscalerObject]):
42
+ """
43
+ Return an instance that masquerades as ``cls`` and records every attribute
44
+ access. Used to introspect ``cls.request_format`` without running the
45
+ real ``__init__`` logic.
46
+
47
+ A dynamic subclass is required because ``request_format`` calls
48
+ ``super()`` (zero-arg form) which validates that ``self`` is an instance
49
+ of the enclosing class.
50
+ """
51
+
52
+ accessed: Dict[str, _AttrTracer] = {}
53
+
54
+ class _Tracer(cls): # type: ignore[misc, valid-type]
55
+ # ``__getattr__`` only fires on missing attribute lookup, so it does
56
+ # not interfere with method dispatch or ``super()`` resolution.
57
+ def __getattr__(self, name: str):
58
+ if name not in accessed:
59
+ accessed[name] = _AttrTracer(name)
60
+ return accessed[name]
61
+
62
+ inst = _Tracer.__new__(_Tracer)
63
+ return inst, accessed
64
+
65
+
66
+ @lru_cache(maxsize=None)
67
+ def field_map(cls: Type[ZscalerObject]) -> Dict[str, str]:
68
+ """
69
+ Return ``{snake_case_attr -> wire_key}`` for ``cls`` by tracing its
70
+ ``request_format`` method.
71
+
72
+ Only entries whose value is a direct ``self.<attr>`` reference are
73
+ captured. Literal/computed values (rare in current ZCC models) are
74
+ intentionally skipped because they are not user-controllable and have
75
+ no snake_case form.
76
+ """
77
+
78
+ tracer, _ = _make_tracer(cls)
79
+ raw = cls.request_format(tracer) # type: ignore[arg-type]
80
+ return {value.name: key for key, value in raw.items() if isinstance(value, _AttrTracer)}
81
+
82
+
83
+ @lru_cache(maxsize=None)
84
+ def wire_keys(cls: Type[ZscalerObject]) -> Set[str]:
85
+ """Return the set of wire-level keys declared by ``cls.request_format``."""
86
+ return set(field_map(cls).values())
87
+
88
+
89
+ def _extract_nested_class_name(value_node: ast.AST) -> str | None:
90
+ """
91
+ Extract the name of a likely nested model class from the RHS of an
92
+ ``Assign`` node in a model's ``__init__``.
93
+
94
+ Recognized patterns (matching the conventions used throughout
95
+ ``zscaler/zcc/models``):
96
+
97
+ * ``self.x = NestedClass(config[...])``
98
+ * ``self.x = ZscalerCollection.form_list(..., NestedClass)``
99
+ * Either of the above wrapped in a conditional expression
100
+ (``A if cond else B``).
101
+ """
102
+
103
+ if isinstance(value_node, ast.Call):
104
+ func = value_node.func
105
+ if isinstance(func, ast.Name):
106
+ return func.id
107
+ if (
108
+ isinstance(func, ast.Attribute)
109
+ and isinstance(func.value, ast.Name)
110
+ and func.value.id == "ZscalerCollection"
111
+ and func.attr == "form_list"
112
+ and value_node.args
113
+ ):
114
+ last = value_node.args[-1]
115
+ if isinstance(last, ast.Name):
116
+ return last.id
117
+ return None
118
+
119
+ if isinstance(value_node, ast.IfExp):
120
+ for branch in (value_node.body, value_node.orelse):
121
+ name = _extract_nested_class_name(branch)
122
+ if name is not None:
123
+ return name
124
+
125
+ return None
126
+
127
+
128
+ @lru_cache(maxsize=None)
129
+ def nested_types(cls: Type[ZscalerObject]) -> Dict[str, Type[ZscalerObject]]:
130
+ """
131
+ Inspect ``cls.__init__`` and return ``{snake_case_attr -> NestedClass}``
132
+ for every attribute whose value is constructed from another
133
+ ``ZscalerObject`` subclass.
134
+
135
+ This drives recursive serialization: when a nested attribute is present
136
+ in the user's body, the serializer uses the corresponding nested class
137
+ as the schema for that sub-tree.
138
+ """
139
+
140
+ try:
141
+ source = textwrap.dedent(inspect.getsource(cls.__init__))
142
+ except (OSError, TypeError):
143
+ return {}
144
+
145
+ try:
146
+ tree = ast.parse(source)
147
+ except SyntaxError:
148
+ return {}
149
+
150
+ module = sys.modules.get(cls.__module__)
151
+ if module is None:
152
+ return {}
153
+
154
+ if not tree.body or not isinstance(tree.body[0], ast.FunctionDef):
155
+ return {}
156
+
157
+ result: Dict[str, Type[ZscalerObject]] = {}
158
+ for node in ast.walk(tree.body[0]):
159
+ if not isinstance(node, ast.Assign) or len(node.targets) != 1:
160
+ continue
161
+ target = node.targets[0]
162
+ if not (isinstance(target, ast.Attribute) and isinstance(target.value, ast.Name) and target.value.id == "self"):
163
+ continue
164
+ attr_name = target.attr
165
+ if attr_name in result:
166
+ continue
167
+ class_name = _extract_nested_class_name(node.value)
168
+ if class_name is None:
169
+ continue
170
+ candidate = getattr(module, class_name, None)
171
+ if isinstance(candidate, type) and issubclass(candidate, ZscalerObject) and candidate is not ZscalerObject:
172
+ result[attr_name] = candidate
173
+
174
+ return result
175
+
176
+
177
+ def reset_caches() -> None:
178
+ """Clear all introspection caches. Intended for tests only."""
179
+ field_map.cache_clear()
180
+ wire_keys.cache_clear()
181
+ nested_types.cache_clear()
@@ -0,0 +1,156 @@
1
+ """
2
+ ZCC-only request body serializer.
3
+
4
+ This module converts a user-supplied request body (typically containing
5
+ snake_case keys) into the exact wire-key casing declared by a ZCC model
6
+ class via its ``request_format`` method.
7
+
8
+ Design goals:
9
+
10
+ * The model class is the single source of truth for wire keys.
11
+ * No reliance on heuristic snake-to-camel conversion or hand-maintained
12
+ ``FIELD_EXCEPTIONS`` tables.
13
+ * Per-class scoping: the same snake_case attribute can map to different
14
+ wire keys depending on which model class it belongs to (e.g.
15
+ ``WindowsPolicy.disable_password`` -> ``disable_password`` (snake on
16
+ the wire) vs ``LinuxPolicy.disable_password`` -> ``disablePassword``).
17
+ * camelCase wire keys passed by the user are accepted as-is; unknown keys
18
+ pass through unchanged so we never silently drop or mangle data.
19
+
20
+ This module applies to ZCC only and must not be used by other services.
21
+ """
22
+
23
+ from __future__ import annotations
24
+
25
+ from typing import Any, Type
26
+
27
+ from zscaler.helpers import convert_keys_to_camel_case_selective, to_lower_camel_case
28
+ from zscaler.oneapi_object import ZscalerObject
29
+
30
+ from ._field_introspect import field_map, nested_types, wire_keys
31
+
32
+
33
+ def _legacy_snake_preserve_keys() -> "set[str]":
34
+ """
35
+ The set of snake_case keys the legacy ZCC converter has historically
36
+ preserved on the wire (currently ``WebPolicy.SNAKE_CASE_KEYS``).
37
+
38
+ Treated as a transitional fallback: any key listed here passes through
39
+ the serializer unchanged when the per-class model does not declare it.
40
+ Sourced lazily to avoid a circular import at module load time.
41
+ """
42
+ from zscaler.zcc.models.webpolicy import WebPolicy
43
+
44
+ return WebPolicy.SNAKE_CASE_KEYS
45
+
46
+
47
+ class _ZccWireBody(dict):
48
+ """
49
+ Marker dict subclass indicating that the body has already been
50
+ serialized into ZCC wire form by :func:`zcc_to_wire`.
51
+
52
+ The request executor checks ``isinstance(body, _ZccWireBody)`` to skip
53
+ its legacy ``convert_keys_to_camel_case_selective`` step for ZCC
54
+ endpoints.
55
+
56
+ Acts as a regular dict for ``json.dumps`` and downstream consumers.
57
+ """
58
+
59
+
60
+ def _resolve_wire_key(provided_key: str, fmap: "dict[str, str]", wkeys: "set[str]") -> str:
61
+ """Return the wire-form key for ``provided_key``.
62
+
63
+ Resolution order (model first, legacy behaviour as a strict superset):
64
+
65
+ 1. Snake_case attribute name declared by the model -> use the wire
66
+ key declared in ``request_format``.
67
+ 2. Wire-form key already declared by the model -> keep as-is.
68
+ 3. Snake_case key listed in the legacy ``WebPolicy.SNAKE_CASE_KEYS``
69
+ set -> preserve as snake_case. This covers fields the API expects
70
+ in snake_case but the SDK model has not yet incorporated (e.g.
71
+ top-level ``allowed_apps``, ``bypass_mms_apps``).
72
+ 4. Otherwise -> fall back to ``to_lower_camel_case`` (which honours
73
+ the existing ``FIELD_EXCEPTIONS`` table). Already-camelCase keys
74
+ pass through unchanged because the converter is a no-op for
75
+ strings without an underscore.
76
+ """
77
+ if provided_key in fmap:
78
+ return fmap[provided_key]
79
+ if provided_key in wkeys:
80
+ return provided_key
81
+ if provided_key in _legacy_snake_preserve_keys():
82
+ return provided_key
83
+ return to_lower_camel_case(provided_key)
84
+
85
+
86
+ def _resolve_nested_cls(
87
+ provided_key: str,
88
+ nested: "dict[str, Type[ZscalerObject]]",
89
+ fmap: "dict[str, str]",
90
+ ) -> "Type[ZscalerObject] | None":
91
+ """
92
+ Look up the nested model class for ``provided_key`` (which may be the
93
+ snake_case attribute name or the wire-form key). Returns ``None`` when
94
+ the key does not designate a nested structure.
95
+ """
96
+ if provided_key in nested:
97
+ return nested[provided_key]
98
+ for snake_name, wire_name in fmap.items():
99
+ if wire_name == provided_key and snake_name in nested:
100
+ return nested[snake_name]
101
+ return None
102
+
103
+
104
+ def zcc_to_wire(body: Any, schema_cls: Type[ZscalerObject]) -> Any:
105
+ """
106
+ Convert ``body`` to the exact wire shape declared by ``schema_cls``.
107
+
108
+ Args:
109
+ body: The user's request body. May be a dict, a list of dicts, a
110
+ ``ZscalerObject`` instance, or a primitive. Non-dict / non-list
111
+ primitives are returned unchanged.
112
+ schema_cls: The ZCC model class that defines the wire shape. Must
113
+ be a subclass of :class:`ZscalerObject`.
114
+
115
+ Returns:
116
+ A :class:`_ZccWireBody` dict (for dict inputs), a list (for list
117
+ inputs whose elements are dicts), or the original value otherwise.
118
+ """
119
+ if isinstance(body, ZscalerObject):
120
+ body = body.request_format()
121
+
122
+ if isinstance(body, list):
123
+ return [zcc_to_wire(item, schema_cls) if isinstance(item, dict) else item for item in body]
124
+
125
+ if not isinstance(body, dict):
126
+ return body
127
+
128
+ fmap = field_map(schema_cls)
129
+ nested = nested_types(schema_cls)
130
+ wkeys = wire_keys(schema_cls)
131
+
132
+ snake_preserve = _legacy_snake_preserve_keys()
133
+
134
+ out = _ZccWireBody()
135
+ for raw_key, value in body.items():
136
+ wire_key = _resolve_wire_key(raw_key, fmap, wkeys)
137
+ nested_cls = _resolve_nested_cls(raw_key, nested, fmap)
138
+
139
+ if nested_cls is not None:
140
+ # Schema-aware recursion: the model declares a class for this
141
+ # sub-tree, so use it as the schema for the recursive call.
142
+ if isinstance(value, dict):
143
+ value = zcc_to_wire(value, nested_cls)
144
+ elif isinstance(value, list):
145
+ value = [zcc_to_wire(item, nested_cls) if isinstance(item, dict) else item for item in value]
146
+ elif isinstance(value, (dict, list)) and not isinstance(value, _ZccWireBody):
147
+ # No sub-schema declared. Fall back to the legacy ZCC converter
148
+ # for this subtree so containers like ``endToEndDiagnostics``,
149
+ # ``generateCliPasswordContract`` and ``locationRulesetPolicies``
150
+ # still get their child keys correctly cased (offTrusted,
151
+ # vpnTrusted, allowZpaDisableWithoutPassword, etc.).
152
+ value = convert_keys_to_camel_case_selective(value, snake_preserve)
153
+
154
+ out[wire_key] = value
155
+
156
+ return out
@@ -0,0 +1,246 @@
1
+ """
2
+ Copyright (c) 2023, Zscaler Inc.
3
+
4
+ Permission to use, copy, modify, and/or distribute this software for any
5
+ purpose with or without fee is hereby granted, provided that the above
6
+ copyright notice and this permission notice appear in all copies.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
+ """
16
+
17
+ from typing import Optional
18
+ from zscaler.api_client import APIClient
19
+ from zscaler.request_executor import RequestExecutor
20
+ from zscaler.zcc.models.application_profiles import ApplicationProfile
21
+ from zscaler.utils import format_url, zcc_param_mapper
22
+ from zscaler.types import APIResult
23
+
24
+
25
+ class ApplicationProfilesAPI(APIClient):
26
+
27
+ def __init__(self, request_executor: "RequestExecutor") -> None:
28
+ super().__init__()
29
+ self._request_executor: RequestExecutor = request_executor
30
+ self._zcc_base_endpoint = "/zcc/papi/public/v1"
31
+
32
+ @zcc_param_mapper
33
+ def get_application_profiles(self, query_params: Optional[dict] = None) -> APIResult[dict]:
34
+ """
35
+ Retrieves the paginated list of application profiles.
36
+
37
+ The ``device_type`` filter accepts a friendly OS name (``ios``,
38
+ ``android``, ``windows``, ``macos``, ``linux``); the
39
+ :func:`zscaler.utils.zcc_param_mapper` decorator converts it to the
40
+ numeric ``deviceType`` value the API expects.
41
+
42
+ Args:
43
+ query_params (dict, optional): A dictionary containing supported filters.
44
+
45
+ ``[query_params.page]`` {str}: Specifies the page offset.
46
+
47
+ ``[query_params.page_size]`` {str}: Specifies the page size. The default size is 50.
48
+
49
+ ``[query_params.search]`` {str}: The search string used to match against the policies.
50
+
51
+ ``[query_params.search_type]`` {str}: The search string used to match against the search type.
52
+ This is enabled only for filename, name, policyToken, ruleset, or groups.
53
+
54
+ ``[query_params.device_type]`` {str}: Friendly device type filter.
55
+ One of ``ios``, ``android``, ``windows``, ``macos``, ``linux``.
56
+
57
+ Returns:
58
+ :obj:`list`: Retrieves the list of application profile policies.
59
+
60
+ Examples:
61
+ Prints all application profile policies:
62
+
63
+ >>> profile_list, _, err = client.zcc.application_profiles.get_application_profiles()
64
+ >>> if err:
65
+ ... print(f"Error listing application profiles: {err}")
66
+ ... return
67
+ ... for profile in profile_list:
68
+ ... print(profile.as_dict())
69
+
70
+ Filter by device type:
71
+
72
+ >>> profile_list, _, err = client.zcc.application_profiles.get_application_profiles(
73
+ ... query_params={"device_type": "android"}
74
+ ... )
75
+ """
76
+ http_method = "get".upper()
77
+ api_url = format_url(f"""
78
+ {self._zcc_base_endpoint}
79
+ /application-profiles
80
+ """)
81
+
82
+ query_params = query_params or {}
83
+ body = {}
84
+ headers = {}
85
+
86
+ request, error = self._request_executor.create_request(http_method, api_url, body, headers, params=query_params)
87
+
88
+ if error:
89
+ return (None, None, error)
90
+
91
+ response, error = self._request_executor.execute(request)
92
+ if error:
93
+ return (None, response, error)
94
+
95
+ try:
96
+ response_body = response.get_body() or {}
97
+ items = response_body.get("policies", []) or []
98
+ result = [ApplicationProfile(item) for item in items if isinstance(item, dict)]
99
+ except Exception as error:
100
+ return (None, response, error)
101
+ return (result, response, None)
102
+
103
+ def get_application_profile(self, profile_id: str) -> APIResult[dict]:
104
+ """
105
+ Retrieves the list of policies for application profiles.
106
+
107
+ Args:
108
+ profile_id (str): The unique identifier of the application profile.
109
+
110
+ Returns:
111
+ :obj:`list`: Retrieves the list of application profile policies.
112
+
113
+ Examples:
114
+ Prints all application profile policies:
115
+
116
+ >>> profile, _, err = client.zcc.application_profiles.get_application_profile('1234567890')
117
+ >>> if err:
118
+ ... print(f"Error listing application profile: {err}")
119
+ ... return
120
+ ... print(profile.as_dict())
121
+ """
122
+ http_method = "get".upper()
123
+ api_url = format_url(f"""
124
+ {self._zcc_base_endpoint}
125
+ /application-profiles/{profile_id}
126
+ """)
127
+
128
+ body = {}
129
+ headers = {}
130
+
131
+ request, error = self._request_executor.create_request(http_method, api_url, body, headers)
132
+ if error:
133
+ return (None, None, error)
134
+
135
+ response, error = self._request_executor.execute(request)
136
+ if error:
137
+ return (None, response, error)
138
+
139
+ try:
140
+ result = ApplicationProfile(self.form_response_body(response.get_body()))
141
+ except Exception as error:
142
+ return (None, response, error)
143
+ return (result, response, None)
144
+
145
+ @zcc_param_mapper
146
+ def update_application_profile(self, profile_id: str, **kwargs) -> APIResult[dict]:
147
+ """
148
+ Update the properties of the application profile using profile ID.
149
+
150
+ Only the following allowlisted properties can be updated. For array
151
+ or comma-separated string values, include existing values along with
152
+ the new values.
153
+
154
+ Args:
155
+ profile_id (str): The unique identifier of the application profile.
156
+
157
+ Keyword Args:
158
+ packet_tunnel_exclude_list (str): Hosts/IPs excluded from the packet tunnel.
159
+ packet_tunnel_exclude_list_for_ipv6 (str): IPv6 hosts/IPs excluded.
160
+ packet_tunnel_include_list (str): Hosts/IPs included in the packet tunnel.
161
+ packet_tunnel_include_list_for_ipv6 (str): IPv6 hosts/IPs included.
162
+ vpn_gateways (str): VPN gateways list.
163
+ source_port_based_bypasses (str): Source-port based bypass list.
164
+ disable_parallel_ipv4_and_ipv6 (int): Disable parallel IPv4/IPv6.
165
+ dns_priority_ordering_for_trusted_dns_criteria (int): DNS priority order
166
+ for trusted DNS criteria.
167
+ use_default_adapter_for_dns (str): Use default adapter for DNS.
168
+ update_dns_search_order (int): Update DNS search order.
169
+ disable_dns_route_exclusion (int): Disable DNS route exclusion.
170
+ enforce_split_dns (int): Enforce split DNS.
171
+ bypass_dns_traffic_using_udp_proxy (int): Bypass DNS traffic via UDP proxy.
172
+ truncate_large_udpdns_response (int): Truncate large UDP DNS responses.
173
+ prioritize_dns_exclusions (int): Prioritize DNS exclusions.
174
+ packet_tunnel_dns_exclude_list (str): DNS hosts excluded from packet tunnel.
175
+ packet_tunnel_dns_include_list (str): DNS hosts included in packet tunnel.
176
+ dns_priority_ordering (int): DNS priority ordering.
177
+ custom_dns (str): Custom DNS configuration.
178
+ app_service_ids (list[str]): App service IDs.
179
+ bypass_app_ids (list[str]): Bypass app IDs.
180
+ bypass_custom_app_ids (list[str]): Bypass custom app IDs.
181
+ groups (list): Group objects associated with the profile.
182
+ group_all (int): Apply policy to all groups.
183
+ user_ids (list[str]): User IDs associated with the profile.
184
+ logout_password (str): Logout password.
185
+ uninstall_password (str): Uninstall password.
186
+ disable_password (str): Disable password.
187
+ exit_password (str): Exit password.
188
+ zdx_disable_password (str): ZDX disable password.
189
+ zd_disable_password (str): ZD disable password.
190
+ zpa_disable_password (str): ZPA disable password.
191
+ zdp_disable_password (str): ZDP disable password.
192
+ zcc_revert_password (str): ZCC revert password.
193
+ zcc_fail_close_settings_exit_uninstall_password (str): ZCC fail-close
194
+ exit/uninstall password.
195
+ device_type (str): Device type.
196
+
197
+ Returns:
198
+ tuple: A tuple containing the Update Application Profile, response, and error.
199
+
200
+ Examples:
201
+ Update an existing Application Profile:
202
+
203
+ >>> updated_profile, response, error = (
204
+ ... client.zcc.application_profiles.update_application_profile(
205
+ ... profile_id='1234567890',
206
+ ... enforce_split_dns=1,
207
+ ... custom_dns='8.8.8.8,1.1.1.1',
208
+ ... bypass_app_ids=['111', '222'],
209
+ ... group_all=1,
210
+ ... )
211
+ ... )
212
+ >>> if error:
213
+ ... print(f"Error updating application profile: {error}")
214
+ ... return
215
+ ... print(f"Application profile updated successfully: {updated_profile.as_dict()}")
216
+ """
217
+ http_method = "patch".upper()
218
+ api_url = format_url(f"""
219
+ {self._zcc_base_endpoint}
220
+ /application-profiles/{profile_id}
221
+ """)
222
+
223
+ body = {}
224
+ body.update(kwargs)
225
+
226
+ # The PATCH endpoint requires the body to identify the policy being
227
+ # updated. Always inject policyId derived from the URL parameter so
228
+ # callers cannot omit it by accident.
229
+ try:
230
+ body["policyId"] = int(profile_id)
231
+ except (TypeError, ValueError):
232
+ body["policyId"] = profile_id
233
+
234
+ request, error = self._request_executor.create_request(http_method, api_url, body, {}, {})
235
+ if error:
236
+ return (None, None, error)
237
+
238
+ response, error = self._request_executor.execute(request)
239
+ if error:
240
+ return (None, response, error)
241
+
242
+ try:
243
+ result = ApplicationProfile(self.form_response_body(response.get_body()))
244
+ except Exception as error:
245
+ return (None, response, error)
246
+ return (result, response, None)