catalystwan 0.41.2__py3-none-any.whl → 0.41.2.dev1__py3-none-any.whl

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 (504) hide show
  1. catalystwan/__init__.py +3 -2
  2. catalystwan/api/administration.py +13 -2
  3. catalystwan/api/api_container.py +4 -1
  4. catalystwan/api/builders/__init__.py +14 -0
  5. catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  6. catalystwan/api/builders/feature_profiles/application_priority.py +58 -0
  7. catalystwan/api/builders/feature_profiles/builder_factory.py +59 -0
  8. catalystwan/api/builders/feature_profiles/cli.py +76 -0
  9. catalystwan/api/builders/feature_profiles/mixins.py +44 -0
  10. catalystwan/api/builders/feature_profiles/other.py +79 -0
  11. catalystwan/api/builders/feature_profiles/report.py +155 -0
  12. catalystwan/api/builders/feature_profiles/service.py +248 -0
  13. catalystwan/api/builders/feature_profiles/system.py +80 -0
  14. catalystwan/api/builders/feature_profiles/transport.py +256 -0
  15. catalystwan/api/builders/feature_profiles/uc_voice.py +287 -0
  16. catalystwan/api/config_group_api.py +41 -16
  17. catalystwan/api/configuration_groups/parcel.py +100 -30
  18. catalystwan/api/feature_profile_api.py +2021 -242
  19. catalystwan/api/policy_api.py +470 -116
  20. catalystwan/api/template_api.py +113 -44
  21. catalystwan/api/templates/README.md +61 -47
  22. catalystwan/api/templates/cli_template.py +17 -7
  23. catalystwan/api/templates/device_template/device_template.py +127 -32
  24. catalystwan/api/templates/feature_template.py +3 -3
  25. catalystwan/api/templates/models/aaa_model.py +387 -0
  26. catalystwan/api/templates/models/cisco_aaa_model.py +289 -42
  27. catalystwan/api/templates/models/cisco_banner_model.py +11 -2
  28. catalystwan/api/templates/models/cisco_bfd_model.py +31 -36
  29. catalystwan/api/templates/models/cisco_bgp_model.py +382 -131
  30. catalystwan/api/templates/models/cisco_logging_model.py +80 -43
  31. catalystwan/api/templates/models/cisco_ntp_model.py +34 -15
  32. catalystwan/api/templates/models/cisco_omp_model.py +70 -60
  33. catalystwan/api/templates/models/cisco_ospf.py +143 -74
  34. catalystwan/api/templates/models/cisco_ospfv3.py +217 -95
  35. catalystwan/api/templates/models/cisco_secure_internet_gateway.py +304 -142
  36. catalystwan/api/templates/models/cisco_snmp_model.py +66 -52
  37. catalystwan/api/templates/models/cisco_system.py +238 -129
  38. catalystwan/api/templates/models/cisco_vpn_interface_model.py +632 -275
  39. catalystwan/api/templates/models/cisco_vpn_model.py +433 -270
  40. catalystwan/api/templates/models/cli_template.py +3 -2
  41. catalystwan/api/templates/models/omp_vsmart_model.py +46 -10
  42. catalystwan/api/templates/models/security_vsmart_model.py +11 -8
  43. catalystwan/api/templates/models/supported.py +10 -4
  44. catalystwan/api/templates/models/system_vsmart_model.py +164 -27
  45. catalystwan/api/templates/models/vpn_vsmart_interface_model.py +198 -0
  46. catalystwan/api/templates/models/vpn_vsmart_model.py +124 -0
  47. catalystwan/apigw_auth.py +6 -2
  48. catalystwan/dataclasses.py +2 -53
  49. catalystwan/endpoints/__init__.py +41 -41
  50. catalystwan/endpoints/certificate_management_device.py +4 -0
  51. catalystwan/endpoints/cluster_management.py +27 -7
  52. catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +107 -0
  53. catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +60 -0
  54. catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +83 -0
  55. catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +88 -0
  56. catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +62 -0
  57. catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +35 -12
  58. catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +154 -0
  59. catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +88 -0
  60. catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +164 -11
  61. catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +93 -0
  62. catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +144 -26
  63. catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +77 -0
  64. catalystwan/endpoints/configuration/network_hierarchy.py +32 -0
  65. catalystwan/endpoints/configuration/policy/abstractions.py +49 -0
  66. catalystwan/endpoints/configuration/policy/definition/access_control_list.py +6 -11
  67. catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +6 -11
  68. catalystwan/endpoints/configuration/policy/definition/aip.py +52 -0
  69. catalystwan/endpoints/configuration/policy/definition/amp.py +52 -0
  70. catalystwan/endpoints/configuration/policy/definition/app_route.py +50 -0
  71. catalystwan/endpoints/configuration/policy/definition/cflowd.py +46 -0
  72. catalystwan/endpoints/configuration/policy/definition/control.py +6 -11
  73. catalystwan/endpoints/configuration/policy/definition/device_access.py +6 -11
  74. catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +6 -11
  75. catalystwan/endpoints/configuration/policy/definition/dial_peer.py +57 -0
  76. catalystwan/endpoints/configuration/policy/definition/dns_security.py +50 -0
  77. catalystwan/endpoints/configuration/policy/definition/fxo_port.py +57 -0
  78. catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +57 -0
  79. catalystwan/endpoints/configuration/policy/definition/fxs_port.py +57 -0
  80. catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +6 -11
  81. catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +52 -0
  82. catalystwan/endpoints/configuration/policy/definition/mesh.py +2 -11
  83. catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +57 -0
  84. catalystwan/endpoints/configuration/policy/definition/qos_map.py +2 -11
  85. catalystwan/endpoints/configuration/policy/definition/rewrite.py +6 -11
  86. catalystwan/endpoints/configuration/policy/definition/route_policy.py +50 -0
  87. catalystwan/endpoints/configuration/policy/definition/rule_set.py +2 -11
  88. catalystwan/endpoints/configuration/policy/definition/security_group.py +6 -11
  89. catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +59 -0
  90. catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +50 -0
  91. catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +52 -0
  92. catalystwan/endpoints/configuration/policy/definition/traffic_data.py +6 -11
  93. catalystwan/endpoints/configuration/policy/definition/url_filtering.py +50 -0
  94. catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +6 -11
  95. catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +50 -0
  96. catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +6 -11
  97. catalystwan/endpoints/configuration/policy/list/app.py +3 -16
  98. catalystwan/endpoints/configuration/policy/list/app_probe.py +6 -15
  99. catalystwan/endpoints/configuration/policy/list/as_path.py +3 -16
  100. catalystwan/endpoints/configuration/policy/list/class_map.py +3 -16
  101. catalystwan/endpoints/configuration/policy/list/color.py +3 -16
  102. catalystwan/endpoints/configuration/policy/list/community.py +3 -16
  103. catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +6 -15
  104. catalystwan/endpoints/configuration/policy/list/data_prefix.py +3 -16
  105. catalystwan/endpoints/configuration/policy/list/expanded_community.py +6 -15
  106. catalystwan/endpoints/configuration/policy/list/extended_community.py +52 -0
  107. catalystwan/endpoints/configuration/policy/list/fax_protocol.py +48 -0
  108. catalystwan/endpoints/configuration/policy/list/fqdn.py +3 -16
  109. catalystwan/endpoints/configuration/policy/list/geo_location.py +3 -16
  110. catalystwan/endpoints/configuration/policy/list/identity.py +48 -0
  111. catalystwan/endpoints/configuration/policy/list/ips_signature.py +6 -15
  112. catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +3 -16
  113. catalystwan/endpoints/configuration/policy/list/local_app.py +3 -16
  114. catalystwan/endpoints/configuration/policy/list/local_domain.py +3 -16
  115. catalystwan/endpoints/configuration/policy/list/media_profile.py +52 -0
  116. catalystwan/endpoints/configuration/policy/list/mirror.py +3 -16
  117. catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +52 -0
  118. catalystwan/endpoints/configuration/policy/list/policer.py +3 -16
  119. catalystwan/endpoints/configuration/policy/list/port.py +3 -16
  120. catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +6 -15
  121. catalystwan/endpoints/configuration/policy/list/prefix.py +4 -16
  122. catalystwan/endpoints/configuration/policy/list/protocol_name.py +6 -15
  123. catalystwan/endpoints/configuration/policy/list/region.py +2 -10
  124. catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +52 -0
  125. catalystwan/endpoints/configuration/policy/list/site.py +3 -16
  126. catalystwan/endpoints/configuration/policy/list/sla.py +3 -16
  127. catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +52 -0
  128. catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +52 -0
  129. catalystwan/endpoints/configuration/policy/list/tloc.py +3 -16
  130. catalystwan/endpoints/configuration/policy/list/translation_profile.py +52 -0
  131. catalystwan/endpoints/configuration/policy/list/translation_rules.py +52 -0
  132. catalystwan/endpoints/configuration/policy/list/trunkgroup.py +48 -0
  133. catalystwan/endpoints/configuration/policy/list/umbrella_data.py +52 -0
  134. catalystwan/endpoints/configuration/policy/list/url_allow_list.py +3 -16
  135. catalystwan/endpoints/configuration/policy/list/url_block_list.py +3 -16
  136. catalystwan/endpoints/configuration/policy/list/vpn.py +3 -16
  137. catalystwan/endpoints/configuration/policy/list/zone.py +3 -16
  138. catalystwan/endpoints/configuration/policy/security_template.py +2 -3
  139. catalystwan/endpoints/configuration/policy/voice_template.py +39 -0
  140. catalystwan/endpoints/configuration/policy_group.py +30 -0
  141. catalystwan/endpoints/configuration/software_actions.py +2 -4
  142. catalystwan/endpoints/configuration/topology_group.py +51 -0
  143. catalystwan/endpoints/configuration_dashboard_status.py +2 -2
  144. catalystwan/endpoints/configuration_device_template.py +15 -1
  145. catalystwan/endpoints/configuration_feature_profile.py +8 -11
  146. catalystwan/endpoints/configuration_general_template.py +31 -0
  147. catalystwan/endpoints/configuration_group.py +28 -5
  148. catalystwan/endpoints/configuration_settings.py +90 -1
  149. catalystwan/endpoints/configuration_template_master.py +48 -0
  150. catalystwan/endpoints/endpoints_container.py +79 -19
  151. catalystwan/endpoints/real_time_monitoring/reboot_history.py +1 -3
  152. catalystwan/endpoints/tenant_migration.py +2 -0
  153. catalystwan/exceptions.py +17 -0
  154. catalystwan/integration_tests/base.py +81 -0
  155. catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  156. catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  157. catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +33 -0
  158. catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +33 -0
  159. catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +32 -0
  160. catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +433 -0
  161. catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +54 -0
  162. catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +106 -0
  163. catalystwan/integration_tests/feature_profile/sdwan/test_other.py +49 -0
  164. catalystwan/integration_tests/feature_profile/sdwan/test_service.py +1078 -0
  165. catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +322 -0
  166. catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +85 -0
  167. catalystwan/integration_tests/feature_profile/sdwan/test_system.py +368 -0
  168. catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +127 -0
  169. catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +1698 -0
  170. catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +93 -0
  171. catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  172. catalystwan/integration_tests/profile_builder/test_pb_service.py +197 -0
  173. catalystwan/integration_tests/profile_builder/test_pb_transport.py +226 -0
  174. catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +277 -0
  175. catalystwan/integration_tests/test_data/__init__.py +117 -0
  176. catalystwan/integration_tests/test_find_template_values.py +7 -18
  177. catalystwan/integration_tests/test_network_hierarchy.py +82 -0
  178. catalystwan/integration_tests/test_settings.py +30 -0
  179. catalystwan/models/common.py +1898 -2
  180. catalystwan/models/configuration/common.py +1 -0
  181. catalystwan/models/configuration/feature_profile/common.py +634 -149
  182. catalystwan/models/configuration/feature_profile/parcel.py +238 -0
  183. catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +13 -0
  184. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +298 -0
  185. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +344 -0
  186. catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +218 -0
  187. catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +61 -0
  188. catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +31 -0
  189. catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +102 -0
  190. catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +1057 -0
  191. catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +23 -0
  192. catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +18 -0
  193. catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +15 -0
  194. catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +13 -0
  195. catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +110 -0
  196. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +23 -0
  197. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +493 -0
  198. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +171 -0
  199. catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +25 -0
  200. catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +44 -0
  201. catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +147 -0
  202. catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +110 -0
  203. catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +62 -48
  204. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +34 -20
  205. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +8 -6
  206. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +22 -0
  207. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +7 -5
  208. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +13 -4
  209. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +9 -7
  210. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +34 -0
  211. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +7 -5
  212. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +15 -0
  213. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +254 -0
  214. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +11 -9
  215. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +25 -10
  216. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +27 -0
  217. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +15 -0
  218. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +15 -0
  219. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policier.py → policer.py} +12 -10
  220. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +29 -10
  221. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +23 -8
  222. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +21 -0
  223. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +12 -31
  224. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +16 -10
  225. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +8 -7
  226. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +64 -0
  227. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +79 -0
  228. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +8 -6
  229. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +7 -5
  230. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +7 -5
  231. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +7 -5
  232. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +30 -0
  233. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +58 -0
  234. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +7 -5
  235. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +7 -5
  236. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +72 -0
  237. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +7 -5
  238. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +137 -0
  239. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +26 -0
  240. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +21 -11
  241. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +126 -0
  242. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +165 -0
  243. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -10
  244. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +148 -0
  245. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +14 -18
  246. catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +26 -0
  247. catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +609 -0
  248. catalystwan/models/configuration/feature_profile/sdwan/{service → routing}/ospf.py +55 -47
  249. catalystwan/models/configuration/feature_profile/sdwan/{service → routing}/ospfv3.py +74 -72
  250. catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +91 -0
  251. catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +76 -41
  252. catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +107 -64
  253. catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +26 -0
  254. catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +39 -42
  255. catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +7 -88
  256. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +231 -155
  257. catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +38 -108
  258. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +77 -84
  259. catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +101 -0
  260. catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +62 -56
  261. catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +111 -120
  262. catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +56 -57
  263. catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +15 -21
  264. catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +358 -110
  265. catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +38 -0
  266. catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +17 -25
  267. catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +50 -58
  268. catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +12 -21
  269. catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +27 -31
  270. catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +19 -0
  271. catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +379 -0
  272. catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +59 -0
  273. catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +58 -10
  274. catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +30 -0
  275. catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +290 -0
  276. catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +69 -0
  277. catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +157 -0
  278. catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +157 -0
  279. catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +163 -0
  280. catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +162 -0
  281. catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +75 -0
  282. catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +103 -0
  283. catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +120 -0
  284. catalystwan/models/configuration/feature_profile/sdwan/system/security.py +179 -0
  285. catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +173 -0
  286. catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +29 -0
  287. catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +425 -0
  288. catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +60 -0
  289. catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +23 -0
  290. catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +36 -0
  291. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +96 -0
  292. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +63 -0
  293. catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +93 -0
  294. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +26 -23
  295. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +71 -0
  296. catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +37 -0
  297. catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +121 -0
  298. catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +124 -0
  299. catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +285 -0
  300. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +173 -0
  301. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +389 -0
  302. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +46 -0
  303. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +137 -0
  304. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +219 -0
  305. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +405 -0
  306. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +195 -0
  307. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +62 -0
  308. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +436 -0
  309. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +179 -0
  310. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +380 -0
  311. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +193 -0
  312. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +17 -0
  313. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +51 -0
  314. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +86 -0
  315. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +69 -0
  316. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +42 -0
  317. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +31 -0
  318. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +26 -0
  319. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +57 -0
  320. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +40 -0
  321. catalystwan/models/configuration/network_hierarchy/__init__.py +22 -0
  322. catalystwan/models/configuration/network_hierarchy/cflowd.py +120 -0
  323. catalystwan/models/configuration/network_hierarchy/node.py +88 -0
  324. catalystwan/models/configuration/policy_group.py +74 -0
  325. catalystwan/models/configuration/profile_type.py +1 -6
  326. catalystwan/models/configuration/topology_group.py +52 -0
  327. catalystwan/models/policy/__init__.py +275 -69
  328. catalystwan/models/policy/centralized.py +26 -29
  329. catalystwan/models/policy/{definitions → definition}/access_control_list.py +47 -17
  330. catalystwan/models/policy/{definitions → definition}/access_control_list_ipv6.py +42 -18
  331. catalystwan/models/policy/definition/aip.py +60 -0
  332. catalystwan/models/policy/definition/amp.py +65 -0
  333. catalystwan/models/policy/definition/app_route.py +246 -0
  334. catalystwan/models/policy/definition/cflowd.py +95 -0
  335. catalystwan/models/policy/{definitions → definition}/control.py +48 -25
  336. catalystwan/models/policy/{definitions → definition}/device_access.py +22 -11
  337. catalystwan/models/policy/{definitions → definition}/device_access_ipv6.py +20 -11
  338. catalystwan/models/policy/definition/dial_peer.py +60 -0
  339. catalystwan/models/policy/definition/dns_security.py +130 -0
  340. catalystwan/models/policy/definition/fxo_port.py +63 -0
  341. catalystwan/models/policy/definition/fxs_did_port.py +58 -0
  342. catalystwan/models/policy/definition/fxs_port.py +56 -0
  343. catalystwan/models/policy/{definitions → definition}/hub_and_spoke.py +18 -4
  344. catalystwan/models/policy/definition/intrusion_prevention.py +55 -0
  345. catalystwan/models/policy/{definitions → definition}/mesh.py +13 -1
  346. catalystwan/models/policy/definition/pri_isdn_port.py +48 -0
  347. catalystwan/models/policy/{definitions → definition}/qos_map.py +39 -32
  348. catalystwan/models/policy/{definitions → definition}/rewrite.py +12 -2
  349. catalystwan/models/policy/definition/route_policy.py +187 -0
  350. catalystwan/models/policy/{definitions → definition}/rule_set.py +66 -48
  351. catalystwan/models/policy/{definitions → definition}/security_group.py +38 -14
  352. catalystwan/models/policy/definition/srst_phone_profile.py +37 -0
  353. catalystwan/models/policy/definition/ssl_decryption.py +209 -0
  354. catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +87 -0
  355. catalystwan/models/policy/{definitions → definition}/traffic_data.py +184 -61
  356. catalystwan/models/policy/definition/url_filtering.py +70 -0
  357. catalystwan/models/policy/{definitions → definition}/vpn_membership.py +13 -1
  358. catalystwan/models/policy/definition/vpn_qos_map.py +46 -0
  359. catalystwan/models/policy/{definitions → definition}/zone_based_firewall.py +93 -32
  360. catalystwan/models/policy/list/app.py +44 -0
  361. catalystwan/models/policy/list/app_probe.py +42 -0
  362. catalystwan/models/policy/list/as_path.py +30 -0
  363. catalystwan/models/policy/list/class_map.py +30 -0
  364. catalystwan/models/policy/list/color.py +28 -0
  365. catalystwan/models/policy/list/communities.py +83 -0
  366. catalystwan/models/policy/list/data_ipv6_prefix.py +30 -0
  367. catalystwan/models/policy/list/data_prefix.py +30 -0
  368. catalystwan/models/policy/list/fax_protocol.py +45 -0
  369. catalystwan/models/policy/list/fqdn.py +24 -0
  370. catalystwan/models/policy/list/geo_location.py +33 -0
  371. catalystwan/models/policy/list/identity.py +29 -0
  372. catalystwan/models/policy/list/ips_signature.py +27 -0
  373. catalystwan/models/policy/list/ipv6_prefix.py +33 -0
  374. catalystwan/models/policy/list/local_app.py +45 -0
  375. catalystwan/models/policy/list/local_domain.py +36 -0
  376. catalystwan/models/policy/list/media_profile.py +44 -0
  377. catalystwan/models/policy/list/mirror.py +27 -0
  378. catalystwan/models/policy/list/modem_pass_through.py +27 -0
  379. catalystwan/models/policy/list/policer.py +39 -0
  380. catalystwan/models/policy/list/port.py +33 -0
  381. catalystwan/models/policy/list/preferred_color_group.py +82 -0
  382. catalystwan/models/policy/list/prefix.py +33 -0
  383. catalystwan/models/policy/list/protocol_name.py +26 -0
  384. catalystwan/models/policy/list/region.py +45 -0
  385. catalystwan/models/policy/list/scalable_group_tag.py +30 -0
  386. catalystwan/models/policy/list/site.py +34 -0
  387. catalystwan/models/policy/list/sla.py +77 -0
  388. catalystwan/models/policy/list/supervisory_disconnect.py +62 -0
  389. catalystwan/models/policy/list/threat_grid_api_key.py +32 -0
  390. catalystwan/models/policy/list/tloc.py +32 -0
  391. catalystwan/models/policy/list/translation_profile.py +32 -0
  392. catalystwan/models/policy/list/translation_rules.py +29 -0
  393. catalystwan/models/policy/list/trunkgroup.py +56 -0
  394. catalystwan/models/policy/list/umbrella_data.py +30 -0
  395. catalystwan/models/policy/list/url.py +39 -0
  396. catalystwan/models/policy/list/vpn.py +40 -0
  397. catalystwan/models/policy/list/zone.py +46 -0
  398. catalystwan/models/policy/localized.py +34 -16
  399. catalystwan/models/policy/policy.py +13 -9
  400. catalystwan/models/policy/policy_definition.py +673 -173
  401. catalystwan/models/policy/policy_list.py +38 -27
  402. catalystwan/models/policy/security.py +145 -46
  403. catalystwan/models/policy/voice.py +77 -0
  404. catalystwan/models/settings.py +41 -0
  405. catalystwan/models/templates.py +79 -0
  406. catalystwan/response.py +6 -2
  407. catalystwan/session.py +1 -1
  408. catalystwan/tests/builders/test_report.py +60 -0
  409. catalystwan/tests/builders/uc_voice.py +85 -0
  410. catalystwan/tests/models/__init__.py +0 -0
  411. catalystwan/tests/models/test_digital_interface.py +56 -0
  412. catalystwan/tests/templates/definitions/aaa_basic.json +96 -0
  413. catalystwan/tests/templates/definitions/aaa_complex.json +464 -0
  414. catalystwan/tests/templates/definitions/{iuo.json → cisco_aaa.json} +44 -15
  415. catalystwan/tests/templates/definitions/cisco_aaa_complex.json +361 -0
  416. catalystwan/tests/templates/definitions/cisco_logging_complex.json +268 -0
  417. catalystwan/tests/templates/definitions/cisco_ntp_complex.json +143 -0
  418. catalystwan/tests/templates/definitions/cisco_omp_complex.json +175 -0
  419. catalystwan/tests/templates/definitions/cisco_ospf_complex.json +302 -0
  420. catalystwan/tests/templates/definitions/cisco_sig.json +405 -0
  421. catalystwan/tests/templates/definitions/cisco_snmp_complex.json +258 -0
  422. catalystwan/tests/templates/definitions/cisco_system_complex.json +502 -0
  423. catalystwan/tests/templates/definitions/{Basic_Cisco_VPN_Model.json → cisco_vpn_basic.json} +2 -2
  424. catalystwan/tests/templates/definitions/{complex_cisco_vpn.json → cisco_vpn_complex.json} +27 -12
  425. catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +821 -0
  426. catalystwan/tests/templates/definitions/omp_vsmart_1.json +26 -0
  427. catalystwan/tests/templates/definitions/{omp_2.json → omp_vsmart_2.json} +16 -2
  428. catalystwan/tests/templates/definitions/{omp_3.json → omp_vsmart_3.json} +16 -2
  429. catalystwan/tests/templates/definitions/omp_vsmart_complex.json +73 -0
  430. catalystwan/tests/templates/definitions/security_vsmart_complex.json +24 -0
  431. catalystwan/tests/templates/definitions/system_vsmart_complex.json +193 -0
  432. catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +17 -0
  433. catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +179 -0
  434. catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +42 -0
  435. catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +208 -0
  436. catalystwan/tests/templates/models/__init__.py +46 -13
  437. catalystwan/tests/templates/models/aaa.py +106 -0
  438. catalystwan/tests/templates/models/cisco_aaa.py +81 -48
  439. catalystwan/tests/templates/models/cisco_banner.py +2 -2
  440. catalystwan/tests/templates/models/cisco_bfd.py +4 -6
  441. catalystwan/tests/templates/models/cisco_logging.py +65 -0
  442. catalystwan/tests/templates/models/cisco_ntp.py +17 -0
  443. catalystwan/tests/templates/models/cisco_omp.py +37 -0
  444. catalystwan/tests/templates/models/cisco_ospf.py +60 -0
  445. catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +95 -0
  446. catalystwan/tests/templates/models/cisco_snmp.py +40 -0
  447. catalystwan/tests/templates/models/cisco_system.py +108 -3
  448. catalystwan/tests/templates/models/cisco_vpn.py +42 -72
  449. catalystwan/tests/templates/models/cisco_vpn_interface.py +200 -0
  450. catalystwan/tests/templates/models/omp_vsmart.py +28 -8
  451. catalystwan/tests/templates/models/security_vsmart.py +11 -0
  452. catalystwan/tests/templates/models/system_vsmart.py +37 -0
  453. catalystwan/tests/templates/models/vpn_vsmart.py +32 -0
  454. catalystwan/tests/templates/models/vpn_vsmart_interface.py +54 -0
  455. catalystwan/tests/templates/schemas/aaa.json +1096 -0
  456. catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
  457. catalystwan/tests/templates/schemas/cisco_logging.json +577 -0
  458. catalystwan/tests/templates/schemas/cisco_ntp.json +265 -0
  459. catalystwan/tests/templates/schemas/cisco_omp.json +479 -0
  460. catalystwan/tests/templates/schemas/cisco_ospf.json +908 -0
  461. catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +1520 -0
  462. catalystwan/tests/templates/schemas/cisco_snmp.json +561 -0
  463. catalystwan/tests/templates/schemas/cisco_system.json +242 -0
  464. catalystwan/tests/templates/schemas/cisco_vpn.json +53 -1
  465. catalystwan/tests/templates/schemas/cisco_vpn_interface.json +3348 -0
  466. catalystwan/tests/templates/schemas/omp-vsmart.json +20 -0
  467. catalystwan/tests/templates/schemas/security-vsmart.json +58 -0
  468. catalystwan/tests/templates/schemas/system-vsmart.json +2585 -0
  469. catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +859 -0
  470. catalystwan/tests/templates/schemas/vpn-vsmart.json +445 -0
  471. catalystwan/tests/templates/test_chose_model.py +6 -10
  472. catalystwan/tests/templates/test_deserialize_model.py +4 -4
  473. catalystwan/tests/templates/test_find_template_values.py +229 -0
  474. catalystwan/tests/templates/test_find_template_values_2.py +193 -0
  475. catalystwan/tests/templates/test_serialize_model.py +1 -2
  476. catalystwan/tests/test_cli_template.py +8 -9
  477. catalystwan/tests/test_endpoints.py +42 -11
  478. catalystwan/tests/test_feature_profile_api.py +282 -0
  479. catalystwan/tests/test_models_common.py +53 -0
  480. catalystwan/tests/test_templates.py +16 -19
  481. catalystwan/utils/feature_template/find_template_values.py +17 -4
  482. catalystwan/utils/model.py +45 -0
  483. catalystwan/utils/persona.py +5 -0
  484. catalystwan/utils/type_check.py +22 -0
  485. catalystwan/workflows/backup_restore_device_templates.py +467 -0
  486. catalystwan/workflows/tenant_migration.py +1 -1
  487. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev1.dist-info}/METADATA +20 -1
  488. catalystwan-0.41.2.dev1.dist-info/RECORD +636 -0
  489. catalystwan/ENDPOINTS.md +0 -611
  490. catalystwan/api/configuration_groups/parcels/cellular_controller.py +0 -33
  491. catalystwan/api/templates/device_template/device_template_payload.json.j2 +0 -19
  492. catalystwan/models/configuration/config_migration.py +0 -36
  493. catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +0 -26
  494. catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +0 -409
  495. catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +0 -288
  496. catalystwan/models/policy/lists.py +0 -330
  497. catalystwan/models/policy/lists_entries.py +0 -444
  498. catalystwan/tests/templates/definitions/complex_aaa.json +0 -277
  499. catalystwan/tests/templates/definitions/omp_1.json +0 -11
  500. catalystwan/utils/timezone.py +0 -422
  501. catalystwan-0.41.2.dist-info/RECORD +0 -353
  502. /catalystwan/tests/templates/definitions/{banner_1.json → cisco_banner.json} +0 -0
  503. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev1.dist-info}/LICENSE +0 -0
  504. {catalystwan-0.41.2.dist-info → catalystwan-0.41.2.dev1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,52 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyListEndpoints
8
+ from catalystwan.models.policy.list.translation_profile import (
9
+ TranslationProfileList,
10
+ TranslationProfileListEditPayload,
11
+ TranslationProfileListInfo,
12
+ )
13
+ from catalystwan.models.policy.policy_list import InfoTag, PolicyListId, PolicyListPreview
14
+ from catalystwan.typed_list import DataSequence
15
+
16
+
17
+ class ConfigurationPolicyTranslationProfileList(APIEndpoints, PolicyListEndpoints):
18
+ @post("/template/policy/list/translationprofile")
19
+ def create_policy_list(self, payload: TranslationProfileList) -> PolicyListId:
20
+ ...
21
+
22
+ @delete("/template/policy/list/translationprofile/{id}")
23
+ def delete_policy_list(self, id: UUID) -> None:
24
+ ...
25
+
26
+ @delete("/template/policy/list/translationprofile")
27
+ def delete_policy_lists_with_info_tag(self, params: InfoTag) -> None:
28
+ ...
29
+
30
+ @put("/template/policy/list/translationprofile/{id}")
31
+ def edit_policy_list(self, id: UUID, payload: TranslationProfileListEditPayload) -> None:
32
+ ...
33
+
34
+ @get("/template/policy/list/translationprofile/{id}")
35
+ def get_lists_by_id(self, id: UUID) -> TranslationProfileListInfo:
36
+ ...
37
+
38
+ @get("/template/policy/list/translationprofile", "data")
39
+ def get_policy_lists(self) -> DataSequence[TranslationProfileListInfo]:
40
+ ...
41
+
42
+ @get("/template/policy/list/translationprofile/filtered", "data")
43
+ def get_policy_lists_with_info_tag(self, params: InfoTag) -> DataSequence[TranslationProfileListInfo]:
44
+ ...
45
+
46
+ @post("/template/policy/list/translationprofile/preview")
47
+ def preview_policy_list(self, payload: TranslationProfileList) -> PolicyListPreview:
48
+ ...
49
+
50
+ @get("/template/policy/list/translationprofile/preview/{id}")
51
+ def preview_policy_list_by_id(self, id: UUID) -> PolicyListPreview:
52
+ ...
@@ -0,0 +1,52 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyListEndpoints
8
+ from catalystwan.models.policy.list.translation_rules import (
9
+ TranslationRulesList,
10
+ TranslationRulesListEditPayload,
11
+ TranslationRulesListInfo,
12
+ )
13
+ from catalystwan.models.policy.policy_list import InfoTag, PolicyListId, PolicyListPreview
14
+ from catalystwan.typed_list import DataSequence
15
+
16
+
17
+ class ConfigurationPolicyTranslationRulesList(APIEndpoints, PolicyListEndpoints):
18
+ @post("/template/policy/list/translationrules")
19
+ def create_policy_list(self, payload: TranslationRulesList) -> PolicyListId:
20
+ ...
21
+
22
+ @delete("/template/policy/list/translationrules/{id}")
23
+ def delete_policy_list(self, id: UUID) -> None:
24
+ ...
25
+
26
+ @delete("/template/policy/list/translationrules")
27
+ def delete_policy_lists_with_info_tag(self, params: InfoTag) -> None:
28
+ ...
29
+
30
+ @put("/template/policy/list/translationrules/{id}")
31
+ def edit_policy_list(self, id: UUID, payload: TranslationRulesListEditPayload) -> None:
32
+ ...
33
+
34
+ @get("/template/policy/list/translationrules/{id}")
35
+ def get_lists_by_id(self, id: UUID) -> TranslationRulesListInfo:
36
+ ...
37
+
38
+ @get("/template/policy/list/translationrules", "data")
39
+ def get_policy_lists(self) -> DataSequence[TranslationRulesListInfo]:
40
+ ...
41
+
42
+ @get("/template/policy/list/translationrules/filtered", "data")
43
+ def get_policy_lists_with_info_tag(self, params: InfoTag) -> DataSequence[TranslationRulesListInfo]:
44
+ ...
45
+
46
+ @post("/template/policy/list/translationrules/preview")
47
+ def preview_policy_list(self, payload: TranslationRulesList) -> PolicyListPreview:
48
+ ...
49
+
50
+ @get("/template/policy/list/translationrules/preview/{id}")
51
+ def preview_policy_list_by_id(self, id: UUID) -> PolicyListPreview:
52
+ ...
@@ -0,0 +1,48 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyListEndpoints
8
+ from catalystwan.models.policy.list.trunkgroup import TrunkGroupList, TrunkGroupListEditPayload, TrunkGroupListInfo
9
+ from catalystwan.models.policy.policy_list import InfoTag, PolicyListId, PolicyListPreview
10
+ from catalystwan.typed_list import DataSequence
11
+
12
+
13
+ class ConfigurationPolicyTrunkGroupList(APIEndpoints, PolicyListEndpoints):
14
+ @post("/template/policy/list/trunkgroup")
15
+ def create_policy_list(self, payload: TrunkGroupList) -> PolicyListId:
16
+ ...
17
+
18
+ @delete("/template/policy/list/trunkgroup/{id}")
19
+ def delete_policy_list(self, id: UUID) -> None:
20
+ ...
21
+
22
+ @delete("/template/policy/list/trunkgroup")
23
+ def delete_policy_lists_with_info_tag(self, params: InfoTag) -> None:
24
+ ...
25
+
26
+ @put("/template/policy/list/trunkgroup/{id}")
27
+ def edit_policy_list(self, id: UUID, payload: TrunkGroupListEditPayload) -> None:
28
+ ...
29
+
30
+ @get("/template/policy/list/trunkgroup/{id}")
31
+ def get_lists_by_id(self, id: UUID) -> TrunkGroupListInfo:
32
+ ...
33
+
34
+ @get("/template/policy/list/trunkgroup", "data")
35
+ def get_policy_lists(self) -> DataSequence[TrunkGroupListInfo]:
36
+ ...
37
+
38
+ @get("/template/policy/list/trunkgroup/filtered", "data")
39
+ def get_policy_lists_with_info_tag(self, params: InfoTag) -> DataSequence[TrunkGroupListInfo]:
40
+ ...
41
+
42
+ @post("/template/policy/list/trunkgroup/preview")
43
+ def preview_policy_list(self, payload: TrunkGroupList) -> PolicyListPreview:
44
+ ...
45
+
46
+ @get("/template/policy/list/trunkgroup/preview/{id}")
47
+ def preview_policy_list_by_id(self, id: UUID) -> PolicyListPreview:
48
+ ...
@@ -0,0 +1,52 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyListEndpoints
8
+ from catalystwan.models.policy.list.umbrella_data import (
9
+ UmbrellaDataList,
10
+ UmbrellaDataListEditPayload,
11
+ UmbrellaDataListInfo,
12
+ )
13
+ from catalystwan.models.policy.policy_list import InfoTag, PolicyListId, PolicyListPreview
14
+ from catalystwan.typed_list import DataSequence
15
+
16
+
17
+ class ConfigurationPolicyUmbrellaDataList(APIEndpoints, PolicyListEndpoints):
18
+ @post("/template/policy/list/umbrelladata")
19
+ def create_policy_list(self, payload: UmbrellaDataList) -> PolicyListId:
20
+ ...
21
+
22
+ @delete("/template/policy/list/umbrelladata/{id}")
23
+ def delete_policy_list(self, id: UUID) -> None:
24
+ ...
25
+
26
+ @delete("/template/policy/list/umbrelladata")
27
+ def delete_policy_lists_with_info_tag(self, params: InfoTag) -> None:
28
+ ...
29
+
30
+ @put("/template/policy/list/umbrelladata/{id}")
31
+ def edit_policy_list(self, id: UUID, payload: UmbrellaDataListEditPayload) -> None:
32
+ ...
33
+
34
+ @get("/template/policy/list/umbrelladata/{id}")
35
+ def get_lists_by_id(self, id: UUID) -> UmbrellaDataListInfo:
36
+ ...
37
+
38
+ @get("/template/policy/list/umbrelladata", "data")
39
+ def get_policy_lists(self) -> DataSequence[UmbrellaDataListInfo]:
40
+ ...
41
+
42
+ @get("/template/policy/list/umbrelladata/filtered", "data")
43
+ def get_policy_lists_with_info_tag(self, params: InfoTag) -> DataSequence[UmbrellaDataListInfo]:
44
+ ...
45
+
46
+ @post("/template/policy/list/umbrelladata/preview")
47
+ def preview_policy_list(self, payload: UmbrellaDataList) -> PolicyListPreview:
48
+ ...
49
+
50
+ @get("/template/policy/list/umbrelladata/preview/{id}")
51
+ def preview_policy_list_by_id(self, id: UUID) -> PolicyListPreview:
52
+ ...
@@ -4,25 +4,12 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
- from catalystwan.models.policy.lists import URLAllowList
8
- from catalystwan.models.policy.policy_list import (
9
- InfoTag,
10
- PolicyListEndpoints,
11
- PolicyListId,
12
- PolicyListInfo,
13
- PolicyListPreview,
14
- )
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyListEndpoints
8
+ from catalystwan.models.policy.list.url import URLAllowList, URLAllowListEditPayload, URLAllowListInfo
9
+ from catalystwan.models.policy.policy_list import InfoTag, PolicyListId, PolicyListPreview
15
10
  from catalystwan.typed_list import DataSequence
16
11
 
17
12
 
18
- class URLAllowListEditPayload(URLAllowList, PolicyListId):
19
- pass
20
-
21
-
22
- class URLAllowListInfo(URLAllowList, PolicyListInfo):
23
- pass
24
-
25
-
26
13
  class ConfigurationPolicyURLAllowList(APIEndpoints, PolicyListEndpoints):
27
14
  @post("/template/policy/list/urlwhitelist")
28
15
  def create_policy_list(self, payload: URLAllowList) -> PolicyListId:
@@ -4,25 +4,12 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
- from catalystwan.models.policy.lists import URLBlockList
8
- from catalystwan.models.policy.policy_list import (
9
- InfoTag,
10
- PolicyListEndpoints,
11
- PolicyListId,
12
- PolicyListInfo,
13
- PolicyListPreview,
14
- )
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyListEndpoints
8
+ from catalystwan.models.policy.list.url import URLBlockList, URLBlockListEditPayload, URLBlockListInfo
9
+ from catalystwan.models.policy.policy_list import InfoTag, PolicyListId, PolicyListPreview
15
10
  from catalystwan.typed_list import DataSequence
16
11
 
17
12
 
18
- class URLBlockListEditPayload(URLBlockList, PolicyListId):
19
- pass
20
-
21
-
22
- class URLBlockListInfo(URLBlockList, PolicyListInfo):
23
- pass
24
-
25
-
26
13
  class ConfigurationPolicyURLBlockList(APIEndpoints, PolicyListEndpoints):
27
14
  @post("/template/policy/list/urlblacklist")
28
15
  def create_policy_list(self, payload: URLBlockList) -> PolicyListId:
@@ -6,25 +6,12 @@
6
6
  from uuid import UUID
7
7
 
8
8
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
9
- from catalystwan.models.policy.lists import VPNList
10
- from catalystwan.models.policy.policy_list import (
11
- InfoTag,
12
- PolicyListEndpoints,
13
- PolicyListId,
14
- PolicyListInfo,
15
- PolicyListPreview,
16
- )
9
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyListEndpoints
10
+ from catalystwan.models.policy.list.vpn import VPNList, VPNListEditPayload, VPNListInfo
11
+ from catalystwan.models.policy.policy_list import InfoTag, PolicyListId, PolicyListPreview
17
12
  from catalystwan.typed_list import DataSequence
18
13
 
19
14
 
20
- class VPNListEditPayload(VPNList, PolicyListId):
21
- pass
22
-
23
-
24
- class VPNListInfo(VPNList, PolicyListInfo):
25
- pass
26
-
27
-
28
15
  class ConfigurationPolicyVPNList(APIEndpoints, PolicyListEndpoints):
29
16
  @post("/template/policy/list/vpn")
30
17
  def create_policy_list(self, payload: VPNList) -> PolicyListId:
@@ -4,25 +4,12 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put
7
- from catalystwan.models.policy.lists import ZoneList
8
- from catalystwan.models.policy.policy_list import (
9
- InfoTag,
10
- PolicyListEndpoints,
11
- PolicyListId,
12
- PolicyListInfo,
13
- PolicyListPreview,
14
- )
7
+ from catalystwan.endpoints.configuration.policy.abstractions import PolicyListEndpoints
8
+ from catalystwan.models.policy.list.zone import ZoneList, ZoneListEditPayload, ZoneListInfo
9
+ from catalystwan.models.policy.policy_list import InfoTag, PolicyListId, PolicyListPreview
15
10
  from catalystwan.typed_list import DataSequence
16
11
 
17
12
 
18
- class ZoneListEditPayload(ZoneList, PolicyListId):
19
- pass
20
-
21
-
22
- class ZoneListInfo(ZoneList, PolicyListInfo):
23
- pass
24
-
25
-
26
13
  class ConfigurationPolicyZoneList(APIEndpoints, PolicyListEndpoints):
27
14
  @post("/template/policy/list/zone")
28
15
  def create_policy_list(self, payload: ZoneList) -> PolicyListId:
@@ -6,11 +6,10 @@ from uuid import UUID
6
6
  from catalystwan.endpoints import JSON, APIEndpoints, delete, get, post, put
7
7
  from catalystwan.models.policy.security import (
8
8
  AnySecurityPolicy,
9
+ AnySecurityPolicyInfoList,
9
10
  SecurityPolicyEditResponse,
10
- SecurityPolicyInfoRoot,
11
11
  SecurityPolicyRoot,
12
12
  )
13
- from catalystwan.typed_list import DataSequence
14
13
 
15
14
 
16
15
  class ConfigurationSecurityTemplatePolicy(APIEndpoints):
@@ -36,7 +35,7 @@ class ConfigurationSecurityTemplatePolicy(APIEndpoints):
36
35
  ...
37
36
 
38
37
  @get("/template/policy/security", "data")
39
- def generate_security_template_list(self) -> DataSequence[SecurityPolicyInfoRoot]:
38
+ def generate_security_template_list(self) -> AnySecurityPolicyInfoList:
40
39
  ...
41
40
 
42
41
  def get_device_list_by_id(self):
@@ -0,0 +1,39 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import JSON, APIEndpoints, delete, get, post, put
7
+ from catalystwan.models.policy.voice import VoicePolicy, VoicePolicyEditResponse, VoicePolicyInfo
8
+ from catalystwan.typed_list import DataSequence
9
+
10
+
11
+ class ConfigurationVoiceTemplatePolicy(APIEndpoints):
12
+ @post("/template/policy/voice")
13
+ def create_voice_template(self, payload: VoicePolicy) -> None:
14
+ ...
15
+
16
+ @delete("/template/policy/voice/{id}")
17
+ def delete_voice_template(self, id: UUID, payload: JSON = {}) -> None:
18
+ ...
19
+
20
+ @put("/template/policy/voice/{id}")
21
+ def edit_voice_template(self, id: UUID, payload: VoicePolicy) -> VoicePolicyEditResponse:
22
+ # PUT /template/policy/voice/{policyId}
23
+ ...
24
+
25
+ def generate_voice_policy_summary(self):
26
+ # GET /template/policy/voice/summary
27
+ ...
28
+
29
+ @get("/template/policy/voice", "data")
30
+ def generate_voice_template_list(self) -> DataSequence[VoicePolicyInfo]:
31
+ ...
32
+
33
+ @get("/template/policy/voice/definition/{id}")
34
+ def get_voice_template(self, id: UUID) -> VoicePolicy:
35
+ ...
36
+
37
+ def get_voice_templates_for_device(self):
38
+ # GET /template/policy/voice/{deviceModel}
39
+ ...
@@ -0,0 +1,30 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put, versions
7
+ from catalystwan.models.configuration.policy_group import PolicyGroup, PolicyGroupId, PolicyGroupInfo
8
+ from catalystwan.typed_list import DataSequence
9
+
10
+
11
+ class PolicyGroupEndpoints(APIEndpoints):
12
+ @post("/v1/policy-group")
13
+ @versions(">=20.12")
14
+ def create_policy_group(self, payload: PolicyGroup) -> PolicyGroupId:
15
+ ...
16
+
17
+ @get("/v1/policy-group")
18
+ @versions(">=20.12")
19
+ def get_all(self) -> DataSequence[PolicyGroupInfo]:
20
+ ...
21
+
22
+ @put("/v1/policy-group/{group_id}")
23
+ @versions(">=20.12")
24
+ def update(self, group_id: UUID, payload: PolicyGroup) -> None:
25
+ ...
26
+
27
+ @delete("/v1/policy-group/{group_id}")
28
+ @versions(">=20.12")
29
+ def delete(self, group_id: UUID) -> None:
30
+ ...
@@ -100,10 +100,8 @@ class RemoteServerInfo(BaseModel):
100
100
  class SoftwareRemoteServer(BaseModel):
101
101
  model_config = ConfigDict(populate_by_name=True)
102
102
 
103
- filename: Optional[str] = Field(default=None, serialization_alias="fileName", validation_alias="fileName")
104
- remote_server_id: Optional[str] = Field(
105
- default=None, serialization_alias="remoteServerId", validation_alias="remoteServerId"
106
- )
103
+ filename: str = Field(serialization_alias="fileName", validation_alias="fileName")
104
+ remote_server_id: str = Field(serialization_alias="remoteServerId", validation_alias="remoteServerId")
107
105
  smu_defect_id: Optional[str] = Field(
108
106
  default=None, serialization_alias="smuDefectId", validation_alias="smuDefectId"
109
107
  )
@@ -0,0 +1,51 @@
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from uuid import UUID
5
+
6
+ from catalystwan.endpoints import APIEndpoints, delete, get, post, put, versions
7
+ from catalystwan.models.configuration.topology_group import (
8
+ ActivateRequest,
9
+ DeployResponse,
10
+ Preview,
11
+ TopologyGroup,
12
+ TopologyGroupId,
13
+ )
14
+ from catalystwan.typed_list import DataSequence
15
+
16
+
17
+ class TopologyGroupEndpoints(APIEndpoints):
18
+ @post("/v1/topology-group")
19
+ @versions(">=20.12")
20
+ def create(self, payload: TopologyGroup) -> TopologyGroupId:
21
+ ...
22
+
23
+ @put("/v1/topology-group/{group_id}")
24
+ @versions(">=20.12")
25
+ def edit(self, group_id: UUID, payload: TopologyGroup) -> TopologyGroupId:
26
+ ...
27
+
28
+ @get("/v1/topology-group/{group_id}")
29
+ @versions(">=20.12")
30
+ def get_by_id(self, group_id: UUID) -> TopologyGroup:
31
+ ...
32
+
33
+ @get("/v1/topology-group")
34
+ @versions(">=20.12")
35
+ def get_all(self) -> DataSequence[TopologyGroupId]:
36
+ ...
37
+
38
+ @delete("/v1/topology-group/{group_id}")
39
+ @versions(">=20.12")
40
+ def delete(self, group_id: UUID) -> None:
41
+ ...
42
+
43
+ @post("/v1/topology-group/{group_id}/device/{device_id}/preview")
44
+ @versions(">=20.12")
45
+ def preview(self, group_id: UUID, device_id: UUID, payload: ActivateRequest) -> Preview:
46
+ ...
47
+
48
+ @post("/v1/topology-group/{group_id}/device/deploy")
49
+ @versions(">=20.12")
50
+ def deploy(self, group_id: UUID, payload: ActivateRequest) -> DeployResponse:
51
+ ...
@@ -61,7 +61,7 @@ class Validation(BaseModel):
61
61
  device_id: Optional[str] = Field(default=None, serialization_alias="deviceID", validation_alias="deviceID")
62
62
  uuid: Optional[str] = Field(default=None, serialization_alias="uuid", validation_alias="uuid")
63
63
  rid: Optional[int] = Field(default=None, serialization_alias="@rid", validation_alias="@rid")
64
- status_id: Optional[str] = Field(default=None, serialization_alias="statusId", validation_alias="statusId")
64
+ status_id: str = Field(serialization_alias="statusId", validation_alias="statusId")
65
65
  process_id: Optional[str] = Field(default=None, serialization_alias="processId", validation_alias="processId")
66
66
  action_config: Optional[Union[str, Dict]] = Field(
67
67
  default=None, serialization_alias="actionConfig", validation_alias="actionConfig"
@@ -74,7 +74,7 @@ class Validation(BaseModel):
74
74
  request_status: Optional[str] = Field(
75
75
  default=None, serialization_alias="requestStatus", validation_alias="requestStatus"
76
76
  )
77
- status: Optional[OperationStatus] = Field(default=None, serialization_alias="status", validation_alias="status")
77
+ status: OperationStatus = Field(serialization_alias="status", validation_alias="status")
78
78
  order: Optional[int] = Field(default=None, serialization_alias="order", validation_alias="order")
79
79
 
80
80
 
@@ -5,7 +5,13 @@ from typing import Dict
5
5
 
6
6
  from pydantic import BaseModel, ConfigDict, Field
7
7
 
8
- from catalystwan.endpoints import APIEndpoints, post, view
8
+ from catalystwan.api.templates.device_template.device_template import (
9
+ CreateDeviceInputPayload,
10
+ DeviceInputValues,
11
+ DeviceTemplateConfigAttached,
12
+ )
13
+ from catalystwan.endpoints import APIEndpoints, get, post, view
14
+ from catalystwan.typed_list import DataSequence
9
15
  from catalystwan.utils.session_type import ProviderView
10
16
 
11
17
 
@@ -23,3 +29,11 @@ class ConfigurationDeviceTemplate(APIEndpoints):
23
29
  @post("/template/device/config/config/")
24
30
  def get_device_configuration_preview(self, payload: FeatureToCLIPayload) -> str:
25
31
  ...
32
+
33
+ @get("/template/device/config/attached/{template_id}", resp_json_key="data")
34
+ def get_device_config_attached(self, template_id: str) -> DataSequence[DeviceTemplateConfigAttached]:
35
+ ...
36
+
37
+ @post("/template/device/config/input/", resp_json_key="data")
38
+ def create_device_input(self, payload: CreateDeviceInputPayload) -> DataSequence[DeviceInputValues]:
39
+ ...
@@ -1,4 +1,4 @@
1
- # Copyright 2023 Cisco Systems, Inc. and its affiliates
1
+ # Copyright 2024 Cisco Systems, Inc. and its affiliates
2
2
 
3
3
  # mypy: disable-error-code="empty-body"
4
4
  from enum import Enum
@@ -13,6 +13,7 @@ from catalystwan.models.configuration.feature_profile.common import (
13
13
  FeatureProfileCreationResponse,
14
14
  FeatureProfileInfo,
15
15
  )
16
+ from catalystwan.models.configuration.feature_profile.parcel import ParcelId
16
17
  from catalystwan.models.feature_profile_parcel import FullConfigParcel
17
18
  from catalystwan.typed_list import DataSequence
18
19
 
@@ -28,10 +29,6 @@ class SchemaTypeQuery(BaseModel):
28
29
  schema_type: SchemaType = Field(alias="schemaType")
29
30
 
30
31
 
31
- class ParcelId(BaseModel):
32
- id: str = Field(alias="parcelId")
33
-
34
-
35
32
  class GetFeatureProfilesPayload(BaseModel):
36
33
  limit: Optional[int]
37
34
  offset: Optional[int]
@@ -105,32 +102,32 @@ class ConfigurationFeatureProfile(APIEndpoints):
105
102
 
106
103
 
107
104
  class SDRoutingConfigurationFeatureProfile(APIEndpoints):
108
- @versions(supported_versions=(">=20.13"), raises=False)
105
+ @versions(supported_versions=(">=20.12"), raises=False)
109
106
  @post("/v1/feature-profile/sd-routing/cli")
110
107
  def create_cli_feature_profile(self, payload: FeatureProfileCreationPayload) -> FeatureProfileCreationResponse:
111
108
  ...
112
109
 
113
- @versions(supported_versions=(">=20.13"), raises=False)
110
+ @versions(supported_versions=(">=20.12"), raises=False)
114
111
  @post("/v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config")
115
112
  def create_cli_full_config_parcel(self, cli_fp_id: str, payload: FullConfigParcel) -> ParcelId:
116
113
  ...
117
114
 
118
- @versions(supported_versions=(">=20.13"), raises=False)
115
+ @versions(supported_versions=(">=20.12"), raises=False)
119
116
  @delete("/v1/feature-profile/sd-routing/cli/{cli_fp_id}")
120
117
  def delete_cli_feature_profile(self, cli_fp_id: str) -> None:
121
118
  ...
122
119
 
123
- @versions(supported_versions=(">=20.13"), raises=False)
120
+ @versions(supported_versions=(">=20.12"), raises=False)
124
121
  @delete("/v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config/{parcel_id}")
125
122
  def delete_cli_full_config_parcel(self, cli_fp_id: str, parcel_id: str) -> None:
126
123
  ...
127
124
 
128
- @versions(supported_versions=(">=20.13"), raises=False)
125
+ @versions(supported_versions=(">=20.12"), raises=False)
129
126
  @put("/v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config/{parcel_id}")
130
127
  def edit_cli_full_config_parcel(self, cli_fp_id: str, parcel_id: str, payload: FullConfigParcel) -> None:
131
128
  ...
132
129
 
133
- @versions(supported_versions=(">=20.13"), raises=False)
130
+ @versions(supported_versions=(">=20.12"), raises=False)
134
131
  @get("/v1/feature-profile/sd-routing/cli")
135
132
  def get_cli_feature_profiles(
136
133
  self, payload: Optional[GetFeatureProfilesPayload]
@@ -0,0 +1,31 @@
1
+ # Copyright 2023 Cisco Systems, Inc. and its affiliates
2
+
3
+ # mypy: disable-error-code="empty-body"
4
+ from typing import Literal, Optional
5
+ from uuid import UUID
6
+
7
+ from pydantic import BaseModel, Field
8
+
9
+ from catalystwan.endpoints import APIEndpoints, get
10
+ from catalystwan.models.templates import FeatureTemplateDefinition, FeatureTemplateInformation
11
+ from catalystwan.typed_list import DataSequence
12
+
13
+ FeatureType = Literal["all", "vmanage-default", "network-design", "cloud-dock", "lawful-interception"]
14
+
15
+
16
+ class FeatureQueryParams(BaseModel):
17
+ summary: bool = Field(default=False)
18
+ offset: Optional[int] = Field(default=None)
19
+ limit: Optional[int] = Field(default=None)
20
+
21
+
22
+ class ConfigurationGeneralTemplate(APIEndpoints):
23
+ @get("/template/feature", "data")
24
+ def get_feature_template_list(
25
+ self, params: FeatureQueryParams = FeatureQueryParams()
26
+ ) -> DataSequence[FeatureTemplateInformation]:
27
+ ...
28
+
29
+ @get("/template/feature/object/{template_id}")
30
+ def get_template_definition(self, template_id: UUID) -> DataSequence[FeatureTemplateDefinition]:
31
+ ...