API-based images and content (draft)
Rule: Product content guests see comes from APIs (property / room / file-manager), not from git.
In scope (API)
| Content | Owner | Notes |
|---|---|---|
| Property gallery / hero | File-manager URLs on property | gallery_urls / images |
| Room photos | Room entity | Fallback placeholder slots |
| Description, policies, FAQs | Property extra_data | |
| Direct-booking logo / colors | Property branding | Booking Engine reads the same GET |
| Email logo / support contacts | Platform settings | Communication hub later |
| Google reviews / photos | Stored snapshot | Google Maps |
Amenities — local slugs (not an API catalog)
The tick list is hard-coded in Frontend. Same slugs in Marketplace filters and MelonQ / Extranet pickers.
- Catalog: v1 Amenity tick list
- Persist:
amenities: ["swimming_pool"]on Middleware property + Coreamenity_{slug}meta/tags - Search:
?amenities=swimming_pool,free_parking - Do not
GETa picker list from Core or Middleware - Do not persist
"Free WiFi"/wifi/pool
Out of scope (may ship in FE)
App chrome icons, design-system illustrations, PSP mark SVGs.
Upload path
MelonQ / Extranet → POST file-manager upload-url
→ client PUT to S3
→ PATCH property/room with CDN URLs
→ Marketplace / Booking Engine GET entityWinner upload (v1 live): POST https://middleware-dev.bookdirect.live/api/v1/nellalink/file-manager/aws/upload-url
Never commit hotel photos. Never hotlink Google photo proxies — copy to our CDN at enrich time.
Acceptance
- New property goes live with zero FE deploy (content + images only)
- Booking Engine and Marketplace show the same gallery for the same property
- Empty media uses placeholder slots