ERS API Reference

External RESTful Services (ERS) - The primary configuration API for ISE resources.

Overview

Port 9060

Protocol

HTTPS

Authentication

Basic Auth

Content Types

application/json, application/xml

Base URL

<ise-pan>:9060/ers/config/

ERS must be enabled in ISE:
Administration > System > Settings > ERS Settings > Enable ERS for Read/Write

Setup

# Load credentials
dsource d000 dev/network

# Verify connectivity
curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -H "Accept: application/json" \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint?size=1" | jq '.SearchResult.total'

Resources

Resource Endpoint Operations

Endpoints

/ers/config/endpoint

CRUD, Bulk, Search

Network Devices

/ers/config/networkdevice

CRUD, Search

Endpoint Groups

/ers/config/endpointgroup

CRUD

Identity Groups

/ers/config/identitygroup

Read

Authorization Profiles

/ers/config/authorizationprofile

CRUD

DACLs

/ers/config/downloadableacl

CRUD

Security Groups (SGT)

/ers/config/sgt

CRUD

Profiler Profiles

/ers/config/profilerprofile

Read (889 built-in)

ANC Policies

/ers/config/ancpolicy

CRUD, Apply/Clear

Common Patterns

List All (Paginated)

curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -H "Accept: application/json" \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint?page=1&size=100"

Get by ID

curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -H "Accept: application/json" \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint/${ENDPOINT_ID}"

Search with Filter

# Filter by MAC
curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -H "Accept: application/json" \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint?filter=mac.EQ.AA:BB:CC:DD:EE:FF"

# Filter operators: EQ, NEQ, CONTAINS, STARTSWITH, ENDSWITH

Create Resource

curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '@payload.json' \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint"

Update Resource

curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -X PUT \
  -d '@payload.json' \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint/${ENDPOINT_ID}"

Delete Resource

curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -X DELETE \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint/${ENDPOINT_ID}"

Filter Syntax

Operator Syntax Example

Equals

field.EQ.value

mac.EQ.AA:BB:CC:DD:EE:FF

Not Equals

field.NEQ.value

staticGroupAssignment.NEQ.true

Contains

field.CONTAINS.value

name.CONTAINS.printer

Starts With

field.STARTSWITH.value

mac.STARTSWITH.AA:BB

Ends With

field.ENDSWITH.value

name.ENDSWITH.-lab

Multiple filters (AND):

"?filter=mac.STARTSWITH.AA:BB&filter=staticGroupAssignment.EQ.true"

Bulk Operations

Bulk Create

curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{
    "ERSBulkRequest": {
      "operationType": "create",
      "resourceMediaType": "application/json",
      "resources": [
        {"mac": "AA:BB:CC:DD:EE:01", "groupId": "..."},
        {"mac": "AA:BB:CC:DD:EE:02", "groupId": "..."}
      ]
    }
  }' \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint/bulk/submit"

Check Bulk Job Status

curl -sk -u "${ISE_API_USER}:${ISE_API_PASS}" \
  -H "Accept: application/json" \
  "https://${ISE_PAN_FQDN}:9060/ers/config/endpoint/bulk/${BULK_ID}"

Response Structure

Success Response (List)
{
  "SearchResult": {
    "total": 1250,
    "resources": [
      {
        "id": "abc-123-def",
        "name": "AA:BB:CC:DD:EE:FF",
        "link": {
          "rel": "self",
          "href": "https://ise:9060/ers/config/endpoint/abc-123-def",
          "type": "application/json"
        }
      }
    ]
  }
}
Error Response
{
  "ERSResponse": {
    "operation": "GET-endpoint",
    "messages": [
      {
        "title": "Resource not found",
        "type": "ERROR",
        "code": "CRUD operation exception"
      }
    ],
    "link": {
      "rel": "related",
      "href": "https://ise:9060/ers/config/endpoint",
      "type": "application/json"
    }
  }
}

netapi CLI Equivalent

Every ERS operation has a netapi CLI equivalent:

curl netapi

GET /ers/config/endpoint

netapi ise endpoints list

GET /ers/config/endpoint?filter=mac.EQ.XX

netapi ise endpoints get --mac XX

POST /ers/config/endpoint

netapi ise endpoints create --mac XX

DELETE /ers/config/endpoint/<id>

netapi ise endpoints delete --mac XX