Cisco WLC 9800 API

Catalyst 9800 WLC supports RESTCONF (YANG models) and CLI-over-SSH.

Overview

RESTCONF URL

https://wlc-01.inside.domusdigitalis.dev/restconf/data/

Auth

Basic Auth

Format

JSON (application/yang-data+json)

CLI

SSH with netapi wlc run or netapi wlc config

RESTCONF Endpoints

Resource Path

Wireless Clients

Cisco-IOS-XE-wireless-client-oper:client-oper-data

WLANs

Cisco-IOS-XE-wireless-wlan-cfg:wlan-cfg-data

AP Join Info

Cisco-IOS-XE-wireless-ap-oper:ap-oper-data

RF Profiles

Cisco-IOS-XE-wireless-rf-cfg:rf-cfg-data

Examples

Get Wireless Clients

# netapi
netapi wlc get-clients

# curl (RESTCONF)
curl -ks -u "$WLC_USER:$WLC_PASS" \
  -H "Accept: application/yang-data+json" \
  "https://$WLC_HOST/restconf/data/Cisco-IOS-XE-wireless-client-oper:client-oper-data/common-oper-data" | jq

Run Show Command

# netapi
netapi wlc run "show wlan summary"
netapi wlc run "show ap summary"
netapi wlc run "show wireless client summary"

# SSH direct
ssh admin@wlc-01 "show wlan summary"

Configuration Mode

# netapi - multiple commands, auto-saves
netapi wlc config "wlan MySSID 5 MySSID" "shutdown" --save

# Without save
netapi wlc config "wlan MySSID 5 MySSID" "no shutdown"

Get WLAN List via RESTCONF

curl -ks -u "$WLC_USER:$WLC_PASS" \
  -H "Accept: application/yang-data+json" \
  "https://$WLC_HOST/restconf/data/Cisco-IOS-XE-wireless-wlan-cfg:wlan-cfg-data/wlan-cfg-entries/wlan-cfg-entry" \
  | jq '.["Cisco-IOS-XE-wireless-wlan-cfg:wlan-cfg-entry"][] | {id: .["wlan-id"], name: .["profile-name"]}'

RESTCONF Paths

# Key RESTCONF paths:
# Cisco-IOS-XE-wireless-client-oper:client-oper-data - Wireless clients
# Cisco-IOS-XE-wireless-wlan-cfg:wlan-cfg-data - WLAN configuration
# Cisco-IOS-XE-wireless-ap-oper:ap-oper-data - AP operational data
# Cisco-IOS-XE-wireless-rf-cfg:rf-cfg-data - RF profiles

Environment Setup

# Load from dsec
dsource d000 dev/network

# Or manually
export WLC_HOST="wlc-01.inside.domusdigitalis.dev"
export WLC_USER="admin"
export WLC_PASS="<from gopass>"

Learnings

WLC API Gotchas
  • RESTCONF uses YANG models - paths are model-specific

  • JSON content type: application/yang-data+json

  • CLI-over-SSH simpler for ad-hoc commands

  • netapi wlc config handles config mode and optional save

  • RESTCONF read-only for many operational paths