Real estate vertical
A dedicated workflow for property sales, built on top of the organization model. Every record here is org-scoped.
Properties
/real-estate/properties — the property register.
| Field | |
|---|---|
propertyType | LAND, FLAT, VILLA, COMMERCIAL |
title, address, surveyNumber, area, price | Core details |
status | AVAILABLE, BLOCKED, SOLD |
owner | The org user responsible |
| Images & documents | Uploaded per property, stored on disk or Cloudinary |
dynamicFields | Extra JSON attributes for locale- or org-specific data |
| Endpoint | |
|---|---|
POST /api/realestate/properties · PUT /{id} · DELETE /{id} | CRUD |
GET /api/realestate/properties · /status/{status} | List / filter |
POST /{id}/images · POST /{id}/documents | Attach files |
The document workflow
/real-estate/documents is the document centre. A RealEstateDocument is tied to a property and has a type spanning the sale lifecycle:
PROPERTY_INFO_FORM · SELLER_DECLARATION · BUYER_INTEREST_FORM · TOKEN_ADVANCE_RECEIPT · AGREEMENT_OF_SALE · LEGAL_VERIFICATION · LOAN_APPLICATION · SALE_DEED · POSSESSION_CERTIFICATE · BROKER_AGREEMENT
Its status moves DRAFT → SENT → VIEWED → SIGNED → COMPLETED (or REJECTED). Documents can be generated from a field spec, have a file attached, and be downloaded.
Templates
/real-estate/templates — per-org DocumentTemplate rows hold a fieldsJson spec per document type, with an optional default per type, so a common agreement is filled in rather than rebuilt each time.
Signing
/real-estate/sign/:documentId is an in-place signature pad. Each signature is an ESignature row — org, document, signer, a signingOrder, the stored signature image, and a status (PENDING → signed, or rejected via POST /api/realestate/signatures/{id}/reject). This is a lighter, internal signing path than the token-link e-signature flow — the signers are known org users, not external recipients.
Transactions
/real-estate/transactions tracks a sale end to end. A RealEstateTransaction links a property, a seller and a buyer, with a token amount and a status machine:
INTEREST_SHOWN → TOKEN_ADVANCE → AGREEMENT_GENERATED
→ DOCUMENTS_UPLOADED → SIGNATURES_COLLECTED → COMPLETED
(or CANCELLED at any point).