Audience: Authors, Reviewers, Developers
Prerequisites: Logged in; correct org selected
Outcomes: Stable drafts with traceable changes
UI — create a draft
Contracts → New contract → Template (or Blank) → Fill required fields → Save.
Autosave triggers on blur + interval; header shows Saved timestamp.
API — create/update (idempotent)
curl -X POST $API_BASE/api/contracts/draft -b cookies.txt \ -H 'Content-Type: application/json' \ -d '{ "draftId": null, "title": "Design SOW", "description": "Landing page redesign", "contractType": "service_agreement", "value": "1500.00", "currency": "USD", "terms": { "acceptance": "7 days", "warranty": "30 days" }, "paymentTerms": { "deposit": 50000, "milestones":[{"name":"Final","amount":100000}] }, "parties": ["[email protected]","[email protected]"] }'
Omit
draftId
to create; include to updateServer returns
draft_<id>
andstatus:"draft"
History & diff
Every save = new version
Compare any two versions; clause-level add/remove highlights
Retrieve & delete
# Get a draft curl -s $API_BASE/api/contracts/draft/draft_123 -b cookies.txt # List drafts curl -s $API_BASE/api/contract-drafts -b cookies.txt # Soft delete curl -X DELETE $API_BASE/api/contract-drafts/draft_123 -b cookies.txt
Anti-patterns
Copying clauses into free-text comments (not versioned)
Editing after sending for signature (use Amendment or revert to draft)
Edge cases
Missing party ⇒
400 VALIDATION_ERROR
Internal buyer from another org without partner link ⇒
403
QA checklist
Autosave increments version; diff shows change
Soft-deleted drafts hidden from default list
Runbook: “Draft changes disappeared”
Check version list; restore prior version
Confirm autosave timestamp and network status