Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

OSDM Introduction

Why OSDM?

OSDM is a new standard to provide public transportation products in a common way, created by a group of members representing fare providers (operators), allocators (GDS) and distributors in Europe.

What is OSDM?

The aims of the Open Sales and Distribution Model (OSDM) are twofold:

  1. to substantially simplify and improve the booking process for customers of public transport trips and,

  2. to lower complexity and distribution costs for distributors and carriers.

OSDM strengthens rail and public transport as a convenient and ecological means of transportation by simplifying distribution. Finally, it lays a solid fundament which can be extended to the distribution of other means of transportation.

Roles in OSDM

The OSDM Model is split between roles participants can take:

  • Fare Provider – defining the fare and combination rules and providing them to allocators offline or online.

  • Allocator – combining fares, defining after sales rules within the frames set by the fare provider, providing combined offers and managing the booking transaction, managing the ticket security (barcode, control processes), managing compensations processes, managing the stock control process.

  • Distributor – selling tickets from one or more allocators to the customer. Selecting the allocators and joining multiple independent bookings.

Samtrafiken ACCESS will act as a distributor by combining trips and offers from various inventory systems.

OSDM Documentation

The OSDM documentation can be found at https://osdm.io/

OSDM End Point Usage in Samtrafiken ACCESS API

Samtrafiken ACCESS API, will not implement all end points in the OSDM-standard since it is not needed to achieve the goal to provide aggregated trips and offers in Sweden. Over time some more end points can be added.

This table describes the planned usage for Samtrafiken ACCESS API. Note: The exact OSDM version to be used in Samtrafiken ACCESS is not specified/decided when this document is created.

...

Resource

...

Path

...

End-point description

...

Places

...

POST /places

...

Returns place information for a given place request.

...

Offers

...

POST /offers

...

Returns trip and non-trip offers.

...

GET /bookings/{bookingId}/bookedOffers/ {bookedOfferId}/additionalOffers

...

Returns ancillary and reservation offers

...

Availabilities

...

GET /availabilities/placeMap

...

Get place map including availabilities.

...

GET /availabilities/preferences

...

Get availabilities for a set of preferences.

...

Bookings

...

POST /bookings

...

Allows to create a booking based on a previously requested offer.

...

 

...

GET /bookings/{bookingId}

...

Returns a booking with the id provided.

...

 

...

DELETE /bookings/{bookingId}

...

Deletes the booking with the id provided.

...

 

...

PATCH /bookings/{bookingId}

...

Allows updating the fulfillment type of the booking.

...

GET ????

/bookings/{bookingId}/history

...

Returns the history of the booking

...

BookedOffers

...

POST /bookings/{bookingId}/bookedOffers

...

Adds a bookedOffer in a booking.

...

DELETE //bookings/{bookingId}/bookedOffers/{offerId}

...

Delete booked offer in a booking.

...

BookingPart

...

PATCH /bookings/{bookingId}/bookedOffer/
{bookedOfferId}/reservations/{reservationId}

...

Add a reservation part to a prebooked offer

...

 

...

DELETE /bookings/{bookingId}/bookedOffer/
{bookedOfferId}/reservations/{reservationId}

...

Delete a reservation part from a prebooked offer

...

PATCH /bookings/{bookingId}/bookedOffer/
{bookedOfferId}/ancillaries/{ancillaryId}

...

Add an ancillary part to a prebooked offer

...

DELETE /bookings/{bookingId}/bookedOffer/
{bookedOfferId}/ancillaries/{ancillaryId}

...

Delete an ancillary part from a prebook

...

OnHold

...

POST /booking/{bookingId}/onHoldOffer

...

Ask for possibilities to set prebooked offer on hold and extend time to live

...

 

...

PATCH /booking/{bookingId}/onHoldOffer/
{onHoldOfferId}

...

Set prebooked offer on hold and extend time to live

...

BookingsSearch

...

POST /booking-search

...

Search for bookings in DS according to parameters

...

Passengers

...

GET /bookings/{bookingId}/
passengers/{passengerId}

...

Returns the passenger's information at every stage of the flow

...

 

...

PATCH /bookings/{bookingId}/
passengers/{passengerId}

...

Update the passenger's information

...

Purchaser

...

GET /bookings/{bookingId}/purchaser

...

Returns the purchaser information

...

PATCH /bookings/{bookingId}/purchaser

...

Update the purchaser information

...

Fulfillment

...

POST /bookings/{bookingId}/fulfillments

...

Triggers the fulfillment of the booking

...

PATCH /fulfillments/{fulfillmentId}

...

TBC.

...

Refund

...

POST /bookings/{bookingId}/refundOffers

...

Initiates a refund process by creating a RefundOffer resource.

...

 

...

GET /bookings/{bookingId}/refundOffers/{refundOfferId}

...

Returns the refund offer for the ids provided.

...

 

...

PATCH /bookings/{bookingId}/refundOffers/{refundOfferId}

...

Allows to accept and confirm a refund offer.

...

Exchange

...

GET /bookings/{bookingId}/exchangeOperations/{exchangeOperationId}

...

Returns the exchange operation with the id provided. It may be a provisional or a confirmed exchange.

...

 

...

PATCH /bookings/{bookingId}/exchangeOperations/{exchangeOperationId}

...

Allows to update an ongoing exchange operation.

...

DELETE /bookings/{bookingId}/exchangeOperations/{exchangeOperationId}

...

Cancels an ongoing exchange operation in provisional state.

...

POST /exchange-offer

...

Returns exchange offers for a specified fulfillments submitted given requested new trip characteristics.

...

Release (Cancel admission and resources but not refund)

...

POST /bookings/{bookingId}/releaseOffers

...

Initiates a release process by creating a releaseOffers resource.

...

PATCH /bookings/{bookingId}/
releaseOffers/{releaseOfferId}

...

Allows to accept and confirm a release offer.

...

MasterData

...

GET /places

...

Returns all searchable places (stops).

...

GET /coachLayouts

...

Returns all coach layouts.

...

GET /coachLayouts/{layoutId}

...

Child pages (Children Display)
depth2
allChildrentrue
style
sortAndReverse
first0