Create order
The only way to create an order is to use place order endpoint.
These are possible statuses for the new created order:
- Status = New does not make any update and some data validation.
- Status = Checkout validates the order and do order update (set order item numbers, getting product information from infocenter and apply offers if it's needed)
- Status = Placed validates the order, gets offers if it is needed, and if possible move it to the placed status and the order is ready to get paid
The response contains the updated order object (product information, prices) and the validation errors if there are any.
Place empty order¶
Sometimes it is needed to create empty order and then add order items to it.
{ }
POST https://api.discover.swiss/test/market/v1/orders
{
"order": {
"orderNumber": "21-102000",
"orderDate": "2021-10-11T07:20:54.180294-06:00",
"customer": {
"profileId": "a23a4be8-8f4f-4a53-ae29-917349c11df4",
"additionalName": "Remark",
"address": {
"addressCountry": "CH",
"addressLocality": "Werdenberg",
"addressRegion": "SG",
"postalCode": "9472",
"streetAddress": "Dorf 1"
},
"email": "harry.phoenix@test.in",
"familyName": "Phoenix",
"gender": "Male",
"givenName": "Harry",
"nationality": "CH",
"birthDate": "2000-12-07",
"displayName": "Harry Phoenix",
"isGuest": "True",
"passport": "ccxxx",
"maritalStatus": "Single",
"mobilePhone": "079 365 45 88",
"salutation": "Mr",
"preferredLanguage": "de",
"hasProfileImage": false,
"dataGovernance": {
"origin": [
{
"datasource": "some_datasource",
"created": "2021-09-27T06:15:00.6913204-06:00",
"lastModified": "2021-10-10T02:43:41.8015455-06:00",
"provider": {
"acronym": "some_acronym"
},
"source": {
"acronym": "some_acronym"
},
"author": {
"identifier": "a23a4be8-8f4f-4a53-ae29-917349c11df4"
}
}
]
},
"createdDateTime": "2021-09-27T06:15:00.6924683-06:00",
"lastModified": "2021-10-10T02:43:41.8021602-06:00",
"lastModifiedBy": "a23a4be8-8f4f-4a53-ae29-917349c11df4",
"createdBySubscription": "some_subscription",
"lastModifiedBySubscription": "some_subscription"
},
"orderStatus": "New",
"priceCurrency": "CHF",
"orderedItem": [],
"term": [],
"partnerAcronym": "ds",
"profileId": "a23a4be8-8f4f-4a53-ae29-917349c11df4",
"@id": "https://api.discover.swiss/test/market/v1/orders/21-102000",
"dataGovernance": {
"origin": [
{
"datasource": "some_datasource",
"created": "2021-09-27T06:15:00.6913204-06:00",
"lastModified": "2021-10-10T02:43:41.8015455-06:00",
"provider": {
"acronym": "some_acronym"
},
"source": {
"acronym": "some_acronym"
},
"author": {
"identifier": "a23a4be8-8f4f-4a53-ae29-917349c11df4"
}
}
]
},
"createdDateTime": "2021-10-11T07:20:54.5296789-06:00",
"lastModified": "2021-10-11T07:20:54.5296712-06:00",
"lastModifiedBy": "a23a4be8-8f4f-4a53-ae29-917349c11df4",
"createdBySubscription": "some_subscription",
"lastModifiedBySubscription": "some_subscription"
},
"validationMessages": []
}
Place order with product configurations¶
To create an order with an orderItem using product configuration it is necessary to declare product configuration for each orderItem.
{
"orderStatus": "Placed",
"priceCurrency": "CHF",
"orderedItem": [
{
"orderQuantity": 1,
"orderedItem": {
"product": {
"identifier": "nova_zurichcard24"
},
"traveler": [
{
"givenName": "Alex",
"familyName": "Alex",
"birthDate": "2014-09-14"
}
],
"validFrom": "2021-10-19"
}
}
]
}
POST https://api.discover.swiss/test/market/v1/orders
{
"order": {
"orderNumber": "21-102000",
"orderDate": "2021-10-11T13:49:21.7692814+00:00",
"customer": {
"profileId": "a23a4be8-8f4f-4a53-ae29-917349c11df4",
"additionalName": "Remark",
"address": {
"addressCountry": "CH",
"addressLocality": "Werdenberg",
"addressRegion": "SG",
"postalCode": "9472",
"streetAddress": "Dorf 1"
},
"email": "harry.phoenix@test.in",
"familyName": "Phoenix",
"gender": "Male",
"givenName": "Harry",
"nationality": "CH",
"birthDate": "2000-12-07",
"displayName": "Harry Phoenix",
"isGuest": "True",
"passport": "ccxxx",
"maritalStatus": "Single",
"mobilePhone": "079 365 45 88",
"salutation": "Mr",
"preferredLanguage": "de",
"hasProfileImage": false,
"dataGovernance": {
"origin": [
{
"datasource": "some_datasource",
"created": "2021-09-27T06:15:00.6913204-06:00",
"lastModified": "2021-10-10T02:43:41.8015455-06:00",
"provider": {
"acronym": "some_acronym"
},
"source": {
"acronym": "some_acronym"
},
"author": {
"identifier": "a23a4be8-8f4f-4a53-ae29-917349c11df4"
}
}
]
},
"createdDateTime": "2021-09-27T06:15:00.6924683-06:00",
"lastModified": "2021-10-10T02:43:41.8021602-06:00",
"lastModifiedBy": "a23a4be8-8f4f-4a53-ae29-917349c11df4",
"createdBySubscription": "some_subscription",
"lastModifiedBySubscription": "some_subscription"
},
"orderStatus": "Placed",
"priceCurrency": "CHF",
"totalAmount": 19.0,
"totalAmountCHF": 19.0,
"totalTaxCHF": 1.463,
"language": "en",
"orderedItem": [
{
"orderItemNumber": "21-102000-1",
"orderItemStatus": "Placed",
"orderQuantity": 1,
"orderedItem": {
"product": {
"identifier": "nova_zurichcard24",
"productIdentifier": "nova_zurichcard",
"sku": "895",
"name": "ZVV Zürich Card, ZVV Zürich Card 24 hours",
"dataGovernance": {
"provider": {
"acronym": "sbb"
},
"term": {
"code": "ZHT-AGB|ZHT-DPP"
},
"source": {}
},
"priceList": [
{
"priceCHF": 19.0,
"maxAllowedAge": 15,
"minAllowedAge": 5
},
{
"priceCHF": 27.0,
"maxAllowedAge": 2500,
"minAllowedAge": 15
}
],
"taxRate": 0.077
},
"validFrom": "2021-10-19T00:00:00+00:00",
"traveler": [
{
"priceCHF": 19.0,
"identifier": "f6b7264c-70ca-522f-5bfc-d8382e2443f8",
"givenName": "Alex",
"familyName": "Alex",
"birthDate": "2014-09-14T00:00:00"
}
]
},
"orderDelivery": "e-ticket",
"amount": 19.0,
"amountCHF": 19.0,
"taxRate": 1.463,
"taxCHF": 1.463,
"ticket": [],
"offerBundleId": "d4702201-bac1-4f54-989d-a32ddfb70250"
}
],
"term": [
{
"termCode": "ZHT-AGB|ZHT-DPP",
"accepted": false,
"acceptedDate": "2021-10-11T13:49:26.4425621+00:00",
"termVersions": [
{
"@id": "{{ infoUrl }}/termversions/ZHT-AGB-2.0",
"code": "ZHT-AGB-2.0",
"name": "Allgemeine Geschäftsbedingungen von Zürich Tourismus",
"partnerName": "Zurich Tourism",
"termDocument": "https://www.zuerich.com/gtc",
"validFrom": "2018-08-29T00:00:00+00:00",
"termCode": "ZHT-AGB"
},
{
"@id": "{{ infoUrl }}/termversions/ZHT-DPP-2019-10-28",
"code": "ZHT-DPP-2019-10-28",
"name": "Datenschutzerklärung von Zürich Tourismus",
"partnerName": "Zurich Tourism",
"termDocument": "https://www.zuerich.com/datenschutz",
"validFrom": "2019-10-28T00:00:00+00:00",
"termCode": "ZHT-DPP"
}
]
}
],
"partnerAcronym": "ds",
"profileId": "a23a4be8-8f4f-4a53-ae29-917349c11df4",
"@id": "https://api.discover.swiss/test/market/v1/api/orders/21-102000",
"dataGovernance": {
"origin": [
{
"datasource": "some_datasource",
"created": "2021-09-27T06:15:00.6913204-06:00",
"lastModified": "2021-10-10T02:43:41.8015455-06:00",
"provider": {
"acronym": "some_acronym"
},
"source": {
"acronym": "some_acronym"
},
"author": {
"identifier": "a23a4be8-8f4f-4a53-ae29-917349c11df4"
}
}
]
},
"createdDateTime": "2021-10-11T13:49:21.6640121+00:00",
"lastModified": "2021-10-11T13:49:31.2156037+00:00",
"lastModifiedBy": "a23a4be8-8f4f-4a53-ae29-917349c11df4",
"createdBySubscription": "some_subscription",
"lastModifiedBySubscription": "some_subscription"
},
"validationMessages": []
}
Place order with traffic source¶
To store the marketing traffic source of the order (where the customer came from), send the optional attribution object with the order. All its properties are optional. More information: Traffic source.
{
"orderStatus": "New",
"priceCurrency": "CHF",
"attribution": {
"source": "google",
"medium": "cpc",
"campaign": "summer-sale",
"adId": "1234567890",
"additionalParameters": {
"myCrmParam": "my attribute value to pass on to CRM"
}
}
}
POST https://api.discover.swiss/test/market/v1/orders
The traffic source is not part of the order response. The response is the same as for an order created without it.