Feature Profiles - CLI
Overview
Section titled “Overview”In Cisco SD-WAN Manager (vManage) UX 2.0, configuration is modular:
| Concept | Description |
|---|---|
| CLI Feature Profile | A container (envelope) used to inject raw IOS-XE / SD-WAN CLI commands into a device configuration. Useful for features not yet exposed by the structured (parcel-based) profiles. |
| Feature Parcel | An individual, typed block of configuration that lives inside a CLI Feature Profile. The CLI profile exposes a single parcel type: Config. |
You must create the profile first, then attach a Config parcel to it.
The CLI profile is the escape hatch of UX 2.0 — use it sparingly, and prefer structured System / Transport / Service parcels whenever they exist.
Workflow Overview
Section titled “Workflow Overview”STEP 1: Create a CLI Feature Profile:
POST /v1/feature-profile/sdwan/cli- Returns a CLI Profile Identifier (
profileId)
STEP 2: Create a Config parcel using the returned profileId:
POST /v1/feature-profile/sdwan/cli/<profileId>/config- Returns a Parcel Identifier (
parcelId)
Then the newly created CLI Feature Profile can be used in a Configuration Group.
Create CLI Feature Profile
Section titled “Create CLI Feature Profile”POST /v1/feature-profile/sdwan/cli
Request Body
{ "name": "TF_SPOKE_CLI", "description": "Terraform - CLI Profile"}Response (HTTP 200)
{ "id": "aaaa-bbbb-cccc-dddd"}Save the returned UUID — this is referred to as
<profileId>in every subsequent parcel call.
Parcel Hierarchy
Section titled “Parcel Hierarchy”The CLI Feature Profile has a flat hierarchy with a single parcel type:
CLI Feature Profile (<profileId>)│└── Config ─────────────────────────────────── /configConfig Parcel
Section titled “Config Parcel”With the profileId in hand, create the Config parcel.
| Item | Value |
|---|---|
| Method | POST |
| Endpoint pattern | /v1/feature-profile/sdwan/cli/<profileId>/config |
| Content-Type | application/json |
Parcel Quick-Reference Table:
| # | Parcel Type | Endpoint Suffix | Description / Key Fields |
|---|---|---|---|
| 1 | Config | /config |
Raw CLI configuration block — config field contains the literal IOS-XE / SD-WAN CLI commands as a string |
Example — Create a Config Parcel
Section titled “Example — Create a Config Parcel”POST /dataservice/v1/feature-profile/sdwan/cli/<profileId>/configContent-Type: application/json{ "name": "edge_cli", "description": "CLI add-on for serial console", "data": { "config": "platform console serial" }}Response (HTTP 200)
{ "parcelId": "1111-2222-3333-4444"}The returned
parcelIdis needed if you later want to update or delete this specific parcel.
Notes on the config Field
Section titled “Notes on the config Field”Unlike System / Transport / Service parcels, the Config parcel does not use the discriminated optionType value wrapper for its main payload. The config field is a plain string containing the literal CLI commands that will be injected into the device configuration.
Validation of the CLI content is performed at deploy time, not at parcel creation time. Syntactically invalid commands will be flagged when the configuration is pushed to a device.
Manage Parcels
Section titled “Manage Parcels”| Action | Method & Endpoint |
|---|---|
| Read All Config Parcels | GET /v1/feature-profile/sdwan/cli/<profileId>/config |
| Read a Single Parcel | GET /v1/feature-profile/sdwan/cli/<profileId>/config/{parcelId} |
| Update a Parcel (send full payload) | PUT /v1/feature-profile/sdwan/cli/<profileId>/config/{parcelId} |
| Delete a Parcel | DELETE /v1/feature-profile/sdwan/cli/<profileId>/config/{parcelId} |
Manage Profile
Section titled “Manage Profile”| Action | Method & Endpoint |
|---|---|
| List all CLI Profiles | GET /v1/feature-profile/sdwan/cli |
| Get one profile | GET /v1/feature-profile/sdwan/cli/<profileId> |
| Update profile metadata | PUT /v1/feature-profile/sdwan/cli/<profileId> |
| Delete a profile | DELETE /v1/feature-profile/sdwan/cli/<profileId> |
HTTP Response Codes
Section titled “HTTP Response Codes”| 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 |
Practice with Bruno
Section titled “Practice with Bruno”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 CLI 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 {{cliProfileId}} 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.
Step1: Make sure you are authenticated with SD-WAN Manager:
- go to
Authenticationfolder - use
01 - Get Auth Tokenrequest, hit send
Step2: Create CLI Profile
- Go to
Create CLI profilefolder - use
01 - Create CLI Profileand hit send - This creates a CLI Profile
- Response payload contains the profile-id
- The post-response script automatically saves the value to the environment variable
cliProfileId
Step3: Create Config parcel
- Go to
Create CLI profilefolder - use
02 - Create CLI Parcel - Configand hit send - This creates a Config parcel inside the CLI profile (containing a single CLI line:
platform console serial) - Requires the
cliProfileIdfrom above
Step4: List existing CLI Profiles
- Go to
List profilesfolder - use
List all CLI Profiles, hit send - read the response payload, it contains all CLI profiles created on Manager
Step5: Get newly created CLI Profile details
- Go to
List profilesfolder - use
Get CLI Profile details, hit send - read the response payload, it contains the Config parcel for the newly created CLI profile.
Notes & Best Practices
Section titled “Notes & Best Practices”- Create the profile before any parcel. The Config parcel endpoint requires
<profileId>as a path parameter. - Use CLI sparingly. Prefer structured System / Transport / Service parcels whenever they expose the feature you need. CLI add-on configuration is harder to validate, less portable across releases, and bypasses Manager’s schema-driven UI.
- One Config parcel per CLI profile is the typical pattern; group related CLI commands into a single parcel rather than splitting them.
- Idempotent updates: Use
PUTwith the full parcel body; partial patches are not supported. - CLI is appended, not merged. Lines in the Config parcel are added on top of the structured configuration generated from other profiles. Be careful not to introduce conflicts with what System / Transport / Service parcels already produce.
- Version compatibility: This specification targets SD-WAN Manager 20.18. Endpoint availability may differ on earlier releases.