Skip to content

Feature Profiles - CLI

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.


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.


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.


The CLI Feature Profile has a flat hierarchy with a single parcel type:

CLI Feature Profile (<profileId>)
└── Config ─────────────────────────────────── /config

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

POST /dataservice/v1/feature-profile/sdwan/cli/<profileId>/config
Content-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 parcelId is needed if you later want to update or delete this specific parcel.


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.


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}

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>

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 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 Authentication folder
  • use 01 - Get Auth Token request, hit send

Step2: Create CLI Profile

  • Go to Create CLI profile folder
  • use 01 - Create CLI Profile and 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 profile folder
  • use 02 - Create CLI Parcel - Config and hit send
  • This creates a Config parcel inside the CLI profile (containing a single CLI line: platform console serial)
  • Requires the cliProfileId from above

Step4: List existing CLI Profiles

  • Go to List profiles folder
  • 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 profiles folder
  • use Get CLI Profile details, hit send
  • read the response payload, it contains the Config parcel for the newly created CLI profile.

  1. Create the profile before any parcel. The Config parcel endpoint requires <profileId> as a path parameter.
  2. 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.
  3. One Config parcel per CLI profile is the typical pattern; group related CLI commands into a single parcel rather than splitting them.
  4. Idempotent updates: Use PUT with the full parcel body; partial patches are not supported.
  5. 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.
  6. Version compatibility: This specification targets SD-WAN Manager 20.18. Endpoint availability may differ on earlier releases.