Apply Account Plan
POST /desk/accounts/{account_id}/plan/apply
Persist the approved steps as a NEW plan version, and return the diff.
proposed_plan must be non-empty. Apply REPLACES the account’s steps, so
an empty proposal would blank an active plan; the app answers 400 rather
than doing it. Prior versions stay immutable and readable.
Authorizations
Parameters
Path Parameters
The account’s mashup company id (cb_account_plans.account_id).
The account’s mashup company id (cb_account_plans.account_id).
Header Parameters
Request Body required
Persist the approved steps as a NEW plan version.
proposed_plan must be non-empty: apply REPLACES the account’s steps, so
an empty proposal would blank the plan. The app answers 400 rather than
doing it, and this surface forwards that rather than second-guessing it.
object
One step in a plan: who to reach, on what channel, when, and why now.
extra="allow" mirrors the app’s own model, which is also open - the step
shape carries per-channel extras the desk adds as it learns new channels,
and a closed mirror would DROP them on the way in rather than pass them
through.
approval_status is closed because it reaches a real Literal inside the
handler: a free value would raise there and escape as a 500 instead of a
422 naming the four states.
object
Caller-assigned id, stable across versions.
What caused this (re)plan.
Responses
200
Successful Response
object
An open envelope for a plan, a context read or a committee result.
object
object
Whether there are more pages
Items per page
Current page number (1-indexed)
Total number of items
422
Validation Error