# Confirm a node of a case

> Approves or rejects a confirm node on the inputs the confirmer read. expected_revisions names the revision of each of the node's inputs as read…

Approves or rejects a `confirm` node on the inputs the confirmer read. `expected_revisions` names the revision of each of the node's inputs as read (`nodes[].inputs[].revision` on the case); an input that moved since is `409 PLAYBOOK_INPUT_CONFLICT`, `meta.conflicts` naming each, and nothing is written.

An approval writes a `confirmation` entry whose value is the node's input values: it is the node's output, and the nodes reading it run next. With `wait: true` it answers once every execution queued, and every one those queue, has settled or parked. A rejection writes a `rejection` entry with the `reason`: the node is `rejected`, and every node reading it is blocked, until its inputs change or it is approved. Another node, or a `confirm` node with a required input unset or reading a node that is not `done`, is `409 PLAYBOOK_NODE_NOT_CONFIRMABLE`. A confirmation made with a credential the case's own work runs as is `403 PLAYBOOK_SELF_WRITE`.

  Request

<ParamsDetails
  {...require("./confirm-playbook-case-node.ParamsDetails.json")}
>

<RequestSchema
  {...require("./confirm-playbook-case-node.RequestSchema.json")}
>

<StatusCodes
  {...require("./confirm-playbook-case-node.StatusCodes.json")}
>
