Project add-ons
A project's public page is assembled from four add-ons. Each one is independent, each is off until you turn it on, and each is fully manageable over the API — so a project can be set up end to end without anyone opening the dashboard.
Add-on paths use the plural /estates/{estateId}/…, while the project resource
itself is at /estate/{id}. That is a quirk of the routing, not a typo.
Every write below accepts an organization API key. A key may only touch projects
in the organization it was issued for — anything else returns 404. Reads
(GET) on all four add-ons are public, because that is what the published
viewer calls.
For the rest of this page:
The shape of every add-on
All four follow the same three moves, so once you have automated one the others read the same way:
- Enable it.
PUTthe base path with{ "enabled": true }. This creates the add-on record on first call and updates it after that, so it is safe to repeat. - Add content.
POSTchildren (sections, items, groups, points of interest);PATCHto edit one;DELETEto remove one. - Order it.
PUT …/orderwithorderedIds— the complete list of ids in the order you want. Partial lists are rejected.
Reordering is deliberately all-or-nothing: sending every id makes the result independent of what the list looked like before, which is what you want from a job that may run twice.
Investment
Rich-text sections, each of which can carry files.
Turn it on:
Add a section. description is HTML (the dashboard writes it with a rich-text
editor); it is sanitised server-side. Omit order and the section is appended.
The response carries the new id. Edit with PATCH (send only the fields you
are changing) and remove with DELETE:
Reorder the whole set:
Files on a section
First create an asset (see Assets & images), then attach its id:
PATCH …/files/{fileId} changes the label or order, DELETE …/files/{fileId}
detaches it, and PUT …/files/order reorders the section's files. Documents,
images, video, archives and CAD files are accepted, up to 50 MB each.
Gallery
Images and video, either loose or grouped into sections.
Sections are optional — an item with no sectionId renders ungrouped.
The gallery only accepts image and video assets; a PDF is rejected with 400.
An asset from another organization is rejected with 404.
Three order endpoints, because there are three orderable levels:
Map
One configuration object plus a flat list of points of interest.
tileStyle is one of VOYAGER, VOYAGER_NOLABELS, POSITRON, GRAY_CANVAS,
DARK_MATTER, OSM, SATELLITE, HUMANITARIAN. defaultViewLat /
defaultViewLng set the opening viewport when it should differ from the
project pin, and logoAssetId overlays your logo.
Points of interest:
category is one of TRANSIT, SHOPPING, EDUCATION, HEALTHCARE, FOOD,
PARKS, ENTERTAINMENT, SERVICES, LANDMARK, OTHER. Distance from the
project is computed for you; set customDistanceLabel only to override the
wording.
DELETE /estates/{estateId}/map removes the whole configuration, points of
interest included.
Downloads
Documents in named groups. Every item belongs to a group, so create the group first.
Groups reorder with PUT …/downloads/groups/order, items within a group with
PUT …/downloads/groups/{groupId}/items/order.
Setting up a project end to end
The full sequence for a new project, all of it over the API:
POST /estate— create the project.POST /building,POST /apartment— add inventory.POST /asset/upload— upload renders, brochures, floor plans.PUT /estates/{id}/investment|gallery|map|downloads— enable the add-ons you want and fill them from the assets above.- Publish the project from the dashboard, or connect a custom domain.
Read the assembled result back at any time with the public GET on each add-on
— the same call the viewer makes.
Errors
See Errors for the response body shape.