Skip to main content

Encounter

A unified, consistent representation of a traveler encounter across all border control channels — enabling reliable tracking of traveler movements, interactions, and system touchpoints over time.

All channel-generated interactions (Enrollment, Smart Corridor, eGates, Kiosks, external systems) are recorded using shared semantics and correlated to travelers whenever possible.

Principles

  • Encounters are sessions, not atomic events. An Encounter represents an operational interaction with a defined purpose. The atomic steps inside it are EncounterEvent records.
  • Events provide internal traceability; Encounters provide operational meaning. History is read at the Encounter level; the Event level explains how the Encounter unfolded.
  • Identity is known at the time of the Encounter. Every Encounter is linked to a Traveler at creation. Identity is established by the channel beforehand — by enrollment for first-time travelers, by identification at the border post for subsequent interactions, or by other channel-level identity provisioning.
  • TIS stores facts, not decisions. Encounters describe what happened, where, and in which context — they do not embed application-level decision logic. Downstream systems react.
  • All channels speak the same Encounter language. eGate, Corridor, Kiosk, Border Post, and external systems all produce Encounter records with the same shape and the same enums.

Relationship to Traveler, Document, and Journey

RelationCardinalityNotes
Traveler → Journey1:NJourney does not link directly to Encounter
Traveler → Document1:NA Document is registered to a Traveler
Traveler → Encounter1:NEncounter does not link directly to Journey
Encounter → Document0:1An Encounter references the primary Document used during the interaction via documentId; present whenever a document is used, absent for document-less interactions
Encounter → EncounterEvent1:NAtomic steps belonging to the Encounter

Journeys and Encounters are independent dimensions of the Traveler — one is the planned movement context, the other is the recorded interaction history. Correlation between them is derived (timestamp, location), not modeled by a direct foreign key.

Attributes

FieldTypeOptionalityFormat / LengthSourceNotes
idUUID / stringMandatory36 charsSystemInternal identifier
purposeenumMandatorysee belowCanonicalBusiness reason for the interaction
channelenumMandatorysee belowCanonicalInteraction channel
sourceSystemstringMandatory1..50SystemOrigin system; together with externalReference forms the uniqueness constraint
externalReferencestringMandatory1..100ExternalSource system's business reference for the interaction; with sourceSystem forms the uniqueness constraint
startedAtdatetimeMandatoryISO 8601 UTCSystemTimestamp when the Encounter started
endedAtdatetimeOptional (Mandatory when outcome != PENDING)ISO 8601 UTCSystemTimestamp when the Encounter ended with a definitive outcome
locationstringOptional1..100DeploymentSite / zone / lane
outcomeenumMandatoryPENDING, ALLOWED, DENIED, SUSPENDEDSystemLifecycle state
travelerIdUUID / stringMandatory36 charsSystemLinked Traveler — always populated; identity is known when the Encounter is created
documentIdUUID / stringConditional36 charsSystemMandatory when a document is presented / used; optional for document-less interactions. Primary travel document (passport > national ID; visa complementary)
eventsarray<EncounterEvent>Optional0..NCanonicalNested events — see below

Enum: purpose

BORDER_CHECK_ENTRY, BORDER_CHECK_EXIT, ENROLLMENT, TRAVEL_AUTH, PRE_TRAVEL_AUTH, FIELD_CHECK, SECONDARY_INSPECTION

Enum: channel

EGATE, KIOSK, APPLICATION, BORDER_POST, CORRIDOR, EXTERNAL_SYSTEM


EncounterEvent

A single step within an Encounter. Each event is a universal envelopeeventType, capturedModality, timestamp, result, comment, metadata — plus a typed payload selected by eventType: a capture object for a CAPTURE, or an assessment object for an ASSESSMENT. This breaks the interaction into auditable, fine-grained steps while keeping a single, consistent shape across channels.

Attributes

FieldTypeOptionalityFormatSourceNotes
idUUID / stringMandatory36 charsSystemEvent identifier
encounterIdUUID / stringMandatory36 charsSystemParent Encounter
eventTypeenumMandatoryCAPTURE, ASSESSMENTCanonicalStep category — selects the typed payload
capturedModalityenumMandatorysee belowCanonicalWhich modality was captured (subject of the step)
timestampdatetimeMandatoryISO 8601 UTCSystemEvent time; sole ordering key
resultenumMandatorySUCCEEDED, FAILED, SKIPPEDCanonicalExecution result of the step
commentstringOptional1..500SystemFree-text context for result; most useful when FAILED / SKIPPED
captureobjectConditional{ artifactRef }CanonicalPresent when eventType = CAPTURE
capture.artifactRefstringConditionalURI / IDSystemReference to the raw captured artifact; required for CAPTURE when result = SUCCEEDED. The Encounter references, never stores, the artifact
assessmentobjectConditional{ assessmentType, score, threshold, passed, algorithmVersion }CanonicalPresent when eventType = ASSESSMENT
assessment.assessmentTypeenumConditionalsee belowCanonicalRequired when eventType = ASSESSMENT
assessment.scorenumberConditional0..1, 4 decimalsCanonicalFor ASSESSMENT when result ∈ {SUCCEEDED, FAILED}
assessment.thresholdnumberConditional0..1, 4 decimalsCanonicalPolicy threshold applied; same rule as score
assessment.passedbooleanConditionalCanonicalDerived (score ≥ threshold), materialised; same rule as score
assessment.algorithmVersionstringConditional1..50SystemEngine / model version; for ASSESSMENT
metadataobjectOptionaltyped by (capturedModality, assessmentType)CanonicalStep-specific payload (sub-scores, candidates, parsed data, device info)

Enum: eventType

CAPTURE, ASSESSMENT

Enum: capturedModality

DOCUMENT, FACE, IRIS, PALM, FINGERPRINT_SLAP, FINGERPRINT_CONTACTLESS

Enum: result

SUCCEEDED, FAILED, SKIPPED

Enum: assessment.assessmentType

QUALITY, LIVENESS, AUTHENTICITY, VERIFICATION, IDENTIFICATION, VALIDITY

Sample event flow

A typical sequence within a single Encounter — capture, then one or more assessments per modality. Shown flat for readability: assessmentType / score / threshold / passed belong to the typed assessment object, and artifactRef belongs to the typed capture object.

timestampcapturedModalityeventTypeassessmentTyperesultscorethresholdpassedcommentmetadata (snippet)
08:42:06FACECAPTURESUCCEEDED{ deviceId: "egate-mad-t4-03" }
08:42:08FACEASSESSMENTQUALITYSUCCEEDED0.230.60falsequality below threshold{ subScores: { sharpness: 0.31, pose: 0.22 } }
08:42:08FACEASSESSMENTLIVENESSSKIPPEDskipped due to quality failure
08:43:15PALMCAPTURESUCCEEDED{ deviceId: "egate-mad-t4-03" }
08:43:18PALMASSESSMENTQUALITYSUCCEEDED0.880.60true{ subScores: { … } }
08:43:22PALMASSESSMENTVERIFICATIONSUCCEEDED0.970.85true{ referenceArtifactId: "doc-photo-uuid", mode: "PROBE_VS_REFERENCE" }

CAPTURE rows also carry capture.artifactRef (URI/ID of the raw captured artifact), omitted above for width — e.g. the 08:42:06 FACE capture → capture: { artifactRef: "s3://…/face-uuid" }.

See also

  • Data Model overview — full entity set, standards alignment, domain separation
  • Traveler — the entity Encounters are linked to
  • Document — Documents used during an Encounter
  • Journey — Journeys and Encounters are independent dimensions of the Traveler