# Upgrade a case

> Moves a case to another version of its playbook: the playbook's current version, or the version named, an earlier one included.

Moves a case to another version of its playbook: the playbook's current version, or the `version` named, an earlier one included. Values carry over by node ID, and every node's state is read against the new version: a node added is open, a node removed leaves the structure while its entries stay, a node whose input reads another field is `stale`, and a value its input's new schema refuses is missing again. The cascade then runs what became runnable. With `wait: true` it answers once every execution queued, and every one those queue, has settled or parked. Each upgrade is recorded with what moved; the version the case is already on records nothing.

An execution running is `409 PLAYBOOK_CASE_BUSY`; one queued but not started settles `superseded`. An upgrade made with a credential the case's own work runs as is `403 PLAYBOOK_SELF_WRITE`.

  Request

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

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

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