Skip to content

Feature Profiles - Transport

In Cisco SD-WAN Manager (vManage) UX 2.0, configuration is modular:

Concept Description
Transport Feature Profile A container (envelope) that groups all transport/WAN-level settings for a device (VPN 0, WAN interfaces, routing, cellular, etc.).
Feature Parcel An individual, typed block of configuration (WAN VPN, Ethernet Interface, BGP, etc.) that lives inside a Transport Feature Profile.

You must create the profile first, then attach one or more parcels to it. Some parcels are nested — for example, Ethernet Interface parcels live inside a WAN VPN parcel.


STEP 1: Create a Transport Feature Profile:

  • POST /v1/feature-profile/sdwan/transport
  • Returns a Transport Profile Identifier (profileId)

STEP 2: Create top-level parcels (e.g., WAN VPN, Cellular Controller, Management VPN) using the returned profileId:

  • POST /v1/feature-profile/sdwan/transport/<profileId>/<parcel-type>
  • Returns a Parcel Identifier (parcelId)

STEP 3: For nested parcels (e.g., Ethernet Interface under WAN VPN), create them using both profileId and the parent parcelId:

  • POST /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/<sub-parcel-type>
  • Returns a Sub-Parcel Identifier

Then the newly created Transport Feature Profile can be used in a Configuration Group.


POST /v1/feature-profile/sdwan/transport

Request Body

{
"name": "TF_SPOKE_TRANSPORT",
"description": "Terraform - Transport Profile"
}

Response (HTTP 200)

{
"id": "aaaa-bbbb-cccc-dddd"
}

Save the returned UUID — this is referred to as <profileId> in every subsequent parcel call.


The Transport Feature Profile has a multi-level hierarchy. Some parcels are top-level while others are nested under a parent VPN or controller parcel:

Transport Feature Profile (<profileId>)
├── WAN VPN (VPN 0) ────────────────────────── /wan/vpn
│ ├── Interface Ethernet ──────────────────── /interface/ethernet
│ ├── Interface Cellular ──────────────────── /interface/cellular
│ ├── Interface GRE ──────────────────────── /interface/gre
│ ├── Interface IPSec ────────────────────── /interface/ipsec
│ ├── Interface Serial ───────────────────── /interface/serial
│ ├── Raw Socket ─────────────────────────── /raw-socket
│ ├── Routing BGP ────────────────────────── /routing/bgp
│ ├── Routing OSPF ───────────────────────── /routing/ospf
│ ├── Routing OSPFv3 IPv4 ────────────────── /routing/ospfv3/ipv4
│ ├── Routing OSPFv3 IPv6 ────────────────── /routing/ospfv3/ipv6
│ └── (Tracker associations on interfaces — see below)
├── Management VPN (VPN 512) ───────────────── /management/vpn
│ └── Interface Ethernet ──────────────────── /interface/ethernet
├── Cellular Controller ────────────────────── /cellular-controller
│ ├── Cellular Band Select ───────────────── /cellular-bandselect
│ ├── Cellular Profile ───────────────────── /cellular-profile
│ └── GPS ────────────────────────────────── /gps
├── Cellular Band Select (standalone) ──────── /cellular-bandselect
├── Cellular Profile (standalone) ──────────── /cellular-profile
├── eSIM Cellular Controller ───────────────── /esimcellular-controller
├── eSIM Cellular Profile ──────────────────── /esimcellular-profile
├── GPS (standalone) ───────────────────────── /gps
├── Routing BGP ────────────────────────────── /routing/bgp
├── Routing OSPF ───────────────────────────── /routing/ospf
├── Routing OSPFv3 IPv4 ────────────────────── /routing/ospfv3/ipv4
├── Routing OSPFv3 IPv6 ────────────────────── /routing/ospfv3/ipv6
├── T1/E1 Controller ──────────────────────── /t1-e1-controller
├── Tracker ────────────────────────────────── /tracker
├── Tracker Group ──────────────────────────── /trackergroup
├── IPv6 Tracker ───────────────────────────── /ipv6-tracker
└── IPv6 Tracker Group ─────────────────────── /ipv6-trackergroup

With the profileId in hand, create each top-level parcel you need.

Item Value
Method POST
Endpoint pattern /v1/feature-profile/sdwan/transport/<profileId>/<parcel-type>
Content-Type application/json

Order does not matter. Parcels are independent of one another and can be created in any sequence.

Top-Level Parcel Quick-Reference Table:

# Parcel Type Endpoint Suffix Description / Key Fields
1 WAN VPN /wan/vpn VPN 0 — primary & secondary DNS, ECMP keying, NAT pools
2 Management VPN /management/vpn VPN 512 — management-plane connectivity
3 Cellular Controller /cellular-controller Cellular modem/controller settings
4 Cellular Band Select /cellular-bandselect Cellular band selection (LTE, UMTS, all RATs, custom)
5 Cellular Profile /cellular-profile Cellular profile settings (APN, authentication)
6 eSIM Cellular Controller /esimcellular-controller Embedded-SIM cellular controller settings
7 eSIM Cellular Profile /esimcellular-profile Embedded-SIM cellular profile settings
8 GPS /gps GPS receiver settings
9 Routing BGP /routing/bgp BGP AS number, neighbors, address families
10 Routing OSPF /routing/ospf OSPF areas, interfaces, redistribution
11 Routing OSPFv3 IPv4 /routing/ospfv3/ipv4 OSPFv3 for IPv4 address family
12 Routing OSPFv3 IPv6 /routing/ospfv3/ipv6 OSPFv3 for IPv6 address family
13 T1/E1 Controller /t1-e1-controller T1/E1 controller settings
14 Tracker /tracker Endpoint tracker for interface failover
15 Tracker Group /trackergroup Group of trackers with boolean logic
16 IPv6 Tracker /ipv6-tracker IPv6 endpoint tracker
17 IPv6 Tracker Group /ipv6-trackergroup Group of IPv6 trackers

These parcels are created inside a WAN VPN parcel and require both the profileId and the parent vpnParcelId.

Item Value
Method POST
Endpoint pattern /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/<sub-parcel-type>
Content-Type application/json

WAN VPN Sub-Parcel Quick-Reference Table:

# Sub-Parcel Type Endpoint Suffix Description / Key Fields
1 Ethernet Interface /interface/ethernet WAN-facing interfaces — IP address, NAT, tunnel interface (color, restrict, IPSec encapsulation, preference)
2 Cellular Interface /interface/cellular Cellular WAN interface settings
3 GRE Interface /interface/gre GRE tunnel interface configuration
4 IPSec Interface /interface/ipsec IPSec tunnel interface configuration
5 Serial Interface /interface/serial Serial interface configuration (T1/E1 connected)
6 Raw Socket /raw-socket Raw socket configuration
7 Routing BGP /routing/bgp BGP settings scoped to WAN VPN
8 Routing OSPF /routing/ospf OSPF settings scoped to WAN VPN
9 Routing OSPFv3 IPv4 /routing/ospfv3/ipv4 OSPFv3 IPv4 settings scoped to WAN VPN
10 Routing OSPFv3 IPv6 /routing/ospfv3/ipv6 OSPFv3 IPv6 settings scoped to WAN VPN

Trackers can be associated directly to WAN VPN interfaces. These are third-level nested parcels:

Endpoint pattern:

/v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/interface/<interfaceType>/<interfaceId>/<tracker-type>

# Tracker Association Applicable Interface Types Endpoint Suffix (on interface)
1 Tracker ethernet, cellular, gre, ipsec /tracker
2 Tracker Group ethernet, cellular /trackergroup
3 IPv6 Tracker ethernet, cellular /ipv6-tracker
4 IPv6 Tracker Group ethernet, cellular /ipv6-trackergroup

For example, to associate a tracker to an Ethernet interface under WAN VPN:

POST /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/interface/ethernet/<ethernetId>/tracker

These parcels are created inside a Management VPN parcel and require both the profileId and the parent mgmtVpnParcelId.

Item Value
Method POST
Endpoint pattern /v1/feature-profile/sdwan/transport/<profileId>/management/vpn/<mgmtVpnParcelId>/<sub-parcel-type>
Content-Type application/json

Management VPN Sub-Parcel Quick-Reference Table

Section titled “Management VPN Sub-Parcel Quick-Reference Table”
# Sub-Parcel Type Endpoint Suffix Description / Key Fields
1 Ethernet Interface /interface/ethernet Management interface — IP address, DHCP, shutdown state

These parcels are created inside a Cellular Controller parcel and require both the profileId and the parent cellularControllerId.

Item Value
Method POST
Endpoint pattern /v1/feature-profile/sdwan/transport/<profileId>/cellular-controller/<cellularControllerId>/<sub-parcel-type>
Content-Type application/json

Cellular Controller Sub-Parcel Quick-Reference Table

Section titled “Cellular Controller Sub-Parcel Quick-Reference Table”
# Sub-Parcel Type Endpoint Suffix Description / Key Fields
1 Cellular Band Select /cellular-bandselect Band selection associated to a cellular controller
2 Cellular Profile /cellular-profile Cellular profile associated to a cellular controller
3 GPS /gps GPS associated to a cellular controller

POST /dataservice/v1/feature-profile/sdwan/transport/<profileId>/wan/vpn
Content-Type: application/json
{
"name": "wan_vpn",
"description": "WAN VPN for spoke transport",
"data": {
"vpnId": {
"optionType": "global",
"value": 0
},
"enhanceEcmpKeying": {
"optionType": "global",
"value": true
},
"primaryDnsAddressIpv4": {
"optionType": "global",
"value": "172.16.1.254"
},
"secondaryDnsAddressIpv4": {
"optionType": "global",
"value": "172.16.2.254"
}
}
}

Response (HTTP 200)

{
"parcelId": "1111-2222-3333-4444"
}

Save the returned parcelId — this is the <vpnParcelId> required for creating sub-parcels (interfaces, routes, etc.).


Example — Create an Ethernet Interface Sub-Parcel (under WAN VPN)

Section titled “Example — Create an Ethernet Interface Sub-Parcel (under WAN VPN)”
POST /dataservice/v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/interface/ethernet
Content-Type: application/json
{
"name": "inet_tloc",
"description": "INET",
"data": {
"interfaceName": {
"optionType": "variable",
"value": "<vpn0_inet_name>"
},
"shutdown": {
"optionType": "variable",
"value": "<vpn0_inet_shutdown>"
},
"ipv4": {
"addressConfig": {
"optionType": "global",
"value": "static"
},
"address": {
"optionType": "variable",
"value": "<vpn0_inet_ipv4_address>"
},
"subnetMask": {
"optionType": "global",
"value": "255.255.255.0"
}
},
"ipv6ConfigurationType": {
"optionType": "global",
"value": "none"
},
"nat": {
"optionType": "global",
"value": true
},
"tunnel": {
"color": {
"optionType": "global",
"value": "biz-internet"
},
"restrict": {
"optionType": "global",
"value": true
},
"ipsecEncapsulation": {
"optionType": "global",
"value": true
},
"ipsecPreference": {
"optionType": "variable",
"value": "<vpn0_inet_preference>"
}
}
}
}

Response (HTTP 200)

{
"parcelId": "aaaa-bbbb-1111-2222"
}

Example — Create a Static Route Sub-Parcel (under WAN VPN)

Section titled “Example — Create a Static Route Sub-Parcel (under WAN VPN)”
POST /dataservice/v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/route
Content-Type: application/json
{
"name": "default_route",
"description": "Default static route with variable next-hops",
"data": {
"ipv4Route": {
"optionType": "global",
"value": [
{
"networkAddress": {
"optionType": "global",
"value": "0.0.0.0"
},
"subnetMask": {
"optionType": "global",
"value": "0.0.0.0"
},
"nextHop": {
"optionType": "global",
"value": [
{
"address": {
"optionType": "variable",
"value": "<vpn0_default_gw1>"
}
},
{
"address": {
"optionType": "variable",
"value": "<vpn0_default_gw2>"
}
}
]
}
}
]
}
}
}

Response (HTTP 200)

{
"parcelId": "5555-6666-7777-8888"
}

Almost every field in a parcel body uses a discriminated value wrapper:

optionType Meaning Example
global Explicitly set by the administrator. { "optionType": "global", "value": "biz-internet" }
variable Bound to a template variable; resolved at device attach. { "optionType": "variable", "value": "<vpn0_inet_name>" }
default Use the system-defined default. Value may be present but is informational. { "optionType": "default", "value": 4 }

Action Method & Endpoint
Read All Parcels of a Given Type GET /v1/feature-profile/sdwan/transport/<profileId>/<parcel-type>
Read a Single Parcel GET /v1/feature-profile/sdwan/transport/<profileId>/<parcel-type>/{parcelId}
Update a Parcel (send full payload) PUT /v1/feature-profile/sdwan/transport/<profileId>/<parcel-type>/{parcelId}
Delete a Parcel DELETE /v1/feature-profile/sdwan/transport/<profileId>/<parcel-type>/{parcelId}

Action Method & Endpoint
Read All Sub-Parcels of a Given Type GET /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/<sub-parcel-type>
Read a Single Sub-Parcel GET /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/<sub-parcel-type>/{subParcelId}
Update a Sub-Parcel PUT /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/<sub-parcel-type>/{subParcelId}
Delete a Sub-Parcel DELETE /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/<sub-parcel-type>/{subParcelId}

Action Method & Endpoint
Read All Sub-Parcels of a Given Type GET /v1/feature-profile/sdwan/transport/<profileId>/management/vpn/<mgmtVpnParcelId>/<sub-parcel-type>
Read a Single Sub-Parcel GET /v1/feature-profile/sdwan/transport/<profileId>/management/vpn/<mgmtVpnParcelId>/<sub-parcel-type>/{subParcelId}
Update a Sub-Parcel PUT /v1/feature-profile/sdwan/transport/<profileId>/management/vpn/<mgmtVpnParcelId>/<sub-parcel-type>/{subParcelId}
Delete a Sub-Parcel DELETE /v1/feature-profile/sdwan/transport/<profileId>/management/vpn/<mgmtVpnParcelId>/<sub-parcel-type>/{subParcelId}

Action Method & Endpoint
Read All Sub-Parcels of a Given Type GET /v1/feature-profile/sdwan/transport/<profileId>/cellular-controller/<cellularControllerId>/<sub-parcel-type>
Read a Single Sub-Parcel GET /v1/feature-profile/sdwan/transport/<profileId>/cellular-controller/<cellularControllerId>/<sub-parcel-type>/{subParcelId}
Update a Sub-Parcel PUT /v1/feature-profile/sdwan/transport/<profileId>/cellular-controller/<cellularControllerId>/<sub-parcel-type>/{subParcelId}
Delete a Sub-Parcel DELETE /v1/feature-profile/sdwan/transport/<profileId>/cellular-controller/<cellularControllerId>/<sub-parcel-type>/{subParcelId}

Manage Tracker Associations on WAN VPN Interfaces

Section titled “Manage Tracker Associations on WAN VPN Interfaces”
Action Method & Endpoint
Read All Tracker Associations GET /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/interface/<type>/<interfaceId>/<tracker-type>
Read a Single Tracker Association GET /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/interface/<type>/<interfaceId>/<tracker-type>/{trackerId}
Create a Tracker Association POST /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/interface/<type>/<interfaceId>/<tracker-type>
Update a Tracker Association PUT /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/interface/<type>/<interfaceId>/<tracker-type>/{trackerId}
Delete a Tracker Association DELETE /v1/feature-profile/sdwan/transport/<profileId>/wan/vpn/<vpnParcelId>/interface/<type>/<interfaceId>/<tracker-type>/{trackerId}

Where <type> is the interface type (ethernet, cellular, gre, or ipsec) and <tracker-type> is one of tracker, trackergroup, ipv6-tracker, or ipv6-trackergroup.


Action Method & Endpoint
List all Transport Profiles GET /v1/feature-profile/sdwan/transport
Get one profile GET /v1/feature-profile/sdwan/transport/<profileId>
Update profile metadata PUT /v1/feature-profile/sdwan/transport/<profileId>
Delete a profile DELETE /v1/feature-profile/sdwan/transport/<profileId>

Code Meaning
200 Success — resource created / retrieved / updated / deleted
400 Bad request — invalid or missing fields
401 Unauthorised — missing or expired session
403 Forbidden — insufficient RBAC privileges
404 Not found — invalid {profileId} or {parcelId}
500 Internal server error

Open Bruno and load the collection “Catalyst SD-WAN Sandbox” located in the bruno/sdwan-sandbox folder of this repository. The collection is already structured with all the requests needed for this lab, grouped into subfolders by workflow (e.g. Authentication, Create transport profile).

Bruno uses environments to manage sets of variables (base URL, credentials, token values, IDs, etc.) that are shared across all requests in a collection. Each request references variables with the {{variable_name}} syntax — for example, {{vmanage}} for the Manager hostname, or {{transportProfileId}} for the profile ID returned after the first API call. This means you only need to set a value once in the environment and every request that uses it is automatically updated.

Before running any request, select the sandbox environment from the environment picker (top-right dropdown). This loads all the pre-configured variables for the lab sandbox.

As you work through the steps below, you will occasionally need to copy a value from a response (such as a profileId) and paste it into the environment so that subsequent requests can use it automatically. To edit environment variables: click the environment name → Configure.

Step1: Make sure you are authenticated with SD-WAN Manager:

  • go to Authentication folder
  • use 01 - Get Auth Token request, hit send

Step2: Create Transport Profile

  • Go to Create transport profile folder
  • use 01 - Create Transport Profile and hit send
  • This creates a Transport Profile
  • Response payload contains the profile-id
  • The post-response script automatically saves the value to the environment variable transportProfileId

Step3: Create VPN0 parcel

  • Go to Create transport profile folder
  • use 02 - Create Transport Parcel - WAN VPN and hit send
  • This creates the VPN0 parcel in the transport profile
  • Response payload contains the parcel-id
  • The post-response script automatically saves the value to the environment variable wanVpnParcelId

Step3 - Create wan interfaces parcels

  • Go to Create transport profile folder
  • create Internet WAN interface using 03 - Create Transport Parcel - WAN VPN Interface INET
  • create Internet WAN interface using 04 - Create Transport Parcel - WAN VPN Interface MPLS
  • Requires the transportProfileId and wanVpnParcelId from above

Step4: List existing Transport Profiles

  • Go to List profiles folder
  • use List all Transport Profiles, hit send
  • read the response payload, it contains all transport profiles created on Manager

Step5: Get newly created Transport Profile details

  • Go to List profiles folder
  • use Get Transport Profile details, hit send
  • read the response payload, it contains all parcels for the newly created transport profile.

  1. Create the profile before any parcel. Every parcel endpoint requires <profileId> as a path parameter.
  2. Create parent parcels before nested parcels. WAN VPN must exist before you can create Ethernet Interface sub-parcels under it. Cellular Controller must exist before you can associate Band Select, Profile, or GPS sub-parcels.
  3. Use variables for values that differ per device (e.g., interface name, IP address, default gateway) to keep the profile reusable across sites.
  4. Idempotent updates: Use PUT with the full parcel body; partial patches are not supported.
  5. Schema validation: Use the schema endpoints to validate payloads before sending — GET /v1/feature-profile/sdwan/transport/<parcel-type>/schema?schemaType=post returns the JSON schema for the POST body of a given parcel type.
  6. Version compatibility: This specification targets SD-WAN Manager 20.18. Endpoint availability may differ on earlier releases.