Skip to main content

Drafting & Editing

Safe draft creation with validation, idempotency, and versioning.

C
Written by Catalin Fetean
Updated over 2 weeks ago

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 update

  • Server returns draft_<id> and status:"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


Did this answer your question?