@Perm module/level means.
List contracts
GET /contracts · requires contract_view (view)
Max 200.
Free-text search.
sale | leaseCustom contract type code, if configured.
in_progress | completedunpaid | partial | paidOne of
draft, extracted, review, approved, signed, active, completed, archived.asc | descGet a contract
GET /contracts/:id · requires contract_view (view)
Create a contract
POST /contracts · requires contract_edit (edit)
sale | leaseMinimum 1.
Minimum 0.
Minimum 0.
ISO date.
ISO date.
ISO date.
File reference.
in_progress | completedCustom field values keyed by field id.
Initial payment plan lines — see Add a payment line for the shape of
each entry.
See Add a term note.
{ label, value }[]Update a contract
PATCH /contracts/:id · requires contract_edit (edit)
Same fields as create, all optional.
Delete a contract
DELETE /contracts/:id · requires contract_delete (edit)
Bulk operations
| Endpoint | Body | Requires |
|---|---|---|
POST /contracts/bulk-delete | { ids: string[] } (max 1000) | contract_delete (edit) |
POST /contracts/bulk-attachment | { ids: string[], contractAttachment: string } | contract_edit (edit) |
Import and export
| Endpoint | Body | Requires |
|---|---|---|
POST /contracts/import | { rows?: CreateContractDto[], xlsxBase64?, sheetName?, csv? } — supply one of rows, xlsxBase64, or csv | contract_edit (edit) |
GET /contracts/export | Same query params as List, plus ids?: string[] and profile: "summary" | "full" | export (edit) |
POST /contracts/export | Same fields as the GET variant, in the body — use this when your filter/id list is too long for a query string | export (edit) |
Content-Type: text/csv; charset=utf-8.
OCR extraction
| Endpoint | Body | Requires |
|---|---|---|
POST /contracts/extract | { contractId?, fileRef?, fileName?, text? } | contract_edit (edit) |
PATCH /contracts/extractions/:runId/review | { fields: { fieldKey, status: "accepted" | "overridden" | "rejected", overrideValue? }[], applyToContract?, metadata? } | contract_edit (edit) |
Add a note
POST /contracts/:id/notes · requires contract_edit (edit)
Add a term note
POST /contracts/:id/terms · requires contract_edit (edit)
deposit | delivery | debug | payment | expiry | otherISO date.
Add a payment line
POST /contracts/:id/payments · requires payment_entry (edit)
ISO date.
Minimum 0.
pending | matched | exceptionFulfillment tasks
| Endpoint | Body | Requires |
|---|---|---|
POST /contracts/:id/fulfillment-tasks | { code, title, kind?, status?, ownerId?, dueDate?, acceptanceStatus?, attachment?, metadata? } | contract_edit (edit) |
PATCH /contracts/:id/fulfillment-tasks/:taskId | Same fields, all optional | contract_edit (edit) |
status is one of pending, in_progress, completed, accepted, blocked, canceled,
overdue.
Add an invoice record
POST /contracts/:id/invoices · requires invoice (edit)
Minimum 0.
draft | issued | void | red_letter