ENAUTO 300-435 study materials
ENAUTO 300-435 study resources

ENAUTO 300-435: Cisco DNA Center

ENAUTO 300-435 · Work through your exam, one topic at a time.

All guide sections

Cisco DNA Center

Domain 4, Cisco DNA Center, covers the controller's intent API: authenticating, inventorying devices, running show commands at scale, deploying templates, imaging, plug-and-play onboarding, and polling asynchronous tasks. The exam mostly asks which endpoint family applies and which step comes next in a workflow.

Authentication and base paths

DNA Center splits its API. The token comes from POST https://{dnac}/dna/system/api/v1/auth/token using HTTP Basic credentials; the reply carries Token, which later calls send as X-Auth-Token. Configuration and monitoring endpoints sit under /dna/intent/api/v1/. Tokens expire, so a long-running script must catch 401 and re-authenticate instead of crashing.

Endpoint families

  • Inventory: /network-device, /network-device/{id}, /network-device/count.
  • Sites and health: /site, /site-health, /sites.
  • Templates: /template-programmer/project, /template-programmer/template, /template-programmer/template/version/{id}, POST /template-programmer/template/deploy.
  • PnP: /onboarding/pnp-device, /pnp-global-setting.
  • Images: /image/importation, then activation.
  • Command Runner: POST /network-device-poller/cli/read-request with commands and deviceUuids.

The asynchronous pattern

Most mutating calls return a task envelope such as {"response": {"taskId": "..."}, "version": "1.0"}. Poll /dna/intent/api/v1/task/{taskId} until endTime is present and isError is false. Command Runner adds a hop, because the task result carries a fileId that you fetch from /file/{fileId}.

Templates

Templates use Apache Velocity: $__device.hostname, $__siteName, $__interface plus custom variables resolved at deploy time. A template belongs to a project, has versions, and deployment targets a version ID rather than the template name.

Worked example

Push a new NTP server to 60 devices. Get a token; GET /template-programmer/template?name=BaseConfig for the template; GET /template-programmer/template/version/{templateId} for the current version and its variables; then POST /template-programmer/template/deploy with the version templateId, forcePush: true, and targetInfo entries carrying each device id, type: "MANAGED_DEVICE_UUID" and params. Capture the taskId and poll it. Reasoning: the deploy is asynchronous, so acceptance is not completion, and the unversioned ID fails validation.

Traps

  • Calling the token endpoint under /dna/intent/api/v1/.
  • Deploying with the template name or an unversioned ID.
  • Using a PnP device ID where a network-device UUID is required.
  • Treating deploy acceptance as completion.
  • Ignoring 401 on hour-long runs instead of refreshing the token.