Why this site exists
Cisco IOS XE ships thousands of YANG models that drive RESTCONF, NETCONF, gNMI, and model-driven telemetry. The official YANG repositories live at YangModels/yang and are the source of truth — but they are trees, not interactive API documentation.
This project compiles those models into OpenAPI 3.0 specifications
you can browse in Swagger UI, search, deep-link to, export to Postman or Bruno, and
use to generate request snippets in Python, curl, JavaScript, and Go. Every spec
ships with a realistic, RFC 7951-compliant example payload — no empty
{} stubs — so you can copy a body and use it against a real device.
By the numbers (26.1.1 default)
Live, cross-release counts: see the version comparison matrix and the machine-readable version-stats.json.
What you can do here
Browse interactive Swagger UI
Nine viewer categories (operational, native config, OpenConfig, IETF, MIB, RPC, events, config, other) each with their own searchable, deep-linkable Swagger UI.
Generate request snippets
The Code Generator emits Python (requests), curl, JavaScript (fetch), and Go templates for any path — with realistic example bodies pre-filled.
Diff models across releases
The tree compare tool shows side-by-side YANG trees with diff highlighting, and the accountability matrix tracks per-version coverage across 17.9.x → 26.1.1.
Author MDT telemetry filters
The telemetry builder converts OpenAPI paths into MDT xpath filters ready for YANG-Push subscriptions, with CSV export.
Export to Postman or Bruno
Per-category Postman collections (max ~23 MB per shard) and Bruno workspaces are pre-built for every release and downloadable from the Exports page.
Audit every YANG module
The accountability report maps every Cisco-IOS-XE YANG module to its spec, tree, and excluded reason — 100% accountability with CSV export.
Share permalinks
Every page deep-links via URL hash (release, search query, filters, module, spec, path). Copy-Share-Link buttons reproduce the exact view a teammate is looking at.
Use it offline
Service-worker caching, PWA install, full keyboard navigation (? for shortcuts), dark mode, and print-optimised stylesheets across every page.
Releases covered
| Release | Status | YangModels path | YANG modules |
|---|---|---|---|
| 26.1.1 default | Active — newest | vendor/cisco/xe/2611 | 742 |
| 17.18.1 | Active | vendor/cisco/xe/17181 | 715 |
| 17.15.x | Active | vendor/cisco/xe/17151 | 683 |
| 17.12.x | Active | vendor/cisco/xe/17121 | 637 |
| 17.9.x | Active — oldest supported | vendor/cisco/xe/1791 | 620 |
The header dropdown picks the active release; every page (Swagger, tree, accountability, telemetry, code generator) re-fetches data for that release with a single click.
How it’s built
- Static GitHub Pages site. No backend, no runtime build, no JavaScript framework. Vanilla JS, served from
'self'under a strict CSP (with explicit*.clarity.msallowlist entries for analytics). Core JS libraries are vendored locally; only Microsoft Clarity telemetry egresses outbound. See SELF_HOSTING.md. - Python generators (
generators/*.py) walk resolved YANG trees and emit OpenAPI 3.0 specs — one generator per model type (oper, native, openconfig, ietf, mib, rpc, events, cfg, other). - Realistic example payloads are injected by
scripts/enrich_v2_specs.pyfor every POST / PUT / PATCH body using RFC 7951 JSON encoding. - Live-device validation.
scripts/validate_examples_c9kv.pyexercises the generated examples against a real Catalyst 9000V (or any IOS XE 17.18.1+ device). - Schema tests. 143 unit tests in
tests/gate every manifest and every release artifact in CI before merge. - Swagger UI 5.31.0, fuse.js 7.0.0, chart.js 4.4.0 are vendored locally under
assets/vendor/with SHA-384 SRI verification — no CDN, no Google Fonts.
For repo conventions, contributor workflow, and a per-task “what to edit” table see CONTRIBUTING.md and AGENTS.md.
Open an issue, give feedback, or contribute
This is an open-source community project under the Cisco DevNet GitHub organization. Everything — the generators, the static site, the test suite, the live data — lives in one repository and accepts pull requests.
Report a bug or request a feature
Use GitHub Issues. Please include the affected release (e.g. 26.1.1), the page or spec URL, and (for spec issues) the YANG module name.
Contribute a fix or a new spec
The fastest path is the “add a missing operational spec” walkthrough in CONTRIBUTING.md. The big picture:
- Branch off
main:git checkout -b feat/<short-name> - Run the matching generator under
generators/ - Re-run
scripts/enrich_v2_specs.pyso write-op examples stay realistic - Re-run
scripts/generate_search_index.py - Run
python -m pytest tests -qand confirm 143/143 - Open a PR with before/after notes — screenshots help for UI changes
Discuss, ask questions, share use cases
For wider IOS XE programmability conversation:
- GitHub Discussions on this repo — design questions, “how do I…”, show-and-tell.
- Cisco DevNet — learning labs, sandboxes (incl. always-on Catalyst 9000V).
- YangModels/yang — the upstream source of every model this site ingests; issues with the YANG models themselves belong there.
Credits & licensing
- YANG models are authored by Cisco and the IETF / OpenConfig communities and published under their respective upstream licenses at YangModels/yang.
- This site’s code (generators, scripts, JS, CSS, HTML) is open source under the repository’s LICENSE.
- Swagger UI © SmartBear Software, used via jsDelivr CDN under the Apache 2.0 license.
- Branding. “Cisco”, “IOS XE”, “Catalyst”, and the Cisco logo are trademarks of Cisco Systems, Inc.
Not an official Cisco product. Issues with the YANG models or device behavior should go through Cisco TAC; issues with this site go through the repo’s GitHub Issues.