contracts

List Contract Term Events

The contract's decision log — every record, undo and actioning.

One stream across the whole term chain rather than a route per term: it reads as the contract's activity, with term_number marking the chapters.

Read-only, gated by router auth only, like /change-set.

get/contracts/{contract_id}/term-events

Path parameters

contract_idstring uuid required

Response

Successful Response

event_idstring uuid required
term_idstring uuid required
term_numberinteger required
action'decision_recorded' | 'decision_cleared' | 'actioning_recorded' | 'actioning_undone' required

What happened on a term, for the append-only event log.

The term carries only the current decision, so without this a correction is indistinguishable from never having decided.

The prefix names what the event happened to, because the term records two facts that can each be taken back: the decision and the actioning of it. DECISION_CLEARED leaves the term with no decision; ACTIONING_UNDONE leaves the decision where it was and withdraws only the claim it was done.

decision'renew' | 'renegotiate' | 'terminate' | 'replace'

What a user decided to do about a term coming up for renewal.

A fixed set, not a per-company configurable one: it is what lets the email, the API and the state machine name the same thing without snapshotting a label onto every term.

Two behavior pairs (RENEW/RENEGOTIATE, TERMINATE/REPLACE) — same effect, different record.

decision_labelstring nullable
decision_reasonstring nullable
decision_source'user' | 'backfill'

Who recorded the decision.

No SYSTEM_* member, deliberately: nothing but a person records a decision. A term that runs past its end date undecided stays OVERDUE and gets surfaced rather than auto-renewed on the customer's behalf — an invented decision is indistinguishable from one they made, and the renewal history is what customers audit.

notestring nullable
actor_labelstring nullable
acted_atstring date-time required

Changes

No recorded changes to this endpoint across all 1 revision of this API.