catocli 2.0.0__tar.gz → 2.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of catocli might be problematic. Click here for more details.

Files changed (528) hide show
  1. {catocli-2.0.0/catocli.egg-info → catocli-2.0.2}/PKG-INFO +1 -1
  2. {catocli-2.0.0 → catocli-2.0.2}/catocli/Utils/clidriver.py +37 -5
  3. {catocli-2.0.0 → catocli-2.0.2}/catocli/__init__.py +1 -1
  4. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/custom/__init__.py +3 -2
  5. catocli-2.0.2/catocli/parsers/custom/customLib.py +323 -0
  6. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/custom/export_rules/__init__.py +5 -1
  7. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/custom/export_rules/export_rules.py +31 -182
  8. catocli-2.0.2/catocli/parsers/custom/export_sites/__init__.py +20 -0
  9. catocli-2.0.2/catocli/parsers/custom/export_sites/export_sites.py +233 -0
  10. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/custom/import_rules_to_tf/__init__.py +2 -2
  11. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/custom/import_rules_to_tf/import_rules_to_tf.py +21 -11
  12. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_accountManagement/__init__.py +15 -18
  13. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_admin/__init__.py +15 -18
  14. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_container/__init__.py +5 -6
  15. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_hardware/__init__.py +5 -6
  16. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy/__init__.py +582 -504
  17. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer/README.md +7 -0
  18. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_addRule/README.md +18 -0
  19. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_addSection/README.md +18 -0
  20. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_createPolicyRevision/README.md +18 -0
  21. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_discardPolicyRevision/README.md +18 -0
  22. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_moveRule/README.md +18 -0
  23. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_moveSection/README.md +18 -0
  24. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_publishPolicyRevision/README.md +18 -0
  25. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_removeRule/README.md +18 -0
  26. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_removeSection/README.md +18 -0
  27. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_updatePolicy/README.md +18 -0
  28. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_updateRule/README.md +18 -0
  29. catocli-2.0.2/catocli/parsers/mutation_policy_terminalServer_updateSection/README.md +18 -0
  30. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sandbox/__init__.py +10 -12
  31. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site/__init__.py +164 -150
  32. catocli-2.0.2/catocli/parsers/mutation_site_addSocketAddOnCard/README.md +17 -0
  33. catocli-2.0.2/catocli/parsers/mutation_site_removeSocketAddOnCard/README.md +17 -0
  34. catocli-2.0.2/catocli/parsers/mutation_site_startSiteUpgrade/README.md +17 -0
  35. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites/__init__.py +164 -150
  36. catocli-2.0.2/catocli/parsers/mutation_sites_addSocketAddOnCard/README.md +17 -0
  37. catocli-2.0.2/catocli/parsers/mutation_sites_removeSocketAddOnCard/README.md +17 -0
  38. catocli-2.0.2/catocli/parsers/mutation_sites_startSiteUpgrade/README.md +17 -0
  39. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_xdr/__init__.py +15 -18
  40. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountBySubdomain/__init__.py +5 -6
  41. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountManagement/__init__.py +5 -6
  42. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountMetrics/__init__.py +5 -6
  43. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountRoles/__init__.py +5 -6
  44. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountSnapshot/__init__.py +5 -6
  45. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_admin/__init__.py +5 -6
  46. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_admins/__init__.py +5 -6
  47. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_appStats/__init__.py +5 -6
  48. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_appStatsTimeSeries/__init__.py +5 -6
  49. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_auditFeed/__init__.py +5 -6
  50. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_catalogs/__init__.py +5 -6
  51. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_container/__init__.py +5 -6
  52. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_devices/README.md +2 -1
  53. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_devices/__init__.py +5 -6
  54. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_entityLookup/__init__.py +5 -6
  55. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_events/__init__.py +5 -6
  56. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_eventsFeed/README.md +1 -1
  57. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_eventsFeed/__init__.py +5 -6
  58. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_eventsTimeSeries/__init__.py +5 -6
  59. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_hardware/__init__.py +5 -6
  60. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_hardwareManagement/__init__.py +5 -6
  61. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_licensing/__init__.py +5 -6
  62. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_policy/README.md +2 -1
  63. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_policy/__init__.py +5 -6
  64. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_sandbox/__init__.py +5 -6
  65. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_site/README.md +2 -1
  66. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_site/__init__.py +5 -6
  67. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_siteLocation/__init__.py +3 -7
  68. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_subDomains/__init__.py +5 -6
  69. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_xdr/__init__.py +10 -12
  70. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/raw/__init__.py +2 -0
  71. {catocli-2.0.0 → catocli-2.0.2/catocli.egg-info}/PKG-INFO +1 -1
  72. {catocli-2.0.0 → catocli-2.0.2}/catocli.egg-info/SOURCES.txt +39 -0
  73. {catocli-2.0.0 → catocli-2.0.2}/graphql_client/api/call_api.py +12 -6
  74. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.updateRule.json +6 -6
  75. catocli-2.0.2/models/mutation.policy.terminalServer.addRule.json +2403 -0
  76. catocli-2.0.2/models/mutation.policy.terminalServer.addSection.json +1358 -0
  77. catocli-2.0.2/models/mutation.policy.terminalServer.createPolicyRevision.json +1873 -0
  78. catocli-2.0.2/models/mutation.policy.terminalServer.discardPolicyRevision.json +1807 -0
  79. catocli-2.0.2/models/mutation.policy.terminalServer.moveRule.json +1605 -0
  80. catocli-2.0.2/models/mutation.policy.terminalServer.moveSection.json +1259 -0
  81. catocli-2.0.2/models/mutation.policy.terminalServer.publishPolicyRevision.json +1864 -0
  82. catocli-2.0.2/models/mutation.policy.terminalServer.removeRule.json +1253 -0
  83. catocli-2.0.2/models/mutation.policy.terminalServer.removeSection.json +958 -0
  84. catocli-2.0.2/models/mutation.policy.terminalServer.updatePolicy.json +1883 -0
  85. catocli-2.0.2/models/mutation.policy.terminalServer.updateRule.json +2096 -0
  86. catocli-2.0.2/models/mutation.policy.terminalServer.updateSection.json +1111 -0
  87. catocli-2.0.2/models/mutation.site.addSocketAddOnCard.json +1050 -0
  88. catocli-2.0.2/models/mutation.site.removeSocketAddOnCard.json +786 -0
  89. catocli-2.0.2/models/mutation.site.startSiteUpgrade.json +802 -0
  90. catocli-2.0.2/models/mutation.sites.addSocketAddOnCard.json +1050 -0
  91. catocli-2.0.2/models/mutation.sites.removeSocketAddOnCard.json +786 -0
  92. catocli-2.0.2/models/mutation.sites.startSiteUpgrade.json +802 -0
  93. {catocli-2.0.0 → catocli-2.0.2}/models/query.devices.json +311 -2
  94. {catocli-2.0.0 → catocli-2.0.2}/models/query.events.json +48 -0
  95. {catocli-2.0.0 → catocli-2.0.2}/models/query.eventsFeed.json +12 -0
  96. {catocli-2.0.0 → catocli-2.0.2}/models/query.eventsTimeSeries.json +36 -0
  97. catocli-2.0.2/models/query.licensing.json +22657 -0
  98. {catocli-2.0.0 → catocli-2.0.2}/models/query.policy.json +1898 -305
  99. {catocli-2.0.0 → catocli-2.0.2}/models/query.site.json +225 -0
  100. {catocli-2.0.0 → catocli-2.0.2}/models/query.siteLocation.json +97190 -295396
  101. {catocli-2.0.0 → catocli-2.0.2}/schema/catolib.py +52 -24
  102. catocli-2.0.0/catocli/parsers/custom/customLib.py +0 -72
  103. catocli-2.0.0/models/query.licensing.json +0 -10935
  104. {catocli-2.0.0 → catocli-2.0.2}/LICENSE +0 -0
  105. {catocli-2.0.0 → catocli-2.0.2}/MANIFEST.in +0 -0
  106. {catocli-2.0.0 → catocli-2.0.2}/README.md +0 -0
  107. {catocli-2.0.0 → catocli-2.0.2}/catocli/Utils/profile_manager.py +0 -0
  108. {catocli-2.0.0 → catocli-2.0.2}/catocli/Utils/version_checker.py +0 -0
  109. {catocli-2.0.0 → catocli-2.0.2}/catocli/__main__.py +0 -0
  110. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/configure/__init__.py +0 -0
  111. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/configure/configure.py +0 -0
  112. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/custom/README.md +0 -0
  113. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation/README.md +0 -0
  114. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_accountManagement/README.md +0 -0
  115. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_accountManagement_addAccount/README.md +0 -0
  116. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_accountManagement_removeAccount/README.md +0 -0
  117. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_accountManagement_updateAccount/README.md +0 -0
  118. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_admin/README.md +0 -0
  119. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_admin_addAdmin/README.md +0 -0
  120. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_admin_removeAdmin/README.md +0 -0
  121. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_admin_updateAdmin/README.md +0 -0
  122. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_container/README.md +0 -0
  123. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_container_delete/README.md +0 -0
  124. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_hardware/README.md +0 -0
  125. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_hardware_updateHardwareShipping/README.md +0 -0
  126. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy/README.md +0 -0
  127. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction/README.md +0 -0
  128. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_addRule/README.md +0 -0
  129. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_addSection/README.md +0 -0
  130. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_createPolicyRevision/README.md +0 -0
  131. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_discardPolicyRevision/README.md +0 -0
  132. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_moveRule/README.md +0 -0
  133. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_moveSection/README.md +0 -0
  134. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_publishPolicyRevision/README.md +0 -0
  135. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_removeRule/README.md +0 -0
  136. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_removeSection/README.md +0 -0
  137. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_updatePolicy/README.md +0 -0
  138. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_updateRule/README.md +0 -0
  139. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_appTenantRestriction_updateSection/README.md +0 -0
  140. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation/README.md +0 -0
  141. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_addRule/README.md +0 -0
  142. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_addSection/README.md +0 -0
  143. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_createPolicyRevision/README.md +0 -0
  144. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_discardPolicyRevision/README.md +0 -0
  145. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_moveRule/README.md +0 -0
  146. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_moveSection/README.md +0 -0
  147. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_publishPolicyRevision/README.md +0 -0
  148. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_removeRule/README.md +0 -0
  149. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_removeSection/README.md +0 -0
  150. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_updatePolicy/README.md +0 -0
  151. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_updateRule/README.md +0 -0
  152. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_dynamicIpAllocation_updateSection/README.md +0 -0
  153. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall/README.md +0 -0
  154. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_addRule/README.md +0 -0
  155. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_addSection/README.md +0 -0
  156. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_createPolicyRevision/README.md +0 -0
  157. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_discardPolicyRevision/README.md +0 -0
  158. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_moveRule/README.md +0 -0
  159. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_moveSection/README.md +0 -0
  160. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_publishPolicyRevision/README.md +0 -0
  161. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_removeRule/README.md +0 -0
  162. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_removeSection/README.md +0 -0
  163. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_updatePolicy/README.md +0 -0
  164. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_updateRule/README.md +0 -0
  165. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_internetFirewall_updateSection/README.md +0 -0
  166. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd/README.md +0 -0
  167. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_addRule/README.md +0 -0
  168. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_addSection/README.md +0 -0
  169. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_createPolicyRevision/README.md +0 -0
  170. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_discardPolicyRevision/README.md +0 -0
  171. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_moveRule/README.md +0 -0
  172. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_moveSection/README.md +0 -0
  173. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_publishPolicyRevision/README.md +0 -0
  174. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_removeRule/README.md +0 -0
  175. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_removeSection/README.md +0 -0
  176. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_updatePolicy/README.md +0 -0
  177. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_updateRule/README.md +0 -0
  178. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_remotePortFwd_updateSection/README.md +0 -0
  179. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan/README.md +0 -0
  180. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_addRule/README.md +0 -0
  181. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_addSection/README.md +0 -0
  182. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_createPolicyRevision/README.md +0 -0
  183. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_discardPolicyRevision/README.md +0 -0
  184. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_moveRule/README.md +0 -0
  185. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_moveSection/README.md +0 -0
  186. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_publishPolicyRevision/README.md +0 -0
  187. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_removeRule/README.md +0 -0
  188. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_removeSection/README.md +0 -0
  189. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_updatePolicy/README.md +0 -0
  190. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_updateRule/README.md +0 -0
  191. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_socketLan_updateSection/README.md +0 -0
  192. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall/README.md +0 -0
  193. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_addRule/README.md +0 -0
  194. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_addSection/README.md +0 -0
  195. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_createPolicyRevision/README.md +0 -0
  196. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_discardPolicyRevision/README.md +0 -0
  197. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_moveRule/README.md +0 -0
  198. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_moveSection/README.md +0 -0
  199. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_publishPolicyRevision/README.md +0 -0
  200. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_removeRule/README.md +0 -0
  201. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_removeSection/README.md +0 -0
  202. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_updatePolicy/README.md +0 -0
  203. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_updateRule/README.md +0 -0
  204. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanFirewall_updateSection/README.md +0 -0
  205. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork/README.md +0 -0
  206. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_addRule/README.md +0 -0
  207. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_addSection/README.md +0 -0
  208. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_createPolicyRevision/README.md +0 -0
  209. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_discardPolicyRevision/README.md +0 -0
  210. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_moveRule/README.md +0 -0
  211. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_moveSection/README.md +0 -0
  212. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_publishPolicyRevision/README.md +0 -0
  213. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_removeRule/README.md +0 -0
  214. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_removeSection/README.md +0 -0
  215. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_updatePolicy/README.md +0 -0
  216. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_updateRule/README.md +0 -0
  217. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_policy_wanNetwork_updateSection/README.md +0 -0
  218. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sandbox/README.md +0 -0
  219. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sandbox_deleteReport/README.md +0 -0
  220. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sandbox_uploadFile/README.md +0 -0
  221. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site/README.md +0 -0
  222. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addBgpPeer/README.md +0 -0
  223. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addCloudInterconnectPhysicalConnection/README.md +0 -0
  224. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addCloudInterconnectSite/README.md +0 -0
  225. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addIpsecIkeV2Site/README.md +0 -0
  226. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addIpsecIkeV2SiteTunnels/README.md +0 -0
  227. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addNetworkRange/README.md +0 -0
  228. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addSecondaryAwsVSocket/README.md +0 -0
  229. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addSecondaryAzureVSocket/README.md +0 -0
  230. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addSocketSite/README.md +0 -0
  231. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_addStaticHost/README.md +0 -0
  232. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_removeBgpPeer/README.md +0 -0
  233. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_removeCloudInterconnectPhysicalConnection/README.md +0 -0
  234. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_removeIpsecIkeV2SiteTunnels/README.md +0 -0
  235. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_removeNetworkRange/README.md +0 -0
  236. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_removeSite/README.md +0 -0
  237. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_removeStaticHost/README.md +0 -0
  238. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateBgpPeer/README.md +0 -0
  239. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateCloudInterconnectPhysicalConnection/README.md +0 -0
  240. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateHa/README.md +0 -0
  241. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateIpsecIkeV2SiteGeneralDetails/README.md +0 -0
  242. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateIpsecIkeV2SiteTunnels/README.md +0 -0
  243. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateNetworkRange/README.md +0 -0
  244. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateSiteGeneralDetails/README.md +0 -0
  245. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateSocketInterface/README.md +0 -0
  246. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_site_updateStaticHost/README.md +0 -0
  247. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites/README.md +0 -0
  248. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addBgpPeer/README.md +0 -0
  249. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addCloudInterconnectPhysicalConnection/README.md +0 -0
  250. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addCloudInterconnectSite/README.md +0 -0
  251. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addIpsecIkeV2Site/README.md +0 -0
  252. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addIpsecIkeV2SiteTunnels/README.md +0 -0
  253. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addNetworkRange/README.md +0 -0
  254. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addSecondaryAwsVSocket/README.md +0 -0
  255. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addSecondaryAzureVSocket/README.md +0 -0
  256. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addSocketSite/README.md +0 -0
  257. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_addStaticHost/README.md +0 -0
  258. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_removeBgpPeer/README.md +0 -0
  259. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_removeCloudInterconnectPhysicalConnection/README.md +0 -0
  260. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_removeIpsecIkeV2SiteTunnels/README.md +0 -0
  261. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_removeNetworkRange/README.md +0 -0
  262. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_removeSite/README.md +0 -0
  263. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_removeStaticHost/README.md +0 -0
  264. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateBgpPeer/README.md +0 -0
  265. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateCloudInterconnectPhysicalConnection/README.md +0 -0
  266. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateHa/README.md +0 -0
  267. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateIpsecIkeV2SiteGeneralDetails/README.md +0 -0
  268. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateIpsecIkeV2SiteTunnels/README.md +0 -0
  269. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateNetworkRange/README.md +0 -0
  270. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateSiteGeneralDetails/README.md +0 -0
  271. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateSocketInterface/README.md +0 -0
  272. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_sites_updateStaticHost/README.md +0 -0
  273. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_xdr/README.md +0 -0
  274. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_xdr_addStoryComment/README.md +0 -0
  275. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_xdr_analystFeedback/README.md +0 -0
  276. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/mutation_xdr_deleteStoryComment/README.md +0 -0
  277. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/parserApiClient.py +0 -0
  278. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query/README.md +0 -0
  279. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountBySubdomain/README.md +0 -0
  280. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountManagement/README.md +0 -0
  281. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountMetrics/README.md +0 -0
  282. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountRoles/README.md +0 -0
  283. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_accountSnapshot/README.md +0 -0
  284. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_admin/README.md +0 -0
  285. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_admins/README.md +0 -0
  286. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_appStats/README.md +0 -0
  287. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_appStatsTimeSeries/README.md +0 -0
  288. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_auditFeed/README.md +0 -0
  289. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_catalogs/README.md +0 -0
  290. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_container/README.md +0 -0
  291. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_entityLookup/README.md +0 -0
  292. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_events/README.md +0 -0
  293. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_eventsTimeSeries/README.md +0 -0
  294. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_hardware/README.md +0 -0
  295. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_hardwareManagement/README.md +0 -0
  296. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_licensing/README.md +0 -0
  297. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_sandbox/README.md +0 -0
  298. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_siteLocation/README.md +0 -0
  299. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_subDomains/README.md +0 -0
  300. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_xdr/README.md +0 -0
  301. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_xdr_stories/README.md +0 -0
  302. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/query_xdr_story/README.md +0 -0
  303. {catocli-2.0.0 → catocli-2.0.2}/catocli/parsers/raw/README.md +0 -0
  304. {catocli-2.0.0 → catocli-2.0.2}/catocli.egg-info/dependency_links.txt +0 -0
  305. {catocli-2.0.0 → catocli-2.0.2}/catocli.egg-info/entry_points.txt +0 -0
  306. {catocli-2.0.0 → catocli-2.0.2}/catocli.egg-info/requires.txt +0 -0
  307. {catocli-2.0.0 → catocli-2.0.2}/catocli.egg-info/top_level.txt +0 -0
  308. {catocli-2.0.0 → catocli-2.0.2}/graphql_client/__init__.py +0 -0
  309. {catocli-2.0.0 → catocli-2.0.2}/graphql_client/api/__init__.py +0 -0
  310. {catocli-2.0.0 → catocli-2.0.2}/graphql_client/api_client.py +0 -0
  311. {catocli-2.0.0 → catocli-2.0.2}/graphql_client/api_client_types.py +0 -0
  312. {catocli-2.0.0 → catocli-2.0.2}/graphql_client/configuration.py +0 -0
  313. {catocli-2.0.0 → catocli-2.0.2}/graphql_client/models/__init__.py +0 -0
  314. {catocli-2.0.0 → catocli-2.0.2}/graphql_client/models/no_schema.py +0 -0
  315. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.accountManagement.addAccount.json +0 -0
  316. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.accountManagement.removeAccount.json +0 -0
  317. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.accountManagement.updateAccount.json +0 -0
  318. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.admin.addAdmin.json +0 -0
  319. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.admin.removeAdmin.json +0 -0
  320. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.admin.updateAdmin.json +0 -0
  321. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.container.delete.json +0 -0
  322. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.hardware.updateHardwareShipping.json +0 -0
  323. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.addRule.json +0 -0
  324. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.addSection.json +0 -0
  325. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.createPolicyRevision.json +0 -0
  326. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.discardPolicyRevision.json +0 -0
  327. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.moveRule.json +0 -0
  328. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.moveSection.json +0 -0
  329. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.publishPolicyRevision.json +0 -0
  330. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.removeRule.json +0 -0
  331. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.removeSection.json +0 -0
  332. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.updatePolicy.json +0 -0
  333. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.updateRule.json +0 -0
  334. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.appTenantRestriction.updateSection.json +0 -0
  335. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.addRule.json +0 -0
  336. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.addSection.json +0 -0
  337. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.createPolicyRevision.json +0 -0
  338. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.discardPolicyRevision.json +0 -0
  339. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.moveRule.json +0 -0
  340. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.moveSection.json +0 -0
  341. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.publishPolicyRevision.json +0 -0
  342. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.removeRule.json +0 -0
  343. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.removeSection.json +0 -0
  344. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.updatePolicy.json +0 -0
  345. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.updateRule.json +0 -0
  346. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.dynamicIpAllocation.updateSection.json +0 -0
  347. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.addRule.json +0 -0
  348. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.addSection.json +0 -0
  349. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.createPolicyRevision.json +0 -0
  350. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.discardPolicyRevision.json +0 -0
  351. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.moveRule.json +0 -0
  352. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.moveSection.json +0 -0
  353. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.publishPolicyRevision.json +0 -0
  354. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.removeRule.json +0 -0
  355. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.removeSection.json +0 -0
  356. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.updatePolicy.json +0 -0
  357. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.updateRule.json +0 -0
  358. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.internetFirewall.updateSection.json +0 -0
  359. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.addRule.json +0 -0
  360. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.addSection.json +0 -0
  361. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.createPolicyRevision.json +0 -0
  362. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.discardPolicyRevision.json +0 -0
  363. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.moveRule.json +0 -0
  364. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.moveSection.json +0 -0
  365. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.publishPolicyRevision.json +0 -0
  366. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.removeRule.json +0 -0
  367. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.removeSection.json +0 -0
  368. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.updatePolicy.json +0 -0
  369. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.remotePortFwd.updateSection.json +0 -0
  370. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.addRule.json +0 -0
  371. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.addSection.json +0 -0
  372. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.createPolicyRevision.json +0 -0
  373. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.discardPolicyRevision.json +0 -0
  374. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.moveRule.json +0 -0
  375. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.moveSection.json +0 -0
  376. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.publishPolicyRevision.json +0 -0
  377. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.removeRule.json +0 -0
  378. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.removeSection.json +0 -0
  379. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.updatePolicy.json +0 -0
  380. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.updateRule.json +0 -0
  381. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.socketLan.updateSection.json +0 -0
  382. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.addRule.json +0 -0
  383. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.addSection.json +0 -0
  384. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.createPolicyRevision.json +0 -0
  385. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.discardPolicyRevision.json +0 -0
  386. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.moveRule.json +0 -0
  387. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.moveSection.json +0 -0
  388. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.publishPolicyRevision.json +0 -0
  389. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.removeRule.json +0 -0
  390. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.removeSection.json +0 -0
  391. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.updatePolicy.json +0 -0
  392. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.updateRule.json +0 -0
  393. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanFirewall.updateSection.json +0 -0
  394. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.addRule.json +0 -0
  395. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.addSection.json +0 -0
  396. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.createPolicyRevision.json +0 -0
  397. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.discardPolicyRevision.json +0 -0
  398. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.moveRule.json +0 -0
  399. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.moveSection.json +0 -0
  400. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.publishPolicyRevision.json +0 -0
  401. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.removeRule.json +0 -0
  402. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.removeSection.json +0 -0
  403. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.updatePolicy.json +0 -0
  404. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.updateRule.json +0 -0
  405. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.policy.wanNetwork.updateSection.json +0 -0
  406. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sandbox.deleteReport.json +0 -0
  407. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sandbox.uploadFile.json +0 -0
  408. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addBgpPeer.json +0 -0
  409. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addCloudInterconnectPhysicalConnection.json +0 -0
  410. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addCloudInterconnectSite.json +0 -0
  411. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addIpsecIkeV2Site.json +0 -0
  412. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addIpsecIkeV2SiteTunnels.json +0 -0
  413. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addNetworkRange.json +0 -0
  414. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addSecondaryAwsVSocket.json +0 -0
  415. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addSecondaryAzureVSocket.json +0 -0
  416. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addSocketSite.json +0 -0
  417. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.addStaticHost.json +0 -0
  418. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.removeBgpPeer.json +0 -0
  419. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.removeCloudInterconnectPhysicalConnection.json +0 -0
  420. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.removeIpsecIkeV2SiteTunnels.json +0 -0
  421. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.removeNetworkRange.json +0 -0
  422. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.removeSite.json +0 -0
  423. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.removeStaticHost.json +0 -0
  424. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateBgpPeer.json +0 -0
  425. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateCloudInterconnectPhysicalConnection.json +0 -0
  426. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateHa.json +0 -0
  427. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateIpsecIkeV2SiteGeneralDetails.json +0 -0
  428. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateIpsecIkeV2SiteTunnels.json +0 -0
  429. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateNetworkRange.json +0 -0
  430. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateSiteGeneralDetails.json +0 -0
  431. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateSocketInterface.json +0 -0
  432. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.site.updateStaticHost.json +0 -0
  433. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addBgpPeer.json +0 -0
  434. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addCloudInterconnectPhysicalConnection.json +0 -0
  435. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addCloudInterconnectSite.json +0 -0
  436. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addIpsecIkeV2Site.json +0 -0
  437. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addIpsecIkeV2SiteTunnels.json +0 -0
  438. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addNetworkRange.json +0 -0
  439. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addSecondaryAwsVSocket.json +0 -0
  440. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addSecondaryAzureVSocket.json +0 -0
  441. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addSocketSite.json +0 -0
  442. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.addStaticHost.json +0 -0
  443. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.removeBgpPeer.json +0 -0
  444. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.removeCloudInterconnectPhysicalConnection.json +0 -0
  445. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.removeIpsecIkeV2SiteTunnels.json +0 -0
  446. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.removeNetworkRange.json +0 -0
  447. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.removeSite.json +0 -0
  448. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.removeStaticHost.json +0 -0
  449. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateBgpPeer.json +0 -0
  450. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateCloudInterconnectPhysicalConnection.json +0 -0
  451. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateHa.json +0 -0
  452. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateIpsecIkeV2SiteGeneralDetails.json +0 -0
  453. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateIpsecIkeV2SiteTunnels.json +0 -0
  454. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateNetworkRange.json +0 -0
  455. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateSiteGeneralDetails.json +0 -0
  456. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateSocketInterface.json +0 -0
  457. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.sites.updateStaticHost.json +0 -0
  458. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.xdr.addStoryComment.json +0 -0
  459. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.xdr.analystFeedback.json +0 -0
  460. {catocli-2.0.0 → catocli-2.0.2}/models/mutation.xdr.deleteStoryComment.json +0 -0
  461. {catocli-2.0.0 → catocli-2.0.2}/models/query.accountBySubdomain.json +0 -0
  462. {catocli-2.0.0 → catocli-2.0.2}/models/query.accountManagement.json +0 -0
  463. {catocli-2.0.0 → catocli-2.0.2}/models/query.accountMetrics.json +0 -0
  464. {catocli-2.0.0 → catocli-2.0.2}/models/query.accountRoles.json +0 -0
  465. {catocli-2.0.0 → catocli-2.0.2}/models/query.accountSnapshot.json +0 -0
  466. {catocli-2.0.0 → catocli-2.0.2}/models/query.admin.json +0 -0
  467. {catocli-2.0.0 → catocli-2.0.2}/models/query.admins.json +0 -0
  468. {catocli-2.0.0 → catocli-2.0.2}/models/query.appStats.json +0 -0
  469. {catocli-2.0.0 → catocli-2.0.2}/models/query.appStatsTimeSeries.json +0 -0
  470. {catocli-2.0.0 → catocli-2.0.2}/models/query.auditFeed.json +0 -0
  471. {catocli-2.0.0 → catocli-2.0.2}/models/query.catalogs.json +0 -0
  472. {catocli-2.0.0 → catocli-2.0.2}/models/query.container.json +0 -0
  473. {catocli-2.0.0 → catocli-2.0.2}/models/query.entityLookup.json +0 -0
  474. {catocli-2.0.0 → catocli-2.0.2}/models/query.hardware.json +0 -0
  475. {catocli-2.0.0 → catocli-2.0.2}/models/query.hardwareManagement.json +0 -0
  476. {catocli-2.0.0 → catocli-2.0.2}/models/query.sandbox.json +0 -0
  477. {catocli-2.0.0 → catocli-2.0.2}/models/query.subDomains.json +0 -0
  478. {catocli-2.0.0 → catocli-2.0.2}/models/query.xdr.stories.json +0 -0
  479. {catocli-2.0.0 → catocli-2.0.2}/models/query.xdr.story.json +0 -0
  480. {catocli-2.0.0 → catocli-2.0.2}/schema/importSchema.py +0 -0
  481. {catocli-2.0.0 → catocli-2.0.2}/scripts/catolib.py +0 -0
  482. {catocli-2.0.0 → catocli-2.0.2}/scripts/export_if_rules_to_json.py +0 -0
  483. {catocli-2.0.0 → catocli-2.0.2}/scripts/export_wf_rules_to_json.py +0 -0
  484. {catocli-2.0.0 → catocli-2.0.2}/scripts/import_wf_rules_to_tfstate.py +0 -0
  485. {catocli-2.0.0 → catocli-2.0.2}/setup.cfg +0 -0
  486. {catocli-2.0.0 → catocli-2.0.2}/setup.py +0 -0
  487. {catocli-2.0.0 → catocli-2.0.2}/vendor/certifi/__init__.py +0 -0
  488. {catocli-2.0.0 → catocli-2.0.2}/vendor/certifi/__main__.py +0 -0
  489. {catocli-2.0.0 → catocli-2.0.2}/vendor/certifi/core.py +0 -0
  490. {catocli-2.0.0 → catocli-2.0.2}/vendor/certifi/py.typed +0 -0
  491. {catocli-2.0.0 → catocli-2.0.2}/vendor/six.py +0 -0
  492. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/__init__.py +0 -0
  493. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/_base_connection.py +0 -0
  494. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/_collections.py +0 -0
  495. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/_request_methods.py +0 -0
  496. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/_version.py +0 -0
  497. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/connection.py +0 -0
  498. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/connectionpool.py +0 -0
  499. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/contrib/__init__.py +0 -0
  500. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/contrib/emscripten/__init__.py +0 -0
  501. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/contrib/emscripten/connection.py +0 -0
  502. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/contrib/emscripten/fetch.py +0 -0
  503. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/contrib/emscripten/request.py +0 -0
  504. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/contrib/emscripten/response.py +0 -0
  505. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/contrib/pyopenssl.py +0 -0
  506. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/contrib/socks.py +0 -0
  507. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/exceptions.py +0 -0
  508. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/fields.py +0 -0
  509. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/filepost.py +0 -0
  510. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/http2/__init__.py +0 -0
  511. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/http2/connection.py +0 -0
  512. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/http2/probe.py +0 -0
  513. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/poolmanager.py +0 -0
  514. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/py.typed +0 -0
  515. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/response.py +0 -0
  516. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/__init__.py +0 -0
  517. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/connection.py +0 -0
  518. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/proxy.py +0 -0
  519. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/request.py +0 -0
  520. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/response.py +0 -0
  521. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/retry.py +0 -0
  522. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/ssl_.py +0 -0
  523. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/ssl_match_hostname.py +0 -0
  524. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/ssltransport.py +0 -0
  525. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/timeout.py +0 -0
  526. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/url.py +0 -0
  527. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/util.py +0 -0
  528. {catocli-2.0.0 → catocli-2.0.2}/vendor/urllib3/util/wait.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: catocli
3
- Version: 2.0.0
3
+ Version: 2.0.2
4
4
  Summary: Cato Networks cli wrapper for the GraphQL API.
5
5
  Home-page: https://github.com/Cato-Networks/cato-cli
6
6
  Author: Cato Networks
@@ -77,7 +77,7 @@ def show_version_info(args, configuration=None):
77
77
  print("Unable to check for updates (check your internet connection)")
78
78
  return [{"success": True, "current_version": catocli.__version__, "latest_version": latest_version if not args.current_only else None}]
79
79
 
80
- def get_configuration():
80
+ def get_configuration(skip_api_key=False):
81
81
  configuration = Configuration()
82
82
  configuration.verify_ssl = False
83
83
  configuration.debug = CATO_DEBUG
@@ -99,7 +99,9 @@ def get_configuration():
99
99
  print(f"Run 'catocli configure set --profile {profile_name}' to update your credentials.")
100
100
  exit(1)
101
101
 
102
- configuration.api_key["x-api-key"] = credentials['cato_token']
102
+ # Only set API key if not using custom headers file
103
+ if not skip_api_key:
104
+ configuration.api_key["x-api-key"] = credentials['cato_token']
103
105
  configuration.host = credentials['endpoint']
104
106
  configuration.accountID = credentials['account_id']
105
107
 
@@ -119,6 +121,7 @@ https://github.com/catonetworks/cato-api-explorer
119
121
  parser = argparse.ArgumentParser(prog='catocli', usage='%(prog)s <operationType> <operationName> [options]', description=defaultReadmeStr)
120
122
  parser.add_argument('--version', action='version', version=catocli.__version__)
121
123
  parser.add_argument('-H', '--header', action='append', dest='headers', help='Add custom headers in "Key: Value" format. Can be used multiple times.')
124
+ parser.add_argument('--headers-file', dest='headers_file', help='Load headers from a file. Each line should contain a header in "Key: Value" format.')
122
125
  subparsers = parser.add_subparsers()
123
126
 
124
127
  # Version command - enhanced with update checking
@@ -183,6 +186,28 @@ def parse_headers(header_strings):
183
186
  headers[key.strip()] = value.strip()
184
187
  return headers
185
188
 
189
+ def parse_headers_from_file(file_path):
190
+ headers = {}
191
+ try:
192
+ with open(file_path, 'r') as f:
193
+ for line_num, line in enumerate(f, 1):
194
+ line = line.strip()
195
+ if not line or line.startswith('#'):
196
+ # Skip empty lines and comments
197
+ continue
198
+ if ':' not in line:
199
+ print(f"ERROR: Invalid header format in {file_path} at line {line_num}: '{line}'. Use 'Key: Value' format.")
200
+ exit(1)
201
+ key, value = line.split(':', 1)
202
+ headers[key.strip()] = value.strip()
203
+ except FileNotFoundError:
204
+ print(f"ERROR: Headers file '{file_path}' not found.")
205
+ exit(1)
206
+ except IOError as e:
207
+ print(f"ERROR: Could not read headers file '{file_path}': {e}")
208
+ exit(1)
209
+ return headers
210
+
186
211
  def main(args=None):
187
212
  # Check if no arguments provided or help is requested
188
213
  if args is None:
@@ -203,13 +228,20 @@ def main(args=None):
203
228
  if hasattr(args, 'func') and hasattr(args.func, '__module__') and 'configure' in str(args.func.__module__):
204
229
  response = args.func(args, None)
205
230
  else:
231
+ # Check if using headers file to determine if we should skip API key
232
+ using_headers_file = hasattr(args, 'headers_file') and args.headers_file
233
+
206
234
  # Get configuration from profiles
207
- configuration = get_configuration()
235
+ configuration = get_configuration(skip_api_key=using_headers_file)
208
236
 
209
237
  # Parse custom headers if provided
238
+ custom_headers = {}
210
239
  if hasattr(args, 'headers') and args.headers:
211
- custom_headers = parse_headers(args.headers)
212
- configuration.custom_headers.update(custom_headers)
240
+ custom_headers.update(parse_headers(args.headers))
241
+ if hasattr(args, 'headers_file') and args.headers_file:
242
+ custom_headers.update(parse_headers_from_file(args.headers_file))
243
+ if custom_headers:
244
+ configuration.custom_headers.update(custom_headers)
213
245
  # Handle account ID override
214
246
  if args.func.__name__ != "createRawRequest":
215
247
  if hasattr(args, 'accountID') and args.accountID is not None:
@@ -1,2 +1,2 @@
1
- __version__ = "2.0.0"
1
+ __version__ = "2.0.2"
2
2
  __cato_host__ = "https://api.catonetworks.com/api/v1/graphql2"
@@ -1,8 +1,9 @@
1
1
 
2
2
  import catocli.parsers.custom.customLib as customLib
3
- from catocli.parsers.custom.export_rules import export_parse
3
+ from catocli.parsers.custom.export_rules import export_rules_parse
4
4
  from catocli.parsers.custom.import_rules_to_tf import import_parse
5
5
  from catocli.parsers.configure import configure_parse
6
+ from catocli.parsers.custom.export_sites import export_sites_parse
6
7
 
7
8
  def custom_parse(subparsers):
8
9
  entityTypes = ["account","admin","allocatedIP","any","availablePooledUsage","availableSiteUsage","dhcpRelayGroup","groupSubscription","host","lanFirewall","localRouting","location","mailingListSubscription","networkInterface","portProtocol","simpleService","site","siteRange","timezone","vpnUser","webhookSubscription"]
@@ -31,7 +32,7 @@ def custom_parse(subparsers):
31
32
  item_list_parser.set_defaults(func=customLib.entityTypeList,operation_name=entity)
32
33
 
33
34
  # Add additional custom parsers here
34
- export_parse(subparsers)
35
+ export_rules_parse(subparsers)
35
36
  import_parse(subparsers)
36
37
  configure_parse(subparsers)
37
38
 
@@ -0,0 +1,323 @@
1
+ import os
2
+ import json
3
+ from graphql_client.api.call_api import ApiClient, CallApi
4
+ from graphql_client.api_client import ApiException
5
+ import logging
6
+ from ..parserApiClient import validateArgs
7
+
8
+ def entityTypeList(args, configuration):
9
+ params = vars(args)
10
+ operation = {
11
+ "operationArgs": {
12
+ "accountID": {
13
+ "name": "accountID",
14
+ "required": True,
15
+ }
16
+ }
17
+ }
18
+ variablesObj = { "accountID": (params.get("accountID") if params.get("accountID") else params.get("accountId"))}
19
+
20
+ # Create the API client instance
21
+ api_client = ApiClient(configuration)
22
+
23
+ # Show masked API key in verbose mode (without affecting actual API calls)
24
+ if hasattr(args, 'verbose') and args.verbose and 'x-api-key' in api_client.configuration.api_key:
25
+ print(f"API Key (masked): ***MASKED***")
26
+
27
+ # Create the API instance
28
+ instance = CallApi(api_client)
29
+ operationName = params["operation_name"]
30
+ query = '''query entityLookup ( $type:EntityType! $accountID:ID! $search:String ) {
31
+ entityLookup ( accountID:$accountID type:$type search:$search ) {
32
+ '''+params["operation_name"]+'''s: items {
33
+ description
34
+ '''+params["operation_name"]+''': entity {
35
+ id
36
+ name
37
+ type
38
+ }
39
+ }
40
+ }
41
+ }'''
42
+ body = {
43
+ "query": query,
44
+ "operationName": "entityLookup",
45
+ "variables": {
46
+ "accountID": configuration.accountID,
47
+ "type": params["operation_name"],
48
+ "search": (params.get("s") if params.get("s")!=None else "")
49
+ }
50
+ }
51
+
52
+ isOk, invalidVars, message = validateArgs(variablesObj,operation)
53
+ if isOk==True:
54
+ if params["t"]==True:
55
+ if params["p"]==True:
56
+ print(json.dumps(body,indent=2,sort_keys=True).replace("\\n", "\n").replace("\\t", " "))
57
+ else:
58
+ print(json.dumps(body).replace("\\n", " ").replace("\\t", " ").replace(" "," ").replace(" "," "))
59
+ return None
60
+ else:
61
+ try:
62
+ response = instance.call_api(body,params)
63
+ if params["v"]==True:
64
+ print(json.dumps(response[0]))
65
+ elif params["f"]=="json":
66
+ if params["p"]==True:
67
+ print(json.dumps(response[0].get("data").get("entityLookup").get(params["operation_name"]+"s"),indent=2,sort_keys=True).replace("\\n", "\n").replace("\\t", " "))
68
+ else:
69
+ print(json.dumps(response[0].get("data").get("entityLookup").get(params["operation_name"]+"s")))
70
+ else:
71
+ if len(response[0].get("data").get("entityLookup").get(params["operation_name"]+"s"))==0:
72
+ print("No results found")
73
+ else:
74
+ print("id,name,type,description")
75
+ for site in response[0].get("data").get("entityLookup").get(params["operation_name"]+"s"):
76
+ print(site.get(params["operation_name"]).get('id')+","+site.get(params["operation_name"]).get('name')+","+site.get(params["operation_name"]).get('type')+","+site.get('description'))
77
+ except ApiException as e:
78
+ return e
79
+ else:
80
+ print("ERROR: "+message,", ".join(invalidVars))
81
+
82
+
83
+ # def getEntityLookup(args, configuration, account_id, entity_type, indexIdName=None):
84
+ # """
85
+ # Get entity lookup data from the API and return entities indexed by entityID or custom ID from helperFields
86
+
87
+ # Args:
88
+ # args: Command line arguments containing verbose and other options
89
+ # configuration: API configuration object
90
+ # account_id: The account ID to use for the lookup
91
+ # entity_type: The type of entity to lookup (e.g., "site", "vpnUser", "host", etc.)
92
+ # indexIdName: Optional name of the ID attribute in helperFields to use for indexing instead of entity.id
93
+
94
+ # Returns:
95
+ # dict: A dictionary with entity IDs (or custom IDs) as keys and entity information as values
96
+ # Format: {"entityID1": {"id": "entityID1", "name": "entityName", "type": "entityType", "description": "desc", "indexId": "customID"}, ...}
97
+ # """
98
+ # # Define the entity lookup query
99
+ # entity_query = {
100
+ # "query": "query entityLookup ( $accountID:ID! $type:EntityType! $sortInput:[SortInput] $lookupFilterInput:[LookupFilterInput] ) { entityLookup ( accountID:$accountID type:$type sort:$sortInput filters:$lookupFilterInput ) { items { entity { id name type } description helperFields } total } }",
101
+ # "variables": {
102
+ # "accountID": account_id,
103
+ # "type": entity_type
104
+ # },
105
+ # "operationName": "entityLookup"
106
+ # }
107
+
108
+ # # Create API client instance with params
109
+ # # Create the API client instance
110
+ # entity_api_client = ApiClient(configuration)
111
+
112
+ # # Show masked API key in verbose mode (without affecting actual API calls)
113
+ # if hasattr(args, 'verbose') and args.verbose and 'x-api-key' in entity_api_client.configuration.api_key:
114
+ # print(f"Entity Lookup API Key (masked): ***MASKED***")
115
+
116
+ # # Create the API instance
117
+ # entity_query_instance = CallApi(entity_api_client)
118
+ # params = {
119
+ # 'v': hasattr(args, 'verbose') and args.verbose, # verbose mode
120
+ # 'f': 'json', # format
121
+ # 'p': False, # pretty print
122
+ # 't': False # test mode
123
+ # }
124
+
125
+ # try:
126
+ # # Call the entity lookup API
127
+ # entity_response = entity_query_instance.call_api(entity_query, params)
128
+ # entity_data = entity_response[0] if entity_response else {}
129
+
130
+ # # Show raw API response in verbose mode
131
+ # if hasattr(args, 'verbose') and args.verbose:
132
+ # print("\n" + "=" * 80)
133
+ # print(f"{entity_type.upper()} LOOKUP API RESPONSE:")
134
+ # print("=" * 80)
135
+ # print(json.dumps(entity_data, indent=2))
136
+ # print("=" * 80 + "\n")
137
+
138
+ # # Check for GraphQL errors in entity response
139
+ # if 'errors' in entity_data:
140
+ # error_messages = [error.get('message', 'Unknown error') for error in entity_data['errors']]
141
+ # raise Exception(f"{entity_type} lookup API returned errors: {', '.join(error_messages)}")
142
+
143
+ # if not entity_data or 'data' not in entity_data:
144
+ # raise ValueError(f"Failed to retrieve {entity_type} data from API")
145
+
146
+ # # Extract entity data and create indexed structure
147
+ # entities = {}
148
+ # entity_lookup = entity_data.get('data', {}).get('entityLookup', {})
149
+ # entity_items = entity_lookup.get('items', [])
150
+
151
+ # if hasattr(args, 'verbose') and args.verbose:
152
+ # print(f"Processing {len(entity_items)} {entity_type}s from entity lookup")
153
+ # if indexIdName:
154
+ # print(f"Using custom index field: {indexIdName}")
155
+
156
+ # for item in entity_items:
157
+ # entity = item.get('entity', {})
158
+ # entity_id = entity.get('id')
159
+ # helper_fields = item.get('helperFields', [])
160
+
161
+ # # Determine the index key to use
162
+ # index_key = entity_id # Default to entity ID
163
+ # custom_id = None
164
+
165
+ # if indexIdName and helper_fields:
166
+ # # Look for the custom ID in helperFields
167
+ # for field in helper_fields:
168
+ # if field.get('name') == indexIdName:
169
+ # custom_id = field.get('value')
170
+ # if custom_id:
171
+ # index_key = custom_id
172
+ # break
173
+
174
+ # if index_key:
175
+ # entity_data = {
176
+ # 'id': entity_id,
177
+ # 'name': entity.get('name', ''),
178
+ # 'type': entity.get('type', ''),
179
+ # 'description': item.get('description', ''),
180
+ # 'helperFields': helper_fields
181
+ # }
182
+
183
+ # # Add the custom index ID if it was found and used
184
+ # if custom_id and indexIdName:
185
+ # entity_data['indexId'] = custom_id
186
+ # entity_data['indexIdName'] = indexIdName
187
+
188
+ # entities[index_key] = entity_data
189
+
190
+ # if hasattr(args, 'verbose') and args.verbose and custom_id:
191
+ # print(f"Entity {entity_id} indexed by {indexIdName}: {custom_id}")
192
+
193
+ # if hasattr(args, 'verbose') and args.verbose:
194
+ # index_type = f"custom field '{indexIdName}'" if indexIdName else "entity ID"
195
+ # print(f"Successfully indexed {len(entities)} {entity_type}s by {index_type}")
196
+
197
+ # return entities
198
+
199
+ # except ApiException as e:
200
+ # raise Exception(f"{entity_type} lookup API call failed - {e}")
201
+ # except Exception as e:
202
+ # raise Exception(f"Unexpected error during {entity_type} lookup API call - {e}")
203
+
204
+ def makeCall(args, configuration, query):
205
+ # Create API client instance with params
206
+ instance = CallApi(ApiClient(configuration))
207
+ params = {
208
+ 'v': hasattr(args, 'verbose') and args.verbose, # verbose mode
209
+ 'f': 'json', # format
210
+ 'p': False, # pretty print
211
+ 't': False # test mode
212
+ }
213
+
214
+ try:
215
+ # Call the API directly
216
+ # NOTE: The API client (graphql_client/api_client_types.py lines 106-108)
217
+ # automatically prints error responses and exits on GraphQL errors.
218
+ # This means our custom error handling below may not be reached if there are GraphQL errors.
219
+ response = instance.call_api(query, params)
220
+ response = response[0] if response else {}
221
+
222
+ # Show raw API response in verbose mode
223
+ if hasattr(args, 'verbose') and args.verbose:
224
+ print("\n" + "=" * 80)
225
+ print("RAW API RESPONSE:")
226
+ print("=" * 80)
227
+ print(json.dumps(response, indent=2))
228
+ print("=" * 80 + "\n")
229
+
230
+ # Check for GraphQL errors first (may not be reached due to API client behavior)
231
+ if 'errors' in response:
232
+ error_messages = [error.get('message', 'Unknown error') for error in response['errors']]
233
+ raise Exception(f"API returned errors: {', '.join(error_messages)}")
234
+
235
+ if not response or 'data' not in response:
236
+ raise ValueError("Failed to retrieve data from API")
237
+
238
+ return response
239
+
240
+ except ApiException as e:
241
+ raise Exception(f"API call failed - {e}")
242
+ except Exception as e:
243
+ raise Exception(f"Unexpected error during API call - {e}")
244
+
245
+ def writeDataToFile(data, args, account_id=None, default_filename_template="data_{account_id}.json", default_directory="config_data"):
246
+ """
247
+ Write data to a file with flexible output path configuration
248
+
249
+ Args:
250
+ data: The data to write to file (will be JSON serialized)
251
+ args: Command line arguments containing output_file_path and verbose options
252
+ account_id: Optional account ID for default filename generation
253
+ default_filename_template: Template for default filename (use {account_id} placeholder)
254
+ default_directory: Default directory for output files
255
+
256
+ Returns:
257
+ str: The path of the file that was written
258
+
259
+ Raises:
260
+ Exception: If file writing fails
261
+ """
262
+ # Set up output file path
263
+ if hasattr(args, 'output_file_path') and args.output_file_path:
264
+ output_file = args.output_file_path
265
+ destination_dir = os.path.dirname(output_file)
266
+ if hasattr(args, 'verbose') and args.verbose:
267
+ print(f"Using output file path: {output_file}")
268
+ else:
269
+ destination_dir = default_directory
270
+ if account_id:
271
+ filename = default_filename_template.format(account_id=account_id)
272
+ else:
273
+ # If no account_id provided, remove the placeholder
274
+ filename = default_filename_template.replace("_{account_id}", "")
275
+ output_file = os.path.join(destination_dir, filename)
276
+ if hasattr(args, 'verbose') and args.verbose:
277
+ print(f"Using default path: {output_file}")
278
+
279
+ # Create destination directory if it doesn't exist
280
+ if destination_dir and not os.path.exists(destination_dir):
281
+ if hasattr(args, 'verbose') and args.verbose:
282
+ print(f"Creating directory: {destination_dir}")
283
+ os.makedirs(destination_dir)
284
+
285
+ try:
286
+ # Write the data to the file
287
+ with open(output_file, 'w', encoding='utf-8') as f:
288
+ json.dump(data, f, indent=4, ensure_ascii=False)
289
+
290
+ if hasattr(args, 'verbose') and args.verbose:
291
+ print(f"Successfully wrote data to: {output_file}")
292
+
293
+ return output_file
294
+
295
+ except Exception as e:
296
+ raise Exception(f"Failed to write data to file {output_file}: {str(e)}")
297
+
298
+ def getAccountID(args, configuration):
299
+ """
300
+ Get the account ID from command line arguments, configuration, or environment variable.
301
+
302
+ Args:
303
+ args: Command line arguments
304
+ configuration: API configuration object
305
+
306
+ Returns:
307
+ str: The account ID to use for API calls
308
+
309
+ Raises:
310
+ ValueError: If no account ID is provided or found
311
+ """
312
+ account_id = None
313
+ if hasattr(args, 'accountID') and args.accountID:
314
+ account_id = args.accountID
315
+ elif hasattr(configuration, 'accountID') and configuration.accountID:
316
+ account_id = configuration.accountID
317
+ else:
318
+ account_id = os.getenv('CATO_ACCOUNT_ID')
319
+
320
+ if not account_id:
321
+ raise ValueError("Account ID is required. Provide it using the -accountID flag or set CATO_ACCOUNT_ID environment variable.")
322
+
323
+ return account_id
@@ -1,12 +1,16 @@
1
1
  import catocli.parsers.custom.export_rules.export_rules as export_rules
2
2
 
3
- def export_parse(subparsers):
3
+ def export_rules_parse(subparsers):
4
4
  """Create export command parsers"""
5
5
 
6
6
  # Create the main export parser
7
7
  export_parser = subparsers.add_parser('export', help='Export data to various formats', usage='catocli export <operation> [options]')
8
8
  export_subparsers = export_parser.add_subparsers(description='valid export operations', help='additional help')
9
9
 
10
+ # Add sites export functionality
11
+ from catocli.parsers.custom.export_sites import export_sites_parse
12
+ export_sites_parse(export_subparsers)
13
+
10
14
  # Add if_rules command
11
15
  if_rules_parser = export_subparsers.add_parser(
12
16
  'if_rules',