catalystwan 0.41.2.dev9__py3-none-any.whl → 0.41.3__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 (509) hide show
  1. catalystwan/ENDPOINTS.md +611 -0
  2. catalystwan/__init__.py +2 -3
  3. catalystwan/api/administration.py +2 -13
  4. catalystwan/api/api_container.py +1 -4
  5. catalystwan/api/config_group_api.py +16 -41
  6. catalystwan/api/configuration_groups/parcel.py +30 -100
  7. catalystwan/api/configuration_groups/parcels/cellular_controller.py +33 -0
  8. catalystwan/api/feature_profile_api.py +237 -2016
  9. catalystwan/api/policy_api.py +116 -470
  10. catalystwan/api/template_api.py +44 -113
  11. catalystwan/api/templates/README.md +47 -61
  12. catalystwan/api/templates/cli_template.py +7 -17
  13. catalystwan/api/templates/device_template/device_template.py +32 -127
  14. catalystwan/api/templates/device_template/device_template_payload.json.j2 +19 -0
  15. catalystwan/api/templates/feature_template.py +3 -3
  16. catalystwan/api/templates/models/cisco_aaa_model.py +42 -289
  17. catalystwan/api/templates/models/cisco_banner_model.py +2 -11
  18. catalystwan/api/templates/models/cisco_bfd_model.py +36 -31
  19. catalystwan/api/templates/models/cisco_bgp_model.py +131 -382
  20. catalystwan/api/templates/models/cisco_logging_model.py +43 -80
  21. catalystwan/api/templates/models/cisco_ntp_model.py +15 -34
  22. catalystwan/api/templates/models/cisco_omp_model.py +60 -70
  23. catalystwan/api/templates/models/cisco_ospf.py +74 -143
  24. catalystwan/api/templates/models/cisco_ospfv3.py +95 -217
  25. catalystwan/api/templates/models/cisco_secure_internet_gateway.py +142 -304
  26. catalystwan/api/templates/models/cisco_snmp_model.py +52 -66
  27. catalystwan/api/templates/models/cisco_system.py +129 -238
  28. catalystwan/api/templates/models/cisco_vpn_interface_model.py +275 -632
  29. catalystwan/api/templates/models/cisco_vpn_model.py +270 -433
  30. catalystwan/api/templates/models/cli_template.py +2 -3
  31. catalystwan/api/templates/models/omp_vsmart_model.py +10 -46
  32. catalystwan/api/templates/models/security_vsmart_model.py +8 -11
  33. catalystwan/api/templates/models/supported.py +4 -10
  34. catalystwan/api/templates/models/system_vsmart_model.py +27 -164
  35. catalystwan/apigw_auth.py +2 -6
  36. catalystwan/dataclasses.py +53 -2
  37. catalystwan/endpoints/__init__.py +41 -41
  38. catalystwan/endpoints/certificate_management_device.py +0 -4
  39. catalystwan/endpoints/cluster_management.py +9 -30
  40. catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +12 -35
  41. catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +11 -164
  42. catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +26 -144
  43. catalystwan/endpoints/configuration/policy/definition/access_control_list.py +11 -6
  44. catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +11 -6
  45. catalystwan/endpoints/configuration/policy/definition/control.py +11 -6
  46. catalystwan/endpoints/configuration/policy/definition/device_access.py +11 -6
  47. catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +11 -6
  48. catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +11 -6
  49. catalystwan/endpoints/configuration/policy/definition/mesh.py +11 -2
  50. catalystwan/endpoints/configuration/policy/definition/qos_map.py +11 -2
  51. catalystwan/endpoints/configuration/policy/definition/rewrite.py +11 -6
  52. catalystwan/endpoints/configuration/policy/definition/rule_set.py +11 -2
  53. catalystwan/endpoints/configuration/policy/definition/security_group.py +11 -6
  54. catalystwan/endpoints/configuration/policy/definition/traffic_data.py +11 -6
  55. catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +11 -6
  56. catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +11 -6
  57. catalystwan/endpoints/configuration/policy/list/app.py +16 -3
  58. catalystwan/endpoints/configuration/policy/list/app_probe.py +15 -6
  59. catalystwan/endpoints/configuration/policy/list/as_path.py +16 -3
  60. catalystwan/endpoints/configuration/policy/list/class_map.py +16 -3
  61. catalystwan/endpoints/configuration/policy/list/color.py +16 -3
  62. catalystwan/endpoints/configuration/policy/list/community.py +16 -3
  63. catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +15 -6
  64. catalystwan/endpoints/configuration/policy/list/data_prefix.py +16 -3
  65. catalystwan/endpoints/configuration/policy/list/expanded_community.py +15 -6
  66. catalystwan/endpoints/configuration/policy/list/fqdn.py +16 -3
  67. catalystwan/endpoints/configuration/policy/list/geo_location.py +16 -3
  68. catalystwan/endpoints/configuration/policy/list/ips_signature.py +15 -6
  69. catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +16 -3
  70. catalystwan/endpoints/configuration/policy/list/local_app.py +16 -3
  71. catalystwan/endpoints/configuration/policy/list/local_domain.py +16 -3
  72. catalystwan/endpoints/configuration/policy/list/mirror.py +16 -3
  73. catalystwan/endpoints/configuration/policy/list/policer.py +16 -3
  74. catalystwan/endpoints/configuration/policy/list/port.py +16 -3
  75. catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +15 -6
  76. catalystwan/endpoints/configuration/policy/list/prefix.py +16 -4
  77. catalystwan/endpoints/configuration/policy/list/protocol_name.py +15 -6
  78. catalystwan/endpoints/configuration/policy/list/region.py +10 -2
  79. catalystwan/endpoints/configuration/policy/list/site.py +16 -3
  80. catalystwan/endpoints/configuration/policy/list/sla.py +16 -3
  81. catalystwan/endpoints/configuration/policy/list/tloc.py +16 -3
  82. catalystwan/endpoints/configuration/policy/list/url_allow_list.py +16 -3
  83. catalystwan/endpoints/configuration/policy/list/url_block_list.py +16 -3
  84. catalystwan/endpoints/configuration/policy/list/vpn.py +16 -3
  85. catalystwan/endpoints/configuration/policy/list/zone.py +16 -3
  86. catalystwan/endpoints/configuration/policy/security_template.py +3 -2
  87. catalystwan/endpoints/configuration/software_actions.py +4 -2
  88. catalystwan/endpoints/configuration_dashboard_status.py +2 -2
  89. catalystwan/endpoints/configuration_device_template.py +1 -15
  90. catalystwan/endpoints/configuration_feature_profile.py +11 -8
  91. catalystwan/endpoints/configuration_group.py +5 -28
  92. catalystwan/endpoints/configuration_settings.py +1 -90
  93. catalystwan/endpoints/endpoints_container.py +18 -82
  94. catalystwan/endpoints/real_time_monitoring/reboot_history.py +3 -1
  95. catalystwan/endpoints/tenant_migration.py +0 -2
  96. catalystwan/exceptions.py +0 -24
  97. catalystwan/integration_tests/test_find_template_values.py +18 -7
  98. catalystwan/models/common.py +2 -1898
  99. catalystwan/models/configuration/common.py +0 -1
  100. catalystwan/models/configuration/config_migration.py +36 -0
  101. catalystwan/models/configuration/feature_profile/common.py +149 -634
  102. catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +26 -0
  103. catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +60 -69
  104. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +20 -34
  105. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +6 -8
  106. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +5 -7
  107. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +4 -13
  108. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +7 -9
  109. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +5 -7
  110. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +9 -11
  111. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +10 -25
  112. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policer.py → policier.py} +10 -12
  113. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +10 -29
  114. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +8 -23
  115. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +31 -12
  116. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +10 -16
  117. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +7 -8
  118. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +6 -8
  119. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +5 -7
  120. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +5 -7
  121. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +5 -7
  122. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +5 -7
  123. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +5 -7
  124. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +5 -7
  125. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +11 -21
  126. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -36
  127. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +18 -14
  128. catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +409 -0
  129. catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +42 -77
  130. catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +288 -0
  131. catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +64 -107
  132. catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +42 -39
  133. catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +88 -7
  134. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +156 -232
  135. catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +108 -38
  136. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +84 -77
  137. catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +56 -62
  138. catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +121 -112
  139. catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +57 -56
  140. catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +21 -15
  141. catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospf.py +47 -55
  142. catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospfv3.py +72 -74
  143. catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +110 -358
  144. catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +25 -17
  145. catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +58 -50
  146. catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +21 -12
  147. catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +31 -27
  148. catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +10 -58
  149. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +23 -26
  150. catalystwan/models/configuration/profile_type.py +6 -1
  151. catalystwan/models/policy/__init__.py +69 -282
  152. catalystwan/models/policy/centralized.py +29 -26
  153. catalystwan/models/policy/{definition → definitions}/access_control_list.py +17 -47
  154. catalystwan/models/policy/{definition → definitions}/access_control_list_ipv6.py +18 -42
  155. catalystwan/models/policy/{definition → definitions}/control.py +25 -48
  156. catalystwan/models/policy/{definition → definitions}/device_access.py +11 -22
  157. catalystwan/models/policy/{definition → definitions}/device_access_ipv6.py +11 -20
  158. catalystwan/models/policy/{definition → definitions}/hub_and_spoke.py +4 -18
  159. catalystwan/models/policy/{definition → definitions}/mesh.py +1 -13
  160. catalystwan/models/policy/{definition → definitions}/qos_map.py +32 -39
  161. catalystwan/models/policy/{definition → definitions}/rewrite.py +2 -12
  162. catalystwan/models/policy/{definition → definitions}/rule_set.py +48 -66
  163. catalystwan/models/policy/{definition → definitions}/security_group.py +14 -38
  164. catalystwan/models/policy/{definition → definitions}/traffic_data.py +61 -184
  165. catalystwan/models/policy/{definition → definitions}/vpn_membership.py +1 -13
  166. catalystwan/models/policy/{definition → definitions}/zone_based_firewall.py +32 -93
  167. catalystwan/models/policy/lists.py +330 -0
  168. catalystwan/models/policy/lists_entries.py +444 -0
  169. catalystwan/models/policy/localized.py +16 -34
  170. catalystwan/models/policy/policy.py +10 -14
  171. catalystwan/models/policy/policy_definition.py +173 -673
  172. catalystwan/models/policy/policy_list.py +27 -38
  173. catalystwan/models/policy/security.py +46 -145
  174. catalystwan/response.py +2 -6
  175. catalystwan/session.py +1 -1
  176. catalystwan/tests/templates/definitions/{cisco_vpn_basic.json → Basic_Cisco_VPN_Model.json} +2 -2
  177. catalystwan/tests/templates/definitions/complex_aaa.json +277 -0
  178. catalystwan/tests/templates/definitions/{cisco_vpn_complex.json → complex_cisco_vpn.json} +12 -27
  179. catalystwan/tests/templates/definitions/{cisco_aaa.json → iuo.json} +15 -44
  180. catalystwan/tests/templates/definitions/omp_1.json +11 -0
  181. catalystwan/tests/templates/definitions/{omp_vsmart_2.json → omp_2.json} +2 -16
  182. catalystwan/tests/templates/definitions/{omp_vsmart_3.json → omp_3.json} +2 -16
  183. catalystwan/tests/templates/models/__init__.py +13 -46
  184. catalystwan/tests/templates/models/cisco_aaa.py +48 -81
  185. catalystwan/tests/templates/models/cisco_banner.py +2 -2
  186. catalystwan/tests/templates/models/cisco_bfd.py +6 -4
  187. catalystwan/tests/templates/models/cisco_system.py +3 -108
  188. catalystwan/tests/templates/models/cisco_vpn.py +72 -42
  189. catalystwan/tests/templates/models/omp_vsmart.py +8 -28
  190. catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
  191. catalystwan/tests/templates/schemas/cisco_system.json +0 -242
  192. catalystwan/tests/templates/schemas/cisco_vpn.json +1 -53
  193. catalystwan/tests/templates/schemas/omp-vsmart.json +0 -20
  194. catalystwan/tests/templates/test_chose_model.py +10 -6
  195. catalystwan/tests/templates/test_deserialize_model.py +4 -4
  196. catalystwan/tests/templates/test_find_template_values.py +0 -229
  197. catalystwan/tests/templates/test_serialize_model.py +2 -1
  198. catalystwan/tests/test_cli_template.py +9 -8
  199. catalystwan/tests/test_endpoints.py +11 -42
  200. catalystwan/tests/test_templates.py +19 -16
  201. catalystwan/utils/feature_template/find_template_values.py +9 -22
  202. catalystwan/utils/timezone.py +422 -0
  203. catalystwan/workflows/tenant_migration.py +1 -1
  204. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/METADATA +1 -20
  205. catalystwan-0.41.3.dist-info/RECORD +353 -0
  206. catalystwan/api/builders/__init__.py +0 -14
  207. catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  208. catalystwan/api/builders/feature_profiles/application_priority.py +0 -58
  209. catalystwan/api/builders/feature_profiles/builder_factory.py +0 -59
  210. catalystwan/api/builders/feature_profiles/cli.py +0 -76
  211. catalystwan/api/builders/feature_profiles/mixins.py +0 -44
  212. catalystwan/api/builders/feature_profiles/other.py +0 -79
  213. catalystwan/api/builders/feature_profiles/report.py +0 -155
  214. catalystwan/api/builders/feature_profiles/service.py +0 -248
  215. catalystwan/api/builders/feature_profiles/system.py +0 -80
  216. catalystwan/api/builders/feature_profiles/transport.py +0 -256
  217. catalystwan/api/builders/feature_profiles/uc_voice.py +0 -287
  218. catalystwan/api/templates/models/aaa_model.py +0 -387
  219. catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -198
  220. catalystwan/api/templates/models/vpn_vsmart_model.py +0 -124
  221. catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -107
  222. catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -60
  223. catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -83
  224. catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -88
  225. catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -62
  226. catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -154
  227. catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -88
  228. catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -93
  229. catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +0 -77
  230. catalystwan/endpoints/configuration/network_hierarchy.py +0 -47
  231. catalystwan/endpoints/configuration/packages.py +0 -36
  232. catalystwan/endpoints/configuration/policy/abstractions.py +0 -49
  233. catalystwan/endpoints/configuration/policy/definition/aip.py +0 -52
  234. catalystwan/endpoints/configuration/policy/definition/amp.py +0 -52
  235. catalystwan/endpoints/configuration/policy/definition/app_route.py +0 -50
  236. catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -46
  237. catalystwan/endpoints/configuration/policy/definition/dial_peer.py +0 -57
  238. catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -50
  239. catalystwan/endpoints/configuration/policy/definition/fxo_port.py +0 -57
  240. catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +0 -57
  241. catalystwan/endpoints/configuration/policy/definition/fxs_port.py +0 -57
  242. catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -52
  243. catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +0 -57
  244. catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -50
  245. catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +0 -59
  246. catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -50
  247. catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -52
  248. catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -50
  249. catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +0 -50
  250. catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -52
  251. catalystwan/endpoints/configuration/policy/list/fax_protocol.py +0 -48
  252. catalystwan/endpoints/configuration/policy/list/identity.py +0 -48
  253. catalystwan/endpoints/configuration/policy/list/media_profile.py +0 -52
  254. catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +0 -52
  255. catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -52
  256. catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +0 -52
  257. catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -52
  258. catalystwan/endpoints/configuration/policy/list/translation_profile.py +0 -52
  259. catalystwan/endpoints/configuration/policy/list/translation_rules.py +0 -52
  260. catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -48
  261. catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -52
  262. catalystwan/endpoints/configuration/policy/voice_template.py +0 -39
  263. catalystwan/endpoints/configuration/policy_group.py +0 -30
  264. catalystwan/endpoints/configuration/topology_group.py +0 -51
  265. catalystwan/endpoints/configuration_general_template.py +0 -31
  266. catalystwan/endpoints/configuration_template_master.py +0 -48
  267. catalystwan/integration_tests/base.py +0 -81
  268. catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  269. catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  270. catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +0 -33
  271. catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -33
  272. catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -32
  273. catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -433
  274. catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -54
  275. catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -106
  276. catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -49
  277. catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -1078
  278. catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -322
  279. catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -85
  280. catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -368
  281. catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +0 -127
  282. catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -1698
  283. catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -93
  284. catalystwan/integration_tests/feature_profile/test_parcel.py +0 -54
  285. catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  286. catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -197
  287. catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -226
  288. catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +0 -277
  289. catalystwan/integration_tests/test_data/__init__.py +0 -117
  290. catalystwan/integration_tests/test_network_hierarchy.py +0 -82
  291. catalystwan/integration_tests/test_settings.py +0 -30
  292. catalystwan/models/configuration/feature_profile/parcel.py +0 -245
  293. catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -13
  294. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -298
  295. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -344
  296. catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -218
  297. catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +0 -61
  298. catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -31
  299. catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -102
  300. catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -1057
  301. catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -23
  302. catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -18
  303. catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +0 -15
  304. catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -13
  305. catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -110
  306. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -23
  307. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -493
  308. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -171
  309. catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -25
  310. catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +0 -44
  311. catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -147
  312. catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -110
  313. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -22
  314. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -34
  315. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +0 -15
  316. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +0 -254
  317. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -27
  318. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +0 -15
  319. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +0 -15
  320. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +0 -21
  321. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -64
  322. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -79
  323. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -30
  324. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -58
  325. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +0 -72
  326. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +0 -137
  327. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -26
  328. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -126
  329. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -165
  330. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -148
  331. catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -26
  332. catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -609
  333. catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -91
  334. catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +0 -26
  335. catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -101
  336. catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +0 -38
  337. catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -19
  338. catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -379
  339. catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -59
  340. catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -30
  341. catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -290
  342. catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -69
  343. catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -157
  344. catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -157
  345. catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -163
  346. catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -162
  347. catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -75
  348. catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -103
  349. catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -120
  350. catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -179
  351. catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -173
  352. catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -29
  353. catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -425
  354. catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -60
  355. catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -23
  356. catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +0 -36
  357. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +0 -96
  358. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +0 -63
  359. catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -93
  360. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -71
  361. catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -37
  362. catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -121
  363. catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -124
  364. catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -285
  365. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -173
  366. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -389
  367. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -46
  368. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -137
  369. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -219
  370. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -405
  371. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -195
  372. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +0 -62
  373. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +0 -436
  374. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +0 -179
  375. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +0 -380
  376. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +0 -193
  377. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +0 -17
  378. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +0 -51
  379. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +0 -86
  380. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +0 -69
  381. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +0 -42
  382. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +0 -31
  383. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +0 -26
  384. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +0 -57
  385. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +0 -40
  386. catalystwan/models/configuration/network_hierarchy/__init__.py +0 -24
  387. catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -128
  388. catalystwan/models/configuration/network_hierarchy/node.py +0 -88
  389. catalystwan/models/configuration/network_hierarchy/security_logging.py +0 -91
  390. catalystwan/models/configuration/packages.py +0 -57
  391. catalystwan/models/configuration/policy_group.py +0 -74
  392. catalystwan/models/configuration/topology_group.py +0 -52
  393. catalystwan/models/policy/definition/aip.py +0 -60
  394. catalystwan/models/policy/definition/amp.py +0 -65
  395. catalystwan/models/policy/definition/app_route.py +0 -246
  396. catalystwan/models/policy/definition/cflowd.py +0 -95
  397. catalystwan/models/policy/definition/dial_peer.py +0 -60
  398. catalystwan/models/policy/definition/dns_security.py +0 -130
  399. catalystwan/models/policy/definition/fxo_port.py +0 -63
  400. catalystwan/models/policy/definition/fxs_did_port.py +0 -58
  401. catalystwan/models/policy/definition/fxs_port.py +0 -56
  402. catalystwan/models/policy/definition/intrusion_prevention.py +0 -55
  403. catalystwan/models/policy/definition/pri_isdn_port.py +0 -48
  404. catalystwan/models/policy/definition/route_policy.py +0 -187
  405. catalystwan/models/policy/definition/srst_phone_profile.py +0 -37
  406. catalystwan/models/policy/definition/ssl_decryption.py +0 -209
  407. catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -88
  408. catalystwan/models/policy/definition/url_filtering.py +0 -70
  409. catalystwan/models/policy/definition/vpn_qos_map.py +0 -46
  410. catalystwan/models/policy/list/app.py +0 -44
  411. catalystwan/models/policy/list/app_probe.py +0 -42
  412. catalystwan/models/policy/list/as_path.py +0 -30
  413. catalystwan/models/policy/list/class_map.py +0 -30
  414. catalystwan/models/policy/list/color.py +0 -28
  415. catalystwan/models/policy/list/communities.py +0 -83
  416. catalystwan/models/policy/list/data_ipv6_prefix.py +0 -30
  417. catalystwan/models/policy/list/data_prefix.py +0 -30
  418. catalystwan/models/policy/list/fax_protocol.py +0 -45
  419. catalystwan/models/policy/list/fqdn.py +0 -24
  420. catalystwan/models/policy/list/geo_location.py +0 -33
  421. catalystwan/models/policy/list/identity.py +0 -29
  422. catalystwan/models/policy/list/ips_signature.py +0 -27
  423. catalystwan/models/policy/list/ipv6_prefix.py +0 -33
  424. catalystwan/models/policy/list/local_app.py +0 -45
  425. catalystwan/models/policy/list/local_domain.py +0 -36
  426. catalystwan/models/policy/list/media_profile.py +0 -44
  427. catalystwan/models/policy/list/mirror.py +0 -27
  428. catalystwan/models/policy/list/modem_pass_through.py +0 -27
  429. catalystwan/models/policy/list/policer.py +0 -39
  430. catalystwan/models/policy/list/port.py +0 -33
  431. catalystwan/models/policy/list/preferred_color_group.py +0 -82
  432. catalystwan/models/policy/list/prefix.py +0 -33
  433. catalystwan/models/policy/list/protocol_name.py +0 -26
  434. catalystwan/models/policy/list/region.py +0 -45
  435. catalystwan/models/policy/list/scalable_group_tag.py +0 -30
  436. catalystwan/models/policy/list/site.py +0 -34
  437. catalystwan/models/policy/list/sla.py +0 -77
  438. catalystwan/models/policy/list/supervisory_disconnect.py +0 -62
  439. catalystwan/models/policy/list/threat_grid_api_key.py +0 -32
  440. catalystwan/models/policy/list/tloc.py +0 -32
  441. catalystwan/models/policy/list/translation_profile.py +0 -32
  442. catalystwan/models/policy/list/translation_rules.py +0 -29
  443. catalystwan/models/policy/list/trunkgroup.py +0 -56
  444. catalystwan/models/policy/list/umbrella_data.py +0 -30
  445. catalystwan/models/policy/list/url.py +0 -39
  446. catalystwan/models/policy/list/vpn.py +0 -40
  447. catalystwan/models/policy/list/zone.py +0 -46
  448. catalystwan/models/policy/voice.py +0 -77
  449. catalystwan/models/settings.py +0 -41
  450. catalystwan/models/templates.py +0 -79
  451. catalystwan/tests/builders/test_report.py +0 -60
  452. catalystwan/tests/builders/uc_voice.py +0 -85
  453. catalystwan/tests/models/__init__.py +0 -0
  454. catalystwan/tests/models/configuration/feature_profile/sdwan/policy_object/security/test_url.py +0 -73
  455. catalystwan/tests/models/test_digital_interface.py +0 -56
  456. catalystwan/tests/templates/definitions/aaa_basic.json +0 -96
  457. catalystwan/tests/templates/definitions/aaa_complex.json +0 -464
  458. catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -361
  459. catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -268
  460. catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -143
  461. catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -175
  462. catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -302
  463. catalystwan/tests/templates/definitions/cisco_sig.json +0 -405
  464. catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -258
  465. catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -502
  466. catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -821
  467. catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -26
  468. catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -73
  469. catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -24
  470. catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -193
  471. catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -17
  472. catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -179
  473. catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -42
  474. catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -208
  475. catalystwan/tests/templates/models/aaa.py +0 -106
  476. catalystwan/tests/templates/models/cisco_logging.py +0 -65
  477. catalystwan/tests/templates/models/cisco_ntp.py +0 -17
  478. catalystwan/tests/templates/models/cisco_omp.py +0 -37
  479. catalystwan/tests/templates/models/cisco_ospf.py +0 -60
  480. catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -95
  481. catalystwan/tests/templates/models/cisco_snmp.py +0 -40
  482. catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -200
  483. catalystwan/tests/templates/models/security_vsmart.py +0 -11
  484. catalystwan/tests/templates/models/system_vsmart.py +0 -37
  485. catalystwan/tests/templates/models/vpn_vsmart.py +0 -32
  486. catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -54
  487. catalystwan/tests/templates/schemas/aaa.json +0 -1096
  488. catalystwan/tests/templates/schemas/cisco_logging.json +0 -577
  489. catalystwan/tests/templates/schemas/cisco_ntp.json +0 -265
  490. catalystwan/tests/templates/schemas/cisco_omp.json +0 -479
  491. catalystwan/tests/templates/schemas/cisco_ospf.json +0 -908
  492. catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -1520
  493. catalystwan/tests/templates/schemas/cisco_snmp.json +0 -561
  494. catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -3348
  495. catalystwan/tests/templates/schemas/security-vsmart.json +0 -58
  496. catalystwan/tests/templates/schemas/system-vsmart.json +0 -2585
  497. catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -859
  498. catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -445
  499. catalystwan/tests/templates/test_find_template_values_2.py +0 -193
  500. catalystwan/tests/test_feature_profile_api.py +0 -282
  501. catalystwan/tests/test_models_common.py +0 -53
  502. catalystwan/utils/model.py +0 -48
  503. catalystwan/utils/persona.py +0 -5
  504. catalystwan/utils/type_check.py +0 -22
  505. catalystwan/workflows/backup_restore_device_templates.py +0 -467
  506. catalystwan-0.41.2.dev9.dist-info/RECORD +0 -641
  507. /catalystwan/tests/templates/definitions/{cisco_banner.json → banner_1.json} +0 -0
  508. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/LICENSE +0 -0
  509. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/WHEEL +0 -0
@@ -61,12 +61,11 @@ from uuid import UUID
61
61
  from packaging.specifiers import SpecifierSet # type: ignore
62
62
  from packaging.version import Version # type: ignore
63
63
  from pydantic import BaseModel
64
- from typing_extensions import get_args, get_origin
64
+ from typing_extensions import Annotated, get_args, get_origin
65
65
 
66
66
  from catalystwan.abstractions import APIEndpointClient, APIEndpointClientResponse
67
67
  from catalystwan.exceptions import APIEndpointError, APIRequestPayloadTypeError, APIVersionError, APIViewError
68
68
  from catalystwan.typed_list import DataSequence
69
- from catalystwan.utils.model import resolve_nested_base_model_unions
70
69
  from catalystwan.utils.session_type import SessionType
71
70
 
72
71
  BASE_PATH: Final[str] = "/dataservice"
@@ -76,7 +75,8 @@ logger = logging.getLogger(__name__)
76
75
 
77
76
  @runtime_checkable
78
77
  class CustomPayloadType(Protocol):
79
- def prepared(self) -> PreparedPayload: ...
78
+ def prepared(self) -> PreparedPayload:
79
+ ...
80
80
 
81
81
 
82
82
  JSON = Union[str, int, float, bool, None, Dict[str, "JSON"], List["JSON"]]
@@ -113,19 +113,6 @@ class TypeSpecifier:
113
113
  def model_union(cls, models: Sequence[type]) -> TypeSpecifier:
114
114
  return TypeSpecifier(present=True, payload_union_model_types=models)
115
115
 
116
- @classmethod
117
- def resolve_nested(cls, annotation: Any, models_types: List[type]) -> List[type]:
118
- try:
119
- return resolve_nested_base_model_unions(annotation)
120
- except TypeError:
121
- raise APIEndpointError(f"Expected: {PayloadType}")
122
-
123
- @property
124
- def payload_model_set(self) -> Optional[Set[type]]:
125
- if self.payload_union_model_types is not None:
126
- return set(self.payload_union_model_types)
127
- return None
128
-
129
116
 
130
117
  @dataclass
131
118
  class APIEndpointRequestMeta:
@@ -174,18 +161,16 @@ class APIEndpoints:
174
161
  """
175
162
 
176
163
  @classmethod
177
- def _prepare_payload(
178
- cls, payload: PayloadType, force_json: bool = False, context: Dict[str, Any] = {}
179
- ) -> PreparedPayload:
164
+ def _prepare_payload(cls, payload: PayloadType, force_json: bool = False) -> PreparedPayload:
180
165
  """Helper method to prepare data for sending based on type"""
181
166
  if force_json or isinstance(payload, dict):
182
167
  return PreparedPayload(data=json.dumps(payload), headers={"content-type": "application/json"})
183
168
  if isinstance(payload, (str, bytes)):
184
169
  return PreparedPayload(data=payload)
185
170
  elif isinstance(payload, (BaseModel)):
186
- return cls._prepare_basemodel_payload(payload, context)
171
+ return cls._prepare_basemodel_payload(payload)
187
172
  elif isinstance(payload, Sequence) and not isinstance(payload, (str, bytes)):
188
- return cls._prepare_sequence_payload(payload, context) # type: ignore[arg-type]
173
+ return cls._prepare_sequence_payload(payload) # type: ignore[arg-type]
189
174
  # offender is List[JSON] which is also a Sequence can be ignored as long as force_json is passed correctly
190
175
  elif isinstance(payload, CustomPayloadType):
191
176
  return payload.prepared()
@@ -193,27 +178,26 @@ class APIEndpoints:
193
178
  raise APIRequestPayloadTypeError(payload)
194
179
 
195
180
  @classmethod
196
- def _prepare_basemodel_payload(cls, payload: BaseModel, context: Dict[str, Any] = {}) -> PreparedPayload:
181
+ def _prepare_basemodel_payload(cls, payload: BaseModel) -> PreparedPayload:
197
182
  """Helper method to prepare BaseModel instance for sending"""
198
183
  return PreparedPayload(
199
- data=payload.model_dump_json(exclude_none=True, by_alias=True, context=context),
200
- headers={"content-type": "application/json"},
184
+ data=payload.model_dump_json(exclude_none=True, by_alias=True), headers={"content-type": "application/json"}
201
185
  )
202
186
 
203
187
  @classmethod
204
- def _prepare_sequence_payload(cls, payload: Iterable[BaseModel], context: Dict[str, Any] = {}) -> PreparedPayload:
188
+ def _prepare_sequence_payload(cls, payload: Iterable[BaseModel]) -> PreparedPayload:
205
189
  """Helper method to prepare sequences for sending"""
206
190
  items = []
207
191
  for item in payload:
208
- items.append(item.model_dump(exclude_none=True, by_alias=True, context=context))
192
+ items.append(item.model_dump(exclude_none=True, by_alias=True))
209
193
  data = json.dumps(items)
210
194
  return PreparedPayload(data=data, headers={"content-type": "application/json"})
211
195
 
212
196
  @classmethod
213
- def _prepare_params(cls, params: RequestParamsType, context: Dict[str, Any] = {}) -> Dict[str, Any]:
197
+ def _prepare_params(cls, params: RequestParamsType) -> Dict[str, Any]:
214
198
  """Helper method to prepare params for sending"""
215
199
  if isinstance(params, BaseModel):
216
- return params.model_dump(exclude_none=True, by_alias=True, context=context)
200
+ return params.model_dump(exclude_none=True, by_alias=True)
217
201
  return params
218
202
 
219
203
  def __init__(self, client: APIEndpointClient):
@@ -231,11 +215,10 @@ class APIEndpoints:
231
215
  ) -> APIEndpointClientResponse:
232
216
  """Prepares and sends request using client protocol"""
233
217
  _kwargs = dict(kwargs)
234
- context = dict(api_version=self._api_version)
235
218
  if payload is not None:
236
- _kwargs.update(self._prepare_payload(payload, force_json_payload, context).asdict())
219
+ _kwargs.update(self._prepare_payload(payload, force_json_payload).asdict())
237
220
  if params is not None:
238
- _kwargs.update({"params": self._prepare_params(params, context)})
221
+ _kwargs.update({"params": self._prepare_params(params)})
239
222
  return self._client.request(method, self._basepath + url, **_kwargs)
240
223
 
241
224
  @property
@@ -262,9 +245,9 @@ class versions(APIEndpointsDecorator):
262
245
  Logs warning or raises exception when incompatibility found during runtime.
263
246
  """
264
247
 
265
- versions_lookup: ClassVar[Dict[str, SpecifierSet]] = (
266
- {}
267
- ) # maps decorated method instance to it's supported verisions
248
+ versions_lookup: ClassVar[
249
+ Dict[str, SpecifierSet]
250
+ ] = {} # maps decorated method instance to it's supported verisions
268
251
 
269
252
  def __init__(self, supported_versions: str, raises: bool = False):
270
253
  self.supported_versions = SpecifierSet(supported_versions)
@@ -354,9 +337,9 @@ class request(APIEndpointsDecorator):
354
337
  """
355
338
 
356
339
  forbidden_url_field_names = {"self", "payload", "params"}
357
- request_lookup: ClassVar[Dict[str, APIEndpointRequestMeta]] = (
358
- {}
359
- ) # maps decorated method instance to it's meta information
340
+ request_lookup: ClassVar[
341
+ Dict[str, APIEndpointRequestMeta]
342
+ ] = {} # maps decorated method instance to it's meta information
360
343
 
361
344
  def __init__(self, http_method: str, url: str, resp_json_key: Optional[str] = None, **kwargs):
362
345
  self.http_method = http_method
@@ -458,10 +441,27 @@ class request(APIEndpointsDecorator):
458
441
  and issubclass(type_args[0], BaseModel)
459
442
  ):
460
443
  return TypeSpecifier(True, type_origin, type_args[0], None, False, is_optional)
461
- else:
462
- models = TypeSpecifier.resolve_nested(annotation, [])
463
- return TypeSpecifier.model_union(models)
464
- raise APIEndpointError(f"'payload' param must be annotated with supported type: {PayloadType}")
444
+ # Check if Annnotated[Union[PayloadModelType, ...]], only unions of pydantic models allowed
445
+ elif type_origin == Annotated:
446
+ if annotated_origin := get_args(annotation):
447
+ if (len(annotated_origin) >= 1) and get_origin(annotated_origin[0]) == Union:
448
+ if (
449
+ (type_args := get_args(annotated_origin[0]))
450
+ and all(isclass(t) for t in type_args)
451
+ and all(issubclass(t, BaseModel) for t in type_args)
452
+ ):
453
+ return TypeSpecifier.model_union(models=list(type_args))
454
+ # Check if Union[PayloadModelType, ...], only unions of pydantic models allowed
455
+ elif type_origin == Union:
456
+ if (
457
+ (type_args := get_args(annotation))
458
+ and all(isclass(t) for t in type_args)
459
+ and all(issubclass(t, BaseModel) for t in type_args)
460
+ ):
461
+ return TypeSpecifier.model_union(models=list(type_args))
462
+ raise APIEndpointError(f"Expected: {PayloadType} but found payload {annotation}")
463
+ else:
464
+ raise APIEndpointError(f"Expected: {PayloadType} but found payload {annotation}")
465
465
 
466
466
  def check_params(self):
467
467
  """Checks params in decorated method definition
@@ -135,7 +135,3 @@ class CertificateManagementDevice(APIEndpoints):
135
135
  @post("/certificate/vsmart/list")
136
136
  def send_to_vbond(self) -> CertActionResponse:
137
137
  ...
138
-
139
- @post("/certificate/install/signedCert")
140
- def install_signed_cert(self, payload: str) -> CertActionResponse:
141
- ...
@@ -1,20 +1,19 @@
1
1
  # Copyright 2023 Cisco Systems, Inc. and its affiliates
2
2
 
3
3
  # mypy: disable-error-code="empty-body"
4
- from typing import Dict, Literal, Optional
4
+ from typing import Literal, Optional
5
5
 
6
- from pydantic import BaseModel, ConfigDict, Field
6
+ from pydantic import BaseModel
7
7
 
8
- from catalystwan.endpoints import JSON, APIEndpoints, get, post, put
8
+ from catalystwan.endpoints import APIEndpoints, get
9
9
  from catalystwan.typed_list import DataSequence
10
- from catalystwan.utils.persona import Persona
11
10
 
12
11
  TenancyModes = Literal["SingleTenant", "MultiTenant"]
13
12
 
14
13
 
15
14
  class TenancyMode(BaseModel):
16
15
  mode: TenancyModes
17
- deploymentmode: Optional[str] = None
16
+ deploymentmode: str
18
17
  domain: Optional[str] = None
19
18
  clusterid: Optional[str] = None
20
19
 
@@ -25,30 +24,12 @@ class VManageDetails(BaseModel):
25
24
  status: str
26
25
 
27
26
 
28
- class ConnectedDevice(BaseModel):
29
- model_config = ConfigDict(populate_by_name=True)
30
- uuid: str
31
- device_id: str = Field(serialization_alias="deviceId", validation_alias="deviceId")
32
-
33
-
34
- class VManageSetup(BaseModel):
35
- model_config = ConfigDict(populate_by_name=True)
36
- vmanage_id: Optional[str] = Field(default=None, serialization_alias="vmanageID", validation_alias="vmanageID")
37
- device_ip: str = Field(serialization_alias="deviceIP", validation_alias="deviceIP")
38
- username: str
39
- password: str
40
- gen_csr: Optional[bool] = Field(default=None, serialization_alias="genCSR", validation_alias="genCSR")
41
- persona: Persona
42
- services: Optional[Dict[str, Dict[str, bool]]] = Field(default=None)
43
-
44
-
45
27
  class ClusterManagement(APIEndpoints):
46
28
  def add_or_update_user_credentials(self):
47
29
  # POST /clusterManagement/userCreds
48
30
  ...
49
31
 
50
- @post("/clusterManagement/setup")
51
- def add_vmanage(self, payload: VManageSetup) -> JSON:
32
+ def add_vmanage(self):
52
33
  # POST /clusterManagement/setup
53
34
  ...
54
35
 
@@ -60,8 +41,7 @@ class ClusterManagement(APIEndpoints):
60
41
  # POST /clusterManagement/configure
61
42
  ...
62
43
 
63
- @put("/clusterManagement/setup")
64
- def edit_vmanage(self, payload: VManageSetup) -> JSON:
44
+ def edit_vmanage(self):
65
45
  # PUT /clusterManagement/setup
66
46
  ...
67
47
 
@@ -73,8 +53,8 @@ class ClusterManagement(APIEndpoints):
73
53
  # GET /clusterManagement/iplist/{vmanageID}
74
54
  ...
75
55
 
76
- @get("/clusterManagement/connectedDevices/{vmanageIP}", "data")
77
- def get_connected_devices(self, vmanageIP: str) -> DataSequence[ConnectedDevice]:
56
+ def get_connected_devices(self):
57
+ # GET /clusterManagement/connectedDevices/{vmanageIP}
78
58
  ...
79
59
 
80
60
  def get_connected_devices_per_tenant(self):
@@ -125,7 +105,6 @@ class ClusterManagement(APIEndpoints):
125
105
  # POST /clusterManagement/remove
126
106
  ...
127
107
 
128
- @post("/clusterManagement/tenancy/mode")
129
- def set_tenancy_mode(self, payload: TenancyMode) -> None:
108
+ def set_tenancy_mode(self):
130
109
  # POST /clusterManagement/tenancy/mode
131
110
  ...
@@ -4,53 +4,30 @@
4
4
  from uuid import UUID
5
5
 
6
6
  from catalystwan.endpoints import APIEndpoints, delete, get, post, put, versions
7
- from catalystwan.models.configuration.feature_profile.common import (
8
- FeatureProfileCreationPayload,
9
- FeatureProfileCreationResponse,
10
- FeatureProfileInfo,
11
- GetFeatureProfilesParams,
12
- )
13
- from catalystwan.models.configuration.feature_profile.parcel import Parcel, ParcelCreationResponse
7
+ from catalystwan.models.configuration.feature_profile.common import Parcel, ParcelCreationResponse
14
8
  from catalystwan.models.configuration.feature_profile.sdwan.policy_object import AnyPolicyObjectParcel
15
9
  from catalystwan.typed_list import DataSequence
16
10
 
17
11
 
18
12
  class PolicyObjectFeatureProfile(APIEndpoints):
19
- @versions(supported_versions=(">=20.12"), raises=False)
20
- @get("/v1/feature-profile/sdwan/policy-object")
21
- def get_profiles(
22
- self, params: GetFeatureProfilesParams = GetFeatureProfilesParams()
23
- ) -> DataSequence[FeatureProfileInfo]:
24
- ...
25
-
26
- @versions(supported_versions=(">=20.12"), raises=False)
27
- @post("/v1/feature-profile/sdwan/policy-object")
28
- def create_profile(self, payload: FeatureProfileCreationPayload) -> FeatureProfileCreationResponse:
29
- ...
30
-
31
- @versions(supported_versions=(">=20.12"), raises=False)
32
- @delete("/v1/feature-profile/sdwan/policy-object/{profile_id}")
33
- def delete_profile(self, profile_id: UUID) -> None:
34
- ...
35
-
36
- @versions(supported_versions=(">=20.12"), raises=False)
13
+ @versions(supported_versions=(">=20.13"), raises=False)
37
14
  @post("/v1/feature-profile/sdwan/policy-object/{profile_id}/{policy_object_list_type}")
38
15
  def create(
39
16
  self, profile_id: UUID, policy_object_list_type: str, payload: AnyPolicyObjectParcel
40
17
  ) -> ParcelCreationResponse:
41
18
  ...
42
19
 
43
- # @versions(supported_versions=(">=20.12"), raises=False)
20
+ # @versions(supported_versions=(">=20.13"), raises=False)
44
21
  # @post("/v1/feature-profile/sdwan/policy-object/{policy_object_id}/unified/{security_object_list_type}")
45
22
  # def create_security_profile_parcel(self, policy_object_id: UUID, security_object_list_type: str):
46
23
  # ...
47
24
 
48
- @versions(supported_versions=(">=20.12"), raises=False)
25
+ @versions(supported_versions=(">=20.13"), raises=False)
49
26
  @delete("/v1/feature-profile/sdwan/policy-object/{profile_id}/{policy_object_list_type}/{list_object_id}")
50
27
  def delete(self, profile_id: UUID, policy_object_list_type: str, list_object_id: UUID) -> None:
51
28
  ...
52
29
 
53
- # @versions(supported_versions=(">=20.12"), raises=False)
30
+ # @versions(supported_versions=(">=20.13"), raises=False)
54
31
  # @delete(
55
32
  # "/v1/feature-profile/sdwan/policy-object/{policy_object_id}/unified/{security_object_list_type}/{security_profile_parcel_id}"
56
33
  # )
@@ -59,14 +36,14 @@ class PolicyObjectFeatureProfile(APIEndpoints):
59
36
  # ):
60
37
  # ...
61
38
 
62
- @versions(supported_versions=(">=20.12"), raises=False)
39
+ @versions(supported_versions=(">=20.13"), raises=False)
63
40
  @put("/v1/feature-profile/sdwan/policy-object/{profile_id}/{policy_object_list_type}/{list_object_id}")
64
41
  def update(
65
42
  self, profile_id: UUID, policy_object_list_type: str, list_object_id: UUID, payload: AnyPolicyObjectParcel
66
43
  ) -> ParcelCreationResponse:
67
44
  ...
68
45
 
69
- # @versions(supported_versions=(">=20.12"), raises=False)
46
+ # @versions(supported_versions=(">=20.13"), raises=False)
70
47
  # @put(
71
48
  # "/v1/feature-profile/sdwan/policy-object/{policy_object_id}/unified/{security_object_list_type}/{security_profile_parcel_id}"
72
49
  # )
@@ -75,27 +52,27 @@ class PolicyObjectFeatureProfile(APIEndpoints):
75
52
  # ):
76
53
  # ...
77
54
 
78
- @versions(supported_versions=(">=20.12"), raises=False)
55
+ @versions(supported_versions=(">=20.13"), raises=False)
79
56
  @get("/v1/feature-profile/sdwan/policy-object/{profile_id}/{policy_object_list_type}/{list_object_id}")
80
57
  def get_by_id(self, profile_id: UUID, policy_object_list_type: str, list_object_id: UUID) -> Parcel:
81
58
  ...
82
59
 
83
- @versions(supported_versions=(">=20.12"), raises=False)
60
+ @versions(supported_versions=(">=20.13"), raises=False)
84
61
  @get("/v1/feature-profile/sdwan/policy-object/{profile_id}/{policy_object_list_type}", resp_json_key="data")
85
62
  def get_all(self, profile_id: UUID, policy_object_list_type: str) -> DataSequence[Parcel]:
86
63
  ...
87
64
 
88
- # @versions(supported_versions=(">=20.12"), raises=False)
65
+ # @versions(supported_versions=(">=20.13"), raises=False)
89
66
  # @get("/v1/feature-profile/sdwan/policy-object/{policy_object_list_type}/schema")
90
67
  # def get_sdwan_policy_object_data_prefix_parcel_schema_by_schema_type(self, policy_object_list_type: str):
91
68
  # ...
92
69
 
93
- # @versions(supported_versions=(">=20.12"), raises=False)
70
+ # @versions(supported_versions=(">=20.13"), raises=False)
94
71
  # @get("/v1/feature-profile/sdwan/policy-object/{policy_object_id}/unified/{security_object_list_type}")
95
72
  # def get_security_profile_parcel(self, policy_object_id: UUID, security_object_list_type: str):
96
73
  # ...
97
74
 
98
- # @versions(supported_versions=(">=20.12"), raises=False)
75
+ # @versions(supported_versions=(">=20.13"), raises=False)
99
76
  # @get(
100
77
  # "/v1/feature-profile/sdwan/policy-object/{policy_object_id}/unified/{security_object_list_type}/{security_profile_parcel_id}"
101
78
  # )
@@ -2,7 +2,6 @@
2
2
 
3
3
  # mypy: disable-error-code="empty-body"
4
4
  from typing import Optional
5
- from uuid import UUID
6
5
 
7
6
  from catalystwan.api.configuration_groups.parcel import _ParcelBase
8
7
  from catalystwan.endpoints import JSON, APIEndpoints, delete, get, post, put, versions
@@ -10,35 +9,23 @@ from catalystwan.models.configuration.feature_profile.common import (
10
9
  FeatureProfileCreationPayload,
11
10
  FeatureProfileCreationResponse,
12
11
  FeatureProfileInfo,
13
- GetFeatureProfilesParams,
12
+ GetFeatureProfilesPayload,
13
+ ParcelId,
14
14
  SchemaTypeQuery,
15
15
  )
16
- from catalystwan.models.configuration.feature_profile.parcel import Parcel, ParcelId
17
- from catalystwan.models.configuration.feature_profile.sdwan.system import AnySystemParcel
18
- from catalystwan.models.configuration.feature_profile.sdwan.system.aaa import AAAParcel
19
- from catalystwan.models.configuration.feature_profile.sdwan.system.banner import BannerParcel
20
- from catalystwan.models.configuration.feature_profile.sdwan.system.basic import BasicParcel
21
- from catalystwan.models.configuration.feature_profile.sdwan.system.bfd import BFDParcel
22
- from catalystwan.models.configuration.feature_profile.sdwan.system.global_parcel import GlobalParcel
23
- from catalystwan.models.configuration.feature_profile.sdwan.system.logging_parcel import LoggingParcel
24
- from catalystwan.models.configuration.feature_profile.sdwan.system.mrf import MRFParcel
25
- from catalystwan.models.configuration.feature_profile.sdwan.system.ntp import NtpParcel
26
- from catalystwan.models.configuration.feature_profile.sdwan.system.omp import OMPParcel
27
- from catalystwan.models.configuration.feature_profile.sdwan.system.security import SecurityParcel
28
- from catalystwan.models.configuration.feature_profile.sdwan.system.snmp import SNMPParcel
29
16
  from catalystwan.typed_list import DataSequence
30
17
 
31
18
 
32
19
  class SystemFeatureProfile(APIEndpoints):
33
20
  @versions(supported_versions=(">=20.9"), raises=False)
34
- @get("/v1/feature-profile/sdwan/system/{parcel_type}/schema", resp_json_key="request")
35
- def get_schema(self, parcel_type: str, params: SchemaTypeQuery) -> JSON:
21
+ @get("/v1/feature-profile/sdwan/system/aaa/schema", resp_json_key="request")
22
+ def get_sdwan_system_aaa_parcel_schema(self, params: SchemaTypeQuery) -> JSON:
36
23
  ...
37
24
 
38
25
  @versions(supported_versions=(">=20.9"), raises=False)
39
26
  @get("/v1/feature-profile/sdwan/system")
40
27
  def get_sdwan_system_feature_profiles(
41
- self, payload: Optional[GetFeatureProfilesParams]
28
+ self, payload: Optional[GetFeatureProfilesPayload]
42
29
  ) -> DataSequence[FeatureProfileInfo]:
43
30
  ...
44
31
 
@@ -50,156 +37,16 @@ class SystemFeatureProfile(APIEndpoints):
50
37
  ...
51
38
 
52
39
  @versions(supported_versions=(">=20.9"), raises=False)
53
- @delete("/v1/feature-profile/sdwan/system/{profile_id}")
54
- def delete_sdwan_system_feature_profile(self, profile_id: UUID) -> None:
40
+ @delete("/v1/feature-profile/sdwan/system/{system_id}")
41
+ def delete_sdwan_system_feature_profile(self, system_id: str) -> None:
55
42
  ...
56
43
 
57
44
  @versions(supported_versions=(">=20.9"), raises=False)
58
- @post("/v1/feature-profile/sdwan/system/{profile_id}/aaa")
59
- def create_aaa_profile_parcel_for_system(self, profile_id: UUID, payload: _ParcelBase) -> ParcelId:
45
+ @post("/v1/feature-profile/sdwan/system/{system_id}/aaa")
46
+ def create_aaa_profile_parcel_for_system(self, system_id: str, payload: _ParcelBase) -> ParcelId:
60
47
  ...
61
48
 
62
49
  @versions(supported_versions=(">=20.9"), raises=False)
63
- @put("/v1/feature-profile/sdwan/system/{profile_id}/aaa/{parcel_id}")
64
- def edit_aaa_profile_parcel_for_system(self, profile_id: UUID, parcel_id: UUID, payload: _ParcelBase) -> ParcelId:
65
- ...
66
-
67
- @versions(supported_versions=(">=20.9"), raises=False)
68
- @get("/v1/feature-profile/sdwan/system/{profile_id}/{parcel_type}", resp_json_key="data")
69
- def get_all(self, profile_id: UUID, parcel_type: UUID) -> DataSequence[Parcel[AnySystemParcel]]:
70
- ...
71
-
72
- @versions(supported_versions=(">=20.9"), raises=False)
73
- @get("/v1/feature-profile/sdwan/system/{profile_id}/{parcel_type}/{parcel_id}")
74
- def get_by_id(self, profile_id: UUID, parcel_type: str, parcel_id: UUID) -> Parcel[AnySystemParcel]:
75
- ...
76
-
77
- @versions(supported_versions=(">=20.9"), raises=False)
78
- @get("/v1/feature-profile/sdwan/system/{profile_id}/aaa", resp_json_key="data")
79
- def get_all_aaa(self, profile_id: UUID) -> DataSequence[Parcel[AAAParcel]]:
80
- ...
81
-
82
- @versions(supported_versions=(">=20.9"), raises=False)
83
- @get("/v1/feature-profile/sdwan/system/{profile_id}/aaa/{parcel_id}")
84
- def get_by_id_aaa(self, profile_id: UUID, parcel_id: UUID) -> Parcel[AAAParcel]:
85
- ...
86
-
87
- @versions(supported_versions=(">=20.9"), raises=False)
88
- @get("/v1/feature-profile/sdwan/system/{profile_id}/banner", resp_json_key="data")
89
- def get_all_banner(self, profile_id: UUID) -> DataSequence[Parcel[BannerParcel]]:
90
- ...
91
-
92
- @versions(supported_versions=(">=20.9"), raises=False)
93
- @get("/v1/feature-profile/sdwan/system/{profile_id}/banner/{parcel_id}")
94
- def get_by_id_banner(self, profile_id: UUID, parcel_id: UUID) -> Parcel[BannerParcel]:
95
- ...
96
-
97
- @versions(supported_versions=(">=20.9"), raises=False)
98
- @get("/v1/feature-profile/sdwan/system/{profile_id}/basic", resp_json_key="data")
99
- def get_all_basic(self, profile_id: UUID) -> DataSequence[Parcel[BasicParcel]]:
100
- ...
101
-
102
- @versions(supported_versions=(">=20.9"), raises=False)
103
- @get("/v1/feature-profile/sdwan/system/{profile_id}/basic/{parcel_id}")
104
- def get_by_id_basic(self, profile_id: UUID, parcel_id: UUID) -> Parcel[BasicParcel]:
105
- ...
106
-
107
- @versions(supported_versions=(">=20.9"), raises=False)
108
- @get("/v1/feature-profile/sdwan/system/{profile_id}/bfd", resp_json_key="data")
109
- def get_all_bfd(self, profile_id: UUID) -> DataSequence[Parcel[BFDParcel]]:
110
- ...
111
-
112
- @versions(supported_versions=(">=20.9"), raises=False)
113
- @get("/v1/feature-profile/sdwan/system/{profile_id}/bfd/{parcel_id}")
114
- def get_by_id_bfd(self, profile_id: UUID, parcel_id: UUID) -> Parcel[BFDParcel]:
115
- ...
116
-
117
- @versions(supported_versions=(">=20.9"), raises=False)
118
- @get("/v1/feature-profile/sdwan/system/{profile_id}/global", resp_json_key="data")
119
- def get_all_global(self, profile_id: UUID) -> DataSequence[Parcel[GlobalParcel]]:
120
- ...
121
-
122
- @versions(supported_versions=(">=20.9"), raises=False)
123
- @get("/v1/feature-profile/sdwan/system/{profile_id}/global/{parcel_id}")
124
- def get_by_id_global(self, profile_id: UUID, parcel_id: UUID) -> Parcel[GlobalParcel]:
125
- ...
126
-
127
- @versions(supported_versions=(">=20.9"), raises=False)
128
- @get("/v1/feature-profile/sdwan/system/{profile_id}/logging", resp_json_key="data")
129
- def get_all_logging(self, profile_id: UUID) -> DataSequence[Parcel[LoggingParcel]]:
130
- ...
131
-
132
- @versions(supported_versions=(">=20.9"), raises=False)
133
- @get("/v1/feature-profile/sdwan/system/{profile_id}/logging/{parcel_id}")
134
- def get_by_id_logging(self, profile_id: UUID, parcel_id: UUID) -> Parcel[LoggingParcel]:
135
- ...
136
-
137
- @versions(supported_versions=(">=20.9"), raises=False)
138
- @get("/v1/feature-profile/sdwan/system/{profile_id}/mrf", resp_json_key="data")
139
- def get_all_mrf(self, profile_id: UUID) -> DataSequence[Parcel[MRFParcel]]:
140
- ...
141
-
142
- @versions(supported_versions=(">=20.9"), raises=False)
143
- @get("/v1/feature-profile/sdwan/system/{profile_id}/mrf/{parcel_id}")
144
- def get_by_id_mrf(self, profile_id: UUID, parcel_id: UUID) -> Parcel[MRFParcel]:
145
- ...
146
-
147
- @versions(supported_versions=(">=20.9"), raises=False)
148
- @get("/v1/feature-profile/sdwan/system/{profile_id}/ntp", resp_json_key="data")
149
- def get_all_ntp(self, profile_id: UUID) -> DataSequence[Parcel[NtpParcel]]:
150
- ...
151
-
152
- @versions(supported_versions=(">=20.9"), raises=False)
153
- @get("/v1/feature-profile/sdwan/system/{profile_id}/ntp/{parcel_id}")
154
- def get_by_id_ntp(self, profile_id: UUID, parcel_id: UUID) -> Parcel[NtpParcel]:
155
- ...
156
-
157
- @versions(supported_versions=(">=20.9"), raises=False)
158
- @get("/v1/feature-profile/sdwan/system/{profile_id}/omp", resp_json_key="data")
159
- def get_all_omp(self, profile_id: UUID) -> DataSequence[Parcel[OMPParcel]]:
160
- ...
161
-
162
- @versions(supported_versions=(">=20.9"), raises=False)
163
- @get("/v1/feature-profile/sdwan/system/{profile_id}/omp/{parcel_id}")
164
- def get_by_id_omp(self, profile_id: UUID, parcel_id: UUID) -> Parcel[OMPParcel]:
165
- ...
166
-
167
- @versions(supported_versions=(">=20.9"), raises=False)
168
- @get("/v1/feature-profile/sdwan/system/{profile_id}/security", resp_json_key="data")
169
- def get_all_security(self, profile_id: UUID) -> DataSequence[Parcel[SecurityParcel]]:
170
- ...
171
-
172
- @versions(supported_versions=(">=20.9"), raises=False)
173
- @get("/v1/feature-profile/sdwan/system/{profile_id}/security/{parcel_id}")
174
- def get_by_id_security(self, profile_id: UUID, parcel_id: UUID) -> Parcel[SecurityParcel]:
175
- ...
176
-
177
- @versions(supported_versions=(">=20.9"), raises=False)
178
- @get("/v1/feature-profile/sdwan/system/{profile_id}/snmp", resp_json_key="data")
179
- def get_all_snmp(self, profile_id: UUID) -> DataSequence[Parcel[SNMPParcel]]:
180
- ...
181
-
182
- @versions(supported_versions=(">=20.9"), raises=False)
183
- @get("/v1/feature-profile/sdwan/system/{profile_id}/snmp/{parcel_id}")
184
- def get_by_id_snmp(self, profile_id: UUID, parcel_id: UUID) -> Parcel[SNMPParcel]:
185
- ...
186
-
187
- @versions(supported_versions=(">=20.9"), raises=False)
188
- @put("/v1/feature-profile/sdwan/system/{profile_id}/{parcel_type}/{parcel_id}")
189
- def update(self, profile_id: UUID, parcel_type: str, parcel_id: UUID, payload: AnySystemParcel) -> ParcelId:
190
- ...
191
-
192
- @versions(supported_versions=(">=20.9"), raises=False)
193
- @delete("/v1/feature-profile/sdwan/system/{profile_id}/{parcel_type}/{parcel_id}")
194
- def delete(self, profile_id: UUID, parcel_type: str, parcel_id: UUID) -> None:
195
- ...
196
-
197
- @versions(supported_versions=(">=20.9"), raises=False)
198
- @post("/v1/feature-profile/sdwan/system/{system_id}/bfd")
199
- def create_bfd_profile_parcel_for_system(self, system_id: str, payload: _ParcelBase) -> ParcelId:
200
- ...
201
-
202
- @versions(supported_versions=(">=20.9"), raises=False)
203
- @post("/v1/feature-profile/sdwan/system/{profile_id}/{parcel_type}")
204
- def create(self, profile_id: UUID, parcel_type: str, payload: AnySystemParcel) -> ParcelId:
50
+ @put("/v1/feature-profile/sdwan/system/{system_id}/aaa/{parcel_id}")
51
+ def edit_aaa_profile_parcel_for_system(self, system_id: str, parcel_id: str, payload: _ParcelBase) -> ParcelId:
205
52
  ...