Example · all examples

Business trip

This Roadbook represents a professional trip containing flights, meetings, accommodation, payment information and travelers: two colleagues fly Paris → Berlin for a client workshop, with flights carrying carrier, number, PNR, terminals and timezones, PDF417 boarding passes per traveler, a company-paid hotel and dinner (payment.payer: "company", invoice / on-site), meetings and work items with an agenda attachment, and a conference that concerns only one traveler.

file business-trip.roadbook.json format 1.2 days 2 items 12 bookings 4 validates ✓ schema + reference validator

⤓ Download business-trip.roadbook.json View raw JSON Validate Preview

What this example shows#

Business features introduced in 1.2 are all here: transport details, memberIds on items and bookings, loyalty programs, payment status and payer, attachments, and a logistics note about expenses. Times are local wall-clock with timezone / endTimezone on the flights.

Features demonstrated#

Manifest tags: flight transport timezone meeting conference payment payer invoice pdf417 memberIds loyalty attachments logistics — see examples/index.json.

Excerpt#

Abridged — the full file is the reference.

{
  "days": [
    {
      "id": "d1",
      "index": 1,
      "date": "2026-11-17",
      "title": "Paris → Berlin, kick-off",
      "items": [
        {
          "id": "i1",
          "time": "07:40",
          "endTime": "09:25",
          "title": "Flight CDG → BER",
          "type": "flight",
          "status": "planned",
          "timezone": "Europe/Paris",
          "endTimezone": "Europe/Berlin",
          "bookingId": "b-flights",
          "transport": {
            "carrier": "Air France",
            "number": "AF1234",
            "ref": "EXMPL1",
            "from": {
              "name": "Paris Charles de Gaulle (CDG)",
              "terminal": "2F",
              "timezone": "Europe/Paris"
            },
            "to": {
              "name": "Berlin Brandenburg (BER)",
              "terminal": "1",
              "timezone": "Europe/Berlin"
            }
          },
          "critical": "Boarding closes 20 minutes before departure."
        },
        {
          "id": "i3",
          "time": "11:30",
          "endTime": "13:00",
          "title": "Workshop day 1 — discovery",
          "type": "meeting",
          "status": "planned",
          "stars": 3,
          "place": "Client HQ, Friedrichstraße 100, Berlin",
          "desc": "Attendees: client product team (6), Marie, Karim. Agenda in the attachment.",
          "attachments": [
            {
              "id": "att1",
              "label": "Agenda (PDF)",
              "url": "https://example.org/agenda-day1.pdf"
            }
          ],
          "outfit": [
            "dressy"
          ]
        }
      ]
    }
  ],
  "bookings": [
    {
      "id": "b-flights",
      "type": "transport",
      "status": "confirmed",
      "title": "Air France — CDG ⇄ BER",
      "price": 380,
      "payment": {
        "status": "invoice",
        "payer": "company",
        "note": "Cost center MKT-42"
      },
      "transport": {
        "carrier": "Air France",
        "ref": "EXMPL1"
      },
      "refs": [
        {
          "label": "PNR",
          "value": "EXMPL1",
          "sensitive": true
        }
      ],
      "tickets": [
        {
          "id": "t1",
          "label": "Boarding pass — outbound",
          "code": "AF1234/17NOV",
          "memberId": "m1",
          "seat": "12A",
          "payload": "M1DUPONT/MARIE        EEXMPL1 CDGBERAF 1234 321Y012A0001 100",
          "format": "pdf417",
          "date": "2026-11-17",
          "time": "07:40"
        },
        {
          "id": "t2",
          "label": "Boarding pass — outbound",
          "code": "AF1234/17NOV",
          "memberId": "m2",
          "seat": "12B",
          "payload": "M1HADDAD/KARIM        EEXMPL1 CDGBERAF 1234 321Y012B0002 100",
          "format": "pdf417",
          "date": "2026-11-17",
          "time": "07:40"
        }
      ],
      "attachments": [
        {
          "id": "att2",
          "label": "E-ticket receipt",
          "url": "https://example.org/receipt.pdf"
        }
      ]
    }
  ]
}

Use it#