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.
⤓ 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#
- TransportDetails (carrier, number, ref, from/to)
- Booking payment (payer, invoice, onsite)
- Ticket pdf417 boarding passes
- memberIds on items and bookings
- Member loyalty
- LogisticsNote
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#
- As a reader test: load the file in your player or importer; it must open without error and unknown fields (if you add some) must survive a round-trip.
- As a writer reference: copy the shapes you need — the specification documents every field and the JSON Schema validates the structure.
- With an AI assistant: hand it the file URL as a shape reference ("produce a Roadbook like business-trip.roadbook.json for …"); then validate the output.