Skip to content

API-based images and content (draft) ​

Rule: Product content guests see comes from APIs (property / room / file-manager), not from git.

In scope (API) ​

ContentOwnerNotes
Property gallery / heroFile-manager URLs on propertygallery_urls / images
Room photosRoom entityFallback placeholder slots
Description, policies, FAQsProperty extra_data
Direct-booking logo / colorsProperty brandingBooking Engine reads the same GET
Email logo / support contactsPlatform settingsCommunication hub later
Google reviews / photosStored snapshotGoogle 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 + Core amenity_{slug} meta/tags
  • Search: ?amenities=swimming_pool,free_parking
  • Do not GET a 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 entity

Winner 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

API-first. Middleware Backend wins over Core Backend when both exist.