How to order ski tickets
Ski tickets, ecpecially seasonal passes, often require the handling of additional information to the traveler. Not only name and firstname but the SwissPass and some documents to prove the legitimacy of getting special conditions. To support this different concept and services of discover.swiss play together.
- Possible dates and dynamic prices (coming soon) are available by using Product availabilities.
- Prices (and possible dates) are available by using OfferBundles and offers.
- Requirements to the order item and the travelers in the order are defined by the products CustomerFields, ItemFields and TravelerFields -> Traveler- and ItemFields
- Traveler parties, Cards and Media saved in the Provile Service support the handling and reuse of all the additional information.
To place an order there are different ways, but this is a straight forward possible solution:
- (Load the products using one of many ways to do that (Marketplace, Infocenter, Search) and let the user select one.)
- Display the date picker and activate the dates using the Product availabilities
- (Create an empty order if you do not have one yet)
- Suggestions: Then the user selects one of the available variants and price category
- Get offers (using variant and pricecategory) and let the user pick one if there are several
- create the order item using the offerbundleId
- Update the order item and add traveler information with it (see travelerField definitions)
remarks: - The traveler might need supporting documents or a profile picture. These files you need to upload to the profile first and then reference them (see below)
- you can select a traveler from the profile and reuse it's id. But then you need to add the additionalProperty "ds_offerTravelerId" to reference the traveler created in the offerBundle.
- If the order item is placed continue in the same way as with any order.
{
"dateFrom": "2025-05-01",
"dateUntil": "2025-05-31",
"availableDatesOnly": true,
"top": 50,
"product": [
"llb_sand-p1d"
]
}
{
"count": null,
"hasNextPage": false,
"nextPageToken": null,
"data": [
{
"productIdentifier": "llb_sand-p1d",
"@product": "https://api.discover.swiss/dev/info/products/llb_sand-p1d",
"date": "2025-05-17T00:00:00+00:00",
"lastModified": "2025-04-20T12:36:48.3872199+02:00",
"count": 1000,
"service": "ald-al_biketickets",
"additionalProperty": []
},
{
"productIdentifier": "llb_sand-p1d",
"@product": "https://api.discover.swiss/dev/info/products/llb_sand-p1d",
"date": "2025-05-18T00:00:00+00:00",
"lastModified": "2025-04-20T12:36:48.4704822+02:00",
"count": 1000,
"service": "ald-al_biketickets",
"additionalProperty": []
},
{
"productIdentifier": "llb_sand-p1d",
"@product": "https://api.discover.swiss/dev/info/products/llb_sand-p1d",
"date": "2025-05-29T00:00:00+00:00",
"lastModified": "2025-04-20T12:36:48.5598041+02:00",
"count": 1000,
"service": "ald-al_biketickets",
"additionalProperty": []
},
{
"productIdentifier": "llb_sand-p1d",
"@product": "https://api.discover.swiss/dev/info/products/llb_sand-p1d",
"date": "2025-05-30T00:00:00+00:00",
"lastModified": "2025-04-20T12:36:48.6469381+02:00",
"count": 1000,
"service": "ald-al_biketickets",
"additionalProperty": []
},
{
"productIdentifier": "llb_sand-p1d",
"@product": "https://api.discover.swiss/dev/info/products/llb_sand-p1d",
"date": "2025-05-31T00:00:00+00:00",
"lastModified": "2025-04-20T12:36:48.7293211+02:00",
"count": 1000,
"service": "ald-al_biketickets",
"additionalProperty": []
}
]
}
{
"productVariantIdentifier":"llb_sand_4cec79c3-3b4d-59da-c8f9-31cf31c05b2b",
"dateFrom": "2025-05-17",
"numberOfTravelers": 1,
"traveler": [
{
"priceCategory":"2f956cfa-7695-ae6b-d7fd-33733a912ef1"
}
]
}
{
"validationMessages": [],
"offerBundle": [
{
"id": "46fbdf5e-5e6c-4899-97c4-048add2611f2",
"productConfiguration": {...}
"totalPrice": 30.0,
"totalPriceCHF": 30.0,
"currency": "CHF",
"offer": [
{
"id": "75a43188-bff3-46e8-8510-9d1c6c0100d2",
"title": "Erwachsene",
"description": "655294467",
"priceInformation": "2f956cfa-7695-ae6b-d7fd-33733a912ef1",
"price": 30.0,
"priceCHF": 30.0,
"currency": "CHF",
"travelerId": "52fb365a-64e8-426f-996b-fe3eced28fe7"
}
],
"requiresAdditionalConfiguration": true
}
]
}
{
"offerBundleId": "{{ offerBundleId }}",
"orderedItem": {
"traveler": [
{
"identifier": "existing-traveler-id",
"givenName": "Sepp",
"familyName": "Muster",
"birthDate": "1978-12-01",
"additionalProperty": [
{
"name": "Haben Sie bereits eine Keycard?",
"value": "keycard",
"propertyId": "additionalProperty.travelerHasKeyCardCheckbox"
},
{
"name": "Keycard",
"value": "01-16147133535064576585-1",
"propertyId": "additionalProperty.keyCard"
},
{
"propertyId": "ds_offerTravelerId",
"value": "52fb365a-64e8-426f-996b-fe3eced28fe7"
}
]
}
]
}
}
Profile media and supporting documents¶
To be able to add a profile picture to the traveler:
- Upload the pictures as ProfileMedia with additionalType 'TravelerProfileImage' -> Profile service endpoints
- Then reference the media identifier in the profilePicture property of the traveler
To be able to add a supporting document in the traveler or the orderItem:
- Upload the pictures as ProfileMedia with additionalType 'SupportingDocument' -> Profile service endpoints
- Then reference the media identifier in the 'supportingDocument'
When saving this data to a party or inside an orderitem the references are validated.
Keycards and SwissPass¶
Cards (KeyCards and SwissPass and others) can be saved in the Profile as independent objects. A client application can then access it and offer the guest to use one of these cards during the order process. -> Profile service endpoints
The card objects are not referenced in the order. The client application must use their data to fill the appropriate properties in the Traveler object:
Card | Additional Property in the Traveler request |
---|---|
identifier | - |
AdditionalType | propertyId |
Name | Description |
CardNumber | value |