Skip to content

GeoLeaf – tourism profile ​

Specification of the opening hours, price and traveller review fields ​

Accordion section handling (mobile UI) ​


This document defines the official format of the fields used by the tourism business profile for POIs (MyLatinTrip, general tourism):

  • attributes.openingHours
  • attributes.price
  • attributes.reviews
  • UI layout options: accordion and defaultOpen

These formats are the reference for:

  • generating the data (backend, API),
  • rendering in the GeoLeaf side panel (poiProfiles.tourism.layout),
  • mobile-optimised display through collapsible panels (accordions).

0. Accordion system (mobile optimisation) ​

Rich or long sections of the tourism profile can be displayed as collapsible panels (accordions) in the side panel.

Two UI options are supported in every entry of poiProfiles.tourism.layout:

json
{
    "accordion": true,
    "defaultOpen": false
}
  • accordion: true → tells the UI engine to render the section inside a collapsible panel.
  • defaultOpen: false → the section is collapsed by default (recommended on mobile).

Sections concerned (official GeoLeaf reference) ​

SectionSource fieldAccordion recommended
Detailed descriptionattributes.longDescriptionYes
Opening hoursattributes.openingHoursYes
Pricesattributes.priceYes
Photo galleryattributes.galleryYes
Traveller reviewsattributes.reviewsYes

Purpose:

  • improve navigation on mobile,
  • avoid excessive scrolling,
  • keep the side panel readable even with rich content.

1. attributes.openingHours field ​

1.1. Level 1 – Free text (universal fallback) ​

The simplest accepted format is a string. In that case GeoLeaf displays the text as it is.

  • Type: string
  • Examples:
jsonc
"openingHours": "Open daily 9am-6pm"
jsonc
"openingHours": "By reservation only"

1.2. Level 2 – Structured weekly format ​

A structured format makes the information usable (future sorting, filtering by open day, and so on).

  • Type: object
  • Keys:
KeyTypeRequiredDescription
timezonestringYesIANA time zone (for example "America/Argentina/Cordoba").
notestringNoOptional general note (seasonal closures, conditions, and so on).
rowsarrayYesList of opening ranges per group of days.

Structure of rows ​

Each rows[i] entry is an object:

KeyTypeRequiredDescription
daysstring[]YesDays covered ("mon", "tue", "wed", "thu", "fri", "sat", "sun").
openstringYesOpening time in HH:MM format (24h).
closestringYesClosing time in HH:MM format (24h).
notestringNoSpecific detail for the range (for example "high season", "by reservation").

Full example ​

jsonc
"openingHours": {
  "timezone": "America/Argentina/Cordoba",
  "note": "Closed on national public holidays.",
  "rows": [
    {
      "days": ["mon", "tue", "wed", "thu", "fri"],
      "open": "09:00",
      "close": "18:00",
      "note": "Standard hours."
    },
    {
      "days": ["sat"],
      "open": "10:00",
      "close": "16:00"
    },
    {
      "days": ["sun"],
      "open": "00:00",
      "close": "00:00",
      "note": "Closed on Sundays."
    }
  ]
}

2. attributes.price field ​

2.1. Level 1 – Free text (universal fallback) ​

jsonc
"price": "From 25,000 ARS / night"
jsonc
"price": "Free, donations welcome"

2.2. Level 2 – Structured price format ​

  • Type: object
KeyTypeRequiredDescription
currencystringYesISO 4217 code
fromnumberYesMinimum price
tonumberNoMaximum price
unitstringYesUnit (per_night, per_person, etc.)
notestringNoAdditional information

Example ​

jsonc
"price": {
  "currency": "ARS",
  "from": 25000,
  "to": 42000,
  "unit": "per_night",
  "note": "Indicative low-season rate, breakfast included."
}

3. attributes.reviews field ​

List of traveller reviews.

Structure of a review ​

KeyTypeRequired
authorNamestringYes
ratingnumberNo
titlestringNo
commentstringYes
datestringNo
sourcestringNo
languagestringNo
urlstringNo

Example ​

jsonc
"reviews": [
  {
    "authorName": "Camille",
    "rating": 4.8,
    "title": "Incredible view over the valley",
    "comment": "Excellent welcome, clean and quiet room.",
    "date": "2025-03-12",
    "source": "internal",
    "language": "en-GB"
  }
]

4. Accordion in poiProfiles.tourism.layout (official excerpt) ​

jsonc
{
  "type": "text",
  "label": "Detailed description",
  "field": "attributes.longDescription",
  "variant": "multiline",
  "accordion": true,
  "defaultOpen": false
},
{
  "type": "text",
  "label": "Opening hours",
  "field": "attributes.openingHours",
  "accordion": true,
  "defaultOpen": false
},
{
  "type": "text",
  "label": "Prices",
  "field": "attributes.price",
  "accordion": true,
  "defaultOpen": false
},
{
  "type": "gallery",
  "label": "Photo gallery",
  "field": "attributes.gallery",
  "accordion": true,
  "defaultOpen": false
},
{
  "type": "reviews",
  "label": "Traveller reviews",
  "field": "attributes.reviews",
  "accordion": true,
  "defaultOpen": false
}

5. Format summary ​

openingHours ​

  • string or
  • object { timezone, note?, rows[] }

price ​

  • string or
  • object { currency, from, to?, unit, note? }

reviews ​

  • array of { authorName, rating?, title?, comment, date?, source?, language?, url? } objects

Accordion UI ​

  • accordion: true
  • defaultOpen: false

This document is the official GeoLeaf reference for the tourism profile and its side-panel presentation.

Released under the MIT License.