Skip to content

Search offers - the 'Who' part - 20260702#65

Open
edwinvandenbelt wants to merge 4 commits into
mainfrom
Add-search-offer-concepts
Open

Search offers - the 'Who' part - 20260702#65
edwinvandenbelt wants to merge 4 commits into
mainfrom
Add-search-offer-concepts

Conversation

@edwinvandenbelt

@edwinvandenbelt edwinvandenbelt commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator
image Note: ignore the search offer policy here.

This is the new image:
image

Example travelling party, a person with a bike (indicative):

[
{
  "travellingEntityId": "TR-342",
  "entitlements": [ { "code": "SUMMER27", "entitlementType": "reduction_code", "issuer": "XEI" } ].
  "entityType": "traveller",
  "age": 34
},
{
  "travellingEntityId": "TR-24391",
  "entityType": "vehicle",
  "type": "bicycle"
}
]

const: animal
type:
type: string
description: Category of animal (operator-defined, e.g. dog, cat, other).

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not operator-defined. We can propose categories, and if organisations want to extend it, they can, after notifying the OTI governance body.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could also be a categorisation by size of the animal as it often as more impact of the footprint of a travelling entity

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Categorizations need to be descriptive (e.g. animals carried in a handbag), no one will measure or weight animals when entering a train.

@edwinvandenbelt

edwinvandenbelt commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator Author

@Ulf9 I'm missing the 'entitlement rights' in the diagram.

@edwinvandenbelt edwinvandenbelt changed the title Added search offer concepts Added search offer concepts - the travelling party Jun 19, 2026
@edwinvandenbelt edwinvandenbelt changed the title Added search offer concepts - the travelling party Search offers - the 'Who' part Jun 22, 2026
@edwinvandenbelt edwinvandenbelt changed the title Search offers - the 'Who' part Search offers - the 'Who' part - 20260702 Jun 22, 2026
@Ulf9

Ulf9 commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

@Ulf9 I'm missing the 'entitlement rights' in the diagram.

OTI - Travelling Entity

additionalProperties: false
description: ENTITLEMENT RIGHT — a credential held by a travelling entity that may qualify for reduced fares or additional offers (loyalty card, discount card, company card, concession, etc.).
required:
- entitlementType

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think 'code' is required as well.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you clarify what you mean by 'code' here? I would suggest adding something more explicit such as 'entitlementReference'

Comment thread deliverables/1 search offers/TravellingEntity.yaml
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/Traveller.yaml Outdated
externalReference:
type: string
description: Caller-assigned external reference for this traveller.
personalNeeds:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could split between 'personalNeeds' & 'assistanceNeeds' with the 2nd one referring to specific services

Comment thread deliverables/1 search offers/Luggage.yaml Outdated
Comment thread deliverables/1 search offers/Luggage.yaml Outdated
description: Issuing authority or scheme name.
entitlementType:
type: string
description: Type of entitlement (operator-defined lookup value, e.g. loyaltyCard, discountCard, concession).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As for animals, we can propose categories

properties:
issuer:
type: string
description: Issuing authority or scheme name.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An optional identifier could be added (like RICS code)

Comment thread deliverables/1 search offers/Traveller.yaml Outdated
EntitlementRight:
type: object
additionalProperties: false
description: ENTITLEMENT RIGHT — a credential held by a travelling entity that may qualify for reduced fares or additional offers (loyalty card, discount card, company card, concession, etc.).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see where to give information on NFC smartcard held by a passenger. It is not a mean to get reduced or additional offer. thus:

  • either generalize this area with any object held by a traveller that could impact the distribution (not only a mean to get a reduced or additional offer).
  • or create a dedicated object around fulfilment device held by the traveller (NFC card, ID of a enrolled smartphone)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To support card based and account based ticketing the card details are necessary from the beginning, optionally also including the card content.

CardReference:
type: object
additionalProperties: false
description: |
Number and issuer are needed to identify a travel account, the code identifies a reduction card.
required:
- type
properties:
code:
description: |
Code of the card type according to issuer.
type: string
nullable: true
number:
description: |
Number identifying the travel account, need issuer to be unique.
type: string
nullable: true
issuer:
$ref: '#/components/schemas/CompanyRef'
type:
$ref: '#/components/schemas/TravelAccountType'
chipCardContentFormat:
type: string
x-extensible-enum:
- CALYPSO-ABT
- CALYPSO-CBT
chipCardContent:
description: |
base64 encoded content of the chip card. This is in some scenarios needed to validate whether the new ticket will be compatible with the tickets already on the card.
type: string
format: byte
maxLength: 4194304
nullable: true

The travel account number need to be split into a personal account id and the account agreement id to cover separate account ids like using a credit card hash as account id.

Comment thread deliverables/1 search offers/Luggage.yaml Outdated
Comment thread deliverables/1 search offers/Luggage.yaml Outdated
Comment thread deliverables/1 search offers/Luggage.yaml Outdated
Comment thread deliverables/1 search offers/Luggage.yaml Outdated
Comment thread deliverables/1 search offers/Luggage.yaml Outdated
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/PassengerVehicle.yaml Outdated
Comment thread deliverables/1 search offers/VehicleRack.yaml Outdated
Comment thread deliverables/1 search offers/VehicleRack.yaml Outdated
Comment thread deliverables/1 search offers/VehicleRack.yaml Outdated
Comment thread deliverables/1 search offers/VehicleRack.yaml Outdated
Comment thread deliverables/1 search offers/VehicleRack.yaml Outdated
Comment thread deliverables/1 search offers/VehicleRack.yaml Outdated
Comment thread deliverables/1 search offers/VehicleRack.yaml Outdated
Comment thread deliverables/1 search offers/VehicleRack.yaml Outdated
entityType:
type: string
const: animal
type:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it could be interesting to indicate the size of the animal. Particularly if it fits in a basket or not (possibly not the same price).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to be precice: "Animal on a leash and muzzled, or in a carrier bag".

issuer:
type: string
description: Issuing authority or scheme name.
entitlementType:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need two types, one to indicate the category (LOYALTY_CARD, REDUCTION_CARD, CORPORATE_CODE, ...) and one to indicate the entitlement type in the context of the category and issuer (BAHNCARD_50_CLASS_1, ...).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants