{
  "formatVersion": "1.2",
  "currency": "EUR",
  "timezone": "Africa/Marrakech",
  "id": "marrakech-desert-package-EXAMPLE",
  "name": "Marrakech & the Agafay desert",
  "subtitle": "4-day package — transfers, guide and riad included",
  "start": "2027-03-06",
  "end": "2027-03-09",
  "brand": { "id": "example-travel", "name": "Example Travel", "website": "https://example.org" },
  "members": [
    { "id": "m1", "name": "Nadia Benali", "role": "owner", "kind": "adult", "phone": "+33 6 00 00 00 01" },
    { "id": "m2", "name": "Omar Benali", "role": "viewer", "kind": "adult" },
    { "id": "m3", "name": "Inès", "role": "viewer", "kind": "child", "age": 10, "surpriseMode": "activity" }
  ],
  "people": [
    { "id": "p1", "name": "Hassan", "role": "driver", "org": "Example Travel", "phone": "+212 6 00 00 00 00", "languages": ["ar", "fr", "en"],
      "messaging": [ { "app": "whatsapp", "handle": "+212600000000" } ], "sign": "Name board “BENALI” at the arrivals exit", "note": "Same driver for all transfers." },
    { "id": "p2", "name": "Fatima", "role": "guide", "org": "Medina Walks", "languages": ["fr", "en"], "sign": "Meets you in the riad lobby" },
    { "id": "p3", "name": "Riad reception", "role": "host", "phone": "+212 5 24 00 00 00" }
  ],
  "days": [
    {
      "id": "d1", "index": 1, "date": "2027-03-06", "title": "Arrival and the medina at dusk",
      "coords": { "lat": 31.6295, "lon": -7.9811, "label": "Marrakech" }, "stayBookingId": "b-riad",
      "items": [
        { "id": "i1", "time": "14:20", "title": "Landing at Marrakech Menara", "type": "flight", "status": "planned", "desc": "Flights are booked separately by the travelers — not part of the package.",
          "transport": { "to": { "name": "Marrakech Menara (RAK)" } } },
        { "id": "i2", "time": "15:00", "endTime": "15:40", "title": "Private transfer to the riad", "type": "transfer", "status": "planned", "personIds": ["p1"], "bookingId": "b-transfer-in",
          "transport": { "from": { "name": "RAK arrivals exit" }, "to": { "name": "Riad Example, Derb Sidi Bouloukat", "address": "Medina, Marrakech" } } },
        { "id": "i3", "time": "16:00", "title": "Check-in at the riad", "type": "checkin", "status": "planned", "bookingId": "b-riad", "personIds": ["p3"] },
        { "id": "i4", "time": "18:00", "endTime": "20:00", "title": "Jemaa el-Fna at sunset", "type": "activity", "status": "planned", "stars": 3, "personIds": ["p2"], "desc": "Short orientation walk with Fatima, then dinner on your own." }
      ]
    },
    {
      "id": "d2", "index": 2, "date": "2027-03-07", "title": "Medina with a guide",
      "coords": { "lat": 31.6295, "lon": -7.9811, "label": "Marrakech" }, "stayBookingId": "b-riad",
      "items": [
        { "id": "i5", "time": "09:00", "endTime": "13:00", "title": "Guided walk: souks, Ben Youssef Madrasa, Bahia Palace", "type": "heritage", "status": "planned", "stars": 3,
          "personIds": ["p2"], "bookingId": "b-guide", "outfit": ["casual"], "outfitNote": "Shoulders and knees covered for the madrasa." },
        { "id": "i6", "time": "13:00", "title": "Lunch on a rooftop", "type": "meal", "status": "planned", "options": [ { "id": "o1", "title": "Nomad", "place": "1 Derb Aarjane" }, { "id": "o2", "title": "Le Jardin" } ] },
        { "id": "i7", "time": "15:30", "endTime": "17:00", "title": "Jardin Majorelle", "type": "nature", "status": "planned", "stars": 2, "bookingId": "b-majorelle" },
        { "id": "i8", "time": "19:30", "title": "Free evening", "type": "free", "status": "planned" }
      ]
    },
    {
      "id": "d3", "index": 3, "date": "2027-03-08", "title": "Agafay desert",
      "coords": { "lat": 31.4650, "lon": -8.1500, "label": "Agafay" }, "stayBookingId": "b-camp",
      "items": [
        { "id": "i9", "time": "10:00", "endTime": "11:00", "title": "Transfer to the Agafay camp", "type": "transfer", "status": "planned", "personIds": ["p1"], "bookingId": "b-transfer-desert",
          "transport": { "from": { "name": "Riad Example" }, "to": { "name": "Agafay camp" } } },
        { "id": "i10", "time": "16:30", "endTime": "18:00", "title": "Camel ride at golden hour", "type": "activity", "status": "planned", "stars": 2, "outfit": ["warm", "sport"],
          "alternatives": [ { "id": "a1", "trigger": "wind", "windThreshold": 40, "title": "Quad tour postponed — tea ceremony at the camp instead" } ] },
        { "id": "i11", "time": "20:00", "title": "Dinner under the stars", "type": "meal", "status": "planned", "bookingId": "b-camp" }
      ]
    },
    {
      "id": "d4", "index": 4, "date": "2027-03-09", "title": "Back to Marrakech and departure",
      "coords": { "lat": 31.6295, "lon": -7.9811, "label": "Marrakech" },
      "items": [
        { "id": "i12", "time": "09:30", "endTime": "10:30", "title": "Transfer camp → airport", "type": "transfer", "status": "planned", "personIds": ["p1"], "bookingId": "b-transfer-out",
          "transport": { "from": { "name": "Agafay camp" }, "to": { "name": "Marrakech Menara (RAK)" } }, "critical": "Be at the camp entrance at 09:20 — the driver cannot wait." },
        { "id": "i13", "time": "13:10", "title": "Flight home", "type": "flight", "status": "planned" }
      ]
    }
  ],
  "bookings": [
    { "id": "b-riad", "type": "stay", "status": "confirmed", "title": "Riad Example — 2 nights", "hotelStars": 4, "dates": "Mar 6–8", "checkin": "15:00", "checkout": "11:00", "breakfastIncluded": true,
      "rooms": [ { "label": "Suite Jasmin", "memberIds": ["m1", "m2", "m3"] } ], "personIds": ["p3"], "address": "Derb Sidi Bouloukat, Medina, Marrakech",
      "instructions": "The riad is inside the medina: the driver walks you there from the nearest square.", "payment": { "status": "prepaid", "note": "Included in the package" } },
    { "id": "b-camp", "type": "stay", "status": "confirmed", "title": "Agafay desert camp — 1 night, dinner and breakfast", "dates": "night of Mar 8", "payment": { "status": "prepaid", "note": "Included in the package" } },
    { "id": "b-transfer-in", "type": "transport", "status": "confirmed", "title": "Airport → riad transfer", "personIds": ["p1"], "payment": { "status": "prepaid" },
      "transport": { "from": { "name": "RAK" }, "to": { "name": "Riad Example" } } },
    { "id": "b-transfer-desert", "type": "transport", "status": "confirmed", "title": "Riad → Agafay transfer", "personIds": ["p1"], "payment": { "status": "prepaid" } },
    { "id": "b-transfer-out", "type": "transport", "status": "confirmed", "title": "Agafay → airport transfer", "personIds": ["p1"], "payment": { "status": "prepaid" } },
    { "id": "b-guide", "type": "activity", "status": "confirmed", "title": "Half-day private guide", "personIds": ["p2"], "payment": { "status": "prepaid" } },
    { "id": "b-majorelle", "type": "activity", "status": "confirmed", "title": "Jardin Majorelle — 3 tickets", "price": 0,
      "tickets": [
        { "id": "t1", "label": "Adult", "code": "MAJ-EX-1", "memberId": "m1", "payload": "MAJ-EX-1", "format": "qr", "date": "2027-03-07", "time": "15:30" },
        { "id": "t2", "label": "Adult", "code": "MAJ-EX-2", "memberId": "m2", "payload": "MAJ-EX-2", "format": "qr", "date": "2027-03-07", "time": "15:30" },
        { "id": "t3", "label": "Child", "code": "MAJ-EX-3", "memberId": "m3", "payload": "MAJ-EX-3", "format": "qr", "date": "2027-03-07", "time": "15:30" }
      ] }
  ],
  "logistics": [
    { "id": "l1", "emoji": "💶", "title": "What is included", "content": "Riad (2 nights, breakfast), desert camp (1 night, half board), all transfers, half-day guide, Majorelle tickets. Not included: flights, lunches, tips." },
    { "id": "l2", "emoji": "🆘", "title": "Assistance", "content": "Example Travel 24/7 line: +33 1 00 00 00 00. Quote your file number EXT-EXAMPLE." }
  ],
  "contacts": [
    { "id": "k1", "name": "Example Travel — 24/7 assistance", "phone": "+33 1 00 00 00 00" },
    { "id": "k2", "name": "Emergency (Morocco)", "phone": "19", "note": "Police; 15 for ambulance" }
  ],
  "apps": [ { "id": "app1", "name": "Maps.me", "emoji": "🗺️", "desc": "Offline maps of the medina", "url": "https://maps.me" } ]
}
