Skip to main content

Journey

A representation of a traveler's planned or actual movement associated with a transport instance — flight, vessel, train, bus, or land crossing.

The Journey object should contain the current normalized border-relevant travel state. It is not API-specific, PNR-specific, or Manifest-specific. Those are source records that update it, captured as JourneySourceSnapshot (see below).

This separation matters: a single journey may be updated multiple times — by an API push, then a PNR change, then a near-departure manifest. The Journey reflects the latest accepted state; the source snapshots are the auditable history.

Traveler
1 ── * Journey
1 ── * JourneySourceSnapshot
sourceSystem = API | PNR | MANIFEST | MANUAL

Attributes

FieldTypeOptionalityFormat / LengthSourceNotes
journeyIdUUID / stringMandatory36 chars if UUIDTISInternal immutable Journey identifier
travelerIdUUID / stringMandatory36 chars if UUIDTISReference to Traveler aggregate
transportTypeenumMandatoryAIR, LAND, SEATIS / EES-alignedOperational discriminator for the border context
operatorCodestringOptional2..3 uppercase alphanumericLatest accepted source snapshotCarrier / operator code; for air, IATA 2-char preferred
conveyanceNumberstringOptional1..10 uppercase alphanumericLatest accepted source snapshotFlight / vessel / train / bus reference
routeFromstring / codeOptional3..10 charsLatest accepted source snapshotCoded location preferred over free text; for air, airport code
routeTostring / codeOptional3..10 charsLatest accepted source snapshotAs above
scheduledDeparturedatetimeOptionalISO 8601Latest accepted source snapshotBorder operations are time-sensitive
scheduledArrivaldatetimeOptionalISO 8601Latest accepted source snapshotAs above
journeyStatusenumMandatoryPLANNED, COMPLETED, INVALIDATEDTISLifecycle of the normalized Journey
versionintegerMandatorylatest accepted snapshot versionTISIncrements with each accepted snapshot
currentSnapshotIdUUID / stringMandatory36 chars if UUIDTISPoints to the latest accepted JourneySourceSnapshot
sourceSnapshotsarray<reference>Derivedn/aTISAudit trail of source records that created or modified the Journey
primarySourceSystemenumDerivedAPI, PNR, MANIFEST, MANUALDerivedConvenience field; usually copied from the initial or latest accepted snapshot. Not the source of truth
primarySourceRecordRefstringDerived1..50DerivedConvenience reference; the real source reference lives on the snapshot

JourneySourceSnapshot

The audit trail and source-of-truth lineage for the Journey. Each snapshot records what updated the Journey, from where, and when — keeping the Journey itself source-neutral.

This entity replaces older PNR-specific snapshot models. The same generic shape covers PNR, API (Advance Passenger Information), Manifest, and manual corrections.

Source semantics

SourceMeaningScopeMapping to Journey
APIAdvance Passenger Information / API-like traveler/document feedIdentity / document context with optional travel contextMay create / update Journey if enough transport context exists
PNRPassenger Name Record / booking recordBooking and itinerary contextCan create / update / invalidate Journey
MANIFESTCarrier or transport manifestOperational transport / passenger listStrong operational source for Journey updates near departure / arrival
MANUALManual correction or operational overrideAdministrative / operational correctionCan create / update / invalidate Journey

Attributes

FieldTypeOptionalityFormat / LengthSourceNotes
snapshotIdUUID / stringMandatory36 chars if UUIDTISInternal immutable snapshot identifier
journeyIdUUID / stringMandatory36 chars if UUIDTISReference to the Journey this snapshot modifies
sourceSystemenumMandatoryAPI, PNR, MANIFEST, MANUALTIS / IntegrationKey field that makes the snapshot source-neutral
sourceRecordRefstringMandatory1..50Source systemExternal source reference. PNR locator / API message ID / manifest reference / manual case ID
changeTypeenumMandatoryINITIAL, UPDATE, CANCELLED, CORRECTIONTISClassifies how this snapshot affects the Journey
receivedTimeStampdatetimeMandatoryISO 8601TISWhen TIS received / accepted the source snapshot
effectiveAtTimeStampdatetimeOptionalISO 8601Source / TISWhen the source says the change became effective
payloadHashstringRecommendedSHA-256TISDeduplication and integrity check
rawPayloadRefstringOptionalURI / internal object IDTISPointer to raw payload if stored separately
operatorCodestringOptional2..3 uppercase alphanumericAPI / PNR / MANIFESTOperator / carrier from this snapshot. May update Journey state
conveyanceNumberstringOptional1..10 uppercase alphanumericAPI / PNR / MANIFESTFlight / movement number from this snapshot
routeFromstring / codeOptional3..10 charsAPI / PNR / MANIFESTOrigin / location from this snapshot
routeTostring / codeOptional3..10 charsAPI / PNR / MANIFESTDestination / location from this snapshot
scheduledDeparturedatetimeOptionalISO 8601API / PNR / MANIFESTPlanned departure from this snapshot
scheduledArrivaldatetimeOptionalISO 8601API / PNR / MANIFESTPlanned arrival from this snapshot
travelerIdentityRefUUID / stringOptional36 chars if UUIDAPI / MANIFESTReference to identity / document payload used for matching. Do not duplicate full identity fields here unless needed for audit
pnrLocatorstringOptionalusually 6 charsPNRPNR-specific convenience; can also be carried in sourceRecordRef when sourceSystem = PNR
bookingDatedate / datetimeOptionalISO 8601PNRUseful for risk / audit; not Journey core
seatNumberstringOptional1..5PNR / MANIFESTOperational context; not Journey core unless needed
baggageInfostring / objectOptionalsource-definedPNR / MANIFESTSource-specific operational context
ssrCodesarray<string>OptionalIATA SSR codesPNRSensitive / booking-service context — store only if needed and governed
manualReasonstringOptional1..500MANUALReason for manual correction or creation
createdBystringOptionaluser / service identifierTIS / MANUALUseful for manual snapshots and operational audit

Source resolution

The Journey is built by merging accepted JourneySourceSnapshot records from upstream sources. TIS decides whether to accept a snapshot based on:

  • sourceSystem authority for the affected field (see matrix below)
  • effectiveAtTimeStamp versus the Journey's current state
  • changeType (INITIAL, UPDATE, CANCELLED, CORRECTION)

Latest accepted source snapshot wins, with the contribution matrix below as the precedence guide. MANUAL snapshots always carry an explicit manualReason and override automated sources when accepted — they exist precisely for cases where automated data is wrong.

Source contribution matrix

Which source can authoritatively update which Journey field.

Journey fieldAPIPNRMANIFESTMANUALRecommendation
travelerIdYesMaybeYesYesAPI strongest for identity / document matching; PNR weaker unless passenger identity is reliable
transportTypeMaybeYesYesYesManifest usually strongest operational source
operatorCodeMaybeYesYesYesLatest accepted source can update
conveyanceNumberMaybeYesYesYesManifest may be authoritative near departure
routeFromMaybeYesYesYesPNR has itinerary; manifest has operational movement
routeToMaybeYesYesYesAs above
scheduledDepartureMaybeYesYesYesManifest / carrier feed likely strongest near operation
scheduledArrivalMaybeYesYesYesAs above
journeyStatusNoMaybeYesYesTIS owns final lifecycle, derived from source events
versionNoNoNoNoTIS-owned
currentSnapshotIdNoNoNoNoTIS-owned

Yes — source is authoritative for this field. Maybe — source may update if no stronger source has contributed recently. No — source cannot update this field.

See also

  • Data Model overview — full entity set, standards alignment, domain separation
  • Traveler — the entity Journeys are linked to
  • Encounter — Journeys and Encounters are independent dimensions of the Traveler; correlation between them is derived