Units API
Manage your syndicate's units (apartments, parking spots, storage) via the API.
Overview#
The Units module manages private spaces within the syndicate: apartments, parking spots, storage rooms, commercial units, etc.
| MCP tool | REST method | Scope |
|---|---|---|
list_units | GET /api/units | read:co-owners |
create_unit | POST /api/units | write:co-owners |
update_unit | PATCH /api/units/:id | write:co-owners |
delete_unit | DELETE /api/units/:id | write:co-owners |
Unit object#
{
id: string; // UUID
number: string; // "101", "P-42", "R-12"
type: "apartment" | "parking" | "storage" | "commercial";
floor: number | null;
areaSqFt: number | null; // Area in ft²
areaSqM: number | null; // Area in m²
bedrooms: number | null; // For apartments
bathrooms: number | null;
fractionPercent: number; // Ownership share (0-100)
linkedUnits: string[]; // UUID[] — linked parking/storage
cadastralLot: string | null; // Quebec cadastral lot number
createdAt: string;
updatedAt: string;
}
Parking and storage units linked to a primary apartment have the apartment's ID in linkedUnits. Useful for grouping during billing.
list_units#
Parameters#
| Parameter | Type | Description |
|---|---|---|
type | string | Filter by type (apartment, parking, …) |
floor | number | Filter by floor |
search | string | Search by number or cadastral lot |
includeLinked | boolean | Include linked units in the response |
Example#
{
"name": "list_units",
"arguments": {
"type": "apartment",
"includeLinked": true
}
}
create_unit#
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
number | string | ✅ | Unique within the syndicate |
type | string | ✅ | One of the 4 types |
floor | number | — | Floor (e.g. 3, 0 for ground, -1 for basement) |
areaSqFt | number | — | Area in square feet |
bedrooms | number | — | Bedroom count |
bathrooms | number | — | Bathroom count |
fractionPercent | number |
Example#
{
"name": "create_unit",
"arguments": {
"number": "302",
"type": "apartment",
"floor": 3,
"areaSqFt": 850,
"bedrooms": 2,
"bathrooms": 1,
"fractionPercent": 2.5
}
}
Linked units#
To link a parking spot to an apartment:
{
"name": "update_unit",
"arguments": {
"id": "parking-uuid",
"linkedUnits": ["apartment-uuid"]
}
}
A parking spot can be linked to only one apartment at a time. An apartment can have multiple linked parking spots/storage units.
Fraction consistency#
The sum of fractionPercent across all units must equal 100% (declaration of co-ownership requirement). Syndic+ enforces this:
- On read:
GET /api/declaration/fraction-sumreturns the current sum - On write: the API refuses changes that would push the sum outside 99.5% – 100.5%
To fix an imbalance, use the Declaration → Fractions module, which offers proportional rebalancing.