How to build: Onboarding
implemented /extranet/onboarding, /extranet/onboarding/[module]/setup.
Wizard: property type → location → details → amenities → photos → first room / rate → payment → policy → publish.
Winner for the property row: Middleware Backend (live). Photos: file-manager (live).
Middleware Backend · winner · live
POST https://middleware-dev.bookdirect.live/api/v1/nellalink/properties
http
Authorization: Bearer {partner_access_token}
Content-Type: application/jsonjson
{
"name": "ABC Hotel Lagos",
"description": "A 10-room boutique hotel in Victoria Island.",
"propertyType": "hotel",
"address": "12 Admiralty Way, Victoria Island",
"city": "Lagos",
"state": "Lagos",
"country": "Nigeria",
"latitude": 6.4281,
"longitude": 3.4219,
"amenities": ["swimming_pool", "free_parking"],
"images": ["https://cdn.example.com/cover.jpg"]
}propertyType: hotel | shortlet | apartment | villa | guesthouse. Middleware writes Core property as draft and sets owned_by from JWT.
Screens in this flow
| Screen | Notes |
|---|---|
| Onboarding Start | /extranet/onboarding |
| Property Type Selection | propertyType on create |
| Property Location | address, city, state, country, lat/lng |
| Property Details / Description | name, description |
| Amenities | slugs from the local tick list in amenities — not labels |
| Property Photos / Google Photos Import | File manager; Google import to implement |
| First Room Setup / First Rate Plan Setup | Rooms and Rates |
| Payment Setup | Payments and Distribution |
| Policy Setup | Core metadata / extra_data on property — still Core if no Middleware field |
| Publish Property / Onboarding Completion | PUT .../properties/{id} with "status": "active" |
Called by Middleware Backend, not by frontend
POST https://backend-dev.bookdirect.live/public/api/v1/nellalink/smart-meta-manager/entity/property