axltoolkit¶
A complete Python SDK for Cisco Unified Communications Manager (UCM).
axltoolkit gives you Pythonic, fully-typed access to every Cisco UCM administration and serviceability API from a single package:
| Client | API | What it does |
|---|---|---|
AXLClient |
AXL (Thick + Thin) | CRUD for 1,000+ configuration objects — phones, users, partitions, CSS, route patterns, SIP trunks, and more |
RISPortClient |
RISPort70 | Real-time device registration status and CTI information |
PerfMonClient |
PerfMon | Session-based and one-shot performance counter collection |
ServiceabilityClient |
ControlCenter | UCM service management — start, stop, restart, status |
LogCollectionClient |
LogCollection | Log file listing and retrieval |
DimeGetFileClient |
DimeGetFile | Direct file download from UCM servers |
PAWSClient |
PAWS | Platform hardware, software versions, cluster topology |
WebdialerClient |
Webdialer | Click-to-call functionality |
Quick Start¶
from axltoolkit import AXLClient
client = AXLClient(
username="axladmin",
password="secret",
server_ip="ucm-pub.example.com",
version="15.0",
tls_verify=True,
)
# Thick AXL — get a user
user = client.get_user(userid="jsmith")
print(user["return"]["user"]["firstName"])
# Thick AXL — list phones
phones = client.list_phones(name="SEP%")
# Thin AXL — direct SQL query
result = client.sql_query("SELECT name FROM device WHERE name LIKE 'SEP%'")
for row in result.get("rows", []):
print(row["name"])
Installation¶
Install from source:
For development (tests + linting):
For building the docs locally:
Key Features¶
- Full AXL coverage — All 1,068 AXL WSDL operations wrapped as snake_case methods
- Seven SXML clients — RISPort, PerfMon, Serviceability, Log Collection, PAWS, and Webdialer
- Fluent builders —
PhoneBuilder,SipTrunkBuilder,CssBuilderfor complex payloads - Typed models — Auto-generated
TypedDictclasses for everyadd_*andupdate_*payload, plus 170Enumtypes for constrained fields — full IDE auto-completion and static type checking - Security first — TLS verification by default, SQL injection protection, credential redaction in debug output
- Session caching — JSESSIONID reuse for better performance
- Retry logic — Automatic exponential back-off on transient errors
- Backward compatible — Legacy
AxlToolkitclass names still work (withDeprecationWarning)
Requirements¶
- Python 3.10+
- Access to a Cisco UCM server with AXL and/or SXML APIs enabled
- An AXL-enabled application user (for AXL operations)
- A platform admin user (for PAWS, Serviceability, Log Collection)
License¶
Cisco Sample Code License — see the LICENSE section in the repository.