Tenant API direct-mutation endpoints for subledger rows — reject and per-cell edit. Reserved for ops / legacy callers; HITL UI flows should go via Temporal signals.
Use this file to discover all available pages before exploring further.
Two direct HTTP endpoints for subledger row mutations. They exist for ops tooling and legacy callers; interactive Tenant UI edits for HITL tables should go through workflow signals (POST /tasks/:taskId/row-action) so Temporal stays the source of truth — see UI and Temporal signals.:ledger is the registered subledger name (expenses, journal_proposals, runbook-owned types). :rowId is a UUID — the controller validates this with a regex check before dispatching.
Apply the per-ledger reject rule. For expenses, only rows in NEEDS_ATTENTION are rejectable via this endpoint (see expenses_mutations.can_reject). Other types may carry their own reject rules.Path params
Update one editable cell on a row. The set of editable fields is per-ledger — for expenses, see EditableExpenseField. Non-editable fields return 400 INVALID_FIELD.Body — UpdateSubledgerCellDto:
{ "field": "amount_gross", "value": "12.50"}
Field
Type
Required
Notes
field
string
Yes
Column key. Per-ledger allow-list; coercion happens in the per-ledger adapter.
Ops tooling fixing a stuck row outside a workflow run
Tenant UI inline edit / reject during a HITL review step
Migration / backfill scripts
Anything that needs Temporal to be the system of record
One-off forensic correction
All standard runbook flows
Direct mutations bypass the workflow — replay / idempotency / step lifecycle don’t see them. Prefer the row-action signal whenever a workflow is alive for the row.