contracts

Record Contract Term Decision

Record the term's renewal decision. Opens no new term.

Recording is intent; POST .../decision/action is the act. Until then the term keeps its dates and stays the contract's current term with the decision on show, in front of the people who have to carry it out.

Deciding does not silence the term's reminders — that is a separate action.

post/contracts/{contract_id}/terms/{term_id}/decision

Path parameters

contract_idstring uuid required
term_idstring uuid required

Request body

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

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.

reasonstring nullable

Response

Successful Response

contract_idstring uuid required
company_idstring uuid required
vendor_idstring uuid nullable
titlestring required
status'draft' | 'active' | 'expired' | 'terminated' required

DRAFT and TERMINATED are human judgments; the derivation in recompute_contract_status overwrites neither.

effective_datestring date nullable
expiration_datestring date nullable
auto_renewsboolean nullable
obligationsstring[]
latest_extraction_run_idstring uuid nullable
latest_summary_run_idstring uuid nullable
summary_run_status'pending' | 'running' | 'completed' | 'failed'
base_file_idstring uuid nullable
base_filenamestring nullable
base_upload_idstring uuid nullable
createdstring date-time nullable
modifiedstring date-time nullable

Changes

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