Response envelope
Every action-style response follows a consistent shape. On success:businessRuleWarnings (when a rule warned but allowed the
action) and approvalRequested (when an approval policy intercepted a validation).
Always branch on errorCode, not on the error text — the text is for logs and may
change or be localized; the code is stable.
HTTP status mapping
Errors are categorized, and the category determines the HTTP status (with a few per-code overrides):
A notable override:
PLAN_ALREADY_VALIDATED returns 409 Conflict rather than 422.
Common error codes
There are over a hundred specific codes (validation, plan/item operations, file upload,
API tokens, …). Each endpoint documents the ones it can return in the API Reference
tab.

