pxGrid API Reference
pxGrid 2.0 - Real-time publish/subscribe API for session data, TrustSec, and Adaptive Network Control.
Overview
| Port | 8910 |
|---|---|
Protocol |
HTTPS + WebSocket |
Authentication |
Mutual TLS (client certificate) |
Content Type |
|
Base URL |
|
pxGrid requires:
|
Certificate Setup
Control APIs
Activate Account
curl -sk \
--cert "${ISE_MTLS_CERT}" \
--key "${ISE_MTLS_KEY}" \
-H "Content-Type: application/json" \
-X POST \
-d "{\"accountName\": \"${ISE_PXGRID_CLIENT}\"}" \
"https://${ISE_PAN_FQDN}:8910/pxgrid/control/AccountActivate"
{
"accountState": "ENABLED",
"version": "2.0.0.13"
}
Service Lookup
curl -sk \
--cert "${ISE_MTLS_CERT}" \
--key "${ISE_MTLS_KEY}" \
-H "Content-Type: application/json" \
-X POST \
-d '{"name": "com.cisco.ise.session"}' \
"https://${ISE_PAN_FQDN}:8910/pxgrid/control/ServiceLookup"
{
"services": [
{
"name": "com.cisco.ise.session",
"nodeName": "ise-01",
"properties": {
"restBaseUrl": "https://ise-01:8910/pxgrid/ise/radius",
"wsPubsubService": "com.cisco.ise.pubsub",
"sessionTopic": "/topic/com.cisco.ise.session"
}
}
]
}
Available Services
| Service | Description |
|---|---|
|
Active sessions, session directory |
|
Security groups, SGACLs, matrices |
|
Adaptive Network Control policies |
|
RADIUS failure statistics |
|
System health, performance |
|
MDM/EMM integration |
|
Profiler data |
Session Directory
Get All Sessions
# First get the service URL
SERVICE_URL="https://ise-01:8910/pxgrid/ise/radius"
curl -sk \
--cert "${ISE_MTLS_CERT}" \
--key "${ISE_MTLS_KEY}" \
-H "Content-Type: application/json" \
-X POST \
-d '{}' \
"${SERVICE_URL}/getSessions"
{
"sessions": [
{
"timestamp": "2026-02-10T22:30:00.000Z",
"state": "AUTHENTICATED",
"userName": "evanusmodestus",
"callingStationId": "28:92:00:89:EF:77",
"ipAddresses": ["10.50.10.45"],
"nasIpAddress": "10.50.1.2",
"nasPortId": "GigabitEthernet1/0/1",
"auditSessionId": "0A32010200001234",
"adUserDomainName": "inside.domusdigitalis.dev",
"selectedAuthzProfiles": ["PermitAccess"]
}
]
}
ANC Operations
Get ANC Policies
ANC_URL="https://ise-01:8910/pxgrid/anc/config"
curl -sk \
--cert "${ISE_MTLS_CERT}" \
--key "${ISE_MTLS_KEY}" \
-H "Content-Type: application/json" \
-X POST \
-d '{}' \
"${ANC_URL}/getPolicies"
TrustSec
WebSocket Subscription
Session Topic Subscription
import asyncio
import websockets
import ssl
import json
async def subscribe_sessions():
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ssl_context.load_cert_chain(
certfile="/path/to/client.pem",
keyfile="/path/to/client.key"
)
ssl_context.load_verify_locations("/path/to/ise-ca.pem")
uri = "wss://ise-01:8910/pxgrid/ise/pubsub"
async with websockets.connect(uri, ssl=ssl_context) as ws:
# Subscribe to session topic
subscribe_msg = {
"sequence": 1,
"type": "SUBSCRIBE",
"topic": "/topic/com.cisco.ise.session"
}
await ws.send(json.dumps(subscribe_msg))
# Receive messages
while True:
message = await ws.recv()
data = json.loads(message)
print(f"Session event: {data}")
asyncio.run(subscribe_sessions())
netapi CLI Equivalent
| curl | netapi |
|---|---|
Activate client |
|
Test connection |
|
List services |
|
Get sessions |
|
Get session by MAC |
|
Apply ANC |
|