Cisco ISE

Security Basic auth Cisco ISE API reference

Read and declaratively manage network devices and endpoints in Cisco Identity Services Engine (ISE) from any Windmill script, flow or app, through the ERS API.

Set up in 3 steps

1

Enable ERS on ISE

In ISE, open Administration > System > Settings > API Settings and turn on ERS (Read/Write). Create an admin user in the ERS Admin group, or ERS Operator for read-only use. Use a dedicated service account rather than a person's account.

2

Add the resource

Open Resources, click Add a resource and pick Cisco ISE. Enter the address of the Primary Administration Node, the user and the password. Leave the ERS port empty to use 443, or set 9060 for ISE's dedicated ERS port.

3

Run your first script

Start with List network devices to check the connection. The upsert scripts default to dry run: they return the difference with ISE and change nothing until you set dry_run to false.

Scripts

Building blocks, if none of the projects above fit. Fork one, run it, or call it as a step inside your own flow.

Submit a script →

Resource type

The shape of the credential every script on this page expects.

FieldTypeRequiredWhat it is
base_urlstringYesHTTPS address of the ISE Primary Administration Node, e.g. https://ise.example.com. No trailing slash. The certificate must match this address and be trusted by the Windmill worker (DENO_CERT or SSL_CERT_FILE): a default self-signed certificate is rejected.
ers_portintegerNoPort of the ERS API. Leave empty to use the port in the base URL (443 by default). Set 9060 to use ISE's dedicated ERS port.
usernamestringYesISE admin user in the ERS Admin (read/write) or ERS Operator (read-only) group.
passwordstringYesPassword of the ISE admin user.

Questions

Do I need to disable TLS verification for a self-signed ISE certificate?

No. Add your private CA to the trust store of the Windmill workers that run these scripts.

What does an upsert do when the object does not exist?

It creates it. A new network device needs at least one IP address, and a new endpoint needs an identity group. Fields you leave empty are not managed and stay as they are in ISE.