Extra capabilities:
This Api implements to extra octo capabilities:
Octo/pricing => https://docs.octo.travel/capabilities-optional/pricing
Octo/resources => Partial (unnofficial) implementaition of: https://docs.ventrata.com/capabilities/resources
1. Octo/pricing
This API implements the optional pricing
capability defined by Octo.
To activate the optional pricing
capability you need to add octo/pricing to your Octo-Capabilities
header.
This header can be added via the authentication in this
swagger.
Examples/Changes to existing components On the Product component this will be added:
{// ...rest of Product object"defaultCurrency": "USD","availableCurrencies": ["USD", "EUR", "GBP"],"pricingPer": "UNIT" // "UNIT" or "BOOKING"}
In our case we only use pricingPer = "UNIT", so our info will be added to the Unit component.
{{// ...rest of the Unit object"pricingFrom": [{"original": 4500,"retail": 4500,"net": 3500,"currency": "USD","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 800,"net": 500}]},{"original": 4000,"retail": 4000,"net": 3000,"currency": "GBP","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 700,"net": 400}]}// ...etc...]}}
Will be added to the availability calendar component like this:
{// ...standard availability stuff..."unitPricingFrom": [{"unitId": "unit_adult123","original": 4500,"retail": 4500,"net": 3500,"currency": "USD","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 700,"net": 400}]},{"unitId": "unit_child321","original": 4200,"retail": 4200,"net": 3200,"currency": "USD","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 800,"net": 500}]}]}
If you pass the units to the request then we will give the total pricing for the selection under the pricingFrom field
[{"localDate": "2020-07-01","status": "AVAILABLE","capacity": 24,"openingHours": [],"unitPricingFrom": [...Like exaple above...],"pricingFrom": {"original": 9985,"retail": 9985,"net": 7488,"currency": "USD","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 800,"net": 500}]}}]
Will be added to the availability check component like this, (the field name is now without the From suffix) :
{"...standard availability stuff.."unitPricing": [{"unitId": "unit_adult123","original": 4500,"retail": 4500,"net": 3500,"currency": "USD","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 700,"net": 400}]},{"unitId": "unit_child321","original": 4200,"retail": 4200,"net": 3200,"currency": "USD","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 800,"net": 500}]}]}
If you pass the units to the request then we will give the total pricing for the selection under the pricingFrom field (the field name is now without the From suffix):
[{"localDate": "2020-07-01","status": "AVAILABLE","capacity": 24,"openingHours": [],"unitPricing": [...Like exaple above...],"pricing": {"original": 9985,"retail": 9985,"net": 7488,"currency": "USD","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 800,"net": 500}]}}]
Will be added to the booking component like this, (the field name is now without the From suffix):
"pricing": {"original": 8800,"retail": 8800,"net": 5500,"currency": "EUR","currencyPrecision": 2,"includedTaxes": [{"name": "VAT 10","retail": 800,"net": 500}]}
2. Octo/resources
This extra capability does not need an extra header, as it is
automatically added when a channel is seated. If a channel is seated,
the bestAvaialable seats are chosen automatically and the resource
alloction is returned in the response.
A small list
of terms that might need clarification:
resource object => Corresponds with a Tickoweb seating category
paxCount => The amouny of seats you want to allocate.
SeatIds => The unique id’s of the selected seats.
The resource allocation will be added to a booking
component like this:
"resourceAllocations": [{"resourceGroupId": "e58c9cec-1683-4d41-a9b6-7acf4276ab96","resourceGroup": {"id": "57554de6-7edc-4602-b64d-c01211524a39","title": "Hall, Country","split": false},"resourceId": 2,"resource": {"id": 2,"title": "Balcon","seating": true,"seats": [{"id": "D2-3-1","title": "D2-3-1","column": "1","row": "3"},{"id": "D2-3-2","title": "D2-3-2","column": "2","row": "3"}]},"paxCount": 2,"seatIds": ["D2-3-1","D2-3-2"],"seats": [{"id": "D2-3-1","title": "D2-3-1","column": "1","row": "3"},{"id": "D2-3-2","title": "D2-3-2","column": "2","row": "3"}]}]