{
  "version": 1,
  "exportedAt": "2026-08-12T02:38:44.218Z",
  "application": "travel-planner",
  "trip": {
    "name": "Kazakhstan 2026",
    "slug": "kazakhstan-2026",
    "summary": "Almaty, the Altyn-Emel and Charyn deserts, the Kolsai lakes and Astana.",
    "startDate": "2026-09-11",
    "endDate": "2026-09-30",
    "status": "mostly_planned",
    "homeCurrency": "EUR",
    "defaultDestinationCurrency": "KZT",
    "budgetMinor": 320000,
    "primaryTimeZone": "Asia/Almaty",
    "countries": "Kazakhstan",
    "coverEmoji": "🏔️"
  },
  "data": {
    "places": [
      {
        "key": "place:0",
        "name": "Almaty",
        "type": "city",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": "Almaty Region",
        "city": "Almaty",
        "address": null,
        "latitude": 43.238,
        "longitude": 76.889,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:1",
        "name": "Almaty Airport rental desk",
        "type": "rental_office",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": null,
        "city": "Almaty",
        "address": null,
        "latitude": null,
        "longitude": null,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:2",
        "name": "Almaty International Airport",
        "type": "airport",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": null,
        "city": "Almaty",
        "address": null,
        "latitude": null,
        "longitude": null,
        "mapUrl": null,
        "website": null,
        "code": "ALA",
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:3",
        "name": "Almaty railway station (Almaty-2)",
        "type": "train_station",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": null,
        "city": "Almaty",
        "address": null,
        "latitude": null,
        "longitude": null,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:4",
        "name": "Altyn-Emel National Park",
        "type": "national_park",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": "Almaty Region",
        "city": null,
        "address": null,
        "latitude": 44.05,
        "longitude": 78.6,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": "Park entry permit required at the Basshi gate. Cash only."
      },
      {
        "key": "place:5",
        "name": "Astana",
        "type": "city",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": null,
        "city": "Astana",
        "address": null,
        "latitude": 51.169,
        "longitude": 71.449,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:6",
        "name": "Astana International Airport",
        "type": "airport",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": null,
        "city": "Astana",
        "address": null,
        "latitude": null,
        "longitude": null,
        "mapUrl": null,
        "website": null,
        "code": "NQZ",
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:7",
        "name": "Astana railway station",
        "type": "train_station",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": null,
        "city": "Astana",
        "address": null,
        "latitude": null,
        "longitude": null,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:8",
        "name": "Burabay National Park",
        "type": "national_park",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": "Akmola Region",
        "city": null,
        "address": null,
        "latitude": 53.08,
        "longitude": 70.3,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:9",
        "name": "Charyn Canyon",
        "type": "national_park",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": "Almaty Region",
        "city": null,
        "address": null,
        "latitude": 43.35,
        "longitude": 79.08,
        "mapUrl": "https://www.openstreetmap.org/?mlat=43.35&mlon=79.08#map=12/43.35/79.08",
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:10",
        "name": "Frankfurt Airport",
        "type": "airport",
        "country": "Germany",
        "countryCode": "DE",
        "region": null,
        "city": "Frankfurt",
        "address": null,
        "latitude": null,
        "longitude": null,
        "mapUrl": null,
        "website": null,
        "code": "FRA",
        "timeZone": "Europe/Berlin",
        "notes": null
      },
      {
        "key": "place:11",
        "name": "Kaindy Lake",
        "type": "viewpoint",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": "Almaty Region",
        "city": null,
        "address": null,
        "latitude": 42.98,
        "longitude": 78.46,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": "4x4 or local transfer only for the last 12 km."
      },
      {
        "key": "place:12",
        "name": "Kolsai Lakes",
        "type": "national_park",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": "Almaty Region",
        "city": null,
        "address": null,
        "latitude": 42.96,
        "longitude": 78.33,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      },
      {
        "key": "place:13",
        "name": "Saty",
        "type": "city",
        "country": "Kazakhstan",
        "countryCode": "KZ",
        "region": "Almaty Region",
        "city": "Saty",
        "address": null,
        "latitude": 43.06,
        "longitude": 78.44,
        "mapUrl": null,
        "website": null,
        "code": null,
        "timeZone": "Asia/Almaty",
        "notes": null
      }
    ],
    "contacts": [
      {
        "key": "contact:0",
        "name": "Aigerim",
        "company": "Saty Guesthouse",
        "role": "Host",
        "phone": "+7 701 000 1122",
        "email": null,
        "whatsapp": "+7 701 000 1122",
        "telegram": null,
        "website": null,
        "isEmergency": false,
        "notes": "Cash only. Send arrival time by WhatsApp the day before."
      },
      {
        "key": "contact:1",
        "name": "Almaty Car Rent desk",
        "company": "Almaty Car Rent",
        "role": "Rental provider",
        "phone": "+7 727 000 4455",
        "email": "desk@example-rental.kz",
        "whatsapp": null,
        "telegram": null,
        "website": null,
        "isEmergency": false,
        "notes": null
      },
      {
        "key": "contact:2",
        "name": "Travel insurance emergency line",
        "company": "Insurer",
        "role": "24h assistance",
        "phone": "+49 89 000 0000",
        "email": null,
        "whatsapp": null,
        "telegram": null,
        "website": null,
        "isEmergency": true,
        "notes": null
      },
      {
        "key": "contact:3",
        "name": "Yerlan",
        "company": "Kolsai Horse Tours",
        "role": "Guide",
        "phone": "+7 705 000 7788",
        "email": null,
        "whatsapp": "+7 705 000 7788",
        "telegram": null,
        "website": null,
        "isEmergency": false,
        "notes": "Tour runs only if the weather holds. He calls the evening before."
      }
    ],
    "travelers": [
      {
        "key": "traveler:0",
        "userId": null,
        "name": "Jun",
        "joinsOn": null,
        "leavesOn": null,
        "colorHint": "accent",
        "notes": null
      },
      {
        "key": "traveler:1",
        "userId": null,
        "name": "Mira",
        "joinsOn": null,
        "leavesOn": null,
        "colorHint": "info",
        "notes": null
      }
    ],
    "categories": [],
    "reservations": [
      {
        "key": "reservation:0",
        "kind": "accommodation",
        "title": "Hotel Kazzhol Almaty",
        "platform": "Booking.com",
        "providerName": "Hotel Kazzhol",
        "externalUrl": "https://www.booking.com",
        "confirmationNumber": "BK-4471902",
        "ticketNumber": null,
        "reservedOn": "2026-05-14",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": "2026-09-10T23:59",
        "freeCancellationUntilTimeZone": "Asia/Almaty",
        "freeCancellationUntilUtc": "2026-09-10T18:59:00.000Z",
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Free cancellation until 10 September. After that the first night is charged.",
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:1",
        "kind": "accommodation",
        "title": "Rixos Almaty (cancelled)",
        "platform": "Booking.com",
        "providerName": "Rixos Almaty",
        "externalUrl": null,
        "confirmationNumber": "BK-4402277",
        "ticketNumber": null,
        "reservedOn": "2026-03-20",
        "planningStatus": "planned",
        "reservationStatus": "cancelled",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Free cancellation until 14 days before arrival.",
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": "2026-05-14",
        "cancellationReason": "Found a better located hotel at half the price.",
        "notes": null
      },
      {
        "key": "reservation:2",
        "kind": "accommodation",
        "title": "Altyn-Emel Guesthouse, Basshi",
        "platform": "Email",
        "providerName": "Altyn-Emel Guesthouse",
        "externalUrl": null,
        "confirmationNumber": "AE-2026-118",
        "ticketNumber": null,
        "reservedOn": "2026-06-01",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Free cancellation up to 7 days before arrival. Pay in cash on arrival.",
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": true,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:3",
        "kind": "accommodation",
        "title": "Saty Guesthouse",
        "platform": "WhatsApp",
        "providerName": "Saty Guesthouse",
        "externalUrl": null,
        "confirmationNumber": "WA-0915",
        "ticketNumber": null,
        "reservedOn": "2026-06-08",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Deposit is not refundable within 14 days of arrival.",
        "changePolicyText": null,
        "paymentDueLocal": "2026-09-15T20:00",
        "paymentDueTimeZone": "Asia/Almaty",
        "paymentDueUtc": "2026-09-15T15:00:00.000Z",
        "payAtProvider": true,
        "contactId": "contact:0",
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:4",
        "kind": "accommodation",
        "title": "Almaty apartment (after the road trip)",
        "platform": "Airbnb",
        "providerName": "Almaty city apartment",
        "externalUrl": null,
        "confirmationNumber": "HM8W4RQZ",
        "ticketNumber": null,
        "reservedOn": "2026-06-12",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": "2026-09-11T00:00",
        "freeCancellationUntilTimeZone": "Asia/Almaty",
        "freeCancellationUntilUtc": "2026-09-10T19:00:00.000Z",
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Free cancellation until 7 days before check-in.",
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:5",
        "kind": "accommodation",
        "title": "Astana city hotel",
        "platform": "Booking.com",
        "providerName": "Astana Central Hotel",
        "externalUrl": null,
        "confirmationNumber": "BK-4488301",
        "ticketNumber": null,
        "reservedOn": "2026-06-20",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": "2026-09-19T18:00",
        "freeCancellationUntilTimeZone": "Asia/Almaty",
        "freeCancellationUntilUtc": "2026-09-19T13:00:00.000Z",
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": null,
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:6",
        "kind": "accommodation",
        "title": "Burabay lakeside guesthouse",
        "platform": null,
        "providerName": "Burabay guesthouse (shortlisted)",
        "externalUrl": null,
        "confirmationNumber": null,
        "ticketNumber": null,
        "reservedOn": null,
        "planningStatus": "need_to_reserve",
        "reservationStatus": "not_reserved",
        "freeCancellationUntilLocal": "2026-08-15T18:00",
        "freeCancellationUntilTimeZone": "Asia/Almaty",
        "freeCancellationUntilUtc": "2026-08-15T13:00:00.000Z",
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Quoted rate held until the date above; after that the price rises.",
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": "Two options shortlisted. Need to confirm by email and pay a 30% deposit."
      },
      {
        "key": "reservation:7",
        "kind": "accommodation",
        "title": "Astana city hotel (return leg)",
        "platform": "Booking.com",
        "providerName": "Astana Central Hotel",
        "externalUrl": null,
        "confirmationNumber": "BK-4488944",
        "ticketNumber": null,
        "reservedOn": "2026-06-20",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Prepayment required to keep the rate.",
        "changePolicyText": null,
        "paymentDueLocal": "2026-08-13T12:00",
        "paymentDueTimeZone": "Asia/Almaty",
        "paymentDueUtc": "2026-08-13T07:00:00.000Z",
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:8",
        "kind": "accommodation",
        "title": "Almaty airport hotel (last night)",
        "platform": "Booking.com",
        "providerName": "Almaty Airport Hotel",
        "externalUrl": null,
        "confirmationNumber": "BK-4491120",
        "ticketNumber": null,
        "reservedOn": "2026-07-05",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": null,
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": true,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": "Chosen because the flight home leaves at 05:55."
      },
      {
        "key": "reservation:9",
        "kind": "activity",
        "title": "Kaindy horse riding",
        "platform": "WhatsApp",
        "providerName": "Kolsai Horse Tours",
        "externalUrl": null,
        "confirmationNumber": "WA-1709",
        "ticketNumber": null,
        "reservedOn": null,
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Cancel free of charge the evening before. Weather dependent.",
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": "contact:3",
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:10",
        "kind": "flight",
        "title": "Frankfurt – Almaty return",
        "platform": "Airline website",
        "providerName": "Air Astana",
        "externalUrl": "https://airastana.com",
        "confirmationNumber": "KC7Y2Q",
        "ticketNumber": "4652201234567",
        "reservedOn": "2026-04-02",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Non-refundable. Date changes 90 EUR plus fare difference.",
        "changePolicyText": "One free change up to 24 h before departure on the return leg.",
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:11",
        "kind": "flight",
        "title": "Astana – Almaty",
        "platform": "Airline website",
        "providerName": "FlyArystan",
        "externalUrl": null,
        "confirmationNumber": "FA-9K21LM",
        "ticketNumber": null,
        "reservedOn": "2026-07-05",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "Non-refundable low-cost fare.",
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:12",
        "kind": "rental_car",
        "title": "Sodex Almaty",
        "platform": "Sodex WhatsApp",
        "providerName": "Sodex Almaty",
        "externalUrl": "https://sodex.kz/",
        "confirmationNumber": "ACR-77120",
        "ticketNumber": null,
        "reservedOn": "2026-08-11",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": "n/a",
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": "contact:1",
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:13",
        "kind": "transport",
        "title": "Night train Almaty – Astana",
        "platform": "temirzholy.kz",
        "providerName": "Kazakhstan Temir Zholy",
        "externalUrl": null,
        "confirmationNumber": "KTZ-558213",
        "ticketNumber": null,
        "reservedOn": "2026-07-02",
        "planningStatus": "planned",
        "reservationStatus": "confirmed",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": null,
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:14",
        "kind": "transport",
        "title": "Test",
        "platform": null,
        "providerName": null,
        "externalUrl": null,
        "confirmationNumber": null,
        "ticketNumber": null,
        "reservedOn": null,
        "planningStatus": "planned",
        "reservationStatus": "not_reserved",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": null,
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:15",
        "kind": "transport",
        "title": "Tsda",
        "platform": null,
        "providerName": null,
        "externalUrl": null,
        "confirmationNumber": null,
        "ticketNumber": null,
        "reservedOn": null,
        "planningStatus": "planned",
        "reservationStatus": "not_reserved",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": null,
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      },
      {
        "key": "reservation:16",
        "kind": "transport",
        "title": "train",
        "platform": null,
        "providerName": null,
        "externalUrl": null,
        "confirmationNumber": null,
        "ticketNumber": null,
        "reservedOn": null,
        "planningStatus": "planned",
        "reservationStatus": "not_reserved",
        "freeCancellationUntilLocal": null,
        "freeCancellationUntilTimeZone": null,
        "freeCancellationUntilUtc": null,
        "partialRefundUntilUtc": null,
        "partialRefundPercent": null,
        "nonRefundableFromUtc": null,
        "cancellationFeeMinor": null,
        "cancellationFeeCurrency": null,
        "cancellationPolicyText": null,
        "changePolicyText": null,
        "paymentDueLocal": null,
        "paymentDueTimeZone": null,
        "paymentDueUtc": null,
        "payAtProvider": false,
        "contactId": null,
        "cancelledOn": null,
        "cancellationReason": null,
        "notes": null
      }
    ],
    "accommodations": [
      {
        "key": "accommodation:0",
        "reservationId": "reservation:0",
        "name": "Hotel Kazzhol Almaty",
        "type": "hotel",
        "placeId": "place:0",
        "checkInDate": "2026-09-12",
        "checkInTime": "14:00",
        "earliestCheckInTime": "14:00",
        "latestCheckInTime": "23:00",
        "checkOutDate": "2026-09-13",
        "checkOutTime": "09:00",
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "exact",
        "checkInUtc": "2026-09-12T09:00:00.000Z",
        "checkOutUtc": "2026-09-13T04:00:00.000Z",
        "guests": 2,
        "rooms": 1,
        "roomType": "Double room, city view",
        "breakfastIncluded": true,
        "breakfastHours": "07:00 – 10:30",
        "parkingAvailable": true,
        "parkingInstructions": null,
        "wifiAvailable": true,
        "kitchen": null,
        "washingMachine": null,
        "laundryService": null,
        "airConditioning": true,
        "luggageStorage": true,
        "airportTransfer": null,
        "receptionHours": "24 h",
        "lateArrivalAllowed": true,
        "selfCheckIn": null,
        "checkInInstructions": null,
        "hostContactId": null,
        "notes": "Ask to store the big bags while we are on the road trip."
      },
      {
        "key": "accommodation:1",
        "reservationId": "reservation:1",
        "name": "Rixos Almaty",
        "type": "hotel",
        "placeId": "place:0",
        "checkInDate": "2026-09-12",
        "checkInTime": "15:00",
        "earliestCheckInTime": "15:00",
        "latestCheckInTime": null,
        "checkOutDate": "2026-09-13",
        "checkOutTime": "12:00",
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "exact",
        "checkInUtc": "2026-09-12T10:00:00.000Z",
        "checkOutUtc": "2026-09-13T07:00:00.000Z",
        "guests": 2,
        "rooms": 1,
        "roomType": "Deluxe room",
        "breakfastIncluded": null,
        "breakfastHours": null,
        "parkingAvailable": null,
        "parkingInstructions": null,
        "wifiAvailable": null,
        "kitchen": null,
        "washingMachine": null,
        "laundryService": null,
        "airConditioning": null,
        "luggageStorage": null,
        "airportTransfer": null,
        "receptionHours": null,
        "lateArrivalAllowed": null,
        "selfCheckIn": null,
        "checkInInstructions": null,
        "hostContactId": null,
        "notes": "Cancelled and fully refunded — kept for the record."
      },
      {
        "key": "accommodation:2",
        "reservationId": "reservation:2",
        "name": "Altyn-Emel Guesthouse",
        "type": "guesthouse",
        "placeId": "place:4",
        "checkInDate": "2026-09-13",
        "checkInTime": "17:00",
        "earliestCheckInTime": "14:00",
        "latestCheckInTime": "22:00",
        "checkOutDate": "2026-09-15",
        "checkOutTime": "08:30",
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "exact",
        "checkInUtc": "2026-09-13T12:00:00.000Z",
        "checkOutUtc": "2026-09-15T03:30:00.000Z",
        "guests": 2,
        "rooms": 1,
        "roomType": "Twin room, shared bathroom",
        "breakfastIncluded": true,
        "breakfastHours": null,
        "parkingAvailable": true,
        "parkingInstructions": null,
        "wifiAvailable": false,
        "kitchen": null,
        "washingMachine": null,
        "laundryService": null,
        "airConditioning": null,
        "luggageStorage": null,
        "airportTransfer": null,
        "receptionHours": null,
        "lateArrivalAllowed": null,
        "selfCheckIn": null,
        "checkInInstructions": null,
        "hostContactId": null,
        "notes": "No card payments in the village. Bring cash from Almaty."
      },
      {
        "key": "accommodation:3",
        "reservationId": "reservation:3",
        "name": "Saty Guesthouse",
        "type": "homestay",
        "placeId": "place:13",
        "checkInDate": "2026-09-15",
        "checkInTime": "20:00",
        "earliestCheckInTime": "15:00",
        "latestCheckInTime": "21:00",
        "checkOutDate": "2026-09-18",
        "checkOutTime": "09:00",
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "exact",
        "checkInUtc": "2026-09-15T15:00:00.000Z",
        "checkOutUtc": "2026-09-18T04:00:00.000Z",
        "guests": 2,
        "rooms": 1,
        "roomType": "Room with wood stove",
        "breakfastIncluded": true,
        "breakfastHours": null,
        "parkingAvailable": true,
        "parkingInstructions": null,
        "wifiAvailable": false,
        "kitchen": null,
        "washingMachine": true,
        "laundryService": null,
        "airConditioning": null,
        "luggageStorage": null,
        "airportTransfer": null,
        "receptionHours": null,
        "lateArrivalAllowed": true,
        "selfCheckIn": null,
        "checkInInstructions": null,
        "hostContactId": "contact:0",
        "notes": "Aigerim cooks dinner if you tell her by 16:00. Balance due in cash at check-in."
      },
      {
        "key": "accommodation:4",
        "reservationId": "reservation:4",
        "name": "Almaty city apartment",
        "type": "apartment",
        "placeId": "place:0",
        "checkInDate": "2026-09-18",
        "checkInTime": "17:00",
        "earliestCheckInTime": "15:00",
        "latestCheckInTime": null,
        "checkOutDate": "2026-09-20",
        "checkOutTime": "11:00",
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "exact",
        "checkInUtc": "2026-09-18T12:00:00.000Z",
        "checkOutUtc": "2026-09-20T06:00:00.000Z",
        "guests": 2,
        "rooms": 1,
        "roomType": "One-bedroom apartment",
        "breakfastIncluded": null,
        "breakfastHours": null,
        "parkingAvailable": true,
        "parkingInstructions": null,
        "wifiAvailable": true,
        "kitchen": true,
        "washingMachine": true,
        "laundryService": null,
        "airConditioning": true,
        "luggageStorage": null,
        "airportTransfer": null,
        "receptionHours": null,
        "lateArrivalAllowed": null,
        "selfCheckIn": true,
        "checkInInstructions": null,
        "hostContactId": null,
        "notes": "Self check-in with a key box. Laundry before the second half of the trip."
      },
      {
        "key": "accommodation:5",
        "reservationId": "reservation:5",
        "name": "Astana Central Hotel",
        "type": "hotel",
        "placeId": "place:5",
        "checkInDate": "2026-09-21",
        "checkInTime": "14:00",
        "earliestCheckInTime": "14:00",
        "latestCheckInTime": null,
        "checkOutDate": "2026-09-24",
        "checkOutTime": "08:30",
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "exact",
        "checkInUtc": "2026-09-21T09:00:00.000Z",
        "checkOutUtc": "2026-09-24T03:30:00.000Z",
        "guests": 2,
        "rooms": 1,
        "roomType": "Double room",
        "breakfastIncluded": true,
        "breakfastHours": null,
        "parkingAvailable": null,
        "parkingInstructions": null,
        "wifiAvailable": true,
        "kitchen": null,
        "washingMachine": null,
        "laundryService": null,
        "airConditioning": true,
        "luggageStorage": null,
        "airportTransfer": null,
        "receptionHours": "24 h",
        "lateArrivalAllowed": null,
        "selfCheckIn": null,
        "checkInInstructions": null,
        "hostContactId": null,
        "notes": null
      },
      {
        "key": "accommodation:6",
        "reservationId": "reservation:6",
        "name": "Burabay lakeside guesthouse",
        "type": "guesthouse",
        "placeId": "place:8",
        "checkInDate": "2026-09-24",
        "checkInTime": null,
        "earliestCheckInTime": null,
        "latestCheckInTime": null,
        "checkOutDate": "2026-09-26",
        "checkOutTime": null,
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "unknown",
        "checkInUtc": null,
        "checkOutUtc": null,
        "guests": 2,
        "rooms": 1,
        "roomType": null,
        "breakfastIncluded": null,
        "breakfastHours": null,
        "parkingAvailable": null,
        "parkingInstructions": null,
        "wifiAvailable": null,
        "kitchen": null,
        "washingMachine": null,
        "laundryService": null,
        "airConditioning": null,
        "luggageStorage": null,
        "airportTransfer": null,
        "receptionHours": null,
        "lateArrivalAllowed": null,
        "selfCheckIn": null,
        "checkInInstructions": null,
        "hostContactId": null,
        "notes": "Not reserved yet — two options shortlisted, price is an estimate."
      },
      {
        "key": "accommodation:7",
        "reservationId": "reservation:7",
        "name": "Astana Central Hotel",
        "type": "hotel",
        "placeId": "place:5",
        "checkInDate": "2026-09-26",
        "checkInTime": "14:00",
        "earliestCheckInTime": "14:00",
        "latestCheckInTime": null,
        "checkOutDate": "2026-09-28",
        "checkOutTime": "12:00",
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "exact",
        "checkInUtc": "2026-09-26T09:00:00.000Z",
        "checkOutUtc": "2026-09-28T07:00:00.000Z",
        "guests": 2,
        "rooms": 1,
        "roomType": "Double room",
        "breakfastIncluded": true,
        "breakfastHours": null,
        "parkingAvailable": null,
        "parkingInstructions": null,
        "wifiAvailable": true,
        "kitchen": null,
        "washingMachine": null,
        "laundryService": null,
        "airConditioning": null,
        "luggageStorage": null,
        "airportTransfer": null,
        "receptionHours": null,
        "lateArrivalAllowed": null,
        "selfCheckIn": null,
        "checkInInstructions": null,
        "hostContactId": null,
        "notes": null
      },
      {
        "key": "accommodation:8",
        "reservationId": "reservation:8",
        "name": "Almaty Airport Hotel",
        "type": "hotel",
        "placeId": "place:0",
        "checkInDate": "2026-09-28",
        "checkInTime": "17:30",
        "earliestCheckInTime": "15:00",
        "latestCheckInTime": null,
        "checkOutDate": "2026-09-30",
        "checkOutTime": "04:30",
        "timeZone": "Asia/Almaty",
        "checkInPrecision": "exact",
        "checkInUtc": "2026-09-28T12:30:00.000Z",
        "checkOutUtc": "2026-09-29T23:30:00.000Z",
        "guests": 2,
        "rooms": 1,
        "roomType": "Double room",
        "breakfastIncluded": null,
        "breakfastHours": null,
        "parkingAvailable": null,
        "parkingInstructions": null,
        "wifiAvailable": true,
        "kitchen": null,
        "washingMachine": null,
        "laundryService": null,
        "airConditioning": null,
        "luggageStorage": null,
        "airportTransfer": true,
        "receptionHours": "24 h",
        "lateArrivalAllowed": true,
        "selfCheckIn": null,
        "checkInInstructions": null,
        "hostContactId": null,
        "notes": "Free shuttle runs every 30 min. Ask for an early breakfast box — we leave at 04:30."
      }
    ],
    "flightReservations": [
      {
        "key": "flight:0",
        "reservationId": "reservation:10",
        "mainAirline": "Air Astana",
        "tripType": "return",
        "personalItem": "1 × small bag under the seat",
        "cabinBaggage": "1 × 8 kg",
        "checkedBaggage": "1 × 23 kg per person",
        "baggagePieces": 1,
        "baggageWeightKg": 23,
        "specialBaggage": null,
        "checkInOpensLocal": "2026-09-10T22:00",
        "checkInOpensTimeZone": "Europe/Berlin",
        "checkInOpensUtc": "2026-09-10T20:00:00.000Z",
        "checkInClosesUtc": "2026-09-11T18:00:00.000Z",
        "recommendedAirportArrivalMinutes": 150,
        "loungeAccess": null,
        "transitVisaNote": null,
        "notes": "Seats already selected. Passport must be valid 6 months beyond entry."
      },
      {
        "key": "flight:1",
        "reservationId": "reservation:11",
        "mainAirline": "FlyArystan",
        "tripType": "one_way",
        "personalItem": null,
        "cabinBaggage": "1 × 5 kg included",
        "checkedBaggage": "1 × 20 kg purchased",
        "baggagePieces": null,
        "baggageWeightKg": null,
        "specialBaggage": null,
        "checkInOpensLocal": null,
        "checkInOpensTimeZone": null,
        "checkInOpensUtc": null,
        "checkInClosesUtc": null,
        "recommendedAirportArrivalMinutes": 90,
        "loungeAccess": null,
        "transitVisaNote": null,
        "notes": "Low-cost carrier — baggage was paid separately at reservation time."
      }
    ],
    "flightSegments": [
      {
        "flightReservationId": "flight:0",
        "sequence": 0,
        "flightNumber": "KC 908",
        "marketingAirline": "Air Astana",
        "operatingAirline": null,
        "originPlaceId": "place:10",
        "originCode": "FRA",
        "originName": "Frankfurt",
        "originTerminal": "1",
        "departureLocal": "2026-09-11T22:05",
        "departureTimeZone": "Europe/Berlin",
        "departureUtc": "2026-09-11T20:05:00.000Z",
        "departurePrecision": "exact",
        "destinationPlaceId": "place:2",
        "destinationCode": "ALA",
        "destinationName": "Almaty",
        "destinationTerminal": null,
        "arrivalLocal": "2026-09-12T07:35",
        "arrivalTimeZone": "Asia/Almaty",
        "arrivalUtc": "2026-09-12T02:35:00.000Z",
        "arrivalPrecision": "exact",
        "aircraft": "Airbus A321LR",
        "cabin": "economy",
        "fareClass": "V",
        "seat": "24A / 24B",
        "selfTransfer": false,
        "terminalChange": false,
        "connectionNotes": null,
        "notes": "Overnight flight — real flying time is about 6 h 30, not 9 h 30."
      },
      {
        "flightReservationId": "flight:1",
        "sequence": 0,
        "flightNumber": "KC 4204",
        "marketingAirline": "FlyArystan",
        "operatingAirline": "FlyArystan",
        "originPlaceId": "place:6",
        "originCode": "NQZ",
        "originName": "Astana",
        "originTerminal": null,
        "departureLocal": "2026-09-28T14:10",
        "departureTimeZone": "Asia/Almaty",
        "departureUtc": "2026-09-28T09:10:00.000Z",
        "departurePrecision": "exact",
        "destinationPlaceId": "place:2",
        "destinationCode": "ALA",
        "destinationName": "Almaty",
        "destinationTerminal": null,
        "arrivalLocal": "2026-09-28T15:50",
        "arrivalTimeZone": "Asia/Almaty",
        "arrivalUtc": "2026-09-28T10:50:00.000Z",
        "arrivalPrecision": "exact",
        "aircraft": null,
        "cabin": "economy",
        "fareClass": null,
        "seat": "11A / 11B",
        "selfTransfer": false,
        "terminalChange": false,
        "connectionNotes": null,
        "notes": null
      },
      {
        "flightReservationId": "flight:0",
        "sequence": 1,
        "flightNumber": "KC 907",
        "marketingAirline": "Air Astana",
        "operatingAirline": null,
        "originPlaceId": "place:2",
        "originCode": "ALA",
        "originName": "Almaty",
        "originTerminal": null,
        "departureLocal": "2026-09-30T05:55",
        "departureTimeZone": "Asia/Almaty",
        "departureUtc": "2026-09-30T00:55:00.000Z",
        "departurePrecision": "exact",
        "destinationPlaceId": "place:10",
        "destinationCode": "FRA",
        "destinationName": "Frankfurt",
        "destinationTerminal": "1",
        "arrivalLocal": "2026-09-30T08:45",
        "arrivalTimeZone": "Europe/Berlin",
        "arrivalUtc": "2026-09-30T06:45:00.000Z",
        "arrivalPrecision": "exact",
        "aircraft": "Airbus A321LR",
        "cabin": "economy",
        "fareClass": "V",
        "seat": "22C / 22D",
        "selfTransfer": false,
        "terminalChange": false,
        "connectionNotes": null,
        "notes": "Very early departure — leave the airport hotel by 04:30."
      }
    ],
    "rentalCars": [
      {
        "key": "rental_car:0",
        "reservationId": "reservation:12",
        "company": "Sodex Almaty",
        "contactId": null,
        "requestedModel": "Jetour T1",
        "confirmedModel": "Jetour T1 (or similar)",
        "category": null,
        "transmission": "automatic",
        "fuelType": "petrol",
        "drivetrain": "4x4",
        "seats": null,
        "luggageCapacity": null,
        "pickupPlaceId": null,
        "pickupLocationName": "Алматы, проспект Абая, 136/1",
        "pickupLocal": "2026-09-13T19:00",
        "pickupTimeZone": "Asia/Almaty",
        "pickupUtc": "2026-09-13T14:00:00.000Z",
        "pickupPrecision": "exact",
        "pickupInstructions": null,
        "pickupOfficeClosesTime": "21:00",
        "returnPlaceId": null,
        "returnLocationName": "Алматы, проспект Абая, 136/1",
        "returnLocal": "2026-09-18T19:00",
        "returnTimeZone": "Asia/Almaty",
        "returnUtc": "2026-09-18T14:00:00.000Z",
        "returnPrecision": "exact",
        "returnInstructions": null,
        "returnOfficeClosesTime": "21:00",
        "depositMinor": 0,
        "depositCurrency": "EUR",
        "depositRefundable": true,
        "securityHoldMinor": 0,
        "securityHoldCurrency": "EUR",
        "deductibleMinor": 37212,
        "deductibleCurrency": "EUR",
        "collisionCoverage": "CDW included, excess 1,000 EUR",
        "theftProtection": "Included, same excess",
        "liabilityCoverage": "Third-party liability included as required by law",
        "glassCoverage": "NOT covered",
        "tyreCoverage": "NOT covered",
        "undercarriageCoverage": "NOT covered",
        "roofCoverage": "NOT covered",
        "additionalCoverage": "NOT Included",
        "insuranceExclusions": "Glass, tyres, undercarriage and roof are excluded. Damage on unpaved roads voids the collision cover.",
        "mileagePolicy": "limited",
        "mileageLimitKm": null,
        "extraKmFeeText": "n/a",
        "crossBorderAllowed": null,
        "unpavedRoadsAllowed": true,
        "offRoadAllowed": null,
        "geographicRestrictions": "Kazakhstan only. No crossing into Kyrgyzstan or China.",
        "nationalParkRestrictions": "Allowed in Altyn-Emel and Kolsai on marked tracks only. Max Radius of 300km around Almaty",
        "youngDriverRestrictions": "n/a",
        "fuelPolicy": "full_to_full",
        "requiredOctane": "AI-95",
        "pickupFuelLevel": "Full",
        "requiredReturnFuelLevel": "Full",
        "passportRequired": true,
        "nationalLicenceRequired": true,
        "internationalPermitRequired": true,
        "creditCardRequired": true,
        "minimumAge": 23,
        "otherDocumentsRequired": "Printed reservation confirmation.",
        "notes": "Roughly 1,450 km planned."
      }
    ],
    "transportLegs": [
      {
        "reservationId": "reservation:14",
        "mode": "train",
        "title": null,
        "operator": "Test",
        "originPlaceId": null,
        "originName": null,
        "destinationPlaceId": null,
        "destinationName": null,
        "departureLocal": null,
        "departureTimeZone": null,
        "departureUtc": null,
        "departurePrecision": "exact",
        "arrivalLocal": null,
        "arrivalTimeZone": null,
        "arrivalUtc": null,
        "arrivalPrecision": "exact",
        "distanceKm": null,
        "durationMinutes": null,
        "bufferBeforeMinutes": null,
        "bufferAfterMinutes": null,
        "seat": null,
        "carriage": null,
        "platform": null,
        "pickupPoint": null,
        "dropoffPoint": null,
        "luggageNotes": null,
        "isOvernight": false,
        "notes": null
      },
      {
        "reservationId": "reservation:15",
        "mode": "ride_hailing",
        "title": "Tsda",
        "operator": "a",
        "originPlaceId": null,
        "originName": null,
        "destinationPlaceId": null,
        "destinationName": null,
        "departureLocal": null,
        "departureTimeZone": null,
        "departureUtc": null,
        "departurePrecision": "exact",
        "arrivalLocal": null,
        "arrivalTimeZone": null,
        "arrivalUtc": null,
        "arrivalPrecision": "exact",
        "distanceKm": null,
        "durationMinutes": null,
        "bufferBeforeMinutes": null,
        "bufferAfterMinutes": null,
        "seat": null,
        "carriage": null,
        "platform": null,
        "pickupPoint": null,
        "dropoffPoint": null,
        "luggageNotes": null,
        "isOvernight": false,
        "notes": null
      },
      {
        "reservationId": "reservation:16",
        "mode": "train",
        "title": null,
        "operator": null,
        "originPlaceId": null,
        "originName": null,
        "destinationPlaceId": null,
        "destinationName": null,
        "departureLocal": null,
        "departureTimeZone": null,
        "departureUtc": null,
        "departurePrecision": "exact",
        "arrivalLocal": null,
        "arrivalTimeZone": null,
        "arrivalUtc": null,
        "arrivalPrecision": "exact",
        "distanceKm": null,
        "durationMinutes": null,
        "bufferBeforeMinutes": null,
        "bufferAfterMinutes": null,
        "seat": null,
        "carriage": null,
        "platform": null,
        "pickupPoint": null,
        "dropoffPoint": null,
        "luggageNotes": null,
        "isOvernight": false,
        "notes": null
      }
    ],
    "activities": [
      {
        "key": "activity:0",
        "reservationId": null,
        "name": "Green Bazaar and Kok-Tobe",
        "type": "sightseeing",
        "placeId": "place:0",
        "locationName": "Almaty",
        "meetingPoint": null,
        "startLocal": "2026-09-12T15:00",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-12T10:00:00.000Z",
        "startPrecision": "approximate",
        "endLocal": "2026-09-12T19:00",
        "endTimeZone": "Asia/Almaty",
        "endUtc": "2026-09-12T14:00:00.000Z",
        "endPrecision": "approximate",
        "durationMinutes": null,
        "provider": null,
        "contactId": null,
        "externalUrl": null,
        "planningStatus": "planned",
        "reservationRequired": false,
        "difficulty": null,
        "fitnessRequirements": null,
        "requiredEquipment": null,
        "guideRequired": null,
        "openingTime": null,
        "closingTime": null,
        "lastEntryTime": null,
        "sunriseDependent": false,
        "sunsetDependent": false,
        "weatherDependent": false,
        "notes": "Nothing to reserve — just walk in. Cable car closes at 23:00."
      },
      {
        "key": "activity:1",
        "reservationId": null,
        "name": "Singing Dune and Aktau Mountains",
        "type": "national_park",
        "placeId": "place:4",
        "locationName": "Altyn-Emel National Park",
        "meetingPoint": null,
        "startLocal": "2026-09-14T08:30",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-14T03:30:00.000Z",
        "startPrecision": "exact",
        "endLocal": "2026-09-14T17:30",
        "endTimeZone": "Asia/Almaty",
        "endUtc": "2026-09-14T12:30:00.000Z",
        "endPrecision": "approximate",
        "durationMinutes": 540,
        "provider": null,
        "contactId": null,
        "externalUrl": null,
        "planningStatus": "planned",
        "reservationRequired": false,
        "difficulty": "moderate",
        "fitnessRequirements": null,
        "requiredEquipment": "Sun protection, 3 l water per person, closed shoes",
        "guideRequired": null,
        "openingTime": "08:00",
        "closingTime": "19:00",
        "lastEntryTime": null,
        "sunriseDependent": false,
        "sunsetDependent": false,
        "weatherDependent": true,
        "notes": "Park entry permit must be bought at the Basshi gate. Cash only, no card machine."
      },
      {
        "key": "activity:2",
        "reservationId": null,
        "name": "Charyn Canyon — Valley of Castles hike",
        "type": "hike",
        "placeId": "place:9",
        "locationName": "Charyn Canyon",
        "meetingPoint": null,
        "startLocal": "2026-09-15T13:45",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-15T08:45:00.000Z",
        "startPrecision": "exact",
        "endLocal": "2026-09-15T17:00",
        "endTimeZone": "Asia/Almaty",
        "endUtc": "2026-09-15T12:00:00.000Z",
        "endPrecision": "exact",
        "durationMinutes": 195,
        "provider": null,
        "contactId": null,
        "externalUrl": null,
        "planningStatus": "planned",
        "reservationRequired": false,
        "difficulty": "moderate",
        "fitnessRequirements": null,
        "requiredEquipment": "Hiking shoes, water, hat",
        "guideRequired": null,
        "openingTime": "09:00",
        "closingTime": null,
        "lastEntryTime": "17:00",
        "sunriseDependent": false,
        "sunsetDependent": true,
        "weatherDependent": true,
        "notes": "Down and back up the valley. The climb out takes longer than it looks."
      },
      {
        "key": "activity:3",
        "reservationId": null,
        "name": "Kolsai Lakes — first to second lake",
        "type": "hike",
        "placeId": "place:12",
        "locationName": "Kolsai Lakes",
        "meetingPoint": null,
        "startLocal": "2026-09-16T09:00",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-16T04:00:00.000Z",
        "startPrecision": "exact",
        "endLocal": "2026-09-16T16:30",
        "endTimeZone": "Asia/Almaty",
        "endUtc": "2026-09-16T11:30:00.000Z",
        "endPrecision": "approximate",
        "durationMinutes": 450,
        "provider": null,
        "contactId": null,
        "externalUrl": null,
        "planningStatus": "planned",
        "reservationRequired": false,
        "difficulty": "hard",
        "fitnessRequirements": "Around 1,000 m of ascent over 16 km. A full day.",
        "requiredEquipment": "Hiking boots, layers, 2 l water, snacks",
        "guideRequired": null,
        "openingTime": null,
        "closingTime": null,
        "lastEntryTime": null,
        "sunriseDependent": false,
        "sunsetDependent": true,
        "weatherDependent": true,
        "notes": "National park entry fee is paid at the gate. Cost below is an estimate."
      },
      {
        "key": "activity:4",
        "reservationId": "reservation:9",
        "name": "Kaindy Lake by horse",
        "type": "horse_riding",
        "placeId": "place:11",
        "locationName": "Kaindy Lake",
        "meetingPoint": "Saty village square, by the blue gate",
        "startLocal": "2026-09-17T09:30",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-17T04:30:00.000Z",
        "startPrecision": "exact",
        "endLocal": "2026-09-17T15:00",
        "endTimeZone": "Asia/Almaty",
        "endUtc": "2026-09-17T10:00:00.000Z",
        "endPrecision": "approximate",
        "durationMinutes": 330,
        "provider": "Kolsai Horse Tours",
        "contactId": "contact:3",
        "externalUrl": null,
        "planningStatus": "planned",
        "reservationRequired": true,
        "difficulty": "moderate",
        "fitnessRequirements": null,
        "requiredEquipment": null,
        "guideRequired": true,
        "openingTime": null,
        "closingTime": null,
        "lastEntryTime": null,
        "sunriseDependent": false,
        "sunsetDependent": false,
        "weatherDependent": true,
        "notes": "Yerlan calls the evening before to confirm. Runs only if the track is dry."
      },
      {
        "key": "activity:5",
        "reservationId": null,
        "name": "Astana — Baiterek and the National Museum",
        "type": "sightseeing",
        "placeId": "place:5",
        "locationName": "Astana",
        "meetingPoint": null,
        "startLocal": "2026-09-22T10:00",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-22T05:00:00.000Z",
        "startPrecision": "approximate",
        "endLocal": "2026-09-22T17:00",
        "endTimeZone": "Asia/Almaty",
        "endUtc": "2026-09-22T12:00:00.000Z",
        "endPrecision": "approximate",
        "durationMinutes": null,
        "provider": null,
        "contactId": null,
        "externalUrl": null,
        "planningStatus": "planned",
        "reservationRequired": false,
        "difficulty": null,
        "fitnessRequirements": null,
        "requiredEquipment": null,
        "guideRequired": null,
        "openingTime": "10:00",
        "closingTime": "18:00",
        "lastEntryTime": "17:00",
        "sunriseDependent": false,
        "sunsetDependent": false,
        "weatherDependent": false,
        "notes": "Museum is closed on Mondays."
      },
      {
        "key": "activity:6",
        "reservationId": null,
        "name": "Burabay — Bolektau viewpoint walk",
        "type": "hike",
        "placeId": "place:8",
        "locationName": "Burabay National Park",
        "meetingPoint": null,
        "startLocal": "2026-09-25T10:00",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-25T05:00:00.000Z",
        "startPrecision": "flexible",
        "endLocal": "2026-09-25T14:00",
        "endTimeZone": "Asia/Almaty",
        "endUtc": "2026-09-25T09:00:00.000Z",
        "endPrecision": "approximate",
        "durationMinutes": null,
        "provider": null,
        "contactId": null,
        "externalUrl": null,
        "planningStatus": "planned",
        "reservationRequired": false,
        "difficulty": "easy",
        "fitnessRequirements": null,
        "requiredEquipment": null,
        "guideRequired": null,
        "openingTime": null,
        "closingTime": null,
        "lastEntryTime": null,
        "sunriseDependent": false,
        "sunsetDependent": false,
        "weatherDependent": true,
        "notes": "Short and easy. Decide on the day depending on the weather."
      },
      {
        "key": "activity:7",
        "reservationId": null,
        "name": "Teest",
        "type": "sightseeing",
        "placeId": null,
        "locationName": null,
        "meetingPoint": null,
        "startLocal": null,
        "startTimeZone": null,
        "startUtc": null,
        "startPrecision": "exact",
        "endLocal": null,
        "endTimeZone": null,
        "endUtc": null,
        "endPrecision": "approximate",
        "durationMinutes": null,
        "provider": null,
        "contactId": null,
        "externalUrl": null,
        "planningStatus": "planned",
        "reservationRequired": false,
        "difficulty": null,
        "fitnessRequirements": null,
        "requiredEquipment": null,
        "guideRequired": null,
        "openingTime": null,
        "closingTime": null,
        "lastEntryTime": null,
        "sunriseDependent": false,
        "sunsetDependent": false,
        "weatherDependent": false,
        "notes": null
      }
    ],
    "customItems": [
      {
        "kind": "meal",
        "title": "Dinner at Navat",
        "placeId": "place:0",
        "locationName": "Almaty",
        "startLocal": "2026-09-12T19:30",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-12T14:30:00.000Z",
        "startPrecision": "approximate",
        "endLocal": null,
        "endTimeZone": null,
        "endUtc": null,
        "endPrecision": "exact",
        "reservationId": null,
        "notes": "No reservation needed — they always find a table."
      },
      {
        "kind": "break",
        "title": "Fuel and cash stop in Saryozek",
        "placeId": null,
        "locationName": "Saryozek",
        "startLocal": "2026-09-13T12:30",
        "startTimeZone": "Asia/Almaty",
        "startUtc": "2026-09-13T07:30:00.000Z",
        "startPrecision": "approximate",
        "endLocal": null,
        "endTimeZone": null,
        "endUtc": null,
        "endPrecision": "exact",
        "reservationId": null,
        "notes": "Last reliable cash machine before Basshi. Take at least 60,000 KZT."
      }
    ],
    "dayInfo": [
      {
        "date": "2026-09-14",
        "title": "Altyn-Emel",
        "sunrise": "06:51",
        "sunset": "19:16",
        "weatherNote": null,
        "notes": null
      },
      {
        "date": "2026-09-15",
        "title": "Charyn → Saty",
        "sunrise": "06:52",
        "sunset": "19:12",
        "weatherNote": null,
        "notes": null
      },
      {
        "date": "2026-09-16",
        "title": "Kolsai Lakes",
        "sunrise": "06:53",
        "sunset": "19:10",
        "weatherNote": null,
        "notes": null
      },
      {
        "date": "2026-09-17",
        "title": "Kaindy Lake",
        "sunrise": "06:54",
        "sunset": "19:08",
        "weatherNote": null,
        "notes": null
      }
    ],
    "expenses": [
      {
        "key": "expense:0",
        "description": "Food and restaurants (estimate, 20 days)",
        "categoryId": "category:13",
        "certainty": "estimated",
        "reservationId": null,
        "linkType": null,
        "linkId": null,
        "date": null,
        "amountMinor": 60000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 60000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "Roughly 30 EUR a day for two."
      },
      {
        "key": "expense:1",
        "description": "Rixos Almaty, 1 night",
        "categoryId": "category:2",
        "certainty": "confirmed",
        "reservationId": "reservation:1",
        "linkType": null,
        "linkId": null,
        "date": "2026-03-20",
        "amountMinor": 30000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 30000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "Cancelled in May and refunded in full."
      },
      {
        "key": "expense:2",
        "description": "Frankfurt – Almaty return flights (2 people)",
        "categoryId": "category:0",
        "certainty": "confirmed",
        "reservationId": "reservation:10",
        "linkType": null,
        "linkId": null,
        "date": "2026-04-02",
        "amountMinor": 77000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 77000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:3",
        "description": "Travel insurance, 2 people",
        "categoryId": "category:14",
        "certainty": "actual",
        "reservationId": null,
        "linkType": null,
        "linkId": null,
        "date": "2026-04-05",
        "amountMinor": 7800,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 7800,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:4",
        "description": "Night train Almaty – Astana, 2 berths",
        "categoryId": "category:5",
        "certainty": "confirmed",
        "reservationId": "reservation:13",
        "linkType": null,
        "linkId": null,
        "date": "2026-07-02",
        "amountMinor": 3800000,
        "currency": "KZT",
        "fxRate": "0.0019",
        "fxDate": "2026-07-02",
        "fxSource": "manual",
        "homeAmountMinor": 7220,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:5",
        "description": "Astana – Almaty flight (2 people)",
        "categoryId": "category:1",
        "certainty": "confirmed",
        "reservationId": "reservation:11",
        "linkType": null,
        "linkId": null,
        "date": "2026-07-05",
        "amountMinor": 12000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 12000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:6",
        "description": "Hotel Kazzhol Almaty, 1 night",
        "categoryId": "category:2",
        "certainty": "confirmed",
        "reservationId": "reservation:0",
        "linkType": null,
        "linkId": null,
        "date": "2026-09-12",
        "amountMinor": 8500,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 8500,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:7",
        "description": "eSIM data packages",
        "categoryId": "category:17",
        "certainty": "estimated",
        "reservationId": null,
        "linkType": null,
        "linkId": null,
        "date": "2026-09-12",
        "amountMinor": 3000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 3000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:8",
        "description": "Rental car, 6 days",
        "categoryId": "category:3",
        "certainty": "confirmed",
        "reservationId": "reservation:12",
        "linkType": "rental_car",
        "linkId": "rental_car:0",
        "date": "2026-09-13",
        "amountMinor": 50000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 50000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:9",
        "description": "Rental car security deposit (refundable)",
        "categoryId": "category:3",
        "certainty": "confirmed",
        "reservationId": "reservation:12",
        "linkType": "rental_car",
        "linkId": "rental_car:0",
        "date": "2026-09-13",
        "amountMinor": 40000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 40000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": true,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "Blocked on the credit card at pick-up, released after the car is returned."
      },
      {
        "key": "expense:10",
        "description": "Altyn-Emel Guesthouse, 2 nights (cash on arrival)",
        "categoryId": "category:2",
        "certainty": "confirmed",
        "reservationId": "reservation:2",
        "linkType": null,
        "linkId": null,
        "date": "2026-09-13",
        "amountMinor": 5600000,
        "currency": "KZT",
        "fxRate": "0.0019",
        "fxDate": "2026-06-01",
        "fxSource": "manual",
        "homeAmountMinor": 10640,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:11",
        "description": "Fuel for the road trip (first estimate)",
        "categoryId": "category:4",
        "certainty": "estimated",
        "reservationId": null,
        "linkType": "rental_car",
        "linkId": "rental_car:0",
        "date": "2026-09-13",
        "amountMinor": 22000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 22000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "Superseded by the figure below once the route was fixed."
      },
      {
        "key": "expense:12",
        "description": "Fuel for the road trip",
        "categoryId": "category:4",
        "certainty": "confirmed",
        "reservationId": null,
        "linkType": "rental_car",
        "linkId": "rental_car:0",
        "date": "2026-09-13",
        "amountMinor": 18500,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 18500,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "About 1,450 km at 12 l/100 km, AI-95 at roughly 245 KZT/l."
      },
      {
        "key": "expense:13",
        "description": "Saty Guesthouse, 3 nights",
        "categoryId": "category:2",
        "certainty": "confirmed",
        "reservationId": "reservation:3",
        "linkType": "accommodation",
        "linkId": "accommodation:3",
        "date": "2026-09-15",
        "amountMinor": 18000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 18000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "100 EUR deposit sent by bank transfer, 80 EUR due in cash at check-in."
      },
      {
        "key": "expense:14",
        "description": "Kolsai Lakes park entry and parking (estimate)",
        "categoryId": "category:16",
        "certainty": "estimated",
        "reservationId": null,
        "linkType": "activity",
        "linkId": "activity:3",
        "date": "2026-09-16",
        "amountMinor": 6000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 6000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "Paid in cash at the gate. Exact price not confirmed."
      },
      {
        "key": "expense:15",
        "description": "Kaindy horse riding, 2 people",
        "categoryId": "category:11",
        "certainty": "confirmed",
        "reservationId": "reservation:9",
        "linkType": "activity",
        "linkId": "activity:4",
        "date": "2026-09-17",
        "amountMinor": 4000000,
        "currency": "KZT",
        "fxRate": "0.0019",
        "fxDate": "2026-06-08",
        "fxSource": "manual",
        "homeAmountMinor": 7600,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "Paid in cash to Yerlan on the day."
      },
      {
        "key": "expense:16",
        "description": "Almaty city apartment, 2 nights",
        "categoryId": "category:2",
        "certainty": "confirmed",
        "reservationId": "reservation:4",
        "linkType": null,
        "linkId": null,
        "date": "2026-09-18",
        "amountMinor": 9600,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 9600,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:17",
        "description": "Astana Central Hotel, 3 nights",
        "categoryId": "category:2",
        "certainty": "confirmed",
        "reservationId": "reservation:5",
        "linkType": null,
        "linkId": null,
        "date": "2026-09-21",
        "amountMinor": 21000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 21000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:18",
        "description": "Burabay guesthouse, 2 nights (estimate)",
        "categoryId": "category:2",
        "certainty": "estimated",
        "reservationId": "reservation:6",
        "linkType": null,
        "linkId": null,
        "date": "2026-09-24",
        "amountMinor": 13000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 13000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": "Two options between 55 and 75 EUR a night. Not reserved yet."
      },
      {
        "key": "expense:19",
        "description": "Astana Central Hotel, 2 nights (return leg)",
        "categoryId": "category:2",
        "certainty": "confirmed",
        "reservationId": "reservation:7",
        "linkType": null,
        "linkId": null,
        "date": "2026-09-26",
        "amountMinor": 14000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 14000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      },
      {
        "key": "expense:20",
        "description": "Almaty Airport Hotel, 2 nights",
        "categoryId": "category:2",
        "certainty": "confirmed",
        "reservationId": "reservation:8",
        "linkType": null,
        "linkId": null,
        "date": "2026-09-28",
        "amountMinor": 15000,
        "currency": "EUR",
        "fxRate": null,
        "fxDate": null,
        "fxSource": null,
        "homeAmountMinor": 15000,
        "homeCurrency": "EUR",
        "isRefundableDeposit": false,
        "isRefundable": false,
        "travelerId": null,
        "isVoided": false,
        "notes": null
      }
    ],
    "payments": [
      {
        "expenseId": "expense:2",
        "reservationId": "reservation:10",
        "direction": "outgoing",
        "amountMinor": 77000,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 77000,
        "homeCurrency": "EUR",
        "date": "2026-04-02",
        "method": "credit_card",
        "status": "completed",
        "paidByTravelerId": "traveler:0",
        "reference": null,
        "notes": null
      },
      {
        "expenseId": "expense:13",
        "reservationId": "reservation:3",
        "direction": "outgoing",
        "amountMinor": 10000,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 10000,
        "homeCurrency": "EUR",
        "date": "2026-06-08",
        "method": "bank_transfer",
        "status": "completed",
        "paidByTravelerId": "traveler:0",
        "reference": "Deposit",
        "notes": "Remaining 80 EUR is due in cash on arrival."
      },
      {
        "expenseId": "expense:5",
        "reservationId": "reservation:11",
        "direction": "outgoing",
        "amountMinor": 12000,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 12000,
        "homeCurrency": "EUR",
        "date": "2026-07-05",
        "method": "credit_card",
        "status": "completed",
        "paidByTravelerId": "traveler:1",
        "reference": null,
        "notes": null
      },
      {
        "expenseId": "expense:1",
        "reservationId": "reservation:1",
        "direction": "outgoing",
        "amountMinor": 30000,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 30000,
        "homeCurrency": "EUR",
        "date": "2026-03-20",
        "method": "credit_card",
        "status": "completed",
        "paidByTravelerId": "traveler:0",
        "reference": null,
        "notes": null
      },
      {
        "expenseId": "expense:1",
        "reservationId": "reservation:1",
        "direction": "refund",
        "amountMinor": 30000,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 30000,
        "homeCurrency": "EUR",
        "date": "2026-05-16",
        "method": "credit_card",
        "status": "completed",
        "paidByTravelerId": null,
        "reference": null,
        "notes": "Refunded in full — cancelled inside the free window."
      },
      {
        "expenseId": "expense:6",
        "reservationId": "reservation:0",
        "direction": "outgoing",
        "amountMinor": 8500,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 8500,
        "homeCurrency": "EUR",
        "date": "2026-05-14",
        "method": "credit_card",
        "status": "completed",
        "paidByTravelerId": null,
        "reference": null,
        "notes": null
      },
      {
        "expenseId": "expense:16",
        "reservationId": "reservation:4",
        "direction": "outgoing",
        "amountMinor": 9600,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 9600,
        "homeCurrency": "EUR",
        "date": "2026-06-12",
        "method": "credit_card",
        "status": "completed",
        "paidByTravelerId": null,
        "reference": null,
        "notes": null
      },
      {
        "expenseId": "expense:17",
        "reservationId": "reservation:5",
        "direction": "outgoing",
        "amountMinor": 21000,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 21000,
        "homeCurrency": "EUR",
        "date": "2026-06-20",
        "method": "credit_card",
        "status": "completed",
        "paidByTravelerId": null,
        "reference": null,
        "notes": null
      },
      {
        "expenseId": "expense:4",
        "reservationId": "reservation:13",
        "direction": "outgoing",
        "amountMinor": 3800000,
        "currency": "KZT",
        "fxRate": "0.0019",
        "homeAmountMinor": 7220,
        "homeCurrency": "EUR",
        "date": "2026-07-02",
        "method": "card",
        "status": "completed",
        "paidByTravelerId": null,
        "reference": null,
        "notes": null
      },
      {
        "expenseId": "expense:3",
        "reservationId": null,
        "direction": "outgoing",
        "amountMinor": 7800,
        "currency": "EUR",
        "fxRate": null,
        "homeAmountMinor": 7800,
        "homeCurrency": "EUR",
        "date": "2026-04-05",
        "method": "bank_transfer",
        "status": "completed",
        "paidByTravelerId": null,
        "reference": null,
        "notes": null
      }
    ],
    "expenseShares": [
      {
        "expenseId": "expense:2",
        "travelerId": "traveler:0",
        "shareMinor": 38500
      },
      {
        "expenseId": "expense:2",
        "travelerId": "traveler:1",
        "shareMinor": 38500
      }
    ],
    "tasks": [
      {
        "title": "Reserve the Burabay guesthouse",
        "description": "Two options shortlisted. Email both, then pay the 30% deposit.",
        "linkType": null,
        "linkId": null,
        "reservationId": "reservation:6",
        "dueDate": "2026-08-15",
        "dueTime": null,
        "dueTimeZone": "Asia/Almaty",
        "dueUtc": "2026-08-15T13:00:00.000Z",
        "priority": "high",
        "status": "open",
        "completedOn": null,
        "notes": null
      },
      {
        "title": "Pay the Astana hotel prepayment",
        "description": null,
        "linkType": null,
        "linkId": null,
        "reservationId": "reservation:7",
        "dueDate": "2026-08-13",
        "dueTime": null,
        "dueTimeZone": "Asia/Almaty",
        "dueUtc": "2026-08-13T07:00:00.000Z",
        "priority": "critical",
        "status": "open",
        "completedOn": null,
        "notes": null
      },
      {
        "title": "Order the International Driving Permit",
        "description": "Required at the rental desk alongside the national licence.",
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "dueDate": "2026-08-20",
        "dueTime": null,
        "dueTimeZone": null,
        "dueUtc": null,
        "priority": "high",
        "status": "in_progress",
        "completedOn": null,
        "notes": null
      },
      {
        "title": "Check passport validity (6 months beyond entry)",
        "description": null,
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "dueDate": null,
        "dueTime": null,
        "dueTimeZone": null,
        "dueUtc": null,
        "priority": "normal",
        "status": "open",
        "completedOn": null,
        "notes": null
      },
      {
        "title": "Buy eSIM data packages",
        "description": null,
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "dueDate": "2026-09-05",
        "dueTime": null,
        "dueTimeZone": null,
        "dueUtc": null,
        "priority": "low",
        "status": "open",
        "completedOn": null,
        "notes": null
      },
      {
        "title": "Download offline maps for Altyn-Emel, Charyn and Kolsai",
        "description": "There is no mobile signal between Basshi and the Charyn turn-off.",
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "dueDate": "2026-09-09",
        "dueTime": null,
        "dueTimeZone": null,
        "dueUtc": null,
        "priority": "normal",
        "status": "open",
        "completedOn": null,
        "notes": null
      },
      {
        "title": "Withdraw cash before leaving Almaty",
        "description": "Guesthouses in Basshi and Saty do not take cards. Budget around 120,000 KZT.",
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "dueDate": "2026-09-13",
        "dueTime": null,
        "dueTimeZone": null,
        "dueUtc": null,
        "priority": "high",
        "status": "open",
        "completedOn": null,
        "notes": null
      },
      {
        "title": "Send Aigerim our arrival time by WhatsApp",
        "description": null,
        "linkType": "accommodation",
        "linkId": "accommodation:3",
        "reservationId": null,
        "dueDate": "2026-09-14",
        "dueTime": null,
        "dueTimeZone": null,
        "dueUtc": null,
        "priority": "normal",
        "status": "open",
        "completedOn": null,
        "notes": null
      }
    ],
    "deadlines": [
      {
        "type": "cancellation",
        "title": "Burabay guesthouse — quoted rate expires",
        "description": "The guesthouse holds this price until this date. After that it goes up.",
        "reservationId": "reservation:6",
        "linkType": null,
        "linkId": null,
        "dueDate": "2026-08-15",
        "dueTime": "18:00",
        "dueTimeZone": "Asia/Almaty",
        "dueUtc": "2026-08-15T13:00:00.000Z",
        "importance": "high",
        "financialImpactMinor": 4000,
        "financialImpactCurrency": "EUR",
        "resolvedOn": null,
        "dismissed": false,
        "notifyChannels": [
          "in_app"
        ],
        "notifyLeadDays": 3,
        "lastNotifiedAt": null
      },
      {
        "type": "payment",
        "title": "Astana hotel (return leg) — prepayment due",
        "description": "Pay on the hotel website to keep the reserved rate.",
        "reservationId": "reservation:7",
        "linkType": null,
        "linkId": null,
        "dueDate": "2026-08-13",
        "dueTime": "12:00",
        "dueTimeZone": "Asia/Almaty",
        "dueUtc": "2026-08-13T07:00:00.000Z",
        "importance": "critical",
        "financialImpactMinor": 14000,
        "financialImpactCurrency": "EUR",
        "resolvedOn": null,
        "dismissed": false,
        "notifyChannels": [
          "in_app"
        ],
        "notifyLeadDays": 2,
        "lastNotifiedAt": null
      },
      {
        "type": "permit",
        "title": "Confirm Altyn-Emel park permit arrangements",
        "description": "Check whether the Basshi gate still only takes cash, and how much to bring.",
        "reservationId": null,
        "linkType": null,
        "linkId": null,
        "dueDate": "2026-08-18",
        "dueTime": null,
        "dueTimeZone": "Asia/Almaty",
        "dueUtc": "2026-08-18T18:59:00.000Z",
        "importance": "normal",
        "financialImpactMinor": null,
        "financialImpactCurrency": null,
        "resolvedOn": null,
        "dismissed": false,
        "notifyChannels": [
          "in_app"
        ],
        "notifyLeadDays": null,
        "lastNotifiedAt": null
      },
      {
        "type": "cancellation",
        "title": "Hotel Kazzhol Almaty — free cancellation ends",
        "description": null,
        "reservationId": "reservation:0",
        "linkType": null,
        "linkId": null,
        "dueDate": "2026-09-10",
        "dueTime": "23:59",
        "dueTimeZone": "Asia/Almaty",
        "dueUtc": "2026-09-10T18:59:00.000Z",
        "importance": "normal",
        "financialImpactMinor": 8500,
        "financialImpactCurrency": "EUR",
        "resolvedOn": null,
        "dismissed": false,
        "notifyChannels": null,
        "notifyLeadDays": null,
        "lastNotifiedAt": null
      },
      {
        "type": "check_in_opens",
        "title": "Online check-in opens — Frankfurt to Almaty",
        "description": null,
        "reservationId": "reservation:10",
        "linkType": null,
        "linkId": null,
        "dueDate": "2026-09-10",
        "dueTime": "22:00",
        "dueTimeZone": "Europe/Berlin",
        "dueUtc": "2026-09-10T20:00:00.000Z",
        "importance": "normal",
        "financialImpactMinor": null,
        "financialImpactCurrency": null,
        "resolvedOn": null,
        "dismissed": false,
        "notifyChannels": null,
        "notifyLeadDays": null,
        "lastNotifiedAt": null
      },
      {
        "type": "payment",
        "title": "Saty Guesthouse — 80 EUR balance due in cash at check-in",
        "description": null,
        "reservationId": "reservation:3",
        "linkType": null,
        "linkId": null,
        "dueDate": "2026-09-15",
        "dueTime": "20:00",
        "dueTimeZone": "Asia/Almaty",
        "dueUtc": "2026-09-15T15:00:00.000Z",
        "importance": "high",
        "financialImpactMinor": 8000,
        "financialImpactCurrency": "EUR",
        "resolvedOn": null,
        "dismissed": false,
        "notifyChannels": null,
        "notifyLeadDays": null,
        "lastNotifiedAt": null
      },
      {
        "type": "cancellation",
        "title": "Rental car — free cancellation ends 48 h before pick-up",
        "description": null,
        "reservationId": "reservation:12",
        "linkType": null,
        "linkId": null,
        "dueDate": "2026-09-11",
        "dueTime": "09:00",
        "dueTimeZone": "Asia/Almaty",
        "dueUtc": "2026-09-11T04:00:00.000Z",
        "importance": "normal",
        "financialImpactMinor": 50000,
        "financialImpactCurrency": "EUR",
        "resolvedOn": null,
        "dismissed": false,
        "notifyChannels": null,
        "notifyLeadDays": null,
        "lastNotifiedAt": null
      }
    ],
    "permits": [
      {
        "name": "Altyn-Emel National Park entry permit",
        "status": "needed",
        "linkType": "activity",
        "linkId": "activity:1",
        "placeId": "place:4",
        "costMinor": 400000,
        "costCurrency": "KZT",
        "applicationDeadline": "2026-08-18",
        "issuedOn": null,
        "expiresOn": null,
        "reference": null,
        "externalUrl": null,
        "notes": "Bought at the Basshi gate on arrival. Cash only — no card machine at the park."
      },
      {
        "name": "Kolsai Lakes National Park entry",
        "status": "not_needed",
        "linkType": "activity",
        "linkId": "activity:3",
        "placeId": "place:12",
        "costMinor": 200000,
        "costCurrency": "KZT",
        "applicationDeadline": null,
        "issuedOn": null,
        "expiresOn": null,
        "reference": null,
        "externalUrl": null,
        "notes": "Paid at the gate, no application required."
      }
    ],
    "documents": [
      {
        "name": "Passport — Jun",
        "type": "passport",
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "issuedOn": null,
        "expiresOn": "2031-03-14",
        "reference": null,
        "externalUrl": null,
        "fileKey": null,
        "fileName": null,
        "notes": "Valid well beyond the trip. Number deliberately not stored here."
      },
      {
        "name": "Passport — Mira",
        "type": "passport",
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "issuedOn": null,
        "expiresOn": "2028-11-02",
        "reference": null,
        "externalUrl": null,
        "fileKey": null,
        "fileName": null,
        "notes": null
      },
      {
        "name": "International Driving Permit",
        "type": "international_driving_permit",
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "issuedOn": null,
        "expiresOn": "2027-08-01",
        "reference": null,
        "externalUrl": null,
        "fileKey": null,
        "fileName": null,
        "notes": "Required at the rental desk together with the national licence."
      },
      {
        "name": "Travel insurance policy",
        "type": "travel_insurance",
        "linkType": null,
        "linkId": null,
        "reservationId": null,
        "issuedOn": "2026-04-05",
        "expiresOn": "2027-04-04",
        "reference": "POL-2026-88213",
        "externalUrl": null,
        "fileKey": null,
        "fileName": null,
        "notes": "24 h assistance line is saved under Contacts."
      },
      {
        "name": "Flight confirmation KC7Y2Q",
        "type": "flight_ticket",
        "linkType": null,
        "linkId": null,
        "reservationId": "reservation:10",
        "issuedOn": null,
        "expiresOn": null,
        "reference": "KC7Y2Q",
        "externalUrl": null,
        "fileKey": null,
        "fileName": null,
        "notes": null
      },
      {
        "name": "Rental agreement (pre-contract)",
        "type": "rental_agreement",
        "linkType": null,
        "linkId": null,
        "reservationId": "reservation:12",
        "issuedOn": null,
        "expiresOn": null,
        "reference": "ACR-77120",
        "externalUrl": null,
        "fileKey": null,
        "fileName": null,
        "notes": "Print it — the desk has asked for a paper copy before."
      }
    ],
    "notes": [
      {
        "title": "Cash",
        "body": "Card acceptance drops off completely outside Almaty and Astana. Basshi and Saty are cash only, and the last dependable cash machine is in Saryozek.",
        "linkType": null,
        "linkId": null,
        "pinned": true
      },
      {
        "title": "Roads",
        "body": "The last 40 km into Saty is gravel and washboarded. Allow half an hour more than any map suggests, and do not plan to drive it after dark if it can be avoided.",
        "linkType": null,
        "linkId": null,
        "pinned": true
      },
      {
        "title": "Altyn-Emel",
        "body": "The park is enormous and the Singing Dune is 60 km from the gate on unpaved tracks. Fill the tank in Basshi.",
        "linkType": null,
        "linkId": null,
        "pinned": false
      },
      {
        "title": "Saty Guesthouse",
        "body": "Aigerim cooks dinner if you tell her by 16:00. Parking is behind the house through the blue gate.",
        "linkType": "accommodation",
        "linkId": "accommodation:3",
        "pinned": false
      }
    ],
    "preparation": [
      {
        "category": "connectivity",
        "title": "eSIM bought",
        "detail": null,
        "done": false,
        "notApplicable": false
      },
      {
        "category": "connectivity",
        "title": "Offline maps downloaded",
        "detail": null,
        "done": false,
        "notApplicable": false
      },
      {
        "category": "driving",
        "title": "International Driving Permit",
        "detail": null,
        "done": false,
        "notApplicable": false
      },
      {
        "category": "driving",
        "title": "Read up on local driving rules",
        "detail": "Headlights on outside built-up areas; zero-tolerance alcohol limit.",
        "done": false,
        "notApplicable": false
      },
      {
        "category": "entry",
        "title": "Visa-free entry confirmed for our nationality",
        "detail": "Checked on the official government site in April 2026. Re-check a week before departure.",
        "done": true,
        "notApplicable": false
      },
      {
        "category": "entry",
        "title": "Passport valid 6 months beyond entry",
        "detail": null,
        "done": true,
        "notApplicable": false
      },
      {
        "category": "entry",
        "title": "Registration on arrival",
        "detail": "Under 30 days no separate registration is needed if entry is by air, but confirm before leaving.",
        "done": false,
        "notApplicable": false
      },
      {
        "category": "health",
        "title": "No mandatory vaccinations",
        "detail": null,
        "done": false,
        "notApplicable": true
      },
      {
        "category": "insurance",
        "title": "Travel health insurance",
        "detail": null,
        "done": true,
        "notApplicable": false
      },
      {
        "category": "insurance",
        "title": "Decide on rental excess insurance",
        "detail": "1,000 EUR excess with glass, tyres and undercarriage excluded — a separate policy may be worth it.",
        "done": false,
        "notApplicable": false
      },
      {
        "category": "money",
        "title": "Tell the bank about the trip",
        "detail": null,
        "done": true,
        "notApplicable": false
      },
      {
        "category": "money",
        "title": "Bring EUR cash to change locally",
        "detail": "Exchange rates in Almaty are better than at home.",
        "done": false,
        "notApplicable": false
      },
      {
        "category": "packing",
        "title": "Warm layers for the mountains",
        "detail": "Nights in Saty fall to around 3 °C in late September.",
        "done": false,
        "notApplicable": false
      },
      {
        "category": "packing",
        "title": "Hiking boots",
        "detail": null,
        "done": false,
        "notApplicable": false
      }
    ],
    "safety": [
      {
        "scope": "country",
        "scopeName": "Kazakhstan",
        "title": "Emergency number",
        "body": "112 reaches police, ambulance and fire and works from mobile phones.",
        "emergencyNumber": "112",
        "contactId": null,
        "source": null
      },
      {
        "scope": "region",
        "scopeName": "Almaty Region",
        "title": "Mountain weather",
        "body": "Conditions in the Kolsai and Kaindy valleys change quickly. Snow is possible above 2,500 m from late September.",
        "emergencyNumber": null,
        "contactId": null,
        "source": null
      },
      {
        "scope": "general",
        "scopeName": null,
        "title": "Insurance assistance line",
        "body": "Call before agreeing to any treatment. The number is saved under Contacts.",
        "emergencyNumber": null,
        "contactId": "contact:2",
        "source": null
      },
      {
        "scope": "region",
        "scopeName": "Altyn-Emel",
        "title": "Remote driving",
        "body": "No mobile signal for long stretches and very little traffic. Carry water, a spare tyre and a full tank.",
        "emergencyNumber": null,
        "contactId": null,
        "source": null
      }
    ]
  }
}