# Reservations / Cart

Reserving a product is only mandatory in case the product has managed capacity. Although we also recommend to implement it in the following cases:

* When holding customer products inside a shoppingcart.
* Lock a slot while waiting for a confirmed payment.
* High demand / low availability tickets (concert/events).
* Adding promocodes to an order.
* Managing combi- and cart-discounts.
* Cross-client order process.

Reservations can be confirmed by passing the `reservation_reference` to the Create Order API. One or more products can be reserved at once. We highly recommend implementing the Cart flow for maximum functionality.

## Create Reservation / Create Cart

> This API is called to reserve one or multiple product(s).\
> \* This endpoint can also be requested for products without managed capacity.\
> \* This endpoint should be called only once per order. \
> &#x20; Followup request such as amending the cart should be done using the 'Update Reservation\` endpoint.

````json
{"openapi":"3.0.0","info":{"title":"Distributor API Specification V3.8","version":"3.8.0"},"tags":[{"name":"Reservations / Cart","description":"Reserving a product is only mandatory in case the product has managed capacity. Although we also recommend to implement it in the following cases:\n- When holding customer products inside a shoppingcart. \n- Lock a slot while waiting for a confirmed payment.\n- High demand / low availability tickets (concert/events).\n- Adding promocodes to an order.\n- Managing combi- and cart-discounts.\n- Cross-client order process.\n\nReservations can be confirmed by passing the `reservation_reference` to the Create Order API. One or more products can be reserved at once. We highly recommend implementing the Cart flow for maximum functionality. \n"}],"servers":[{"url":"https://{environment}.prioticket.com/{version}/distributor","description":"Prio environments.","variables":{"environment":{"description":"* `distributor-api` - Production server; used for real transactions.\n\n* `sandbox-distributor-api` - Sandbox server.\n\n* `staging-distributor-api` - Pre-Production server; used for testing (UAT), verification, demo and certification.\n\n* `internal-distributor-api` - Internal server; reserved for internal use.\n","default":"staging-distributor-api","enum":["distributor-api","sandbox-distributor-api","staging-distributor-api","internal-distributor-api"]},"version":{"description":"Api version.","default":"v3.8","enum":["v3.8"]}}}],"security":[{"OAuth2":["https://www.prioticketapis.com/auth/distributor/reservation"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","description":"OAuth2 implementation.","flows":{"clientCredentials":{"tokenUrl":"https://sandbox-distributor-api.prioticket.com/v3.8/distributor/oauth2/token","scopes":{"https://www.prioticketapis.com/auth/distributor.products.readonly":"Grants access to products.","https://www.prioticketapis.com/auth/distributor.reservations":"Grants access to reservations.","https://www.prioticketapis.com/auth/distributor.bookings":"Grants access to bookings.","https://www.prioticketapis.com/auth/distributor.bookings.details":"Grants access to booking details.","https://www.prioticketapis.com/auth/distributor/reporting":"Grants access to reporting."}}}}},"headers":{"Cache-Control":{"description":"Specifies the maximum amount of time a resource will be considered fresh. Contrary to Expires, this directive is relative to the time of the request.","schema":{"type":"string"}},"Last-Modified":{"description":"The Last-Modified response HTTP header contains the date and time at which the origin server believes the resource was last modified.","schema":{"type":"string"}},"Content-Language":{"description":"The Content-Language entity header is used to describe the language(s) intended for the audience, so that it allows a user to differentiate according to the users' own preferred language.","schema":{"type":"string"}},"Content-Length":{"description":"The Content-Length entity header indicates the size of the entity-body, in bytes, sent to the recipient.","schema":{"type":"string"}},"Access-Control-Allow-Methods":{"description":"The Access-Control-Allow-Methods response header specifies the method or methods allowed when accessing the resource in response to a preflight request.","schema":{"type":"string"}},"Content-Security-Policy":{"description":"Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks.","schema":{"type":"string"}},"X-XSS-Protection":{"description":"The HTTP X-XSS-Protection response header is a feature of Internet Explorer, Chrome and Safari that stops pages from loading when they detect reflected cross-site scripting (XSS) attacks.","schema":{"type":"string"}},"X-Content-Type-Options":{"description":"The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised in the Content-Type headers should not be changed and be followed.","schema":{"type":"string"}},"X-RateLimit-Limit":{"deprecated":true,"description":"Request limit per hour.","schema":{"type":"integer","deprecated":true}},"X-RateLimit-Remaining":{"description":"The number of requests left for the time window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"The UTC date/time at which the current rate limit window resets.","schema":{"type":"string"}},"Origin":{"description":"The Origin request header indicates where a fetch originates from.","schema":{"type":"string","format":"URI"}}},"links":{"GetReservationByReference":{"operationId":"getReservation","parameters":{"reservation_reference":"$response.body#/data/reservation/reservation_reference"},"description":"The `reservation_reference` value returned in the response can be used as the `reservation_reference` parameter in `GET /reservations/{reservation_reference}`.\n"},"DeleteBookingReservationByReference":{"operationId":"cancelReservation","parameters":{"reservation_reference":"$response.body#/data/reservation/reservation_details/0/booking_reservation_reference"},"description":"The `booking_reservation_reference` value returned in the response can be used as the `booking_reservation_reference` parameter in `DELETE /reservations/{reservation_reference}`.\n"}},"schemas":{"ReservationDetailResponse":{"title":"Reservation Detail Response","description":"Reservation detail Response.","type":"object","properties":{"api_version":{"$ref":"#/components/schemas/ApiVersion"},"data":{"$ref":"#/components/schemas/ReservationDetailData"}},"required":["api_version","data"]},"ApiVersion":{"title":"API Version","description":"Represents the version of the service API that's served in the response.","type":"string","readOnly":true},"ReservationDetailData":{"title":"Reservation Detail Data","description":"Reservation detail data.","type":"object","properties":{"kind":{"$ref":"#/components/schemas/Kind"},"reservation":{"$ref":"#/components/schemas/ReservationModel"}},"required":["kind","reservation"]},"Kind":{"title":"Kind","description":"The kind property serves as a guide to what type of information this particular object stores.","type":"string","readOnly":true,"enum":["location","route","category","product","currency","tax","addon","availability","stock","reservation","order","promocode","promo","webhook","notification","voucher","contact","payment","credit","destination","recommendation"]},"ReservationModel":{"title":"Reservation Model","description":"Reservation model.","type":"object","properties":{"reservation_distributor_id":{"title":"Reservation Distributor ID","description":"Unique identifier for distributor assigned by Prio.","type":"string"},"reservation_distributor_name":{"title":"Reservation Distributor Name","description":"Name of the distributor.","type":"string","readOnly":true},"reservation_partner_id":{"title":"Reservation Partner ID","description":"Unique identifier for partner assigned by Prio.","type":"string"},"reservation_partner_name":{"title":"Reservation Partner Name","description":"Name of the partner.","type":"string","readOnly":true},"reservation_reference":{"title":"Reservation Reference","description":"A unique identifier for the created reservation in the Prio.","type":"string","readOnly":true,"minLength":8},"reservation_external_reference":{"title":"Reservation External Reference","description":"A unique reservation identifier within the external system.","type":"string","maxLength":50,"pattern":"^[\\\\a-zA-Z-_\\/\\d]+$"},"reservation_hold_token":{"title":"Reservation Hold Token","description":"Unique hold token for this reservation (Internal use only). Only a single holdtoken is allowed per reservation.","type":"string"},"reservation_valid_until":{"title":"Reservation Valid Until","description":"The reserved order will stay alive until this time, after that the reservation will be auto-cancelled.\n> Please note that if you are having multiple products in your cart, that the value will be set according to the product with the earliest expiration time. In this case ONLY this specific product will be auto-cancelled. To view your updated reservation you could call the 'Cart Details' endpoint.\n\n> Warning; Prio will simply confirm your pending reservation, even when products have been auto-cancelled in between. If this value is not checked by the reserving party, unexpected results could occur.","type":"string","format":"date-time","readOnly":true},"reservation_details":{"title":"Reservation Details","description":"Contains one or more bookings.","type":"array","items":{"$ref":"#/components/schemas/ReservationDetail"}},"reservation_contacts":{"title":"Reservation Contacts","description":"Contacts linked to this reservation / order. If provided, these values will override the `order_contacts` object during the Confirm Order step.","type":"array","items":{"$ref":"#/components/schemas/ContactDetails"}},"reservation_checkout_fields":{"title":"Reservation Checkout Fields","description":"Mandatory fields during checkout.","type":"array","items":{"$ref":"#/components/schemas/CheckoutField"}},"reservation_promocodes":{"title":"Reservation Promocodes","description":"The promocodes applied to this reservation.","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/AppliedPromocode"}},"reservation_pricing":{"$ref":"#/components/schemas/Pricing"},"reservation_payments":{"title":"Reservation Payments","description":"Details on the payments linked to this reservation. \n\nA reservation can have multiple payment records in case of installments, split payments, refunds and additional charges. Every action will result in a new record so all history is kept.\n\nPayment records are always returned in a descending order based on the payment date.\nTherefore the first entry in the array can be considered as the last payment and thus the `payment_total` (running sum) as the actual total amount paid and the `payment_status ` as the latest payment status for this reservation.","type":"array","items":{"$ref":"#/components/schemas/PaymentDetails"}},"reservation_credit":{"$ref":"#/components/schemas/CreditLimit"},"reservation_custom_fields":{"title":"Reservation Custom Fields","description":"Freeform entry of any key-value pair.","type":"array","items":{"$ref":"#/components/schemas/CustomField"}},"reservation_created":{"title":"Reservation Created","description":"Date and time of reservation creation.","type":"string","format":"date-time","readOnly":true},"reservation_created_name":{"title":"Reservation Created Name","description":"Cashier name / User name who created the reservation.","type":"string","readOnly":true},"reservation_created_email":{"title":"Reservation Created Email","description":"Cashier email / User email who created the reservation.","type":"string","format":"email","readOnly":true},"reservation_modified":{"title":"Reservation Modified","description":"Date and time of reservation update.","type":"string","format":"date-time","readOnly":true}},"required":["reservation_distributor_id","reservation_distributor_name","reservation_reference","reservation_external_reference","reservation_valid_until","reservation_pricing"]},"ReservationDetail":{"title":"Reservation Detail","description":"Details on a booking inside a reservation.","allOf":[{"$ref":"#/components/schemas/ProductBookingModel"},{"type":"object","required":["product_type_details","booking_reservation_reference","booking_reservation_valid_until"],"properties":{"booking_reservation_reference":{"title":"Booking Reservation Reference","type":"string","description":"Unique identifier for this booking within the current cart. To update this booking you should pass the same value in the next request."},"booking_reservation_valid_until":{"title":"Booking Reservation Valid Until","type":"string","format":"date-time","readOnly":true,"description":"The reserved booking will stay alive until this time, after that the booking will be auto-cancelled.\n> In this case ONLY this specific product will be auto-cancelled. To view your updated reservation you could call the 'Cart Details' endpoint.\n\n> Our system will try to reset the `booking_reservation_valid_until` every time the Update Cart endpoint is called. This will not work for most third-party products. Please keep an eye on the value `booking_reservation_valid_until` to make sure your cart does not expire."},"product_type_details":{"title":"Product Type Booking Details","description":"A list specifying the booking quantity per product type.","type":"array","items":{"$ref":"#/components/schemas/BookingItemWithPricing"}}}}]},"ProductBookingModel":{"title":"Product Booking Model","description":"Product booking model.","type":"object","additionalProperties":false,"properties":{"booking_external_reference":{"title":"Booking External Reference","description":"A unique booking identifier within the external system.","type":"string"},"booking_status":{"$ref":"#/components/schemas/BookingStatusTypes"},"booking_version":{"title":"Booking Version","description":"Booking version number.","type":"integer","readOnly":true,"default":1,"minimum":1,"multipleOf":1},"booking_voucher_released":{"title":"Booking Voucher Released","description":"Whether the vouchers of this booking are available / released. Voucher allocation can be delayed based on the voucher release requirements.","type":"boolean","readOnly":true},"booking_travel_date":{"title":"Booking Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.\nIf unset and availability is applicable, `booking_travel_date` will be returned as `availability_from_date_time` in the response.","type":"string","format":"date-time"},"booking_valid_until":{"title":"Booking Valid Until","description":"The booking will be valid until this time, after that the booking will be expired if not redeemed.\nMainly applicable to open products.","type":"string","format":"date-time","readOnly":true},"booking_invoice_status":{"$ref":"#/components/schemas/InvoiceStatus"},"booking_language":{"title":"Booking Language","description":"Language codes for the available languages of the product, e.g. Live Guides are available in English and Spanish languages. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.","type":"string","default":"en"},"booking_addon_reference":{"title":"Booking Addon Reference","description":"When booking an addon a reference to the original booking is required. \n\nPurchasing an addon requires a booking record for the main product and thus a booking reference for another booking within the same reservation or previously created order should be provided.\n\nIf you do not sent this parameter, it will not be be considered as an addon and registered as an individual sale instead.","type":"string"},"booking_pricing":{"$ref":"#/components/schemas/Pricing"},"booking_notes":{"title":"Booking Notes","description":"Booking notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"booking_customer_url":{"title":"Booking Customer URL","description":"This link that can be attached and communicated towards the end-consumer and allows for booking amendment.","type":"string","format":"URI","readOnly":true},"booking_voucher_url":{"title":"Booking Voucher URL","description":"Voucher(s) download URL.","type":"string","format":"URI","readOnly":true},"booking_created":{"title":"Booking Created","description":"Date and time of booking creation.","type":"string","format":"date-time","readOnly":true},"booking_modified":{"title":"Booking Modified","description":"Date and time of booking update.","type":"string","format":"date-time","readOnly":true},"booking_confirmed":{"title":"Booking Confirmed","description":"Date and time of booking confirmation.","type":"string","format":"date-time","readOnly":true},"booking_cancelled":{"title":"Booking Cancellation","description":"Date and time of booking cancellation.","type":"string","format":"date-time","readOnly":true},"booking_cancellation_reason":{"title":"Booking Cancellation Reason","description":"Reason for booking cancellation.","type":"string","readOnly":true},"product_id":{"title":"Product ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_relation_id":{"title":"Product Relation ID","description":"When products are booked as part of a cluster or bundle the main product id should be defined to determine the relationship.\n\nPurchasing a cluster or bundle requires a reference to the main product (shell). If not provided, an error will be returned.\n\nUnlike addons, when booking a bundle or cluster, only the sub-product is required and therefore there is no need to link it with a seperate (main) booking.\n\nIf you do not sent this parameter, and the sub-product is eligible for individual sale as well, it will be booked as such instead.","type":"string"},"product_pickup_point_id":{"title":"Product Pickup Point ID","description":"Mandatory if `product_pickup_point:MANDATORY` in product details.","type":"string"},"product_pickup_point":{"$ref":"#/components/schemas/PickupPoint"},"product_availability_id":{"title":"Product Availability ID","description":"The unique ID for the timeslot (`availability_id`) or specific availability spot (`availability_spot_id`) if `product_availability_assigned:true`. Only mandatory if `product_availability:true`.","type":"string"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_capacity_id":{"title":"Availability Slot Capacity ID","description":"Availability group / capacity identifier.","type":"string","readOnly":true},"product_availability_capacity_shared_id":{"title":"Availability Slot Shared Capacity ID","description":"Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.","type":"string","readOnly":true},"product_title":{"title":"Product Title","description":"The title of the product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for the supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_supplier_admin_id":{"title":"Product Supplier Admin ID","description":"Unique identifier for the supplier admin.","type":"string","readOnly":true},"product_supplier_admin_name":{"title":"Product Supplier Admin Name","description":"Name of the supplier admin.","type":"string","readOnly":true},"product_market_admin_id":{"title":"Product Market Admin ID","description":"Unique identifier for the market admin.","type":"string","readOnly":true},"product_market_admin_name":{"title":"Product Market Admin Name","description":"Name of the market admin.","type":"string","readOnly":true},"product_source_id":{"title":"Product Source ID","type":"string","description":"Unique ID of the product source.","readOnly":true},"product_source_name":{"title":"Product Source Name","type":"string","description":"Name of the supplier reservation system from which this product is sourced.","readOnly":true},"product_entry_notes":{"title":"Product Entry Notes","description":"Product entry information. (Know before you go).\nThe user-visible list of important notes, use for details such as age-restrictions or other conditions that make this service unsuitable.\n","type":"string","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_class":{"$ref":"#/components/schemas/ProductClass"},"product_currency_code":{"title":"Product Currency Code","description":"Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).","type":"string","readOnly":true},"product_cancellation_allowed":{"title":"Product Cancellation Allowed","type":"boolean","description":"Whether it is allowed to cancel this product / booking. \n\nThis takes into account the current state of the order as well as variables such as `booking_status` and  `product_type_redemption_status`.  \n\nNote that even if a product can be cancelled in this state, cancellation fees and restrictions might still apply and override this value.\nPlease check `product_cancellation_policies` for more details.","default":true,"readOnly":true},"product_options":{"title":"Product Booking Options","description":"The product options booked (including individual options from related combi products). \n","type":"array","items":{"$ref":"#/components/schemas/BookingExtraOptions"}},"product_combi_details":{"title":"Product Combi Details","description":"In case the booked product is the main combi-product (`product_class:COMBI`), this field should be populated for each and every listed sub-product inside `product_combi_details`.\nAll sub-product will inherited the missing details such as `product_type_details` from the parent.","type":"array","items":{"$ref":"#/components/schemas/ProductSubDetail"}},"product_bundle_details":{"title":"Product Bundle Details","description":"In case the booked product is the main bundle-product (`product_class:BUNDLE`), this field should be populated for each and every listed sub-product inside `product_bundle_details`.\nAll sub-product will inherited the missing details such as `product_type_details` from the parent.","type":"array","items":{"$ref":"#/components/schemas/ProductSubDetail"}},"product_addon_details":{"title":"Product Addon Details","description":"In case addons are booked for this product, all related addon booking details will be returned.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ProductAddonDetail"}}},"required":["product_id","product_title","product_supplier_id","product_supplier_name","product_market_admin_id","product_market_admin_name","product_type_details","booking_status","booking_created","booking_modified","booking_external_reference","product_admission_type","product_currency_code","product_cancellation_allowed"]},"BookingStatusTypes":{"title":"Booking Status Types","description":"Status of the booking.","type":"string","readOnly":true,"enum":["BOOKING_RESERVED","BOOKING_RESERVATION_CANCELLED","BOOKING_RESERVATION_EXPIRED","BOOKING_CONFIRMED","BOOKING_UPDATED","BOOKING_CANCELLED","BOOKING_PENDING_SUPPLIER","BOOKING_PENDING_GUEST","BOOKING_PENDING_DISTRIBUTOR","BOOKING_FAILED","BOOKING_PROCESSING","BOOKING_PROCESSING_CONFIRMATION","BOOKING_PROCESSING_CANCELLATION"]},"InvoiceStatus":{"title":"Invoice Status","description":"Status of the invoice.","type":"string","deprecated":true,"readOnly":true,"enum":["INVOICED","INVOICE_APPROVED","INVOICE_PAID","INVOICE_CANCELLED","NOT_INVOICED"]},"Pricing":{"title":"Price Breakdown","description":"The calculated price based on the selected products. \n\nWe highly recommend implementing a cross-check before confirming the order with your own calculated prices to prevent mismatches.","type":"object","properties":{"price_type":{"title":"Price Type","description":"Price breakdown on either purchase or sales and including or excluding tax.","deprecated":true,"type":"string","readOnly":true,"enum":["PURCHASE","SALES"]},"price_subtotal":{"title":"Price Sub Total","description":"Sum of `product_type_list_price` for all `product_types` including extra options, without promocodes, price variations and additional fees (`fee_included:true`).","type":"string","readOnly":true},"price_variations":{"title":"Price Variations","description":"All applicable price variations (`product_quantity_pricing`, `product_daily_pricing`, `product_dynamic_pricing` and more).\n\nSome variations are set automatically based on your request and the selected products, such as quantity and dynamic pricing, whereas other variations can be set manually (e.g cart and partner discount).","type":"array","items":{"$ref":"#/components/schemas/PriceVariations"}},"price_promocodes":{"title":"Price Promocodes","description":"Applied promocodes pricing. \n\nOnly applicable in case of `price_type:SALES_GROSS/SALES_NET`.","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/PromoCodePricing"}},"price_taxes":{"title":"Price Taxes","description":"Product tax breakdown. \n\nAlready included in the price breakdown in case `price_type:PURCHASE_GROSS/SALES_GROSS`, otherwise excluded. Taxes on fees are listed separately in `price_fees`.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ProductTax"}},"price_fees":{"title":"Price Fees","description":"List of additional fees. \n\nAdditional fees (`fee_included:true`) should be included in the `price_total`. \n\nNote that some fees are only visible to certain users.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/Fee"}},"price_total":{"title":"Total Sales Price","description":"The total sales / purchase price including all discounts, surcharges and fees above.","type":"string","readOnly":true}},"required":["price_type","price_subtotal","price_total"]},"PriceVariations":{"title":"Price Variation","description":"Variation which is applicable on the list price.","type":"object","properties":{"variation_label":{"title":"Variation Label","description":"Label / Explanation for this variation.","type":"string"},"variation_amount":{"title":"Variation Amount","description":"The amount which should be added / substracted to the `price_subtotal`. This can be a negative value (discount) or positive value (surcharge).","type":"string"},"variation_type":{"title":"Variation Type","type":"string","description":"Type of variation.\n\nOnly `CART_DISCOUNT_*` and `PARTNER_DISCOUNT` can be set in the request, other variations will be automatically added based on your order and returned on every response. If you sent other variations in your request, they will be ignored.\n<details>\n  <summary>**Variation Types**</summary>\n\n * `PRODUCT_DYNAMIC` - In case of `product_dynamic_pricing:true` the price variation based on availability will be shown here.\n * `PRODUCT_DAILY` - In case of `product_daily_pricing:true` the price variation based on the day will be shown here.\n * `PRODUCT_QUANTITY` - In case of `product_quantity_pricing:true` the price variation based on the quantity will be shown here.\n * `PRODUCT_DISCOUNT` - In case a `product_type_discount` is set, the price variation will be shown here.\n * `PRODUCT_MARKUP` - TBA.\n * `PRODUCT_BUNDLE` - TBA.\n * `PRODUCT_COMBI_DISCOUNT` - Combi discount.\n * `PARTNER_DISCOUNT` - In case of partner sales, the guest discount or partner discount / commission can be set by the cashier.\n * `CART_DISCOUNT_FIXED` - Fixed cart discount set by the cashier. \n \n    This discount is pre-configured and must exist in our system prior to making the booking.\n * `CART_DISCOUNT_CUSTOM` - Custom cart discount set by the cashier. \n \n    This discount is dynamic, does not have to exist in our system and can be set to any allowed value.\n * `PRODUCT_CAMPAIGN` - Promo campaign.\n * `AMENDMENT_DISCOUNT`\n * `AMENDMENT_FEE`\n * `OTHER` - Any variation not matching the types above.\n \n</details>\n","enum":["PRODUCT_DYNAMIC","PRODUCT_DAILY","PRODUCT_QUANTITY","PRODUCT_DISCOUNT","PRODUCT_MARKUP","PRODUCT_BUNDLE","PRODUCT_CAMPAIGN","PRODUCT_COMBI_DISCOUNT","PARTNER_DISCOUNT","CART_DISCOUNT_FIXED","CART_DISCOUNT_CUSTOM","AMENDMENT_DISCOUNT","AMENDMENT_FEE","OTHER"]}},"required":["variation_amount","variation_type"]},"PromoCodePricing":{"title":"Promocode Pricing","description":"Promocode pricing.","type":"object","readOnly":true,"properties":{"promo_code":{"title":"Promocode","description":"The promocode.","type":"string"},"promo_amount":{"title":"Promo Amount","description":"The promo amount.","type":"string"}},"required":["promo_code","promo_amount"]},"ProductTax":{"title":"Product Tax","description":"Applied tax.","type":"object","readOnly":true,"required":["tax_id","tax_name","tax_amount"],"properties":{"tax_id":{"title":"Tax ID","type":"string","description":"Unique identifier of this tax configuration.","readOnly":true},"tax_name":{"title":"Tax Name","description":"Name of the tax.","type":"string","readOnly":true},"tax_price_type":{"title":"Tax Price Type","description":"Price level for which this tax is applicable.","type":"string","enum":["LIST_PRICE","SALES_PRICE","DISTRIBUTOR_PRICE","RESELLER_PRICE","MARKET_PRICE","SUPPLIER_PRICE"]},"tax_amount":{"title":"Tax Amount","description":"Amount of tax.","type":"string","readOnly":true},"tax_rate":{"title":"Tax Rate","description":"Tax rate (percentage).","type":"string","readOnly":true},"tax_lines":{"$ref":"#/components/schemas/TaxLines"}}},"TaxLines":{"title":"Tax Lines","type":"object","description":"Additional tax lines.","properties":{"tax_lines_id":{"title":"Tax Lines ID","description":"Tax lines ID.","type":"string"},"tax_line_name":{"title":"Tax Line Name","description":"Name of the tax line.","type":"string"},"tax_line_type":{"title":"Tax Line Type","type":"string","description":"Tax abbreviation."},"tax_line_rate":{"title":"Tax Line Rate","type":"string","description":"Tax rate (percentage)."},"tax_line_region":{"title":"Tax Line Region","description":"Country or State of the related tax authority.","type":"string"}}},"Fee":{"title":"Fee","description":"Fee details.","type":"object","readOnly":true,"required":["fee_type","fee_amount","fee_tax_id","fee_tax_amount","fee_included","fee_refundable"],"properties":{"fee_type":{"$ref":"#/components/schemas/FeeType"},"fee_amount":{"title":"Fee Amount","description":"The applicable fee amount, can either be a surcharge or discount.","type":"string","readOnly":true},"fee_percentage":{"title":"Fee Percentage","description":"Fee percentage.","type":"string"},"fee_tax_amount":{"title":"Fee Tax Amount","description":"Amount of tax.","type":"string","readOnly":true},"fee_included":{"title":"Fee Included","description":"Whether this is an additional fee that should be listed separately and included in the `price_total` or is part of a calculation, e.g. margin breakdown (informational only). ","type":"boolean","readOnly":true}}},"FeeType":{"title":"Fee Type","readOnly":true,"description":"Type of fee.\n\nFee Type:\n  * `SERVICE` - The service fee or margin for this transaction or product.\n  * `PARTNER` - The partner fee or margin for this transaction or product.\n  * `DISTRIBUTOR` - The distributor fee or margin for this transaction or product.\n  * `AFFILIATE` - The affiliate fee or margin for this transaction or product.\n  * `RESELLER` - The reseller fee or margin for this transaction or product.\n  * `MARKET_ADMIN` - The market admin fee or margin for this transaction or product.\n  * `PLATFORM` - The platform fee or margin for this transaction or product.\n  * `PAYMENT` - The payment fee for this transaction or product.\n  * `INSURANCE` - The insurance fee for this transaction or product.\n  * `CUSTOM` - Custom fee for this transaction, product or order.","type":"string","enum":["SERVICE","PARTNER","DISTRIBUTOR","AFFILIATE","RESELLER","MARKET_ADMIN","PLATFORM","PAYMENT","INSURANCE","CUSTOM"]},"Note":{"title":"Note","description":"Details on the note.","type":"object","properties":{"note_value":{"title":"Note Value","description":"Note value.","type":"string"},"note_created":{"title":"Note Date","description":"Creation / Modification date of the note.","type":"string","format":"date-time","readOnly":true},"note_recipients":{"title":"Note Recipients","description":"List of accounts that are able to view the note.","type":"array","items":{"title":"Note Recipient","type":"string","description":"Account type of the users receiving / being able to view the note. \n\nFor example when sending a note from the distributor to the supplier, this will indicate the recipient (supplier).\n<details>\n  <summary>**Account Types**</summary>\n  \n  * `GUEST` - Note visible to the guest.\n  \n  * `PARTNER` - Note visible to the partner.\n\n  * `SUPPLIER` - Note visible to the supplier.\n  \n  * `RESELLER` - Note visible to the reseller / supplier admin.\n  \n  * `DISTRIBUTOR` - Note visible to the distributor.\n  \n</details>\n","enum":["GUEST","PARTNER","SUPPLIER","RESELLER","DISTRIBUTOR"]}},"note_creator_account_type":{"title":"Note Creator Account Type","type":"string","description":"Account type of the user who created the note. \n\nFor example when sending a note from the distributor to the supplier, this will indicate the sender (e.g distributor).\n<details>\n  <summary>**Account Types**</summary>\n\n  * `GUEST` - Note created by the guest.\n  \n  * `PARTNER` - Note created by the partner.\n\n  * `SUPPLIER` - Note created by the supplier.\n  \n  * `DISTRIBUTOR` - Note created by the distributor.\n  \n  * `RESELLER` - Note created by the reseller / supplier admin.\n  \n  * `PLATFORM_ADMIN` - Note created by the platform-admin.\n  \n  * `SUPER_ADMIN` - Note created by the super-admin.\n\n</details>\n","enum":["GUEST","PARTNER","SUPPLIER","RESELLER","DISTRIBUTOR"]},"note_creator_user_name":{"title":"Note Creator User Name","type":"string","description":"Name of the user that created this note.","readOnly":true},"note_creator_user_email":{"title":"Note Creator User Email","type":"string","description":"Email of the user that created this note.","readOnly":true},"note_creator_user_role":{"title":"Note Creator User Role","type":"string","description":"Userrole (name) of the user that created this note.","readOnly":true}},"required":["note_value","note_recipients"]},"PickupPoint":{"title":"Pickup Point","description":"Information on a pickup point.","type":"object","properties":{"pickup_point_id":{"title":"Pickup Point ID","description":"Pickup point ID.","type":"string"},"pickup_point_name":{"title":"Pickup Point Name","description":"Pickup point name / label.","type":"string","readOnly":true},"pickup_point_type":{"$ref":"#/components/schemas/PickupPointType"},"pickup_point_description":{"title":"Pickup Point Description","description":"Pickup point description.","type":"string","readOnly":true},"pickup_point_location":{"title":"Pickup Point Location","description":"Reference to the location details.","type":"string","readOnly":true},"pickup_point_time":{"title":"Pickup Point Time","description":"Time of pickup.","type":"string","format":"time"},"pickup_point_times":{"title":"Pickup Point Times","description":"Times available to select for this pickup point.","type":"array","items":{"title":"Pickup Point Time","description":"Time of pickup.","type":"string","format":"time"}},"pickup_point_duration":{"title":"Pickup Point Duration","description":"Duration of the pickup in minutes.","type":"integer","readOnly":true},"pickup_point_availability_dependency":{"title":"Pickup Point Availability Dependency","description":"Dependency on the selected `availability_slot`.\n\nThe selected (`pickup_point_time` + `pickup_point_duration`) is not allowed to exceed the selected `availability_from_date_time` and therefore only a limited amount of `pickup_point_times` should be shown.","type":"boolean","readOnly":true}},"required":["pickup_point_id","pickup_point_name"]},"PickupPointType":{"title":"Pickup Point Type","description":"Type of pickup point.\n\nPickup Point Type:\n  * `FIXED` - Fixed, pre-defined pickup point.\n   \n  * `CUSTOM` - Custom pickup point.","type":"string","enum":["FIXED","CUSTOM"]},"ProductAdmissionType":{"title":"Product Admission Types","type":"string","readOnly":true,"enum":["TIME_PERIOD","TIME_DATE","TIME_POINT","TIME_SLOT","TIME_OPEN"],"description":"<details>\n  <summary>**Product Admission Types**</summary>\n  \n* `TIME_PERIOD` - Customers can arrive at any time between the start (`availability_from_date_time`) and end time (`availability_to_date_time`) of the availability slot. Multiple periods in a single day should be expected.\n  Therefore a date- and timepicker should be shown.\n\n* `TIME_DATE` - Variation on `TIME_PERIOD`, whereas only a single period exists in a day. It is not required to choose between different times within a day, therefore only a datepicker is required.\n  Note that in case the slot includes midnight (two or more days), the day from which the `availability_from_date_time` originated should take precedence.\n\n* `TIME_POINT` - Customers are required to be present at the start time of the availability slot but can leave any time they want.\n* `TIME_OPEN` - Customers can arrive at any time. Availablity is not applicable.\n* `TIME_SLOT` - Customers are required to be present at the start time of the availability slot, and the service is expected to finish at the end time of the slot. </details>\n"},"ProductClass":{"title":"Product Class","type":"string","readOnly":true,"description":"<details>\n  <summary>**Product Classes**</summary>\n  \n  * `STANDARD` - Product types in the standard class are the most common and are supported by almost all systems.\n  \n  * `COMBI` - Product is a combi-product. This product is the main combi product and is not bookable on its own. All of the sub-products linked to this combi should be booked as well. These products are listed inside `product_combi_details`.\n  \n  * `CLUSTER` - Product is a cluster-product. This product is the main cluster product and is not bookable. One of the sub-products linked to this cluster should be booked instead. These products are listed inside `product_cluster_details`.\n  \n  * `MERCHANDISE` - \n  \n  * `BUNDLE` - Product is a bundle-product. This product is the main bundle product and is not bookable on its own. All of the sub-products linked to this bundle should be booked as well. These products are listed inside `product_bundle_details`.\n  \n  * `ADDON` - \n  \n  * `OTHER` - Products in the other/custom class are completely dynamic.\n\n</details>\n","enum":["STANDARD","COMBI","CLUSTER","MERCHANDISE","BUNDLE","ADDON","OTHER"]},"BookingExtraOptions":{"title":"Booking Extra Options","deprecated":true,"description":"The product options booked. In case any of the booked product options are listed as `option_mandatory:true` you are required to fill in this field.\n\nIf you book `product_options` which are priced based on product type (`option_price_type:PRODUCT_TYPE`) then all booked options will return with their actual prices.\n","type":"object","properties":{"option_id":{"title":"Option ID","description":"Option ID.","type":"string"},"option_count_visible":{"title":"Option Count Visible","description":"Whether the selected quantity should be visible in the cart or shown as combined single price.","type":"boolean"},"option_discount_applicable":{"title":"Option Discount Applicable","description":"Whether any cart or promotional discounts apply on this option.","type":"boolean"},"option_values":{"title":"Option Values","description":"Option values.","type":"array","items":{"$ref":"#/components/schemas/BookingExtraOptionDetails"}}},"required":["option_id"]},"BookingExtraOptionDetails":{"title":"Booking Extra Option Details","description":"Booking extra option details.","type":"object","allOf":[{"$ref":"#/components/schemas/ExtraOptionValue"},{"type":"object","properties":{"value_discount_price":{"title":"Value Discount Price","description":"Optionally returned value_discount_price if discount apply on option value.","type":"string","readOnly":true},"value_count":{"title":"Value Count","description":"Value count.","type":"integer","minimum":0,"maximum":500}},"required":["value_count"]}]},"ExtraOptionValue":{"title":"Extra Option Value","description":"Extra option value.","type":"object","properties":{"value_id":{"title":"Value ID","description":"Value ID.","type":"string"},"value_name":{"title":"Value Name","description":"(Translatable) Value name.","type":"string","readOnly":true},"value_price":{"title":"Value Price","description":"The price of this value. In case `option_price_type:PRODUCT_TYPE` then this field will be undefined on `product_options` level.","type":"string","readOnly":true},"value_cost_price":{"title":"Value Cost Price","description":"The cost price of this value.","type":"string","readOnly":true},"value_percentage":{"title":"Value Percentage","description":"Optionally returned if `value_price` is percentage based.","type":"string","readOnly":true},"value_price_tax_id":{"title":"Value Price Tax ID","description":"Tax ID for this product option value. Tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_price_tax_amount":{"title":"Value Price Tax Amount","description":"Amount of tax applied for this product option value. Additional tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_price_tax_rate":{"title":"Value Price Tax Rate","description":"Tax rate applied for this product option value. Additional tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_product_type_id":{"title":"Value Product Type ID","description":"Returned in case this value / option is only applicable to a specific product type (`option_price_type:PRODUCT_TYPE`).","type":"string","readOnly":true}},"required":["value_id"]},"ProductSubDetail":{"title":"Product Sub Detail","description":"Product sub detail.","type":"object","properties":{"product_parent_id":{"title":"Product Parent ID","description":"Unique identifier for the parent product assigned by Prio.","type":"string","readOnly":true},"product_id":{"title":"Product Sub ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_title":{"title":"Product Title","description":"The title of product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_source_id":{"title":"Product Source ID","type":"string","description":"Unique ID of the product source.","readOnly":true},"product_source_name":{"title":"Product Source Name","type":"string","description":"Source of the product. \n\nEither PrioTicket or the name of the other reservation system e.g. CSS.","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_currency_code":{"title":"Product Currency Code","description":"Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).","type":"string","readOnly":true},"product_availability_id":{"title":"Product Combi Availability ID","description":"The unique ID for the availability slot. Only mandatory if `product_availability:true`","type":"string"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_capacity_id":{"title":"Availability Slot Capacity ID","description":"Availability group / capacity identifier.","type":"string","readOnly":true},"product_availability_capacity_shared_id":{"title":"Availability Slot Shared Capacity ID","description":"Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.","type":"string","readOnly":true},"product_type_details":{"title":"Product Type Booking Details","description":"A list specifying the booking quantity per product type. Only returned for bundle products.","type":"array","items":{"$ref":"#/components/schemas/BookingItemWithPricing"}},"booking_travel_date":{"title":"Booking Combi Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.","type":"string","format":"date-time"},"booking_reference":{"title":"Booking Reference","type":"string","description":"Unique reference for this sub-booking.","readOnly":true},"booking_external_reference":{"title":"Booking External Reference","description":"A unique booking identifier within the external system.","type":"string"}},"required":["product_parent_id","product_id","product_title","product_supplier_id","product_supplier_name","product_admission_type","product_currency_code"]},"BookingItemWithPricing":{"title":"Regular Booking Item","description":"Regular booking item.","type":"object","allOf":[{"$ref":"#/components/schemas/BookingItem"},{"type":"object","properties":{"product_type_pricing":{"$ref":"#/components/schemas/Pricing"}}}]},"BookingItem":{"title":"Booking Item","description":"Reference to the specific type / configuration of the product.","type":"object","properties":{"product_type":{"$ref":"#/components/schemas/ProductType"},"product_type_class":{"$ref":"#/components/schemas/ProductTypeClass"},"product_type_id":{"title":"Product Type ID","type":"string","description":"In case of more complex product configurations e.g. multiple ambiguous product types, the preferred option must be specified using the ID."},"product_type_label":{"title":"Product Type Label","description":"(Translatable) The product type label.","type":"string","readOnly":true},"product_type_age_from":{"title":"Product Type Age From","description":"The starting age for age group.","readOnly":true,"type":"integer","multipleOf":1},"product_type_age_to":{"title":"Product Type Age To","description":"The ending age for age group.  If both `product_type_age_from` and `product_type_age_to` are empty no age-restrictions should be shown. If only `product_type_age_to` is empty, then it is advised to show the age-restriction as e.g. \"22+\".\n","type":"integer","readOnly":true,"multipleOf":1},"product_type_count":{"title":"Product Type Count","description":"The quantity being booked for the specified product type.\n\nPlease note that the following structures are deemed semantically the same.\n```\n\"product_type_details\":[\n  {\n     \"product_type_id\":\"13725\",\n     \"product_type_count\":\"2\"\n  }\n]\n\nand\n\n\"product_type_details\":[\n  {                     \n     \"product_type_id\":\"13725\",   \n     \"product_type_count\":1   \n  },\n  {       \n     \"product_type_id\":\"13725\",    \n     \"product_type_count\":1     \n  }\n]\n```\nWe allow this 'alternative format' for 'ease-of-use'. Please note that in the order response we have no other option than to 'split' the product types, otherwise, we would not be able to send multiple codes (single `product_type_code` per pax/piece) in the response.\n","type":"integer","minimum":1,"maximum":500,"multipleOf":1},"product_type_pax":{"title":"Product Type Pax","description":"Number of persons to be counted in the reporting for the selected product type quantity.","type":"integer","readOnly":true,"minimum":0},"product_type_capacity":{"title":"Product Type Capacity","type":"integer","readOnly":true,"minimum":0,"description":"The capacity count to be blocked in the system for the selected availability slot.\n\nFor example:\n\nIf a single table with six seats is booked by two persons, the setup would be as follows:\n\n  ```\n  \"product_type_count\": 1,\n  \"product_type_pax\": 2,\n  \"product_type_capacity\": 6\n  ```\n"},"product_type_spots":{"title":"Product Type Spots","description":"Product type spots.","type":"array","minItems":1,"items":{"$ref":"#/components/schemas/Spot"}},"product_type_code":{"title":"Product Type Code","description":"The product code allocated by Prio to redeem products.","type":"string"}},"required":["product_type_id","product_type","product_type_count","product_type_pax"]},"ProductType":{"title":"Product Type","type":"string","description":"Each product contains product types. These product types can offer aged based ticketing (such as Adult and Child), but also provide a variety of other flexible product variations such as group pricing, business and economy seating or different car configurations.\n\nBecause some products might behave different from others, each product type is categorized within a product class; a group of products that behaves similarly.\n<details>\n  <summary>**Product Types**</summary>\n\n  * Class Standard:\n    \n    Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.\n    \n    Tour and experience providers have the flexibility to vary prices and apply different rules based on the age of their customers. This means they can charge full ticket prices for adults while offering discounted rates for children, or they may have specific requirements such as requiring at least one adult for every group of children booking a tour.\n    \n    During the process of checking prices and proceeding to checkout, customers should be able to select the number of individuals from each available age group for their booking.\n  \n    * `ADULT` - Adult.\n    \n    * `CHILD` - Child.\n    \n    * `SENIOR` - Senior.\n    \n    * `YOUTH` - Youth.\n        \n    * `INFANT` - Infant.\n    \n  * Class Individual:\n  \n    Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.\n    \n    * `PERSON` - Person.\n    \n    * `STUDENT` - Student.\n    \n    * `RESIDENT` - Resident.\n    \n    * `MILITARY` - Military.\n    \n    * `IMPAIRED` - Impaired.\n  \n  * Class Item:\n  \n    Product types in the item class do not refer to actual persons, instead they could, for example, be packages (Regular, Silver, Diamond), objects (Merchandise, private tours), a type of event, class identifier (Economy, Business) and much more.\n  \n    * `ITEM` - Item.\n    \n  * Class Group:\n   \n    Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.\n    \n    * `GROUP` - Group.\n    \n    * `FAMILY` - Family.\n    \n  * Class Custom:\n  \n    Product types in the custom class are completely dynamic and therefore require explicit mapping with external systems. They do not return as `CUSTOM`, instead they can take any form.\n    \n    * `CUSTOM` - Custom.\n    \n</details>\n","enum":["ADULT","CHILD","SENIOR","YOUTH","INFANT","PERSON","STUDENT","RESIDENT","MILITARY","IMPAIRED","ITEM","GROUP","FAMILY","CUSTOM"]},"ProductTypeClass":{"title":"Product Type Class","type":"string","readOnly":true,"description":"<details>\n  <summary>**Product Type Classes**</summary>\n  \n  * `STANDARD` - Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.\n  \n  * `INDIVIDUAL` - Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.\n  \n  * `ITEM` - Product types in the item class do not refer to actual persons, instead they could, for example, be packages (Regular, Silver, Diamond), objects (Merchandise, private tours), a type of event, class identifier (Economy, Business) and much more.\n  \n  * `GROUP` - Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.\n  \n  * `CUSTOM` - Product types in the custom class are completely dynamic and therefore require explicit mapping with external systems. They do not return as CUSTOM, instead they can take any form.\n\n</details>\n","enum":["STANDARD","INDIVIDUAL","ITEM","GROUP","CUSTOM"]},"Spot":{"title":"Spot","type":"object","description":"Information on the selected spot. Only applicable if PrioSeating is being used (`product_availability_assigned:true`).\n","properties":{"spot_name":{"title":"Spot Name","type":"string","description":"Spot name.","readOnly":true},"spot_section":{"title":"Spot Section","type":"string","description":"Name of the section. Only applicable if the product has sections."},"spot_row":{"title":"Spot Row","type":"string","description":"The row the spot resides in."},"spot_number":{"title":"Spot Number","description":"The spot number.","type":"string"}},"required":["spot_state"]},"ProductAddonDetail":{"title":"Product Addon Detail","description":"Product Addon detail.","type":"object","properties":{"product_id":{"title":"Product Sub ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_title":{"title":"Product Title","description":"The title of product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"booking_travel_date":{"title":"Booking Combi Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.","type":"string","format":"date-time"},"booking_order_reference":{"title":"Booking Order Reference","description":"Booking order reference","type":"string"},"booking_reference":{"title":"Booking Reference","description":"A unique booking identifier within the system.","type":"string"},"booking_status":{"$ref":"#/components/schemas/BookingStatusTypes"}},"required":["product_id","product_title","product_supplier_id","product_supplier_name","product_admission_type"]},"ContactDetails":{"title":"Contact Details","description":"Information on the contact.","type":"object","properties":{"contact_uid":{"title":"Contact User Identifier","description":"A unique contact identifier created by Prio. \n\nIn case this field is left blank, a new contact will be created in the system. If you pass an already existing `contact_uid`, those contact details will be  used and linked to the current/future order. In this case all other fields will be ignored.\n> Only applicable for partners using the Contacts Module (Returning guests). For regular transactions this parameter can be safely ignored.","type":"string","format":"uuid"},"contact_external_uid":{"title":"Contact External User Identifier","description":"Unique external identifier of the contact.","type":"string"},"contact_version":{"title":"Contact Version","description":"Contact version; every time the contact details are updated, a new version is registered.","type":"integer","readOnly":true,"default":1,"multipleOf":1},"contact_number":{"title":"Contact Number","description":"Number of the contact.","type":"string","maxLength":50},"contact_type":{"$ref":"#/components/schemas/ContactType"},"contact_title":{"title":"Contact Title","description":"Title prefix of the contact (Mister / Miss / Misses etc).","type":"string"},"contact_name_first":{"title":"Contact First Name","description":"First name of the contact.","type":"string","maxLength":255},"contact_name_last":{"title":"Contact Last Name","description":"Surname of the contact. If you only have the fullname, we recommend sending it as `contact_name_last` and leaving the `contact_name_first` blank.","type":"string","maxLength":255},"contact_email":{"title":"Contact Email","description":"Email address of the contact.","type":"string","format":"email"},"contact_phone":{"title":"Contact Phone","description":"Must be a valid E.164 spec compliant phone number.","type":"string","format":"phone"},"contact_mobile":{"title":"Contact Phone","description":"Must be a valid E.164 spec compliant phone number.","type":"string","format":"phone"},"contact_language":{"title":"Contact Language","type":"string","description":"Language and culture code of the contact preferred language ([ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1))."},"contact_nationality":{"title":"Contact Nationality","description":"Country code of the contact ([ISO-3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)).","type":"string"},"contact_flight_number":{"title":"Contact Flight Number","description":"Contact Flight Number.","type":"string"},"contact_loyalty_number":{"title":"Contact Loyalty Number","description":"Contact Loyalty Number.","type":"string"},"contact_birth_place":{"title":"Contact Birth Place","description":"Place of birth.","type":"string"},"contact_birth_date":{"title":"Contact Birth Date","description":"Date of birth.","type":"string","format":"date"},"contact_passport":{"title":"Contact Passport","description":"Passport details of the contact.","type":"string"},"contact_gender":{"title":"Contact Gender","description":"Gender of the contact.","type":"string","enum":["MALE","FEMALE","OTHER"]},"contact_age":{"title":"Contact Age","description":"Age of the contact.","type":"integer","maximum":150},"contact_room_number":{"title":"Contact Room Number","description":"Contact room number.","type":"string"},"contact_website":{"title":"Contact Website","description":"Contact website.","type":"string","format":"URI"},"contact_company":{"$ref":"#/components/schemas/ContactCompany"},"contact_classification":{"$ref":"#/components/schemas/ContactClassification"},"contact_address":{"$ref":"#/components/schemas/AddressModel"},"contact_notes":{"title":"Contact Notes","description":"Contact notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"contact_custom_fields":{"title":"Contact Custom Fields","description":"Freeform entry of any key-value pair.","type":"array","items":{"$ref":"#/components/schemas/CustomField"}},"contact_created":{"title":"Contact Created","description":"Creation date and time of the contact.","type":"string","format":"date-time","readOnly":true},"contact_modified":{"title":"Contact Modified","description":"Last update date and time of the contact.","type":"string","format":"date-time","readOnly":true}},"required":["contact_created","contact_modified"]},"ContactType":{"title":"Contact Type","description":"Type of contact.\n\nSome supplier systems do not support multiple contacts per orders. In that case we have the following policy:\n1. If set, we sent `contact_type:BOOKER`.\n2. Otherwise, if set, we sent the first `contact_type:CONTACT`.\n3. If both are not set, we sent the first contact in the array.\n\n<details>\n  <summary>**Contact Types**</summary>\n\n* `BOOKER` - Main Booker details (End-consumer). Only a single main booker is recommended. \n  \n  This is the most common type of contact, as it contains information about the person / entity who made the booking.\n  \n  > Any automated emails such as order confirmations will be sent to this contact type. \n\n* `CONTACT` - General, non-specific contact. \n\n  Only use this type if a more specific classification is unknown.\n\n* `GUEST` - Guest / End-consumer / Passenger linked to the booking.\n\n  Defining the guests per booking allows for advanced functionality such as Check-In and passenger management.\n\n* `PARTNER` - Partner details.\n* `STAFF` - General staff.\n* `CASHIER` - Cashier performing the sales.\n* `PAYMENT` - Billing / Financial contact. \n\n  > Payment emails will be sent to this contact type by default.\n\n* `AGENT` - Agent details.\n* `EMERGENCY` - Emergency contact (Guest, host, family member etc.).\n* `GUIDE` - Teacher / Instructor / Guide details.\n* `SUPPLIER` - Supplier details.\n* `VENUE` - Venue details.\n* `HOST` - Host details.\n* `COMPANY` - (Guest) company details.\n* `DELIVERY` - (Guest) Delivery / Shipping contact / address details.\n* `MANAGER` - (UPCOMING) Manager contact.\n* `SUPPORT` - (UPCOMING) Support contact.\n* `INSTRUCTOR` - (UPCOMING) Instructor contact.\n* `OTHER` - Other type of contact, not mentioned above.\n</details>","type":"string","default":"CONTACT","enum":["BOOKER","CONTACT","GUEST","PARTNER","STAFF","CASHIER","PAYMENT","AGENT","EMERGENCY","GUIDE","SUPPLIER","VENUE","HOST","COMPANY","DELIVERY","OTHER"]},"ContactCompany":{"title":"Contact Company","description":"Contact company details.","type":"object","properties":{"company_name":{"title":"Company Name","description":"Company name.","type":"string"},"company_registration_number":{"title":"Company Registration Number","description":"Company registration number.","type":"string"},"company_tax_number":{"title":"Company Tax Number","description":"Company tax number.","type":"string"}}},"ContactClassification":{"title":"Contact Classification","description":"Contact classification.","type":"string","enum":["IMPORTANT","VERY_IMPORTANT","PROBLEMATIC","DISABLED_PERSON","TOP_MANAGEMENT","STAFF","LOYALTY_PROGRAM","MEDIA","FRIEND_OR_FAMILY","RETURNING","PERSONAL","BUSINESS"]},"AddressModel":{"title":"Address Model","type":"object","description":"Address details.","properties":{"id":{"title":"Address ID","type":"string","format":"uuid","deprecated":true,"readOnly":true,"description":"Unique address identifier."},"name":{"title":"Address Name","description":"Name / Label of this address / addressee.","type":"string"},"street":{"title":"Address Street","description":"Address line 1 / Street.","type":"string"},"addition":{"title":"Address Addition","description":"Additional address line 2.","type":"string"},"city":{"title":"Address City","description":"Town / City / Village.","type":"string"},"postal_code":{"title":"Address Postal Code","description":"Address postal code.","type":"string"},"region":{"title":"Address Region","description":"State / Province / Region.","type":"string"},"country":{"title":"Address Country","description":"Address country.","type":"string"},"country_code":{"title":"Address Country Code","description":"Returns country code of the product ( [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2))","type":"string"},"place_id":{"title":"Address Google Place ID","description":"Google Place ID","type":"string"},"latitude":{"title":"Address Latitude","description":"Address latitude.","type":"string"},"longitude":{"title":"Address Longitude","description":"Address longitude.","type":"string"},"notes":{"title":"Address Note","description":"Address note.","type":"string"}}},"CustomField":{"title":"Custom Field","type":"object","description":"Custom Fields allow you to store and list any arbitrary value in the system.\n\nThis metadata are data elements that you create yourself. When you add metadata to your request, they are echoed in the response so that you can connect the transaction to your metadata. For example, to add a shift number and an employee ID to a transaction. You are free to create metadata fields, even encoded, as long as the datatype is a string.","properties":{"custom_field_name":{"title":"Custom Field Name","type":"string","description":"Unique Name / Identifier for this field."},"custom_field_value":{"title":"Custom Field Value","type":"string","description":"Freeform value of this field."},"custom_field_type":{"$ref":"#/components/schemas/CustomFieldType"}}},"CustomFieldType":{"title":"Custom Field Type","type":"string","deprecated":true,"description":"Custom Field Type:\n  * `SYSTEM` - This field is only stored and returned in the API. Only visible to the system.\n  * `USER` - This value is stored and visualized, can be shown in a customized fashion in other modules.","enum":["SYSTEM","USER"]},"CheckoutField":{"title":"Checkout Field","description":"Checkout field shown on the checkout screen.","type":"object","properties":{"checkout_field_id":{"title":"Checkout Field ID","description":"Unique Checkout Field ID.","type":"string"},"checkout_field_title":{"title":"Checkout Field Title","type":"string","readOnly":true},"checkout_field_label":{"title":"Checkout Field Label","type":"string","readOnly":true},"checkout_field_place_holder":{"title":"Checkout Field Placeholder","type":"string","readOnly":true},"checkout_field_help_text":{"title":"Checkout Field Help Text","type":"string","readOnly":true},"checkout_field_account_type":{"title":"Checkout Field Account Type","description":"Whether this field is required by the venue (supplier) or the seller (distributor).","type":"string","readOnly":true,"enum":["SUPPLIER","DISTRIBUTOR"]},"checkout_field_booking_reference":{"title":"Checkout Field Booking Reference","type":"array","items":{"type":"string"}},"checkout_field_restriction":{"title":"Checkout Field Restriction","description":"Whether a field is required, optional or recommended. Mandatory fields must be filled during order checkout, otherwise the order will be rejected.","type":"string","readOnly":true,"enum":["REQUIRED","OPTIONAL","RECOMMENDED"]},"checkout_field_level":{"title":"Checkout Field Level","description":"Whether answers should be provided once or for each participant.","type":"string","readOnly":true,"enum":["PRODUCT","PARTICIPANT"]},"checkout_field_unit":{"title":"Checkout Field Unit","type":"string"},"checkout_field_input_type":{"title":"Checkout Field Input Type","type":"string","readOnly":true,"description":"* `SINGLE` - Single option value is available.\n* `RADIO` - Customer can select only one out of multiple option values.\n* `CHECKBOX` - Customers can select one or more option values.\n* `SHORT_ANSWER` - A one-line input field for text. (UPCOMING)\n* `PARAGRAPH` - A multi-line input field for text. (UPCOMING)\n* `DROPDOWN` - A selection from a dropdown. (UPCOMING)\n* `BOOLEAN` - A yes/no button. (UPCOMING)\n* `PHONE` - A phonenumber. (UPCOMING)\n* `EMAIL` - An email. (UPCOMING)\n* `DATE` - A date. (UPCOMING)\n* `TIME` - A time. (UPCOMING)\n* `DATETIME` - A date and time. (UPCOMING)\n* `NUMBER` - A number. (UPCOMING)\n* `LOCATION_SEARCH` - A search widget that supports finding matched location given user input from provided location list. (UPCOMING)\n* `CONSENT` - A consent section that requires opt-in.\n","enum":["SINGLE","RADIO","CHECKBOX","SHORT_ANSWER","PARAGRAPH","DROPDOWN","BOOLEAN","PHONE","EMAIL","DATE","TIME","DATETIME","NUMBER","LOCATION_SEARCH","CONSENT"]},"checkout_field_type":{"title":"Checkout Type","description":"Which field the restriction applies on.","type":"string","readOnly":true,"enum":["contact_title","contact_name_first","contact_name_last","contact_email","contact_confirm_email","contact_phone","contact_mobile","contact_language","contact_nationality","contact_country_residence","contact_birth_place","contact_birth_date","contact_passport","contact_passport_expiry","contact_age","contact_address","contact_address_1","contact_address_2","contact_address_postal_code","contact_address_city","contact_address_state","contact_address_country","contact_height","contact_weight","contact_type_company","contact_type_guest","contact_type_booker","contact_company_name","contact_company_address_1","contact_company_address_2","contact_company_postal_code","contact_company_city","contact_company_state","contact_company_country","SYSTEM","CUSTOM"]},"checkout_field_options":{"title":"Checkout Field Options","description":"In case of `checkout_field_input_type:RADIO/CHECKBOX/DROPDOWN`, one or more options should be selected.\n","type":"array","items":{"$ref":"#/components/schemas/CheckoutFieldOption"}},"checkout_field_values":{"title":"Checkout Field Values","description":"Checkout field input/selected values.","type":"array","items":{"$ref":"#/components/schemas/CheckoutFieldValue"}},"checkout_field_created":{"title":"Checkout Field Created","description":"Checkout field creation datetime.","type":"string","readOnly":true,"format":"date-time"}}},"CheckoutFieldOption":{"title":"Checkout Field Option","description":"Checkout field option.","type":"string"},"CheckoutFieldValue":{"title":"Checkout Field Value","description":"Checkout field value/answer.","type":"object","properties":{"checkout_field_value_product_type":{"title":"Checkout Field Value Product Type","description":"Restricts the checkout field selection to a specific product type.","type":"string"},"checkout_field_value":{"title":"Checkout Field Value","description":"Selected / Input value(s) of checkout field. Should be \"true\"\" in case of Boolean type, can be array in case of multi-select.","type":"array","items":{"title":"Checkout Field Entry","description":"Checkout field entry.","type":"string"}},"checkout_field_value_transaction_reference":{"title":"Checkout Field Value Transaction Reference","description":"Restricts the checkout field selection to a specific transaction.","type":"string"}}},"AppliedPromocode":{"title":"Applied Promocode","description":"Details on the applied promocode.","type":"object","properties":{"promo_title":{"title":"Promo Title.","description":"Title of applied promocode.","type":"string"},"promo_description":{"title":"Promo Description","description":"Promo description.","type":"string"},"promo_code":{"title":"Promocode","description":"Promocode.","type":"string"}},"required":["promo_title","promo_code"]},"PaymentDetails":{"title":"Payment Details","description":"Details on the payment(s). In case the payment is not made directly at booking, these details might not yet be available.","type":"object","required":["payment_id","payment_merchant_reference","payment_status","payment_method","payment_type","payment_recurring","payment_gateway_type","payment_currency_code","payment_amount","payment_total","payment_created","payment_created_name","payment_created_email"],"properties":{"payment_id":{"title":"Payment ID","description":"Unique Payment ID set by the Prio system. This is an internal identifier.","type":"string","format":"uuid","readOnly":true},"payment_original_id":{"title":"Payment Original ID","description":"In case of a modification (refund, capture after authorization) this will be the `payment_id` of the original record.","type":"string","format":"uuid","readOnly":true},"payment_partner_id":{"title":"Payment Partner ID","description":"Payment partner identifier.","type":"string"},"payment_merchant_reference":{"title":"Payment Merchant Reference","description":"Unique (external) payment reference set by the merchant / (third) party / POS system initiating the payment. This reference will also be used to identify the payment in the PSP system.","type":"string"},"payment_external_reference":{"title":"Payment External Reference","description":"External payment reference set to identify the shopper / entity / cardholder / guest performing the payment. This reference can also be used to identify the payment in the PSP system.","type":"string"},"payment_order_reference":{"title":"Payment Order Reference","description":"The `order_reference` linked to this payment.","type":"string"},"payment_booking_references":{"title":"Payment Bookings References","description":"The booking references linked to this payment. Only returned in case of partial payment (pay per booking).","type":"array","readOnly":true,"items":{"title":"Booking Reference","description":"The `booking_reference` linked to this payment.","type":"string"}},"payment_order_version":{"title":"Payment Order Version","description":"Version of the order (`order_version`) during the payment.","type":"integer","readOnly":true},"payment_status":{"$ref":"#/components/schemas/PaymentStatus"},"payment_method":{"$ref":"#/components/schemas/PaymentMethod"},"payment_scheme":{"$ref":"#/components/schemas/PaymentScheme"},"payment_type":{"$ref":"#/components/schemas/PaymentType"},"payment_link":{"title":"Payment Link","description":"Only applicable in case the PSP only supports payment via Hosted Payment Page Link or `payment_method:LINK`.","type":"string","readOnly":true,"format":"URI"},"payment_link_expires_at":{"title":"Payment Link Expiry","description":"Date and time when the payment link expires. In case of pre-payment this value will be the `reservation_valid_until`.","type":"string","readOnly":true,"format":"date-time"},"payment_recurring":{"title":"Payment Recurring","description":"Whether the payment details are stored for recurring payments.","type":"boolean","default":false,"readOnly":true},"payment_recurring_type":{"$ref":"#/components/schemas/PaymentRecurringType"},"payment_class":{"$ref":"#/components/schemas/PaymentClass"},"payment_refund_type":{"$ref":"#/components/schemas/RefundType"},"payment_refund_reason":{"title":"Payment Refund Reason","description":"Reason of refund.\n\nOnly applicable in case `payment_type:REFUND`.","type":"string"},"payment_currency_code":{"title":"Payment Currency Code","description":"The (guest) currency code of this payment. According to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).\n\n**(ADVANCED)**\nThis value defaults to `order.order_pricing[].price_currency_code`, unless the guest uses an alternative checkout currency, in which case an additional `payment_currency_rate` and `payment_currency_amount` will be returned.\n\nNote that the payment service provider can perform an additional conversion called dynamic currency conversion (DCC), which will be returned inside `payment_gateway_additional_values`.","type":"string"},"payment_currency_rate":{"title":"Payment Currency Rate","description":"Checkout / Guest currency conversion rate. \n\nIf not set and an alternative `payment_currency_code` is provided, the latest rates from the Currency API will be used as default.\n\n> Alternative rates can only be provided on (re)sales, purchase exchange rates are fixed.","type":"string"},"payment_currency_amount":{"title":"Payment Currency Amount","description":"The total amount / value that has been authorised / settled / refunded in the alternative (guest) currency (`payment_amount` * `payment_currency_rate`).","type":"string","readOnly":true},"payment_amount":{"title":"Payment Amount","description":"The amount authorised / settled / refunded during this transaction in the base (order) currency.\n\nIn case of refunds, this value will be a positive value but the payment type will be set to `payment_type:REFUND`.","type":"string","readOnly":true},"payment_total":{"title":"Payment Running Total","description":"The actual total amount that is (already) authorised / settled in the base (order) currency. This will be a running sum of all (previous) payment (`payment_amount`) transactions linked to this order. Refunds will be subtracted from the total.","type":"string","readOnly":true},"payment_gateway_details":{"$ref":"#/components/schemas/PaymentGatewayDetails"},"payment_contact":{"$ref":"#/components/schemas/ContactDetails"},"payment_notes":{"title":"Payment Notes","description":"Payment notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"payment_created":{"title":"Payment Create Date","description":"Date and time of payment.","type":"string","format":"date-time","readOnly":true},"payment_created_name":{"title":"Payment Created Name","description":"Cashier name / Username who created the payment.","type":"string","readOnly":true},"payment_created_email":{"title":"Payment Created Email","description":"Cashier email / User email who created the payment.","type":"string","format":"email","readOnly":true}}},"PaymentStatus":{"title":"Payment Status","description":"Status of guest payment.\n\n<details>\n  <summary>**Payment Statuses**</summary>\n\n * `PAID` (string) - Payment is authorized and settled / captured. This state serves as an indicator to proceed.\n \n    > If `SettlementType:EXTERNAL`, then the order will be automatically PAID upon Order Confirmation.\n * `AUTHORIZED` (string) - Payment has been authorized and can be charged / settled later. The payment is approved by the financial institution. This state serves as an indicator to proceed.\n * `PROCESSING` (string) - Payment is being processed, this is a temporary state. \n * `IN_PROGRESS` (string) - Payment flow has been initiated and is in progress, this is a temporary state. \n * `PENDING` (string) - Payment is pending. This is the initial state for most payments. Initiate a new payment via the Make Payment API.\n \n    > If `SettlementType:EXTERNAL`, then no further action is required.\n * `REFUNDED` (string) - Payment has been refunded / reimbursed. Please consult `payment_refund_type` for more details.\n * `REFUSED` (string) - Payment was refused during last attempt. Please consult your Payment Service Provider for more details. Initiate a new payment via the Make Payment API.\n * `CANCELLED` (string) - Payment has been cancelled during the last attempt or prior to the capture of an authorized payment. Initiate a new payment via the Make Payment API.\n * `ERROR_REFUND` (string) - Payment error occurred during last attempt. Initiate a new refund via the Refund Payment API.\n * `ERROR_PAYMENT` (string) - Payment error occurred during last payment attempt. Initiate a new payment via the Make Payment API.\n * `PARTIAL_PAID` (string) - Payment is partially paid.\n * `PARTIAL_REFUND` (string) - Payment is partially refunded.\n * `CHARGEBACK` (string) - Payment funds are returned to the guest due to a chargeback. Please consult your Payment Service Provider for more details.\n * `EXPIRED` (string) - The payment term has expired. This can happen if for example the authorization deadline has passed.\n * `NOT_REQUIRED` (string) - Payment is not required / applicable. This state serves as an indicator to proceed.\n \n</details>\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"string","readOnly":true,"default":"PENDING","enum":["PAID","AUTHORIZED","PROCESSING","IN_PROGRESS","PENDING","REFUNDED","REFUSED","CANCELLED","ERROR","ERROR_REFUND","ERROR_PAYMENT","PARTIAL_PAID","PARTIAL_REFUND","CHARGEBACK","EXPIRED","NOT_REQUIRED"]},"PaymentMethod":{"title":"Payment Method","description":"Payment method / type used.\n\nMore specific details might be available in `PaymentScheme` after payment.\n<details>\n  <summary>**Payment Methods**</summary>\n\n * `ONLINE` (string) - Accept payments with cards, wallets, and key local payment methods on your website and mobile app.\n * `TERMINAL` (string) - Accept payments with in-store or stand-alone POS terminals.\n * `LINK` (string) - Set payment link, often redirecting to a Hosted Payment Page (HPP). \n * `CASH` (string) - Accept cash payment.\n * `GUEST_BILL` (string) - Charge guest bill.\n * `RECURRING` (string) - Recurring payment.\n * `EXTERNAL` (string) - Payment made outside the client / Prio system.\n * `VOUCHER` (string) - Use voucher.\n * `BANK_TRANSFER` (string) - Set bank transfer, generally used to pay invoices.\n * `OTHER` (string) - Any method not mentioned above.\n \n</details>\n> Only applicable to Guest Payment. Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"string","default":"EXTERNAL","enum":["ONLINE","TERMINAL","LINK","CASH","GUEST_BILL","RECURRING","EXTERNAL","VOUCHER","BANK_TRANSFER","OTHER"]},"PaymentScheme":{"title":"Payment Scheme","description":"Payment scheme used. Available if returned by payment service provider.","type":"string","enum":["VISA","MASTERCARD","MAESTRO","PAYPAL","SOFORT","GIROPAY","SEPA","BANCONTACT","IDEAL","ALIPAY","AFTERPAY","BOLETO","KLARNA_NOW","KLARNA_LATER","DISCOVER","UNIONPAY","VPAY","JCB","TRUSTLY","SWISH","AMERICAN_EXPRESS","AMAZON_PAY","SAMSUNG_PAY","WECHAT_PAY","APPLE_PAY","GOOGLE_PAY","CREDITCARD","UNSPECIFIED","OTHER"]},"PaymentType":{"title":"Payment Type","description":"Type of payment.\n<details>\n  <summary>**Payment Types**</summary>\n\n  * `CAPTURE` (string) - The reserved funds are transferred from the shopper to your account. \n    \n    A payment that was already authorised by the payment processor must be captured to be completed (this is the act of transferring the reserved funds from shopper to merchant).\n  * `AUTHORIZATION` (string) - The payment details of the shopper are verified, and the funds are reserved.\n  \n    This is the process of the card issuer (like Visa or Mastercard) verifying payment details and reserving the funds to capture it later. \n    When a payment was authorised but hasn't been captured yet, a merchant can also decide to cancel it for some reason (like a high risk of fraud).\n  \n    > Note that authorisation is valid only for a limited amount of time. In case an authorised payment hasn't been captured or cancelled, it expires after the predefined deadline is missed.\n  * `REFUND` (string) - If you want to return the funds to your shopper, for example if they returned an item, you need to refund the payment.\n  \n</details>","type":"string","default":"CAPTURE","enum":["CAPTURE","AUTHORIZATION","REFUND"]},"PaymentRecurringType":{"title":"Payment Recurring Type","description":"The type of tokenization used for the recurring payment.\n\nOnly applicable in case of `payment_recurring:true`.\n\nPayment Recurring Type:\n  * `STORE` - One-off transactions where a shopper can either store their payment details or pay at a later time using their saved details.\n  * `SUBSCRIPTION` - A recurring transaction made at regular intervals for a product or a service.\n  * `TOP_UP` - Contracts that occur on a non-fixed schedule using stored card details. This includes automatic top-ups when the cardholder's balance drops below a certain amount.","type":"string","readOnly":true,"enum":["STORE","SUBSCRIPTION","TOP_UP"]},"PaymentClass":{"title":"Payment Class","description":"Payment Class:\n  * `SALES` (string) - Payment settles the outstanding sales amount.\n  * `PURCHASE` (string) - Payment settles the outstanding purchase amount.","type":"string","default":"SALES","deprecated":true,"enum":["SALES","PURCHASE"]},"RefundType":{"title":"Refund Type","readOnly":true,"description":"Type of refund.\n<details>\n  <summary>**Refund Types**</summary>\n\n  * `SYSTEM` - Refund is initiated (manually) by the Prio or Partner system. For example, an admin user in the Order Overview.\n  * `AUTO` - Refund is automatically initiated by the Prio system. For example, if a paid reservation has expired (not confirmed within the `reservation_valid_until`) or is being cancelled.\n  * `PSP` - Refund is (manually) initiated by the Payment Service Provider.\n  * `CHARGE_BACK` - Refund is initiated by the Payment Service Provider (Guest) because of a chargeback.\n  * `OTHER` - Refund is initiated due to other reasons.\n  \n</details>\n  \n> Only applicable in case `payment_type:REFUND`.","type":"string","default":"SYSTEM","enum":["SYSTEM","AUTO","PSP","CHARGE_BACK","OTHER"]},"PaymentGatewayDetails":{"title":"Payment Gateway Details","description":"Payment information for each gateway. Only applicable if a payment gateway has been used to process the payment.","type":"object","anyOf":[{"$ref":"#/components/schemas/PaymentGatewayAdyen"},{"$ref":"#/components/schemas/PaymentGatewayCybersource"},{"$ref":"#/components/schemas/PaymentGatewayHyperPay"},{"$ref":"#/components/schemas/PaymentGatewayAddonPayments"},{"$ref":"#/components/schemas/PaymentGatewayHotelBill"},{"$ref":"#/components/schemas/PaymentGatewayMews"},{"$ref":"#/components/schemas/PaymentGatewayNGenius"},{"$ref":"#/components/schemas/PaymentGatewayExternal"}],"discriminator":{"propertyName":"payment_gateway_type","mapping":{"ADYEN":"#/components/schemas/PaymentGatewayAdyen","CYBERSOURCE":"#/components/schemas/PaymentGatewayCybersource","HYPERPAY":"#/components/schemas/PaymentGatewayHyperPay","ADDONPAYMENTS":"#/components/schemas/PaymentGatewayAddonPayments","MEWS":"#/components/schemas/PaymentGatewayMews","NGENIUS":"#/components/schemas/PaymentGatewayNGenius","EXTERNAL":"#/components/schemas/PaymentGatewayExternal"}}},"PaymentGatewayAdyen":{"title":"Payment Gateway Adyen","description":"Details on the payment when using Adyen to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_terminal_id":{"title":"Payment Terminal ID","description":"Unique ID of the selected payment terminal.","type":"string","deprecated":true}}}]},"CommonPaymentGateway":{"title":"Common Payment Gateway","description":"Common payment gateway.","type":"object","discriminator":{"propertyName":"payment_gateway_type","mapping":{"ADYEN":"#/components/schemas/PaymentGatewayAdyen","CYBERSOURCE":"#/components/schemas/PaymentGatewayCybersource","HYPERPAY":"#/components/schemas/PaymentGatewayHyperPay","ADDONPAYMENTS":"#/components/schemas/PaymentGatewayAddonPayments","MEWS":"#/components/schemas/PaymentGatewayMews","NGENIUS":"#/components/schemas/PaymentGatewayNGenius","EXTERNAL":"#/components/schemas/PaymentGatewayExternal"}},"properties":{"payment_merchant_account_name":{"title":"Payment Merchant Account Name","description":"The name / identifier of the party selling goods or services to shoppers via an e-commerce website, a mobile app, on a point of sale, or across all three channels.","type":"string"},"payment_service_provider_reference":{"title":"Payment Service Provider Reference","description":"Unique payment reference set by the payment service provider. Note that every action will result in a different reference. The original reference can be found below.","type":"string","readOnly":true},"payment_service_provider_original_reference":{"title":"Payment Service Provider Original Reference","description":"The PSP reference associated with the original payment prior to the modification (refund, manual capture) request.","type":"string","readOnly":true},"payment_gateway_type":{"title":"Payment Gateway Type","type":"string","description":"Payment service provider used to process payments.\n<details>\n  <summary>**Payment Gateway Types**</summary>\n\n  * `ADYEN` - Adyen ([More info](https://www.adyen.com/))\n  * `CYBERSOURCE` - Cybersource ([More info](https://www.cybersource.com/))\n  * `HYPERPAY` - Hyperpay ([More info](https://www.hyperpay.com/))\n  * `ADDONPAYMENTS` - Addon Payments ([More info](https://www.addonpayments.com/))\n  * `MEWS` - Mews ([More info](https://www.mews.com/))\n  * `NGENIUS` - Network International ([More info](https://www.network.ae/))\n  * `MULTISAFE` - MultiSafePay ([More info](https://www.multisafepay.com/))\n  * `SUMUP` - SumUp Payments ([More info](https://sumup.com/))\n  * `IZETTLE` - iZettle ([More info](https://www.izettle.com/))\n  * `STRIPE` - Stripe ([More info](https://stripe.com/))\n  * `WORLDPAY` - WorldPay ([More info](https://online.worldpay.com/))\n  * `GOOGLE` - Google Pay ([More info](https://developers.google.com/pay/api))\n  * `PAYONEER` - Payoneer ([More info](https://www.payoneer.com/))\n  * `SMARTPAY` - Smart Pay ([More info](https://www.bankmuscat.com/en/Pages/default.aspx))\n  * `MOKA` - Moka ([More info](https://www.mokapos.com/en))\n  * `EXTERNAL` - The payment is settled externally.\n  * `OTHER` - Payment provider not listed above.\n  * `NONE` - No payment provider is used.\n  \n</details>\n  \n> Used to aid in serialization, deserialization, and validation.\n"},"payment_gateway_additional_values":{"title":"Payment Gateway Additional Values","description":"Additional (conditional) values returned by the payment service provider.\n\nThere are many additional data elements that can be returned. The list is long and growing, so we can't mention all of them here.\n\nFor example:\n  * Cardholder Name\n  * Cardnumber (last digits only)\n  * Card Scheme\n  * Shopper IP\n  * Card Issuer Country\n  * Card Issuer Name\n  * Fraudscore\n  * Transaction Type\n  * Payment Status\n  * Username","type":"object","additionalProperties":{"type":"string"}}},"required":["payment_merchant_account_name","payment_service_provider_reference","payment_gateway_type"]},"PaymentGatewayCybersource":{"title":"Payment Gateway Cybersource","description":"Payment gateway cybersource.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_auth_code":{"title":"Payment Auth Code","description":"Payment auth code.","type":"string","writeOnly":true}},"required":["payment_auth_code"]}]},"PaymentGatewayHyperPay":{"title":"Payment Gateway HyperPay","description":"Payment gateway hyperpay.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"PaymentGatewayAddonPayments":{"title":"Payment Gateway Addon Payments","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_auth_code":{"title":"Payment Auth Code","description":"Payment auth code.","type":"string","writeOnly":true}}}]},"PaymentGatewayHotelBill":{"title":"Payment Gateway Hotel Bill","description":"Payment gateway hotel bill.","type":"object","deprecated":true,"allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_hotel_id":{"title":"Payment Hotel ID","description":"Payment hotel ID.","type":"string"},"payment_hotel_guest_name":{"title":"Payment Hotel Guest Name","description":"Payment hotel guest name.","type":"string"},"payment_hotel_room_number":{"title":"Payment Hotel Room Number","description":"Payment hotel room number.","type":"string"}},"required":["payment_hotel_id","payment_hotel_guest_name","payment_hotel_room_number"]}]},"PaymentGatewayMews":{"title":"Payment Gateway Mews","description":"Details on the payment when using MEWS to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","required":["payment_customer_id"],"properties":{"payment_customer_id":{"title":"Payment Customer ID","description":"Unique identifier of the MEWS customer. Retrieved via the [MEWS Customers API](https://mews-systems.gitbook.io/connector-api/operations/customers).","type":"string"}}}]},"PaymentGatewayNGenius":{"title":"Payment Gateway N-Genius","description":"Details on the payment when using N-Genius to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"PaymentGatewayExternal":{"title":"Payment Gateway External","description":"Details on the payment when using an external Payment Gateway or using a physical payment method such as cash to settle the Guest Payment.\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"CreditLimit":{"title":"Credit Limit","description":"Credit limit is a functionality to set a selling limit to clients. \n\nYou are not able to create any additional bookings if your credit limit is reached. To reset your credit limit a payment is required.\n\nNote that if the credit limit details are returned in the reservation or order object that the values are relative to the reservation / order creation time. Subsequent calls will not update the results. ","type":"object","readOnly":true,"deprecated":true,"required":["credit_status","credit_total","credit_blocked","credit_used","credit_remaining","credit_reset","credit_invoice_interval","credit_invoice_settlement"],"properties":{"credit_status":{"title":"Credit Status","type":"string","description":"The credit status.","readOnly":true,"enum":["ACTIVE","SUSPENDED"]},"credit_total":{"title":"Credit Total","type":"string","description":"The total credit limit.","readOnly":true},"credit_deposit":{"title":"Credit Deposit","type":"string","description":"The amount of credit (safety) deposit.","readOnly":true,"deprecated":true},"credit_blocked":{"title":"Credit Blocked","type":"string","description":"The amount of credit blocked / reserved.","readOnly":true},"credit_used":{"title":"Credit Used","type":"string","description":"The amount of credit utilized.","readOnly":true},"credit_remaining":{"title":"Credit Remaining","type":"string","description":"The amount of credit remaining.","readOnly":true},"credit_invoice_interval":{"title":"Credit Invoice Interval","type":"string","description":"Type of credit invoice interval.\n\nInvoice Interval Types:\n   * `MANUAL` (string) - An invoice is generated upon manual user action.\n   * `PER_ORDER` (string) - An invoice is generated for each individual order.\n   * `LIMIT_REACHED` (string) - An invoice is generated once the credit limit is reached (`credit_remaining` equals 0).","readOnly":true,"enum":["MANUAL","PER_ORDER","LIMIT_REACHED"]},"credit_invoice_settlement":{"title":"Credit Invoice Invoice","type":"string","description":"Whether the invoice will be automatically settled / paid.","readOnly":true,"enum":["MANUAL","AUTO"]},"credit_reset":{"title":"Credit Reset","type":"string","format":"date-time","description":"The datetime of the last credit reset.","readOnly":true}}},"ErrorModel":{"title":"Error Model","description":"Error model.","type":"object","readOnly":true,"properties":{"error":{"title":"Error Code","description":"The error code which occured.\n\nAs our API has over 1000+ unique error codes (grouped by HTTP status). We discourage implementing individual errors on your customer front-end interface and suggest a catch-all clause for each HTTP status code instead.\n\nErrors can be shown directly to the customer using the `error_message`, while more specific details explaining the problem will be provided in the `errors` object.\nWe recommend a combination of `error_message` and `error_reference` when communicating with the customer and API support.\n","type":"string","readOnly":true},"error_reference":{"title":"Error Reference","description":"Unique reference linked to this error.\n\nWe recommend showing this reference to the customer to allow for better issue tracking.\n","type":"string","readOnly":true},"error_message":{"title":"Error Message","description":"Customer friendly error message which can be shown on your front-end.\n","type":"string","readOnly":true},"error_description":{"title":"Error Description","description":"Human-readable ASCII [[USASCII]](https://tools.ietf.org/html/rfc6749#ref-USASCII) text providing additional information, used to assist the client developer in understanding the error that occurred.","type":"string","readOnly":true},"error_uri":{"title":"Error URI","description":"A URI identifying a human-readable web page with information about the error, used to provide the client \ndeveloper with additional information about the error.","type":"string","readOnly":true},"errors":{"title":"Error Messages","description":"Specific messages indicating one or more problems.","type":"array","readOnly":true,"items":{"title":"Error Message","description":"Specific message indicating a problem.","type":"string","readOnly":true}}},"required":["error","error_reference"]},"CreateReservationRequest":{"title":"Create Reservation Request","description":"Create reservation request.","type":"object","properties":{"api_version":{"$ref":"#/components/schemas/ApiVersion"},"data":{"$ref":"#/components/schemas/CreateReservationRequestData"}},"required":["api_version","data"]},"CreateReservationRequestData":{"title":"Create Reservation Request Data","description":"Create reservation request data.","type":"object","properties":{"kind":{"$ref":"#/components/schemas/Kind"},"reservation":{"$ref":"#/components/schemas/ReservationModel"}},"required":["kind","reservation"]}},"responses":{"InvalidRequest":{"description":"Invalid Request\n\nThe HyperText Transfer Protocol (HTTP) 400 Bad Request response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"AuthenticationFailed":{"description":"Authentication Failed\n\nThe access token provided is expired, revoked, malformed, or invalid for other reasons. The resource SHOULD respond with the HTTP 401 (Unauthorized) status code.  The client MAY request a new access token and retry the protected resource request.","headers":{"WWW-Authenticate":{"description":"Defines the authentication method that should be used to gain access to a resource.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"Forbidden":{"description":"Forbidden\n\nThe request requires higher privileges than provided by the access token. The resource server SHOULD respond with the HTTP 403 (Forbidden) status code and MAY include the `scope` attribute with the scope necessary to access the protected resource.","headers":{"WWW-Authenticate":{"description":"Defines the authentication method that should be used to gain access to a resource.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"MethodNotAllowed":{"description":"Method Not Allowed\n\nThe HyperText Transfer Protocol (HTTP) 405 Method Not Allowed response status code indicates that the request method is known by the server but is not supported by the target resource.\n\nA request method is not supported for the requested\n      resource; for example, a GET request on a form that\n      requires data to be presented via POST, or a PUT request\n      on a read-only resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"NotAcceptable":{"description":"Not Acceptable\n\nThe HyperText Transfer Protocol (HTTP) 406 Not Acceptable client error response code indicates that the server cannot produce a response matching the list of acceptable values defined in the request's proactive content negotiation headers, and that the server is unwilling to supply a default representation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"Conflict":{"description":"Conflict\n\nThe HTTP 409 Conflict response status code indicates a request conflict with current state of the server.\n\nConflicts are most likely to occur in response to a PUT request. For example, you may get a 409 response when trying to pay an order which is already cancelled on the server, resulting in a version control conflict.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"UnprocessableEntity":{"description":"Unprocessable Entity\n\nThe HyperText Transfer Protocol (HTTP) 422 Unprocessable Entity response status code indicates that the server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"LimitReached":{"description":"Too Many Requests\n\nThe HTTP 429 Too Many Requests response status code indicates the user has sent too many requests in a given amount of time (\"rate limiting\").","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"InternalServerError":{"description":"Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error response code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"NotImplemented":{"description":"Not Implemented\n\nThe HyperText Transfer Protocol (HTTP) 501 Not Implemented server error response code means that the server does not support the functionality required to fulfill the request.\n\nThe server either does not recognize the request method, or it lacks the ability to fulfil the request. Usually this implies future availability (e.g., a new feature of a web-service API).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"BadGateway":{"description":"Bad Gateway\n\nThe HyperText Transfer Protocol (HTTP) 502 Bad Gateway server error response code indicates that the server, while acting as a gateway or proxy, received an invalid response from the upstream server.\n\nThe HTTP 502 Bad Gateway error is exclusively returned in case of problems during communication with the supplier or third-party system. ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"ServiceUnavailable":{"description":"Service Unavailable\n\nThe HyperText Transfer Protocol (HTTP) 503 Service Unavailable server error response code indicates that the server is not ready to handle the request.\n\nThe HTTP 503 Service Unavailable error is exclusively returned in case of problems during internal communication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"GatewayTimeout":{"description":"Gateway Timeout\n\nThe HyperText Transfer Protocol (HTTP) 504 Gateway Timeout server error response code indicates that the server, while acting as a gateway or proxy, did not get a response in time from the upstream server that it needed in order to complete the request.\n\nThe HTTP 504 Gateway Timeout error is exclusively returned in case of problems during communication with the supplier or third-party system. ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}}}},"paths":{"/reservations":{"post":{"description":"This API is called to reserve one or multiple product(s).\n* This endpoint can also be requested for products without managed capacity.\n* This endpoint should be called only once per order. \n  Followup request such as amending the cart should be done using the 'Update Reservation` endpoint.","summary":"Create Reservation / Create Cart","tags":["Reservations / Cart"],"operationId":"createReservation","responses":{"201":{"description":"Reservation Created","headers":{"Cache-Control":{"$ref":"#/components/headers/Cache-Control"},"Last-Modified":{"$ref":"#/components/headers/Last-Modified"},"Content-Language":{"$ref":"#/components/headers/Content-Language"},"Content-Length":{"$ref":"#/components/headers/Content-Length"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/Access-Control-Allow-Methods"},"Content-Security-Policy":{"$ref":"#/components/headers/Content-Security-Policy"},"X-XSS-Protection":{"$ref":"#/components/headers/X-XSS-Protection"},"X-Content-Type-Options":{"$ref":"#/components/headers/X-Content-Type-Options"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Origin":{"$ref":"#/components/headers/Origin"}},"links":{"GetReservationByReference":{"$ref":"#/components/links/GetReservationByReference"},"DeleteBookingReservationByReference":{"$ref":"#/components/links/DeleteBookingReservationByReference"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationDetailResponse"}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/AuthenticationFailed"},"403":{"$ref":"#/components/responses/Forbidden"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/Conflict"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"429":{"$ref":"#/components/responses/LimitReached"},"500":{"$ref":"#/components/responses/InternalServerError"},"501":{"$ref":"#/components/responses/NotImplemented"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"requestBody":{"description":"Create Reservation Request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReservationRequest"}}},"required":true}}}}}
````

## Reservation Details / Cart Details

> This API is called to get reservation details and status.\
> \> You are still able to retrieve the cart details for expired reservations up to 10 days.

````json
{"openapi":"3.0.0","info":{"title":"Distributor API Specification V3.8","version":"3.8.0"},"tags":[{"name":"Reservations / Cart","description":"Reserving a product is only mandatory in case the product has managed capacity. Although we also recommend to implement it in the following cases:\n- When holding customer products inside a shoppingcart. \n- Lock a slot while waiting for a confirmed payment.\n- High demand / low availability tickets (concert/events).\n- Adding promocodes to an order.\n- Managing combi- and cart-discounts.\n- Cross-client order process.\n\nReservations can be confirmed by passing the `reservation_reference` to the Create Order API. One or more products can be reserved at once. We highly recommend implementing the Cart flow for maximum functionality. \n"}],"servers":[{"url":"https://{environment}.prioticket.com/{version}/distributor","description":"Prio environments.","variables":{"environment":{"description":"* `distributor-api` - Production server; used for real transactions.\n\n* `sandbox-distributor-api` - Sandbox server.\n\n* `staging-distributor-api` - Pre-Production server; used for testing (UAT), verification, demo and certification.\n\n* `internal-distributor-api` - Internal server; reserved for internal use.\n","default":"staging-distributor-api","enum":["distributor-api","sandbox-distributor-api","staging-distributor-api","internal-distributor-api"]},"version":{"description":"Api version.","default":"v3.8","enum":["v3.8"]}}}],"security":[{"OAuth2":["https://www.prioticketapis.com/auth/distributor/reservation"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","description":"OAuth2 implementation.","flows":{"clientCredentials":{"tokenUrl":"https://sandbox-distributor-api.prioticket.com/v3.8/distributor/oauth2/token","scopes":{"https://www.prioticketapis.com/auth/distributor.products.readonly":"Grants access to products.","https://www.prioticketapis.com/auth/distributor.reservations":"Grants access to reservations.","https://www.prioticketapis.com/auth/distributor.bookings":"Grants access to bookings.","https://www.prioticketapis.com/auth/distributor.bookings.details":"Grants access to booking details.","https://www.prioticketapis.com/auth/distributor/reporting":"Grants access to reporting."}}}}},"parameters":{"If-Modified-Since":{"in":"header","name":"If-Modified-Since","description":"[CACHE] The `If-Modified-Since` request HTTP header makes the request conditional: the server will send back the requested resource, with a 200 status, only if it has been modified after the given date. \n\nIf the resource has not been modified since, the response will be a 304 without any body; the `Last-Modified` response header of a previous request will contain the date of last modification.\n> Note that if a single resource has changed, all records matching your request will be returned, not just those changed after the given date. This provides you with an efficient caching method.","schema":{"title":"If-Modified-Since","type":"string"}}},"headers":{"Cache-Control":{"description":"Specifies the maximum amount of time a resource will be considered fresh. Contrary to Expires, this directive is relative to the time of the request.","schema":{"type":"string"}},"Last-Modified":{"description":"The Last-Modified response HTTP header contains the date and time at which the origin server believes the resource was last modified.","schema":{"type":"string"}},"Content-Language":{"description":"The Content-Language entity header is used to describe the language(s) intended for the audience, so that it allows a user to differentiate according to the users' own preferred language.","schema":{"type":"string"}},"Content-Length":{"description":"The Content-Length entity header indicates the size of the entity-body, in bytes, sent to the recipient.","schema":{"type":"string"}},"Access-Control-Allow-Methods":{"description":"The Access-Control-Allow-Methods response header specifies the method or methods allowed when accessing the resource in response to a preflight request.","schema":{"type":"string"}},"Content-Security-Policy":{"description":"Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks.","schema":{"type":"string"}},"X-XSS-Protection":{"description":"The HTTP X-XSS-Protection response header is a feature of Internet Explorer, Chrome and Safari that stops pages from loading when they detect reflected cross-site scripting (XSS) attacks.","schema":{"type":"string"}},"X-Content-Type-Options":{"description":"The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised in the Content-Type headers should not be changed and be followed.","schema":{"type":"string"}},"X-RateLimit-Limit":{"deprecated":true,"description":"Request limit per hour.","schema":{"type":"integer","deprecated":true}},"X-RateLimit-Remaining":{"description":"The number of requests left for the time window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"The UTC date/time at which the current rate limit window resets.","schema":{"type":"string"}},"Origin":{"description":"The Origin request header indicates where a fetch originates from.","schema":{"type":"string","format":"URI"}}},"schemas":{"ReservationDetailResponse":{"title":"Reservation Detail Response","description":"Reservation detail Response.","type":"object","properties":{"api_version":{"$ref":"#/components/schemas/ApiVersion"},"data":{"$ref":"#/components/schemas/ReservationDetailData"}},"required":["api_version","data"]},"ApiVersion":{"title":"API Version","description":"Represents the version of the service API that's served in the response.","type":"string","readOnly":true},"ReservationDetailData":{"title":"Reservation Detail Data","description":"Reservation detail data.","type":"object","properties":{"kind":{"$ref":"#/components/schemas/Kind"},"reservation":{"$ref":"#/components/schemas/ReservationModel"}},"required":["kind","reservation"]},"Kind":{"title":"Kind","description":"The kind property serves as a guide to what type of information this particular object stores.","type":"string","readOnly":true,"enum":["location","route","category","product","currency","tax","addon","availability","stock","reservation","order","promocode","promo","webhook","notification","voucher","contact","payment","credit","destination","recommendation"]},"ReservationModel":{"title":"Reservation Model","description":"Reservation model.","type":"object","properties":{"reservation_distributor_id":{"title":"Reservation Distributor ID","description":"Unique identifier for distributor assigned by Prio.","type":"string"},"reservation_distributor_name":{"title":"Reservation Distributor Name","description":"Name of the distributor.","type":"string","readOnly":true},"reservation_partner_id":{"title":"Reservation Partner ID","description":"Unique identifier for partner assigned by Prio.","type":"string"},"reservation_partner_name":{"title":"Reservation Partner Name","description":"Name of the partner.","type":"string","readOnly":true},"reservation_reference":{"title":"Reservation Reference","description":"A unique identifier for the created reservation in the Prio.","type":"string","readOnly":true,"minLength":8},"reservation_external_reference":{"title":"Reservation External Reference","description":"A unique reservation identifier within the external system.","type":"string","maxLength":50,"pattern":"^[\\\\a-zA-Z-_\\/\\d]+$"},"reservation_hold_token":{"title":"Reservation Hold Token","description":"Unique hold token for this reservation (Internal use only). Only a single holdtoken is allowed per reservation.","type":"string"},"reservation_valid_until":{"title":"Reservation Valid Until","description":"The reserved order will stay alive until this time, after that the reservation will be auto-cancelled.\n> Please note that if you are having multiple products in your cart, that the value will be set according to the product with the earliest expiration time. In this case ONLY this specific product will be auto-cancelled. To view your updated reservation you could call the 'Cart Details' endpoint.\n\n> Warning; Prio will simply confirm your pending reservation, even when products have been auto-cancelled in between. If this value is not checked by the reserving party, unexpected results could occur.","type":"string","format":"date-time","readOnly":true},"reservation_details":{"title":"Reservation Details","description":"Contains one or more bookings.","type":"array","items":{"$ref":"#/components/schemas/ReservationDetail"}},"reservation_contacts":{"title":"Reservation Contacts","description":"Contacts linked to this reservation / order. If provided, these values will override the `order_contacts` object during the Confirm Order step.","type":"array","items":{"$ref":"#/components/schemas/ContactDetails"}},"reservation_checkout_fields":{"title":"Reservation Checkout Fields","description":"Mandatory fields during checkout.","type":"array","items":{"$ref":"#/components/schemas/CheckoutField"}},"reservation_promocodes":{"title":"Reservation Promocodes","description":"The promocodes applied to this reservation.","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/AppliedPromocode"}},"reservation_pricing":{"$ref":"#/components/schemas/Pricing"},"reservation_payments":{"title":"Reservation Payments","description":"Details on the payments linked to this reservation. \n\nA reservation can have multiple payment records in case of installments, split payments, refunds and additional charges. Every action will result in a new record so all history is kept.\n\nPayment records are always returned in a descending order based on the payment date.\nTherefore the first entry in the array can be considered as the last payment and thus the `payment_total` (running sum) as the actual total amount paid and the `payment_status ` as the latest payment status for this reservation.","type":"array","items":{"$ref":"#/components/schemas/PaymentDetails"}},"reservation_credit":{"$ref":"#/components/schemas/CreditLimit"},"reservation_custom_fields":{"title":"Reservation Custom Fields","description":"Freeform entry of any key-value pair.","type":"array","items":{"$ref":"#/components/schemas/CustomField"}},"reservation_created":{"title":"Reservation Created","description":"Date and time of reservation creation.","type":"string","format":"date-time","readOnly":true},"reservation_created_name":{"title":"Reservation Created Name","description":"Cashier name / User name who created the reservation.","type":"string","readOnly":true},"reservation_created_email":{"title":"Reservation Created Email","description":"Cashier email / User email who created the reservation.","type":"string","format":"email","readOnly":true},"reservation_modified":{"title":"Reservation Modified","description":"Date and time of reservation update.","type":"string","format":"date-time","readOnly":true}},"required":["reservation_distributor_id","reservation_distributor_name","reservation_reference","reservation_external_reference","reservation_valid_until","reservation_pricing"]},"ReservationDetail":{"title":"Reservation Detail","description":"Details on a booking inside a reservation.","allOf":[{"$ref":"#/components/schemas/ProductBookingModel"},{"type":"object","required":["product_type_details","booking_reservation_reference","booking_reservation_valid_until"],"properties":{"booking_reservation_reference":{"title":"Booking Reservation Reference","type":"string","description":"Unique identifier for this booking within the current cart. To update this booking you should pass the same value in the next request."},"booking_reservation_valid_until":{"title":"Booking Reservation Valid Until","type":"string","format":"date-time","readOnly":true,"description":"The reserved booking will stay alive until this time, after that the booking will be auto-cancelled.\n> In this case ONLY this specific product will be auto-cancelled. To view your updated reservation you could call the 'Cart Details' endpoint.\n\n> Our system will try to reset the `booking_reservation_valid_until` every time the Update Cart endpoint is called. This will not work for most third-party products. Please keep an eye on the value `booking_reservation_valid_until` to make sure your cart does not expire."},"product_type_details":{"title":"Product Type Booking Details","description":"A list specifying the booking quantity per product type.","type":"array","items":{"$ref":"#/components/schemas/BookingItemWithPricing"}}}}]},"ProductBookingModel":{"title":"Product Booking Model","description":"Product booking model.","type":"object","additionalProperties":false,"properties":{"booking_external_reference":{"title":"Booking External Reference","description":"A unique booking identifier within the external system.","type":"string"},"booking_status":{"$ref":"#/components/schemas/BookingStatusTypes"},"booking_version":{"title":"Booking Version","description":"Booking version number.","type":"integer","readOnly":true,"default":1,"minimum":1,"multipleOf":1},"booking_voucher_released":{"title":"Booking Voucher Released","description":"Whether the vouchers of this booking are available / released. Voucher allocation can be delayed based on the voucher release requirements.","type":"boolean","readOnly":true},"booking_travel_date":{"title":"Booking Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.\nIf unset and availability is applicable, `booking_travel_date` will be returned as `availability_from_date_time` in the response.","type":"string","format":"date-time"},"booking_valid_until":{"title":"Booking Valid Until","description":"The booking will be valid until this time, after that the booking will be expired if not redeemed.\nMainly applicable to open products.","type":"string","format":"date-time","readOnly":true},"booking_invoice_status":{"$ref":"#/components/schemas/InvoiceStatus"},"booking_language":{"title":"Booking Language","description":"Language codes for the available languages of the product, e.g. Live Guides are available in English and Spanish languages. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.","type":"string","default":"en"},"booking_addon_reference":{"title":"Booking Addon Reference","description":"When booking an addon a reference to the original booking is required. \n\nPurchasing an addon requires a booking record for the main product and thus a booking reference for another booking within the same reservation or previously created order should be provided.\n\nIf you do not sent this parameter, it will not be be considered as an addon and registered as an individual sale instead.","type":"string"},"booking_pricing":{"$ref":"#/components/schemas/Pricing"},"booking_notes":{"title":"Booking Notes","description":"Booking notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"booking_customer_url":{"title":"Booking Customer URL","description":"This link that can be attached and communicated towards the end-consumer and allows for booking amendment.","type":"string","format":"URI","readOnly":true},"booking_voucher_url":{"title":"Booking Voucher URL","description":"Voucher(s) download URL.","type":"string","format":"URI","readOnly":true},"booking_created":{"title":"Booking Created","description":"Date and time of booking creation.","type":"string","format":"date-time","readOnly":true},"booking_modified":{"title":"Booking Modified","description":"Date and time of booking update.","type":"string","format":"date-time","readOnly":true},"booking_confirmed":{"title":"Booking Confirmed","description":"Date and time of booking confirmation.","type":"string","format":"date-time","readOnly":true},"booking_cancelled":{"title":"Booking Cancellation","description":"Date and time of booking cancellation.","type":"string","format":"date-time","readOnly":true},"booking_cancellation_reason":{"title":"Booking Cancellation Reason","description":"Reason for booking cancellation.","type":"string","readOnly":true},"product_id":{"title":"Product ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_relation_id":{"title":"Product Relation ID","description":"When products are booked as part of a cluster or bundle the main product id should be defined to determine the relationship.\n\nPurchasing a cluster or bundle requires a reference to the main product (shell). If not provided, an error will be returned.\n\nUnlike addons, when booking a bundle or cluster, only the sub-product is required and therefore there is no need to link it with a seperate (main) booking.\n\nIf you do not sent this parameter, and the sub-product is eligible for individual sale as well, it will be booked as such instead.","type":"string"},"product_pickup_point_id":{"title":"Product Pickup Point ID","description":"Mandatory if `product_pickup_point:MANDATORY` in product details.","type":"string"},"product_pickup_point":{"$ref":"#/components/schemas/PickupPoint"},"product_availability_id":{"title":"Product Availability ID","description":"The unique ID for the timeslot (`availability_id`) or specific availability spot (`availability_spot_id`) if `product_availability_assigned:true`. Only mandatory if `product_availability:true`.","type":"string"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_capacity_id":{"title":"Availability Slot Capacity ID","description":"Availability group / capacity identifier.","type":"string","readOnly":true},"product_availability_capacity_shared_id":{"title":"Availability Slot Shared Capacity ID","description":"Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.","type":"string","readOnly":true},"product_title":{"title":"Product Title","description":"The title of the product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for the supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_supplier_admin_id":{"title":"Product Supplier Admin ID","description":"Unique identifier for the supplier admin.","type":"string","readOnly":true},"product_supplier_admin_name":{"title":"Product Supplier Admin Name","description":"Name of the supplier admin.","type":"string","readOnly":true},"product_market_admin_id":{"title":"Product Market Admin ID","description":"Unique identifier for the market admin.","type":"string","readOnly":true},"product_market_admin_name":{"title":"Product Market Admin Name","description":"Name of the market admin.","type":"string","readOnly":true},"product_source_id":{"title":"Product Source ID","type":"string","description":"Unique ID of the product source.","readOnly":true},"product_source_name":{"title":"Product Source Name","type":"string","description":"Name of the supplier reservation system from which this product is sourced.","readOnly":true},"product_entry_notes":{"title":"Product Entry Notes","description":"Product entry information. (Know before you go).\nThe user-visible list of important notes, use for details such as age-restrictions or other conditions that make this service unsuitable.\n","type":"string","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_class":{"$ref":"#/components/schemas/ProductClass"},"product_currency_code":{"title":"Product Currency Code","description":"Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).","type":"string","readOnly":true},"product_cancellation_allowed":{"title":"Product Cancellation Allowed","type":"boolean","description":"Whether it is allowed to cancel this product / booking. \n\nThis takes into account the current state of the order as well as variables such as `booking_status` and  `product_type_redemption_status`.  \n\nNote that even if a product can be cancelled in this state, cancellation fees and restrictions might still apply and override this value.\nPlease check `product_cancellation_policies` for more details.","default":true,"readOnly":true},"product_options":{"title":"Product Booking Options","description":"The product options booked (including individual options from related combi products). \n","type":"array","items":{"$ref":"#/components/schemas/BookingExtraOptions"}},"product_combi_details":{"title":"Product Combi Details","description":"In case the booked product is the main combi-product (`product_class:COMBI`), this field should be populated for each and every listed sub-product inside `product_combi_details`.\nAll sub-product will inherited the missing details such as `product_type_details` from the parent.","type":"array","items":{"$ref":"#/components/schemas/ProductSubDetail"}},"product_bundle_details":{"title":"Product Bundle Details","description":"In case the booked product is the main bundle-product (`product_class:BUNDLE`), this field should be populated for each and every listed sub-product inside `product_bundle_details`.\nAll sub-product will inherited the missing details such as `product_type_details` from the parent.","type":"array","items":{"$ref":"#/components/schemas/ProductSubDetail"}},"product_addon_details":{"title":"Product Addon Details","description":"In case addons are booked for this product, all related addon booking details will be returned.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ProductAddonDetail"}}},"required":["product_id","product_title","product_supplier_id","product_supplier_name","product_market_admin_id","product_market_admin_name","product_type_details","booking_status","booking_created","booking_modified","booking_external_reference","product_admission_type","product_currency_code","product_cancellation_allowed"]},"BookingStatusTypes":{"title":"Booking Status Types","description":"Status of the booking.","type":"string","readOnly":true,"enum":["BOOKING_RESERVED","BOOKING_RESERVATION_CANCELLED","BOOKING_RESERVATION_EXPIRED","BOOKING_CONFIRMED","BOOKING_UPDATED","BOOKING_CANCELLED","BOOKING_PENDING_SUPPLIER","BOOKING_PENDING_GUEST","BOOKING_PENDING_DISTRIBUTOR","BOOKING_FAILED","BOOKING_PROCESSING","BOOKING_PROCESSING_CONFIRMATION","BOOKING_PROCESSING_CANCELLATION"]},"InvoiceStatus":{"title":"Invoice Status","description":"Status of the invoice.","type":"string","deprecated":true,"readOnly":true,"enum":["INVOICED","INVOICE_APPROVED","INVOICE_PAID","INVOICE_CANCELLED","NOT_INVOICED"]},"Pricing":{"title":"Price Breakdown","description":"The calculated price based on the selected products. \n\nWe highly recommend implementing a cross-check before confirming the order with your own calculated prices to prevent mismatches.","type":"object","properties":{"price_type":{"title":"Price Type","description":"Price breakdown on either purchase or sales and including or excluding tax.","deprecated":true,"type":"string","readOnly":true,"enum":["PURCHASE","SALES"]},"price_subtotal":{"title":"Price Sub Total","description":"Sum of `product_type_list_price` for all `product_types` including extra options, without promocodes, price variations and additional fees (`fee_included:true`).","type":"string","readOnly":true},"price_variations":{"title":"Price Variations","description":"All applicable price variations (`product_quantity_pricing`, `product_daily_pricing`, `product_dynamic_pricing` and more).\n\nSome variations are set automatically based on your request and the selected products, such as quantity and dynamic pricing, whereas other variations can be set manually (e.g cart and partner discount).","type":"array","items":{"$ref":"#/components/schemas/PriceVariations"}},"price_promocodes":{"title":"Price Promocodes","description":"Applied promocodes pricing. \n\nOnly applicable in case of `price_type:SALES_GROSS/SALES_NET`.","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/PromoCodePricing"}},"price_taxes":{"title":"Price Taxes","description":"Product tax breakdown. \n\nAlready included in the price breakdown in case `price_type:PURCHASE_GROSS/SALES_GROSS`, otherwise excluded. Taxes on fees are listed separately in `price_fees`.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ProductTax"}},"price_fees":{"title":"Price Fees","description":"List of additional fees. \n\nAdditional fees (`fee_included:true`) should be included in the `price_total`. \n\nNote that some fees are only visible to certain users.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/Fee"}},"price_total":{"title":"Total Sales Price","description":"The total sales / purchase price including all discounts, surcharges and fees above.","type":"string","readOnly":true}},"required":["price_type","price_subtotal","price_total"]},"PriceVariations":{"title":"Price Variation","description":"Variation which is applicable on the list price.","type":"object","properties":{"variation_label":{"title":"Variation Label","description":"Label / Explanation for this variation.","type":"string"},"variation_amount":{"title":"Variation Amount","description":"The amount which should be added / substracted to the `price_subtotal`. This can be a negative value (discount) or positive value (surcharge).","type":"string"},"variation_type":{"title":"Variation Type","type":"string","description":"Type of variation.\n\nOnly `CART_DISCOUNT_*` and `PARTNER_DISCOUNT` can be set in the request, other variations will be automatically added based on your order and returned on every response. If you sent other variations in your request, they will be ignored.\n<details>\n  <summary>**Variation Types**</summary>\n\n * `PRODUCT_DYNAMIC` - In case of `product_dynamic_pricing:true` the price variation based on availability will be shown here.\n * `PRODUCT_DAILY` - In case of `product_daily_pricing:true` the price variation based on the day will be shown here.\n * `PRODUCT_QUANTITY` - In case of `product_quantity_pricing:true` the price variation based on the quantity will be shown here.\n * `PRODUCT_DISCOUNT` - In case a `product_type_discount` is set, the price variation will be shown here.\n * `PRODUCT_MARKUP` - TBA.\n * `PRODUCT_BUNDLE` - TBA.\n * `PRODUCT_COMBI_DISCOUNT` - Combi discount.\n * `PARTNER_DISCOUNT` - In case of partner sales, the guest discount or partner discount / commission can be set by the cashier.\n * `CART_DISCOUNT_FIXED` - Fixed cart discount set by the cashier. \n \n    This discount is pre-configured and must exist in our system prior to making the booking.\n * `CART_DISCOUNT_CUSTOM` - Custom cart discount set by the cashier. \n \n    This discount is dynamic, does not have to exist in our system and can be set to any allowed value.\n * `PRODUCT_CAMPAIGN` - Promo campaign.\n * `AMENDMENT_DISCOUNT`\n * `AMENDMENT_FEE`\n * `OTHER` - Any variation not matching the types above.\n \n</details>\n","enum":["PRODUCT_DYNAMIC","PRODUCT_DAILY","PRODUCT_QUANTITY","PRODUCT_DISCOUNT","PRODUCT_MARKUP","PRODUCT_BUNDLE","PRODUCT_CAMPAIGN","PRODUCT_COMBI_DISCOUNT","PARTNER_DISCOUNT","CART_DISCOUNT_FIXED","CART_DISCOUNT_CUSTOM","AMENDMENT_DISCOUNT","AMENDMENT_FEE","OTHER"]}},"required":["variation_amount","variation_type"]},"PromoCodePricing":{"title":"Promocode Pricing","description":"Promocode pricing.","type":"object","readOnly":true,"properties":{"promo_code":{"title":"Promocode","description":"The promocode.","type":"string"},"promo_amount":{"title":"Promo Amount","description":"The promo amount.","type":"string"}},"required":["promo_code","promo_amount"]},"ProductTax":{"title":"Product Tax","description":"Applied tax.","type":"object","readOnly":true,"required":["tax_id","tax_name","tax_amount"],"properties":{"tax_id":{"title":"Tax ID","type":"string","description":"Unique identifier of this tax configuration.","readOnly":true},"tax_name":{"title":"Tax Name","description":"Name of the tax.","type":"string","readOnly":true},"tax_price_type":{"title":"Tax Price Type","description":"Price level for which this tax is applicable.","type":"string","enum":["LIST_PRICE","SALES_PRICE","DISTRIBUTOR_PRICE","RESELLER_PRICE","MARKET_PRICE","SUPPLIER_PRICE"]},"tax_amount":{"title":"Tax Amount","description":"Amount of tax.","type":"string","readOnly":true},"tax_rate":{"title":"Tax Rate","description":"Tax rate (percentage).","type":"string","readOnly":true},"tax_lines":{"$ref":"#/components/schemas/TaxLines"}}},"TaxLines":{"title":"Tax Lines","type":"object","description":"Additional tax lines.","properties":{"tax_lines_id":{"title":"Tax Lines ID","description":"Tax lines ID.","type":"string"},"tax_line_name":{"title":"Tax Line Name","description":"Name of the tax line.","type":"string"},"tax_line_type":{"title":"Tax Line Type","type":"string","description":"Tax abbreviation."},"tax_line_rate":{"title":"Tax Line Rate","type":"string","description":"Tax rate (percentage)."},"tax_line_region":{"title":"Tax Line Region","description":"Country or State of the related tax authority.","type":"string"}}},"Fee":{"title":"Fee","description":"Fee details.","type":"object","readOnly":true,"required":["fee_type","fee_amount","fee_tax_id","fee_tax_amount","fee_included","fee_refundable"],"properties":{"fee_type":{"$ref":"#/components/schemas/FeeType"},"fee_amount":{"title":"Fee Amount","description":"The applicable fee amount, can either be a surcharge or discount.","type":"string","readOnly":true},"fee_percentage":{"title":"Fee Percentage","description":"Fee percentage.","type":"string"},"fee_tax_amount":{"title":"Fee Tax Amount","description":"Amount of tax.","type":"string","readOnly":true},"fee_included":{"title":"Fee Included","description":"Whether this is an additional fee that should be listed separately and included in the `price_total` or is part of a calculation, e.g. margin breakdown (informational only). ","type":"boolean","readOnly":true}}},"FeeType":{"title":"Fee Type","readOnly":true,"description":"Type of fee.\n\nFee Type:\n  * `SERVICE` - The service fee or margin for this transaction or product.\n  * `PARTNER` - The partner fee or margin for this transaction or product.\n  * `DISTRIBUTOR` - The distributor fee or margin for this transaction or product.\n  * `AFFILIATE` - The affiliate fee or margin for this transaction or product.\n  * `RESELLER` - The reseller fee or margin for this transaction or product.\n  * `MARKET_ADMIN` - The market admin fee or margin for this transaction or product.\n  * `PLATFORM` - The platform fee or margin for this transaction or product.\n  * `PAYMENT` - The payment fee for this transaction or product.\n  * `INSURANCE` - The insurance fee for this transaction or product.\n  * `CUSTOM` - Custom fee for this transaction, product or order.","type":"string","enum":["SERVICE","PARTNER","DISTRIBUTOR","AFFILIATE","RESELLER","MARKET_ADMIN","PLATFORM","PAYMENT","INSURANCE","CUSTOM"]},"Note":{"title":"Note","description":"Details on the note.","type":"object","properties":{"note_value":{"title":"Note Value","description":"Note value.","type":"string"},"note_created":{"title":"Note Date","description":"Creation / Modification date of the note.","type":"string","format":"date-time","readOnly":true},"note_recipients":{"title":"Note Recipients","description":"List of accounts that are able to view the note.","type":"array","items":{"title":"Note Recipient","type":"string","description":"Account type of the users receiving / being able to view the note. \n\nFor example when sending a note from the distributor to the supplier, this will indicate the recipient (supplier).\n<details>\n  <summary>**Account Types**</summary>\n  \n  * `GUEST` - Note visible to the guest.\n  \n  * `PARTNER` - Note visible to the partner.\n\n  * `SUPPLIER` - Note visible to the supplier.\n  \n  * `RESELLER` - Note visible to the reseller / supplier admin.\n  \n  * `DISTRIBUTOR` - Note visible to the distributor.\n  \n</details>\n","enum":["GUEST","PARTNER","SUPPLIER","RESELLER","DISTRIBUTOR"]}},"note_creator_account_type":{"title":"Note Creator Account Type","type":"string","description":"Account type of the user who created the note. \n\nFor example when sending a note from the distributor to the supplier, this will indicate the sender (e.g distributor).\n<details>\n  <summary>**Account Types**</summary>\n\n  * `GUEST` - Note created by the guest.\n  \n  * `PARTNER` - Note created by the partner.\n\n  * `SUPPLIER` - Note created by the supplier.\n  \n  * `DISTRIBUTOR` - Note created by the distributor.\n  \n  * `RESELLER` - Note created by the reseller / supplier admin.\n  \n  * `PLATFORM_ADMIN` - Note created by the platform-admin.\n  \n  * `SUPER_ADMIN` - Note created by the super-admin.\n\n</details>\n","enum":["GUEST","PARTNER","SUPPLIER","RESELLER","DISTRIBUTOR"]},"note_creator_user_name":{"title":"Note Creator User Name","type":"string","description":"Name of the user that created this note.","readOnly":true},"note_creator_user_email":{"title":"Note Creator User Email","type":"string","description":"Email of the user that created this note.","readOnly":true},"note_creator_user_role":{"title":"Note Creator User Role","type":"string","description":"Userrole (name) of the user that created this note.","readOnly":true}},"required":["note_value","note_recipients"]},"PickupPoint":{"title":"Pickup Point","description":"Information on a pickup point.","type":"object","properties":{"pickup_point_id":{"title":"Pickup Point ID","description":"Pickup point ID.","type":"string"},"pickup_point_name":{"title":"Pickup Point Name","description":"Pickup point name / label.","type":"string","readOnly":true},"pickup_point_type":{"$ref":"#/components/schemas/PickupPointType"},"pickup_point_description":{"title":"Pickup Point Description","description":"Pickup point description.","type":"string","readOnly":true},"pickup_point_location":{"title":"Pickup Point Location","description":"Reference to the location details.","type":"string","readOnly":true},"pickup_point_time":{"title":"Pickup Point Time","description":"Time of pickup.","type":"string","format":"time"},"pickup_point_times":{"title":"Pickup Point Times","description":"Times available to select for this pickup point.","type":"array","items":{"title":"Pickup Point Time","description":"Time of pickup.","type":"string","format":"time"}},"pickup_point_duration":{"title":"Pickup Point Duration","description":"Duration of the pickup in minutes.","type":"integer","readOnly":true},"pickup_point_availability_dependency":{"title":"Pickup Point Availability Dependency","description":"Dependency on the selected `availability_slot`.\n\nThe selected (`pickup_point_time` + `pickup_point_duration`) is not allowed to exceed the selected `availability_from_date_time` and therefore only a limited amount of `pickup_point_times` should be shown.","type":"boolean","readOnly":true}},"required":["pickup_point_id","pickup_point_name"]},"PickupPointType":{"title":"Pickup Point Type","description":"Type of pickup point.\n\nPickup Point Type:\n  * `FIXED` - Fixed, pre-defined pickup point.\n   \n  * `CUSTOM` - Custom pickup point.","type":"string","enum":["FIXED","CUSTOM"]},"ProductAdmissionType":{"title":"Product Admission Types","type":"string","readOnly":true,"enum":["TIME_PERIOD","TIME_DATE","TIME_POINT","TIME_SLOT","TIME_OPEN"],"description":"<details>\n  <summary>**Product Admission Types**</summary>\n  \n* `TIME_PERIOD` - Customers can arrive at any time between the start (`availability_from_date_time`) and end time (`availability_to_date_time`) of the availability slot. Multiple periods in a single day should be expected.\n  Therefore a date- and timepicker should be shown.\n\n* `TIME_DATE` - Variation on `TIME_PERIOD`, whereas only a single period exists in a day. It is not required to choose between different times within a day, therefore only a datepicker is required.\n  Note that in case the slot includes midnight (two or more days), the day from which the `availability_from_date_time` originated should take precedence.\n\n* `TIME_POINT` - Customers are required to be present at the start time of the availability slot but can leave any time they want.\n* `TIME_OPEN` - Customers can arrive at any time. Availablity is not applicable.\n* `TIME_SLOT` - Customers are required to be present at the start time of the availability slot, and the service is expected to finish at the end time of the slot. </details>\n"},"ProductClass":{"title":"Product Class","type":"string","readOnly":true,"description":"<details>\n  <summary>**Product Classes**</summary>\n  \n  * `STANDARD` - Product types in the standard class are the most common and are supported by almost all systems.\n  \n  * `COMBI` - Product is a combi-product. This product is the main combi product and is not bookable on its own. All of the sub-products linked to this combi should be booked as well. These products are listed inside `product_combi_details`.\n  \n  * `CLUSTER` - Product is a cluster-product. This product is the main cluster product and is not bookable. One of the sub-products linked to this cluster should be booked instead. These products are listed inside `product_cluster_details`.\n  \n  * `MERCHANDISE` - \n  \n  * `BUNDLE` - Product is a bundle-product. This product is the main bundle product and is not bookable on its own. All of the sub-products linked to this bundle should be booked as well. These products are listed inside `product_bundle_details`.\n  \n  * `ADDON` - \n  \n  * `OTHER` - Products in the other/custom class are completely dynamic.\n\n</details>\n","enum":["STANDARD","COMBI","CLUSTER","MERCHANDISE","BUNDLE","ADDON","OTHER"]},"BookingExtraOptions":{"title":"Booking Extra Options","deprecated":true,"description":"The product options booked. In case any of the booked product options are listed as `option_mandatory:true` you are required to fill in this field.\n\nIf you book `product_options` which are priced based on product type (`option_price_type:PRODUCT_TYPE`) then all booked options will return with their actual prices.\n","type":"object","properties":{"option_id":{"title":"Option ID","description":"Option ID.","type":"string"},"option_count_visible":{"title":"Option Count Visible","description":"Whether the selected quantity should be visible in the cart or shown as combined single price.","type":"boolean"},"option_discount_applicable":{"title":"Option Discount Applicable","description":"Whether any cart or promotional discounts apply on this option.","type":"boolean"},"option_values":{"title":"Option Values","description":"Option values.","type":"array","items":{"$ref":"#/components/schemas/BookingExtraOptionDetails"}}},"required":["option_id"]},"BookingExtraOptionDetails":{"title":"Booking Extra Option Details","description":"Booking extra option details.","type":"object","allOf":[{"$ref":"#/components/schemas/ExtraOptionValue"},{"type":"object","properties":{"value_discount_price":{"title":"Value Discount Price","description":"Optionally returned value_discount_price if discount apply on option value.","type":"string","readOnly":true},"value_count":{"title":"Value Count","description":"Value count.","type":"integer","minimum":0,"maximum":500}},"required":["value_count"]}]},"ExtraOptionValue":{"title":"Extra Option Value","description":"Extra option value.","type":"object","properties":{"value_id":{"title":"Value ID","description":"Value ID.","type":"string"},"value_name":{"title":"Value Name","description":"(Translatable) Value name.","type":"string","readOnly":true},"value_price":{"title":"Value Price","description":"The price of this value. In case `option_price_type:PRODUCT_TYPE` then this field will be undefined on `product_options` level.","type":"string","readOnly":true},"value_cost_price":{"title":"Value Cost Price","description":"The cost price of this value.","type":"string","readOnly":true},"value_percentage":{"title":"Value Percentage","description":"Optionally returned if `value_price` is percentage based.","type":"string","readOnly":true},"value_price_tax_id":{"title":"Value Price Tax ID","description":"Tax ID for this product option value. Tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_price_tax_amount":{"title":"Value Price Tax Amount","description":"Amount of tax applied for this product option value. Additional tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_price_tax_rate":{"title":"Value Price Tax Rate","description":"Tax rate applied for this product option value. Additional tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_product_type_id":{"title":"Value Product Type ID","description":"Returned in case this value / option is only applicable to a specific product type (`option_price_type:PRODUCT_TYPE`).","type":"string","readOnly":true}},"required":["value_id"]},"ProductSubDetail":{"title":"Product Sub Detail","description":"Product sub detail.","type":"object","properties":{"product_parent_id":{"title":"Product Parent ID","description":"Unique identifier for the parent product assigned by Prio.","type":"string","readOnly":true},"product_id":{"title":"Product Sub ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_title":{"title":"Product Title","description":"The title of product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_source_id":{"title":"Product Source ID","type":"string","description":"Unique ID of the product source.","readOnly":true},"product_source_name":{"title":"Product Source Name","type":"string","description":"Source of the product. \n\nEither PrioTicket or the name of the other reservation system e.g. CSS.","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_currency_code":{"title":"Product Currency Code","description":"Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).","type":"string","readOnly":true},"product_availability_id":{"title":"Product Combi Availability ID","description":"The unique ID for the availability slot. Only mandatory if `product_availability:true`","type":"string"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_capacity_id":{"title":"Availability Slot Capacity ID","description":"Availability group / capacity identifier.","type":"string","readOnly":true},"product_availability_capacity_shared_id":{"title":"Availability Slot Shared Capacity ID","description":"Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.","type":"string","readOnly":true},"product_type_details":{"title":"Product Type Booking Details","description":"A list specifying the booking quantity per product type. Only returned for bundle products.","type":"array","items":{"$ref":"#/components/schemas/BookingItemWithPricing"}},"booking_travel_date":{"title":"Booking Combi Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.","type":"string","format":"date-time"},"booking_reference":{"title":"Booking Reference","type":"string","description":"Unique reference for this sub-booking.","readOnly":true},"booking_external_reference":{"title":"Booking External Reference","description":"A unique booking identifier within the external system.","type":"string"}},"required":["product_parent_id","product_id","product_title","product_supplier_id","product_supplier_name","product_admission_type","product_currency_code"]},"BookingItemWithPricing":{"title":"Regular Booking Item","description":"Regular booking item.","type":"object","allOf":[{"$ref":"#/components/schemas/BookingItem"},{"type":"object","properties":{"product_type_pricing":{"$ref":"#/components/schemas/Pricing"}}}]},"BookingItem":{"title":"Booking Item","description":"Reference to the specific type / configuration of the product.","type":"object","properties":{"product_type":{"$ref":"#/components/schemas/ProductType"},"product_type_class":{"$ref":"#/components/schemas/ProductTypeClass"},"product_type_id":{"title":"Product Type ID","type":"string","description":"In case of more complex product configurations e.g. multiple ambiguous product types, the preferred option must be specified using the ID."},"product_type_label":{"title":"Product Type Label","description":"(Translatable) The product type label.","type":"string","readOnly":true},"product_type_age_from":{"title":"Product Type Age From","description":"The starting age for age group.","readOnly":true,"type":"integer","multipleOf":1},"product_type_age_to":{"title":"Product Type Age To","description":"The ending age for age group.  If both `product_type_age_from` and `product_type_age_to` are empty no age-restrictions should be shown. If only `product_type_age_to` is empty, then it is advised to show the age-restriction as e.g. \"22+\".\n","type":"integer","readOnly":true,"multipleOf":1},"product_type_count":{"title":"Product Type Count","description":"The quantity being booked for the specified product type.\n\nPlease note that the following structures are deemed semantically the same.\n```\n\"product_type_details\":[\n  {\n     \"product_type_id\":\"13725\",\n     \"product_type_count\":\"2\"\n  }\n]\n\nand\n\n\"product_type_details\":[\n  {                     \n     \"product_type_id\":\"13725\",   \n     \"product_type_count\":1   \n  },\n  {       \n     \"product_type_id\":\"13725\",    \n     \"product_type_count\":1     \n  }\n]\n```\nWe allow this 'alternative format' for 'ease-of-use'. Please note that in the order response we have no other option than to 'split' the product types, otherwise, we would not be able to send multiple codes (single `product_type_code` per pax/piece) in the response.\n","type":"integer","minimum":1,"maximum":500,"multipleOf":1},"product_type_pax":{"title":"Product Type Pax","description":"Number of persons to be counted in the reporting for the selected product type quantity.","type":"integer","readOnly":true,"minimum":0},"product_type_capacity":{"title":"Product Type Capacity","type":"integer","readOnly":true,"minimum":0,"description":"The capacity count to be blocked in the system for the selected availability slot.\n\nFor example:\n\nIf a single table with six seats is booked by two persons, the setup would be as follows:\n\n  ```\n  \"product_type_count\": 1,\n  \"product_type_pax\": 2,\n  \"product_type_capacity\": 6\n  ```\n"},"product_type_spots":{"title":"Product Type Spots","description":"Product type spots.","type":"array","minItems":1,"items":{"$ref":"#/components/schemas/Spot"}},"product_type_code":{"title":"Product Type Code","description":"The product code allocated by Prio to redeem products.","type":"string"}},"required":["product_type_id","product_type","product_type_count","product_type_pax"]},"ProductType":{"title":"Product Type","type":"string","description":"Each product contains product types. These product types can offer aged based ticketing (such as Adult and Child), but also provide a variety of other flexible product variations such as group pricing, business and economy seating or different car configurations.\n\nBecause some products might behave different from others, each product type is categorized within a product class; a group of products that behaves similarly.\n<details>\n  <summary>**Product Types**</summary>\n\n  * Class Standard:\n    \n    Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.\n    \n    Tour and experience providers have the flexibility to vary prices and apply different rules based on the age of their customers. This means they can charge full ticket prices for adults while offering discounted rates for children, or they may have specific requirements such as requiring at least one adult for every group of children booking a tour.\n    \n    During the process of checking prices and proceeding to checkout, customers should be able to select the number of individuals from each available age group for their booking.\n  \n    * `ADULT` - Adult.\n    \n    * `CHILD` - Child.\n    \n    * `SENIOR` - Senior.\n    \n    * `YOUTH` - Youth.\n        \n    * `INFANT` - Infant.\n    \n  * Class Individual:\n  \n    Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.\n    \n    * `PERSON` - Person.\n    \n    * `STUDENT` - Student.\n    \n    * `RESIDENT` - Resident.\n    \n    * `MILITARY` - Military.\n    \n    * `IMPAIRED` - Impaired.\n  \n  * Class Item:\n  \n    Product types in the item class do not refer to actual persons, instead they could, for example, be packages (Regular, Silver, Diamond), objects (Merchandise, private tours), a type of event, class identifier (Economy, Business) and much more.\n  \n    * `ITEM` - Item.\n    \n  * Class Group:\n   \n    Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.\n    \n    * `GROUP` - Group.\n    \n    * `FAMILY` - Family.\n    \n  * Class Custom:\n  \n    Product types in the custom class are completely dynamic and therefore require explicit mapping with external systems. They do not return as `CUSTOM`, instead they can take any form.\n    \n    * `CUSTOM` - Custom.\n    \n</details>\n","enum":["ADULT","CHILD","SENIOR","YOUTH","INFANT","PERSON","STUDENT","RESIDENT","MILITARY","IMPAIRED","ITEM","GROUP","FAMILY","CUSTOM"]},"ProductTypeClass":{"title":"Product Type Class","type":"string","readOnly":true,"description":"<details>\n  <summary>**Product Type Classes**</summary>\n  \n  * `STANDARD` - Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.\n  \n  * `INDIVIDUAL` - Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.\n  \n  * `ITEM` - Product types in the item class do not refer to actual persons, instead they could, for example, be packages (Regular, Silver, Diamond), objects (Merchandise, private tours), a type of event, class identifier (Economy, Business) and much more.\n  \n  * `GROUP` - Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.\n  \n  * `CUSTOM` - Product types in the custom class are completely dynamic and therefore require explicit mapping with external systems. They do not return as CUSTOM, instead they can take any form.\n\n</details>\n","enum":["STANDARD","INDIVIDUAL","ITEM","GROUP","CUSTOM"]},"Spot":{"title":"Spot","type":"object","description":"Information on the selected spot. Only applicable if PrioSeating is being used (`product_availability_assigned:true`).\n","properties":{"spot_name":{"title":"Spot Name","type":"string","description":"Spot name.","readOnly":true},"spot_section":{"title":"Spot Section","type":"string","description":"Name of the section. Only applicable if the product has sections."},"spot_row":{"title":"Spot Row","type":"string","description":"The row the spot resides in."},"spot_number":{"title":"Spot Number","description":"The spot number.","type":"string"}},"required":["spot_state"]},"ProductAddonDetail":{"title":"Product Addon Detail","description":"Product Addon detail.","type":"object","properties":{"product_id":{"title":"Product Sub ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_title":{"title":"Product Title","description":"The title of product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"booking_travel_date":{"title":"Booking Combi Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.","type":"string","format":"date-time"},"booking_order_reference":{"title":"Booking Order Reference","description":"Booking order reference","type":"string"},"booking_reference":{"title":"Booking Reference","description":"A unique booking identifier within the system.","type":"string"},"booking_status":{"$ref":"#/components/schemas/BookingStatusTypes"}},"required":["product_id","product_title","product_supplier_id","product_supplier_name","product_admission_type"]},"ContactDetails":{"title":"Contact Details","description":"Information on the contact.","type":"object","properties":{"contact_uid":{"title":"Contact User Identifier","description":"A unique contact identifier created by Prio. \n\nIn case this field is left blank, a new contact will be created in the system. If you pass an already existing `contact_uid`, those contact details will be  used and linked to the current/future order. In this case all other fields will be ignored.\n> Only applicable for partners using the Contacts Module (Returning guests). For regular transactions this parameter can be safely ignored.","type":"string","format":"uuid"},"contact_external_uid":{"title":"Contact External User Identifier","description":"Unique external identifier of the contact.","type":"string"},"contact_version":{"title":"Contact Version","description":"Contact version; every time the contact details are updated, a new version is registered.","type":"integer","readOnly":true,"default":1,"multipleOf":1},"contact_number":{"title":"Contact Number","description":"Number of the contact.","type":"string","maxLength":50},"contact_type":{"$ref":"#/components/schemas/ContactType"},"contact_title":{"title":"Contact Title","description":"Title prefix of the contact (Mister / Miss / Misses etc).","type":"string"},"contact_name_first":{"title":"Contact First Name","description":"First name of the contact.","type":"string","maxLength":255},"contact_name_last":{"title":"Contact Last Name","description":"Surname of the contact. If you only have the fullname, we recommend sending it as `contact_name_last` and leaving the `contact_name_first` blank.","type":"string","maxLength":255},"contact_email":{"title":"Contact Email","description":"Email address of the contact.","type":"string","format":"email"},"contact_phone":{"title":"Contact Phone","description":"Must be a valid E.164 spec compliant phone number.","type":"string","format":"phone"},"contact_mobile":{"title":"Contact Phone","description":"Must be a valid E.164 spec compliant phone number.","type":"string","format":"phone"},"contact_language":{"title":"Contact Language","type":"string","description":"Language and culture code of the contact preferred language ([ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1))."},"contact_nationality":{"title":"Contact Nationality","description":"Country code of the contact ([ISO-3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)).","type":"string"},"contact_flight_number":{"title":"Contact Flight Number","description":"Contact Flight Number.","type":"string"},"contact_loyalty_number":{"title":"Contact Loyalty Number","description":"Contact Loyalty Number.","type":"string"},"contact_birth_place":{"title":"Contact Birth Place","description":"Place of birth.","type":"string"},"contact_birth_date":{"title":"Contact Birth Date","description":"Date of birth.","type":"string","format":"date"},"contact_passport":{"title":"Contact Passport","description":"Passport details of the contact.","type":"string"},"contact_gender":{"title":"Contact Gender","description":"Gender of the contact.","type":"string","enum":["MALE","FEMALE","OTHER"]},"contact_age":{"title":"Contact Age","description":"Age of the contact.","type":"integer","maximum":150},"contact_room_number":{"title":"Contact Room Number","description":"Contact room number.","type":"string"},"contact_website":{"title":"Contact Website","description":"Contact website.","type":"string","format":"URI"},"contact_company":{"$ref":"#/components/schemas/ContactCompany"},"contact_classification":{"$ref":"#/components/schemas/ContactClassification"},"contact_address":{"$ref":"#/components/schemas/AddressModel"},"contact_notes":{"title":"Contact Notes","description":"Contact notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"contact_custom_fields":{"title":"Contact Custom Fields","description":"Freeform entry of any key-value pair.","type":"array","items":{"$ref":"#/components/schemas/CustomField"}},"contact_created":{"title":"Contact Created","description":"Creation date and time of the contact.","type":"string","format":"date-time","readOnly":true},"contact_modified":{"title":"Contact Modified","description":"Last update date and time of the contact.","type":"string","format":"date-time","readOnly":true}},"required":["contact_created","contact_modified"]},"ContactType":{"title":"Contact Type","description":"Type of contact.\n\nSome supplier systems do not support multiple contacts per orders. In that case we have the following policy:\n1. If set, we sent `contact_type:BOOKER`.\n2. Otherwise, if set, we sent the first `contact_type:CONTACT`.\n3. If both are not set, we sent the first contact in the array.\n\n<details>\n  <summary>**Contact Types**</summary>\n\n* `BOOKER` - Main Booker details (End-consumer). Only a single main booker is recommended. \n  \n  This is the most common type of contact, as it contains information about the person / entity who made the booking.\n  \n  > Any automated emails such as order confirmations will be sent to this contact type. \n\n* `CONTACT` - General, non-specific contact. \n\n  Only use this type if a more specific classification is unknown.\n\n* `GUEST` - Guest / End-consumer / Passenger linked to the booking.\n\n  Defining the guests per booking allows for advanced functionality such as Check-In and passenger management.\n\n* `PARTNER` - Partner details.\n* `STAFF` - General staff.\n* `CASHIER` - Cashier performing the sales.\n* `PAYMENT` - Billing / Financial contact. \n\n  > Payment emails will be sent to this contact type by default.\n\n* `AGENT` - Agent details.\n* `EMERGENCY` - Emergency contact (Guest, host, family member etc.).\n* `GUIDE` - Teacher / Instructor / Guide details.\n* `SUPPLIER` - Supplier details.\n* `VENUE` - Venue details.\n* `HOST` - Host details.\n* `COMPANY` - (Guest) company details.\n* `DELIVERY` - (Guest) Delivery / Shipping contact / address details.\n* `MANAGER` - (UPCOMING) Manager contact.\n* `SUPPORT` - (UPCOMING) Support contact.\n* `INSTRUCTOR` - (UPCOMING) Instructor contact.\n* `OTHER` - Other type of contact, not mentioned above.\n</details>","type":"string","default":"CONTACT","enum":["BOOKER","CONTACT","GUEST","PARTNER","STAFF","CASHIER","PAYMENT","AGENT","EMERGENCY","GUIDE","SUPPLIER","VENUE","HOST","COMPANY","DELIVERY","OTHER"]},"ContactCompany":{"title":"Contact Company","description":"Contact company details.","type":"object","properties":{"company_name":{"title":"Company Name","description":"Company name.","type":"string"},"company_registration_number":{"title":"Company Registration Number","description":"Company registration number.","type":"string"},"company_tax_number":{"title":"Company Tax Number","description":"Company tax number.","type":"string"}}},"ContactClassification":{"title":"Contact Classification","description":"Contact classification.","type":"string","enum":["IMPORTANT","VERY_IMPORTANT","PROBLEMATIC","DISABLED_PERSON","TOP_MANAGEMENT","STAFF","LOYALTY_PROGRAM","MEDIA","FRIEND_OR_FAMILY","RETURNING","PERSONAL","BUSINESS"]},"AddressModel":{"title":"Address Model","type":"object","description":"Address details.","properties":{"id":{"title":"Address ID","type":"string","format":"uuid","deprecated":true,"readOnly":true,"description":"Unique address identifier."},"name":{"title":"Address Name","description":"Name / Label of this address / addressee.","type":"string"},"street":{"title":"Address Street","description":"Address line 1 / Street.","type":"string"},"addition":{"title":"Address Addition","description":"Additional address line 2.","type":"string"},"city":{"title":"Address City","description":"Town / City / Village.","type":"string"},"postal_code":{"title":"Address Postal Code","description":"Address postal code.","type":"string"},"region":{"title":"Address Region","description":"State / Province / Region.","type":"string"},"country":{"title":"Address Country","description":"Address country.","type":"string"},"country_code":{"title":"Address Country Code","description":"Returns country code of the product ( [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2))","type":"string"},"place_id":{"title":"Address Google Place ID","description":"Google Place ID","type":"string"},"latitude":{"title":"Address Latitude","description":"Address latitude.","type":"string"},"longitude":{"title":"Address Longitude","description":"Address longitude.","type":"string"},"notes":{"title":"Address Note","description":"Address note.","type":"string"}}},"CustomField":{"title":"Custom Field","type":"object","description":"Custom Fields allow you to store and list any arbitrary value in the system.\n\nThis metadata are data elements that you create yourself. When you add metadata to your request, they are echoed in the response so that you can connect the transaction to your metadata. For example, to add a shift number and an employee ID to a transaction. You are free to create metadata fields, even encoded, as long as the datatype is a string.","properties":{"custom_field_name":{"title":"Custom Field Name","type":"string","description":"Unique Name / Identifier for this field."},"custom_field_value":{"title":"Custom Field Value","type":"string","description":"Freeform value of this field."},"custom_field_type":{"$ref":"#/components/schemas/CustomFieldType"}}},"CustomFieldType":{"title":"Custom Field Type","type":"string","deprecated":true,"description":"Custom Field Type:\n  * `SYSTEM` - This field is only stored and returned in the API. Only visible to the system.\n  * `USER` - This value is stored and visualized, can be shown in a customized fashion in other modules.","enum":["SYSTEM","USER"]},"CheckoutField":{"title":"Checkout Field","description":"Checkout field shown on the checkout screen.","type":"object","properties":{"checkout_field_id":{"title":"Checkout Field ID","description":"Unique Checkout Field ID.","type":"string"},"checkout_field_title":{"title":"Checkout Field Title","type":"string","readOnly":true},"checkout_field_label":{"title":"Checkout Field Label","type":"string","readOnly":true},"checkout_field_place_holder":{"title":"Checkout Field Placeholder","type":"string","readOnly":true},"checkout_field_help_text":{"title":"Checkout Field Help Text","type":"string","readOnly":true},"checkout_field_account_type":{"title":"Checkout Field Account Type","description":"Whether this field is required by the venue (supplier) or the seller (distributor).","type":"string","readOnly":true,"enum":["SUPPLIER","DISTRIBUTOR"]},"checkout_field_booking_reference":{"title":"Checkout Field Booking Reference","type":"array","items":{"type":"string"}},"checkout_field_restriction":{"title":"Checkout Field Restriction","description":"Whether a field is required, optional or recommended. Mandatory fields must be filled during order checkout, otherwise the order will be rejected.","type":"string","readOnly":true,"enum":["REQUIRED","OPTIONAL","RECOMMENDED"]},"checkout_field_level":{"title":"Checkout Field Level","description":"Whether answers should be provided once or for each participant.","type":"string","readOnly":true,"enum":["PRODUCT","PARTICIPANT"]},"checkout_field_unit":{"title":"Checkout Field Unit","type":"string"},"checkout_field_input_type":{"title":"Checkout Field Input Type","type":"string","readOnly":true,"description":"* `SINGLE` - Single option value is available.\n* `RADIO` - Customer can select only one out of multiple option values.\n* `CHECKBOX` - Customers can select one or more option values.\n* `SHORT_ANSWER` - A one-line input field for text. (UPCOMING)\n* `PARAGRAPH` - A multi-line input field for text. (UPCOMING)\n* `DROPDOWN` - A selection from a dropdown. (UPCOMING)\n* `BOOLEAN` - A yes/no button. (UPCOMING)\n* `PHONE` - A phonenumber. (UPCOMING)\n* `EMAIL` - An email. (UPCOMING)\n* `DATE` - A date. (UPCOMING)\n* `TIME` - A time. (UPCOMING)\n* `DATETIME` - A date and time. (UPCOMING)\n* `NUMBER` - A number. (UPCOMING)\n* `LOCATION_SEARCH` - A search widget that supports finding matched location given user input from provided location list. (UPCOMING)\n* `CONSENT` - A consent section that requires opt-in.\n","enum":["SINGLE","RADIO","CHECKBOX","SHORT_ANSWER","PARAGRAPH","DROPDOWN","BOOLEAN","PHONE","EMAIL","DATE","TIME","DATETIME","NUMBER","LOCATION_SEARCH","CONSENT"]},"checkout_field_type":{"title":"Checkout Type","description":"Which field the restriction applies on.","type":"string","readOnly":true,"enum":["contact_title","contact_name_first","contact_name_last","contact_email","contact_confirm_email","contact_phone","contact_mobile","contact_language","contact_nationality","contact_country_residence","contact_birth_place","contact_birth_date","contact_passport","contact_passport_expiry","contact_age","contact_address","contact_address_1","contact_address_2","contact_address_postal_code","contact_address_city","contact_address_state","contact_address_country","contact_height","contact_weight","contact_type_company","contact_type_guest","contact_type_booker","contact_company_name","contact_company_address_1","contact_company_address_2","contact_company_postal_code","contact_company_city","contact_company_state","contact_company_country","SYSTEM","CUSTOM"]},"checkout_field_options":{"title":"Checkout Field Options","description":"In case of `checkout_field_input_type:RADIO/CHECKBOX/DROPDOWN`, one or more options should be selected.\n","type":"array","items":{"$ref":"#/components/schemas/CheckoutFieldOption"}},"checkout_field_values":{"title":"Checkout Field Values","description":"Checkout field input/selected values.","type":"array","items":{"$ref":"#/components/schemas/CheckoutFieldValue"}},"checkout_field_created":{"title":"Checkout Field Created","description":"Checkout field creation datetime.","type":"string","readOnly":true,"format":"date-time"}}},"CheckoutFieldOption":{"title":"Checkout Field Option","description":"Checkout field option.","type":"string"},"CheckoutFieldValue":{"title":"Checkout Field Value","description":"Checkout field value/answer.","type":"object","properties":{"checkout_field_value_product_type":{"title":"Checkout Field Value Product Type","description":"Restricts the checkout field selection to a specific product type.","type":"string"},"checkout_field_value":{"title":"Checkout Field Value","description":"Selected / Input value(s) of checkout field. Should be \"true\"\" in case of Boolean type, can be array in case of multi-select.","type":"array","items":{"title":"Checkout Field Entry","description":"Checkout field entry.","type":"string"}},"checkout_field_value_transaction_reference":{"title":"Checkout Field Value Transaction Reference","description":"Restricts the checkout field selection to a specific transaction.","type":"string"}}},"AppliedPromocode":{"title":"Applied Promocode","description":"Details on the applied promocode.","type":"object","properties":{"promo_title":{"title":"Promo Title.","description":"Title of applied promocode.","type":"string"},"promo_description":{"title":"Promo Description","description":"Promo description.","type":"string"},"promo_code":{"title":"Promocode","description":"Promocode.","type":"string"}},"required":["promo_title","promo_code"]},"PaymentDetails":{"title":"Payment Details","description":"Details on the payment(s). In case the payment is not made directly at booking, these details might not yet be available.","type":"object","required":["payment_id","payment_merchant_reference","payment_status","payment_method","payment_type","payment_recurring","payment_gateway_type","payment_currency_code","payment_amount","payment_total","payment_created","payment_created_name","payment_created_email"],"properties":{"payment_id":{"title":"Payment ID","description":"Unique Payment ID set by the Prio system. This is an internal identifier.","type":"string","format":"uuid","readOnly":true},"payment_original_id":{"title":"Payment Original ID","description":"In case of a modification (refund, capture after authorization) this will be the `payment_id` of the original record.","type":"string","format":"uuid","readOnly":true},"payment_partner_id":{"title":"Payment Partner ID","description":"Payment partner identifier.","type":"string"},"payment_merchant_reference":{"title":"Payment Merchant Reference","description":"Unique (external) payment reference set by the merchant / (third) party / POS system initiating the payment. This reference will also be used to identify the payment in the PSP system.","type":"string"},"payment_external_reference":{"title":"Payment External Reference","description":"External payment reference set to identify the shopper / entity / cardholder / guest performing the payment. This reference can also be used to identify the payment in the PSP system.","type":"string"},"payment_order_reference":{"title":"Payment Order Reference","description":"The `order_reference` linked to this payment.","type":"string"},"payment_booking_references":{"title":"Payment Bookings References","description":"The booking references linked to this payment. Only returned in case of partial payment (pay per booking).","type":"array","readOnly":true,"items":{"title":"Booking Reference","description":"The `booking_reference` linked to this payment.","type":"string"}},"payment_order_version":{"title":"Payment Order Version","description":"Version of the order (`order_version`) during the payment.","type":"integer","readOnly":true},"payment_status":{"$ref":"#/components/schemas/PaymentStatus"},"payment_method":{"$ref":"#/components/schemas/PaymentMethod"},"payment_scheme":{"$ref":"#/components/schemas/PaymentScheme"},"payment_type":{"$ref":"#/components/schemas/PaymentType"},"payment_link":{"title":"Payment Link","description":"Only applicable in case the PSP only supports payment via Hosted Payment Page Link or `payment_method:LINK`.","type":"string","readOnly":true,"format":"URI"},"payment_link_expires_at":{"title":"Payment Link Expiry","description":"Date and time when the payment link expires. In case of pre-payment this value will be the `reservation_valid_until`.","type":"string","readOnly":true,"format":"date-time"},"payment_recurring":{"title":"Payment Recurring","description":"Whether the payment details are stored for recurring payments.","type":"boolean","default":false,"readOnly":true},"payment_recurring_type":{"$ref":"#/components/schemas/PaymentRecurringType"},"payment_class":{"$ref":"#/components/schemas/PaymentClass"},"payment_refund_type":{"$ref":"#/components/schemas/RefundType"},"payment_refund_reason":{"title":"Payment Refund Reason","description":"Reason of refund.\n\nOnly applicable in case `payment_type:REFUND`.","type":"string"},"payment_currency_code":{"title":"Payment Currency Code","description":"The (guest) currency code of this payment. According to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).\n\n**(ADVANCED)**\nThis value defaults to `order.order_pricing[].price_currency_code`, unless the guest uses an alternative checkout currency, in which case an additional `payment_currency_rate` and `payment_currency_amount` will be returned.\n\nNote that the payment service provider can perform an additional conversion called dynamic currency conversion (DCC), which will be returned inside `payment_gateway_additional_values`.","type":"string"},"payment_currency_rate":{"title":"Payment Currency Rate","description":"Checkout / Guest currency conversion rate. \n\nIf not set and an alternative `payment_currency_code` is provided, the latest rates from the Currency API will be used as default.\n\n> Alternative rates can only be provided on (re)sales, purchase exchange rates are fixed.","type":"string"},"payment_currency_amount":{"title":"Payment Currency Amount","description":"The total amount / value that has been authorised / settled / refunded in the alternative (guest) currency (`payment_amount` * `payment_currency_rate`).","type":"string","readOnly":true},"payment_amount":{"title":"Payment Amount","description":"The amount authorised / settled / refunded during this transaction in the base (order) currency.\n\nIn case of refunds, this value will be a positive value but the payment type will be set to `payment_type:REFUND`.","type":"string","readOnly":true},"payment_total":{"title":"Payment Running Total","description":"The actual total amount that is (already) authorised / settled in the base (order) currency. This will be a running sum of all (previous) payment (`payment_amount`) transactions linked to this order. Refunds will be subtracted from the total.","type":"string","readOnly":true},"payment_gateway_details":{"$ref":"#/components/schemas/PaymentGatewayDetails"},"payment_contact":{"$ref":"#/components/schemas/ContactDetails"},"payment_notes":{"title":"Payment Notes","description":"Payment notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"payment_created":{"title":"Payment Create Date","description":"Date and time of payment.","type":"string","format":"date-time","readOnly":true},"payment_created_name":{"title":"Payment Created Name","description":"Cashier name / Username who created the payment.","type":"string","readOnly":true},"payment_created_email":{"title":"Payment Created Email","description":"Cashier email / User email who created the payment.","type":"string","format":"email","readOnly":true}}},"PaymentStatus":{"title":"Payment Status","description":"Status of guest payment.\n\n<details>\n  <summary>**Payment Statuses**</summary>\n\n * `PAID` (string) - Payment is authorized and settled / captured. This state serves as an indicator to proceed.\n \n    > If `SettlementType:EXTERNAL`, then the order will be automatically PAID upon Order Confirmation.\n * `AUTHORIZED` (string) - Payment has been authorized and can be charged / settled later. The payment is approved by the financial institution. This state serves as an indicator to proceed.\n * `PROCESSING` (string) - Payment is being processed, this is a temporary state. \n * `IN_PROGRESS` (string) - Payment flow has been initiated and is in progress, this is a temporary state. \n * `PENDING` (string) - Payment is pending. This is the initial state for most payments. Initiate a new payment via the Make Payment API.\n \n    > If `SettlementType:EXTERNAL`, then no further action is required.\n * `REFUNDED` (string) - Payment has been refunded / reimbursed. Please consult `payment_refund_type` for more details.\n * `REFUSED` (string) - Payment was refused during last attempt. Please consult your Payment Service Provider for more details. Initiate a new payment via the Make Payment API.\n * `CANCELLED` (string) - Payment has been cancelled during the last attempt or prior to the capture of an authorized payment. Initiate a new payment via the Make Payment API.\n * `ERROR_REFUND` (string) - Payment error occurred during last attempt. Initiate a new refund via the Refund Payment API.\n * `ERROR_PAYMENT` (string) - Payment error occurred during last payment attempt. Initiate a new payment via the Make Payment API.\n * `PARTIAL_PAID` (string) - Payment is partially paid.\n * `PARTIAL_REFUND` (string) - Payment is partially refunded.\n * `CHARGEBACK` (string) - Payment funds are returned to the guest due to a chargeback. Please consult your Payment Service Provider for more details.\n * `EXPIRED` (string) - The payment term has expired. This can happen if for example the authorization deadline has passed.\n * `NOT_REQUIRED` (string) - Payment is not required / applicable. This state serves as an indicator to proceed.\n \n</details>\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"string","readOnly":true,"default":"PENDING","enum":["PAID","AUTHORIZED","PROCESSING","IN_PROGRESS","PENDING","REFUNDED","REFUSED","CANCELLED","ERROR","ERROR_REFUND","ERROR_PAYMENT","PARTIAL_PAID","PARTIAL_REFUND","CHARGEBACK","EXPIRED","NOT_REQUIRED"]},"PaymentMethod":{"title":"Payment Method","description":"Payment method / type used.\n\nMore specific details might be available in `PaymentScheme` after payment.\n<details>\n  <summary>**Payment Methods**</summary>\n\n * `ONLINE` (string) - Accept payments with cards, wallets, and key local payment methods on your website and mobile app.\n * `TERMINAL` (string) - Accept payments with in-store or stand-alone POS terminals.\n * `LINK` (string) - Set payment link, often redirecting to a Hosted Payment Page (HPP). \n * `CASH` (string) - Accept cash payment.\n * `GUEST_BILL` (string) - Charge guest bill.\n * `RECURRING` (string) - Recurring payment.\n * `EXTERNAL` (string) - Payment made outside the client / Prio system.\n * `VOUCHER` (string) - Use voucher.\n * `BANK_TRANSFER` (string) - Set bank transfer, generally used to pay invoices.\n * `OTHER` (string) - Any method not mentioned above.\n \n</details>\n> Only applicable to Guest Payment. Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"string","default":"EXTERNAL","enum":["ONLINE","TERMINAL","LINK","CASH","GUEST_BILL","RECURRING","EXTERNAL","VOUCHER","BANK_TRANSFER","OTHER"]},"PaymentScheme":{"title":"Payment Scheme","description":"Payment scheme used. Available if returned by payment service provider.","type":"string","enum":["VISA","MASTERCARD","MAESTRO","PAYPAL","SOFORT","GIROPAY","SEPA","BANCONTACT","IDEAL","ALIPAY","AFTERPAY","BOLETO","KLARNA_NOW","KLARNA_LATER","DISCOVER","UNIONPAY","VPAY","JCB","TRUSTLY","SWISH","AMERICAN_EXPRESS","AMAZON_PAY","SAMSUNG_PAY","WECHAT_PAY","APPLE_PAY","GOOGLE_PAY","CREDITCARD","UNSPECIFIED","OTHER"]},"PaymentType":{"title":"Payment Type","description":"Type of payment.\n<details>\n  <summary>**Payment Types**</summary>\n\n  * `CAPTURE` (string) - The reserved funds are transferred from the shopper to your account. \n    \n    A payment that was already authorised by the payment processor must be captured to be completed (this is the act of transferring the reserved funds from shopper to merchant).\n  * `AUTHORIZATION` (string) - The payment details of the shopper are verified, and the funds are reserved.\n  \n    This is the process of the card issuer (like Visa or Mastercard) verifying payment details and reserving the funds to capture it later. \n    When a payment was authorised but hasn't been captured yet, a merchant can also decide to cancel it for some reason (like a high risk of fraud).\n  \n    > Note that authorisation is valid only for a limited amount of time. In case an authorised payment hasn't been captured or cancelled, it expires after the predefined deadline is missed.\n  * `REFUND` (string) - If you want to return the funds to your shopper, for example if they returned an item, you need to refund the payment.\n  \n</details>","type":"string","default":"CAPTURE","enum":["CAPTURE","AUTHORIZATION","REFUND"]},"PaymentRecurringType":{"title":"Payment Recurring Type","description":"The type of tokenization used for the recurring payment.\n\nOnly applicable in case of `payment_recurring:true`.\n\nPayment Recurring Type:\n  * `STORE` - One-off transactions where a shopper can either store their payment details or pay at a later time using their saved details.\n  * `SUBSCRIPTION` - A recurring transaction made at regular intervals for a product or a service.\n  * `TOP_UP` - Contracts that occur on a non-fixed schedule using stored card details. This includes automatic top-ups when the cardholder's balance drops below a certain amount.","type":"string","readOnly":true,"enum":["STORE","SUBSCRIPTION","TOP_UP"]},"PaymentClass":{"title":"Payment Class","description":"Payment Class:\n  * `SALES` (string) - Payment settles the outstanding sales amount.\n  * `PURCHASE` (string) - Payment settles the outstanding purchase amount.","type":"string","default":"SALES","deprecated":true,"enum":["SALES","PURCHASE"]},"RefundType":{"title":"Refund Type","readOnly":true,"description":"Type of refund.\n<details>\n  <summary>**Refund Types**</summary>\n\n  * `SYSTEM` - Refund is initiated (manually) by the Prio or Partner system. For example, an admin user in the Order Overview.\n  * `AUTO` - Refund is automatically initiated by the Prio system. For example, if a paid reservation has expired (not confirmed within the `reservation_valid_until`) or is being cancelled.\n  * `PSP` - Refund is (manually) initiated by the Payment Service Provider.\n  * `CHARGE_BACK` - Refund is initiated by the Payment Service Provider (Guest) because of a chargeback.\n  * `OTHER` - Refund is initiated due to other reasons.\n  \n</details>\n  \n> Only applicable in case `payment_type:REFUND`.","type":"string","default":"SYSTEM","enum":["SYSTEM","AUTO","PSP","CHARGE_BACK","OTHER"]},"PaymentGatewayDetails":{"title":"Payment Gateway Details","description":"Payment information for each gateway. Only applicable if a payment gateway has been used to process the payment.","type":"object","anyOf":[{"$ref":"#/components/schemas/PaymentGatewayAdyen"},{"$ref":"#/components/schemas/PaymentGatewayCybersource"},{"$ref":"#/components/schemas/PaymentGatewayHyperPay"},{"$ref":"#/components/schemas/PaymentGatewayAddonPayments"},{"$ref":"#/components/schemas/PaymentGatewayHotelBill"},{"$ref":"#/components/schemas/PaymentGatewayMews"},{"$ref":"#/components/schemas/PaymentGatewayNGenius"},{"$ref":"#/components/schemas/PaymentGatewayExternal"}],"discriminator":{"propertyName":"payment_gateway_type","mapping":{"ADYEN":"#/components/schemas/PaymentGatewayAdyen","CYBERSOURCE":"#/components/schemas/PaymentGatewayCybersource","HYPERPAY":"#/components/schemas/PaymentGatewayHyperPay","ADDONPAYMENTS":"#/components/schemas/PaymentGatewayAddonPayments","MEWS":"#/components/schemas/PaymentGatewayMews","NGENIUS":"#/components/schemas/PaymentGatewayNGenius","EXTERNAL":"#/components/schemas/PaymentGatewayExternal"}}},"PaymentGatewayAdyen":{"title":"Payment Gateway Adyen","description":"Details on the payment when using Adyen to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_terminal_id":{"title":"Payment Terminal ID","description":"Unique ID of the selected payment terminal.","type":"string","deprecated":true}}}]},"CommonPaymentGateway":{"title":"Common Payment Gateway","description":"Common payment gateway.","type":"object","discriminator":{"propertyName":"payment_gateway_type","mapping":{"ADYEN":"#/components/schemas/PaymentGatewayAdyen","CYBERSOURCE":"#/components/schemas/PaymentGatewayCybersource","HYPERPAY":"#/components/schemas/PaymentGatewayHyperPay","ADDONPAYMENTS":"#/components/schemas/PaymentGatewayAddonPayments","MEWS":"#/components/schemas/PaymentGatewayMews","NGENIUS":"#/components/schemas/PaymentGatewayNGenius","EXTERNAL":"#/components/schemas/PaymentGatewayExternal"}},"properties":{"payment_merchant_account_name":{"title":"Payment Merchant Account Name","description":"The name / identifier of the party selling goods or services to shoppers via an e-commerce website, a mobile app, on a point of sale, or across all three channels.","type":"string"},"payment_service_provider_reference":{"title":"Payment Service Provider Reference","description":"Unique payment reference set by the payment service provider. Note that every action will result in a different reference. The original reference can be found below.","type":"string","readOnly":true},"payment_service_provider_original_reference":{"title":"Payment Service Provider Original Reference","description":"The PSP reference associated with the original payment prior to the modification (refund, manual capture) request.","type":"string","readOnly":true},"payment_gateway_type":{"title":"Payment Gateway Type","type":"string","description":"Payment service provider used to process payments.\n<details>\n  <summary>**Payment Gateway Types**</summary>\n\n  * `ADYEN` - Adyen ([More info](https://www.adyen.com/))\n  * `CYBERSOURCE` - Cybersource ([More info](https://www.cybersource.com/))\n  * `HYPERPAY` - Hyperpay ([More info](https://www.hyperpay.com/))\n  * `ADDONPAYMENTS` - Addon Payments ([More info](https://www.addonpayments.com/))\n  * `MEWS` - Mews ([More info](https://www.mews.com/))\n  * `NGENIUS` - Network International ([More info](https://www.network.ae/))\n  * `MULTISAFE` - MultiSafePay ([More info](https://www.multisafepay.com/))\n  * `SUMUP` - SumUp Payments ([More info](https://sumup.com/))\n  * `IZETTLE` - iZettle ([More info](https://www.izettle.com/))\n  * `STRIPE` - Stripe ([More info](https://stripe.com/))\n  * `WORLDPAY` - WorldPay ([More info](https://online.worldpay.com/))\n  * `GOOGLE` - Google Pay ([More info](https://developers.google.com/pay/api))\n  * `PAYONEER` - Payoneer ([More info](https://www.payoneer.com/))\n  * `SMARTPAY` - Smart Pay ([More info](https://www.bankmuscat.com/en/Pages/default.aspx))\n  * `MOKA` - Moka ([More info](https://www.mokapos.com/en))\n  * `EXTERNAL` - The payment is settled externally.\n  * `OTHER` - Payment provider not listed above.\n  * `NONE` - No payment provider is used.\n  \n</details>\n  \n> Used to aid in serialization, deserialization, and validation.\n"},"payment_gateway_additional_values":{"title":"Payment Gateway Additional Values","description":"Additional (conditional) values returned by the payment service provider.\n\nThere are many additional data elements that can be returned. The list is long and growing, so we can't mention all of them here.\n\nFor example:\n  * Cardholder Name\n  * Cardnumber (last digits only)\n  * Card Scheme\n  * Shopper IP\n  * Card Issuer Country\n  * Card Issuer Name\n  * Fraudscore\n  * Transaction Type\n  * Payment Status\n  * Username","type":"object","additionalProperties":{"type":"string"}}},"required":["payment_merchant_account_name","payment_service_provider_reference","payment_gateway_type"]},"PaymentGatewayCybersource":{"title":"Payment Gateway Cybersource","description":"Payment gateway cybersource.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_auth_code":{"title":"Payment Auth Code","description":"Payment auth code.","type":"string","writeOnly":true}},"required":["payment_auth_code"]}]},"PaymentGatewayHyperPay":{"title":"Payment Gateway HyperPay","description":"Payment gateway hyperpay.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"PaymentGatewayAddonPayments":{"title":"Payment Gateway Addon Payments","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_auth_code":{"title":"Payment Auth Code","description":"Payment auth code.","type":"string","writeOnly":true}}}]},"PaymentGatewayHotelBill":{"title":"Payment Gateway Hotel Bill","description":"Payment gateway hotel bill.","type":"object","deprecated":true,"allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_hotel_id":{"title":"Payment Hotel ID","description":"Payment hotel ID.","type":"string"},"payment_hotel_guest_name":{"title":"Payment Hotel Guest Name","description":"Payment hotel guest name.","type":"string"},"payment_hotel_room_number":{"title":"Payment Hotel Room Number","description":"Payment hotel room number.","type":"string"}},"required":["payment_hotel_id","payment_hotel_guest_name","payment_hotel_room_number"]}]},"PaymentGatewayMews":{"title":"Payment Gateway Mews","description":"Details on the payment when using MEWS to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","required":["payment_customer_id"],"properties":{"payment_customer_id":{"title":"Payment Customer ID","description":"Unique identifier of the MEWS customer. Retrieved via the [MEWS Customers API](https://mews-systems.gitbook.io/connector-api/operations/customers).","type":"string"}}}]},"PaymentGatewayNGenius":{"title":"Payment Gateway N-Genius","description":"Details on the payment when using N-Genius to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"PaymentGatewayExternal":{"title":"Payment Gateway External","description":"Details on the payment when using an external Payment Gateway or using a physical payment method such as cash to settle the Guest Payment.\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"CreditLimit":{"title":"Credit Limit","description":"Credit limit is a functionality to set a selling limit to clients. \n\nYou are not able to create any additional bookings if your credit limit is reached. To reset your credit limit a payment is required.\n\nNote that if the credit limit details are returned in the reservation or order object that the values are relative to the reservation / order creation time. Subsequent calls will not update the results. ","type":"object","readOnly":true,"deprecated":true,"required":["credit_status","credit_total","credit_blocked","credit_used","credit_remaining","credit_reset","credit_invoice_interval","credit_invoice_settlement"],"properties":{"credit_status":{"title":"Credit Status","type":"string","description":"The credit status.","readOnly":true,"enum":["ACTIVE","SUSPENDED"]},"credit_total":{"title":"Credit Total","type":"string","description":"The total credit limit.","readOnly":true},"credit_deposit":{"title":"Credit Deposit","type":"string","description":"The amount of credit (safety) deposit.","readOnly":true,"deprecated":true},"credit_blocked":{"title":"Credit Blocked","type":"string","description":"The amount of credit blocked / reserved.","readOnly":true},"credit_used":{"title":"Credit Used","type":"string","description":"The amount of credit utilized.","readOnly":true},"credit_remaining":{"title":"Credit Remaining","type":"string","description":"The amount of credit remaining.","readOnly":true},"credit_invoice_interval":{"title":"Credit Invoice Interval","type":"string","description":"Type of credit invoice interval.\n\nInvoice Interval Types:\n   * `MANUAL` (string) - An invoice is generated upon manual user action.\n   * `PER_ORDER` (string) - An invoice is generated for each individual order.\n   * `LIMIT_REACHED` (string) - An invoice is generated once the credit limit is reached (`credit_remaining` equals 0).","readOnly":true,"enum":["MANUAL","PER_ORDER","LIMIT_REACHED"]},"credit_invoice_settlement":{"title":"Credit Invoice Invoice","type":"string","description":"Whether the invoice will be automatically settled / paid.","readOnly":true,"enum":["MANUAL","AUTO"]},"credit_reset":{"title":"Credit Reset","type":"string","format":"date-time","description":"The datetime of the last credit reset.","readOnly":true}}},"ErrorModel":{"title":"Error Model","description":"Error model.","type":"object","readOnly":true,"properties":{"error":{"title":"Error Code","description":"The error code which occured.\n\nAs our API has over 1000+ unique error codes (grouped by HTTP status). We discourage implementing individual errors on your customer front-end interface and suggest a catch-all clause for each HTTP status code instead.\n\nErrors can be shown directly to the customer using the `error_message`, while more specific details explaining the problem will be provided in the `errors` object.\nWe recommend a combination of `error_message` and `error_reference` when communicating with the customer and API support.\n","type":"string","readOnly":true},"error_reference":{"title":"Error Reference","description":"Unique reference linked to this error.\n\nWe recommend showing this reference to the customer to allow for better issue tracking.\n","type":"string","readOnly":true},"error_message":{"title":"Error Message","description":"Customer friendly error message which can be shown on your front-end.\n","type":"string","readOnly":true},"error_description":{"title":"Error Description","description":"Human-readable ASCII [[USASCII]](https://tools.ietf.org/html/rfc6749#ref-USASCII) text providing additional information, used to assist the client developer in understanding the error that occurred.","type":"string","readOnly":true},"error_uri":{"title":"Error URI","description":"A URI identifying a human-readable web page with information about the error, used to provide the client \ndeveloper with additional information about the error.","type":"string","readOnly":true},"errors":{"title":"Error Messages","description":"Specific messages indicating one or more problems.","type":"array","readOnly":true,"items":{"title":"Error Message","description":"Specific message indicating a problem.","type":"string","readOnly":true}}},"required":["error","error_reference"]}},"responses":{"InvalidRequest":{"description":"Invalid Request\n\nThe HyperText Transfer Protocol (HTTP) 400 Bad Request response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"AuthenticationFailed":{"description":"Authentication Failed\n\nThe access token provided is expired, revoked, malformed, or invalid for other reasons. The resource SHOULD respond with the HTTP 401 (Unauthorized) status code.  The client MAY request a new access token and retry the protected resource request.","headers":{"WWW-Authenticate":{"description":"Defines the authentication method that should be used to gain access to a resource.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"Forbidden":{"description":"Forbidden\n\nThe request requires higher privileges than provided by the access token. The resource server SHOULD respond with the HTTP 403 (Forbidden) status code and MAY include the `scope` attribute with the scope necessary to access the protected resource.","headers":{"WWW-Authenticate":{"description":"Defines the authentication method that should be used to gain access to a resource.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"MethodNotAllowed":{"description":"Method Not Allowed\n\nThe HyperText Transfer Protocol (HTTP) 405 Method Not Allowed response status code indicates that the request method is known by the server but is not supported by the target resource.\n\nA request method is not supported for the requested\n      resource; for example, a GET request on a form that\n      requires data to be presented via POST, or a PUT request\n      on a read-only resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"NotAcceptable":{"description":"Not Acceptable\n\nThe HyperText Transfer Protocol (HTTP) 406 Not Acceptable client error response code indicates that the server cannot produce a response matching the list of acceptable values defined in the request's proactive content negotiation headers, and that the server is unwilling to supply a default representation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"UnprocessableEntity":{"description":"Unprocessable Entity\n\nThe HyperText Transfer Protocol (HTTP) 422 Unprocessable Entity response status code indicates that the server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"LimitReached":{"description":"Too Many Requests\n\nThe HTTP 429 Too Many Requests response status code indicates the user has sent too many requests in a given amount of time (\"rate limiting\").","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"InternalServerError":{"description":"Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error response code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"NotImplemented":{"description":"Not Implemented\n\nThe HyperText Transfer Protocol (HTTP) 501 Not Implemented server error response code means that the server does not support the functionality required to fulfill the request.\n\nThe server either does not recognize the request method, or it lacks the ability to fulfil the request. Usually this implies future availability (e.g., a new feature of a web-service API).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"BadGateway":{"description":"Bad Gateway\n\nThe HyperText Transfer Protocol (HTTP) 502 Bad Gateway server error response code indicates that the server, while acting as a gateway or proxy, received an invalid response from the upstream server.\n\nThe HTTP 502 Bad Gateway error is exclusively returned in case of problems during communication with the supplier or third-party system. ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"ServiceUnavailable":{"description":"Service Unavailable\n\nThe HyperText Transfer Protocol (HTTP) 503 Service Unavailable server error response code indicates that the server is not ready to handle the request.\n\nThe HTTP 503 Service Unavailable error is exclusively returned in case of problems during internal communication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"GatewayTimeout":{"description":"Gateway Timeout\n\nThe HyperText Transfer Protocol (HTTP) 504 Gateway Timeout server error response code indicates that the server, while acting as a gateway or proxy, did not get a response in time from the upstream server that it needed in order to complete the request.\n\nThe HTTP 504 Gateway Timeout error is exclusively returned in case of problems during communication with the supplier or third-party system. ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}}}},"paths":{"/reservations/{reservation_reference}":{"get":{"description":"This API is called to get reservation details and status.\n> You are still able to retrieve the cart details for expired reservations up to 10 days.","summary":"Reservation Details / Cart Details","tags":["Reservations / Cart"],"operationId":"getReservation","parameters":[{"name":"reservation_reference","in":"path","required":true,"description":"A unique identifier got in response of the create reservation API.","schema":{"type":"string","minLength":8}},{"$ref":"#/components/parameters/If-Modified-Since"}],"responses":{"200":{"description":"Get Reservation Detail Response","headers":{"Cache-Control":{"$ref":"#/components/headers/Cache-Control"},"Last-Modified":{"$ref":"#/components/headers/Last-Modified"},"Content-Language":{"$ref":"#/components/headers/Content-Language"},"Content-Length":{"$ref":"#/components/headers/Content-Length"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/Access-Control-Allow-Methods"},"Content-Security-Policy":{"$ref":"#/components/headers/Content-Security-Policy"},"X-XSS-Protection":{"$ref":"#/components/headers/X-XSS-Protection"},"X-Content-Type-Options":{"$ref":"#/components/headers/X-Content-Type-Options"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Origin":{"$ref":"#/components/headers/Origin"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationDetailResponse"}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/AuthenticationFailed"},"403":{"$ref":"#/components/responses/Forbidden"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"429":{"$ref":"#/components/responses/LimitReached"},"500":{"$ref":"#/components/responses/InternalServerError"},"501":{"$ref":"#/components/responses/NotImplemented"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}}}}}}
````

## Update Reservation / Update Cart

> This API is called to update an existing reservation / cart.\
> \> This endpoint can also be requested for products without availability (\`product\_availability:false\`) or managed capacity (\`product\_capacity:false\`).\
> \
> \*\*Cart Functionality:\*\*\
> \
> &#x20;\* To add a product to the cart, send a \`reservation\_details\` array item with a blank \`booking\_reservation\_reference\`.\
> &#x20;\
> &#x20;\* To amend an existing booking, please send the corresponding \`booking\_reservation\_reference\` for the array item with the amended data. In this case the latest request takes precedence and therefore the quantity is always overwritten, not summed.\
> &#x20;\
> &#x20;   Only sent the booking details of those bookings you would like to amend.\
> &#x20;\
> &#x20;\* To remove a product from the cart, please call the "Remove Cart Item" endpoint. \
> &#x20;\
> &#x20;\* To only change the contact details, do not provide the \`reservation\_details\` object in the request.\
> &#x20;\
> &#x20;\* TIP: The full reservation / cart details will be returned on every request. Therefore you are able to manage the cart outside of your system if required. ReadOnly properties which are included in the response, but not allowed in the request, such as \`booking\_reservation\_valid\_until\` will be ignored and can be safely sent. If you choose not to do this, make sure both carts are kept in sync.

````json
{"openapi":"3.0.0","info":{"title":"Distributor API Specification V3.8","version":"3.8.0"},"tags":[{"name":"Reservations / Cart","description":"Reserving a product is only mandatory in case the product has managed capacity. Although we also recommend to implement it in the following cases:\n- When holding customer products inside a shoppingcart. \n- Lock a slot while waiting for a confirmed payment.\n- High demand / low availability tickets (concert/events).\n- Adding promocodes to an order.\n- Managing combi- and cart-discounts.\n- Cross-client order process.\n\nReservations can be confirmed by passing the `reservation_reference` to the Create Order API. One or more products can be reserved at once. We highly recommend implementing the Cart flow for maximum functionality. \n"}],"servers":[{"url":"https://{environment}.prioticket.com/{version}/distributor","description":"Prio environments.","variables":{"environment":{"description":"* `distributor-api` - Production server; used for real transactions.\n\n* `sandbox-distributor-api` - Sandbox server.\n\n* `staging-distributor-api` - Pre-Production server; used for testing (UAT), verification, demo and certification.\n\n* `internal-distributor-api` - Internal server; reserved for internal use.\n","default":"staging-distributor-api","enum":["distributor-api","sandbox-distributor-api","staging-distributor-api","internal-distributor-api"]},"version":{"description":"Api version.","default":"v3.8","enum":["v3.8"]}}}],"security":[{"OAuth2":["https://www.prioticketapis.com/auth/distributor/reservation"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","description":"OAuth2 implementation.","flows":{"clientCredentials":{"tokenUrl":"https://sandbox-distributor-api.prioticket.com/v3.8/distributor/oauth2/token","scopes":{"https://www.prioticketapis.com/auth/distributor.products.readonly":"Grants access to products.","https://www.prioticketapis.com/auth/distributor.reservations":"Grants access to reservations.","https://www.prioticketapis.com/auth/distributor.bookings":"Grants access to bookings.","https://www.prioticketapis.com/auth/distributor.bookings.details":"Grants access to booking details.","https://www.prioticketapis.com/auth/distributor/reporting":"Grants access to reporting."}}}}},"links":{"GetReservationByReference":{"operationId":"getReservation","parameters":{"reservation_reference":"$response.body#/data/reservation/reservation_reference"},"description":"The `reservation_reference` value returned in the response can be used as the `reservation_reference` parameter in `GET /reservations/{reservation_reference}`.\n"}},"headers":{"Cache-Control":{"description":"Specifies the maximum amount of time a resource will be considered fresh. Contrary to Expires, this directive is relative to the time of the request.","schema":{"type":"string"}},"Last-Modified":{"description":"The Last-Modified response HTTP header contains the date and time at which the origin server believes the resource was last modified.","schema":{"type":"string"}},"Content-Language":{"description":"The Content-Language entity header is used to describe the language(s) intended for the audience, so that it allows a user to differentiate according to the users' own preferred language.","schema":{"type":"string"}},"Content-Length":{"description":"The Content-Length entity header indicates the size of the entity-body, in bytes, sent to the recipient.","schema":{"type":"string"}},"Access-Control-Allow-Methods":{"description":"The Access-Control-Allow-Methods response header specifies the method or methods allowed when accessing the resource in response to a preflight request.","schema":{"type":"string"}},"Content-Security-Policy":{"description":"Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks.","schema":{"type":"string"}},"X-XSS-Protection":{"description":"The HTTP X-XSS-Protection response header is a feature of Internet Explorer, Chrome and Safari that stops pages from loading when they detect reflected cross-site scripting (XSS) attacks.","schema":{"type":"string"}},"X-Content-Type-Options":{"description":"The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised in the Content-Type headers should not be changed and be followed.","schema":{"type":"string"}},"X-RateLimit-Limit":{"deprecated":true,"description":"Request limit per hour.","schema":{"type":"integer","deprecated":true}},"X-RateLimit-Remaining":{"description":"The number of requests left for the time window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"The UTC date/time at which the current rate limit window resets.","schema":{"type":"string"}},"Origin":{"description":"The Origin request header indicates where a fetch originates from.","schema":{"type":"string","format":"URI"}}},"schemas":{"ReservationDetailResponse":{"title":"Reservation Detail Response","description":"Reservation detail Response.","type":"object","properties":{"api_version":{"$ref":"#/components/schemas/ApiVersion"},"data":{"$ref":"#/components/schemas/ReservationDetailData"}},"required":["api_version","data"]},"ApiVersion":{"title":"API Version","description":"Represents the version of the service API that's served in the response.","type":"string","readOnly":true},"ReservationDetailData":{"title":"Reservation Detail Data","description":"Reservation detail data.","type":"object","properties":{"kind":{"$ref":"#/components/schemas/Kind"},"reservation":{"$ref":"#/components/schemas/ReservationModel"}},"required":["kind","reservation"]},"Kind":{"title":"Kind","description":"The kind property serves as a guide to what type of information this particular object stores.","type":"string","readOnly":true,"enum":["location","route","category","product","currency","tax","addon","availability","stock","reservation","order","promocode","promo","webhook","notification","voucher","contact","payment","credit","destination","recommendation"]},"ReservationModel":{"title":"Reservation Model","description":"Reservation model.","type":"object","properties":{"reservation_distributor_id":{"title":"Reservation Distributor ID","description":"Unique identifier for distributor assigned by Prio.","type":"string"},"reservation_distributor_name":{"title":"Reservation Distributor Name","description":"Name of the distributor.","type":"string","readOnly":true},"reservation_partner_id":{"title":"Reservation Partner ID","description":"Unique identifier for partner assigned by Prio.","type":"string"},"reservation_partner_name":{"title":"Reservation Partner Name","description":"Name of the partner.","type":"string","readOnly":true},"reservation_reference":{"title":"Reservation Reference","description":"A unique identifier for the created reservation in the Prio.","type":"string","readOnly":true,"minLength":8},"reservation_external_reference":{"title":"Reservation External Reference","description":"A unique reservation identifier within the external system.","type":"string","maxLength":50,"pattern":"^[\\\\a-zA-Z-_\\/\\d]+$"},"reservation_hold_token":{"title":"Reservation Hold Token","description":"Unique hold token for this reservation (Internal use only). Only a single holdtoken is allowed per reservation.","type":"string"},"reservation_valid_until":{"title":"Reservation Valid Until","description":"The reserved order will stay alive until this time, after that the reservation will be auto-cancelled.\n> Please note that if you are having multiple products in your cart, that the value will be set according to the product with the earliest expiration time. In this case ONLY this specific product will be auto-cancelled. To view your updated reservation you could call the 'Cart Details' endpoint.\n\n> Warning; Prio will simply confirm your pending reservation, even when products have been auto-cancelled in between. If this value is not checked by the reserving party, unexpected results could occur.","type":"string","format":"date-time","readOnly":true},"reservation_details":{"title":"Reservation Details","description":"Contains one or more bookings.","type":"array","items":{"$ref":"#/components/schemas/ReservationDetail"}},"reservation_contacts":{"title":"Reservation Contacts","description":"Contacts linked to this reservation / order. If provided, these values will override the `order_contacts` object during the Confirm Order step.","type":"array","items":{"$ref":"#/components/schemas/ContactDetails"}},"reservation_checkout_fields":{"title":"Reservation Checkout Fields","description":"Mandatory fields during checkout.","type":"array","items":{"$ref":"#/components/schemas/CheckoutField"}},"reservation_promocodes":{"title":"Reservation Promocodes","description":"The promocodes applied to this reservation.","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/AppliedPromocode"}},"reservation_pricing":{"$ref":"#/components/schemas/Pricing"},"reservation_payments":{"title":"Reservation Payments","description":"Details on the payments linked to this reservation. \n\nA reservation can have multiple payment records in case of installments, split payments, refunds and additional charges. Every action will result in a new record so all history is kept.\n\nPayment records are always returned in a descending order based on the payment date.\nTherefore the first entry in the array can be considered as the last payment and thus the `payment_total` (running sum) as the actual total amount paid and the `payment_status ` as the latest payment status for this reservation.","type":"array","items":{"$ref":"#/components/schemas/PaymentDetails"}},"reservation_credit":{"$ref":"#/components/schemas/CreditLimit"},"reservation_custom_fields":{"title":"Reservation Custom Fields","description":"Freeform entry of any key-value pair.","type":"array","items":{"$ref":"#/components/schemas/CustomField"}},"reservation_created":{"title":"Reservation Created","description":"Date and time of reservation creation.","type":"string","format":"date-time","readOnly":true},"reservation_created_name":{"title":"Reservation Created Name","description":"Cashier name / User name who created the reservation.","type":"string","readOnly":true},"reservation_created_email":{"title":"Reservation Created Email","description":"Cashier email / User email who created the reservation.","type":"string","format":"email","readOnly":true},"reservation_modified":{"title":"Reservation Modified","description":"Date and time of reservation update.","type":"string","format":"date-time","readOnly":true}},"required":["reservation_distributor_id","reservation_distributor_name","reservation_reference","reservation_external_reference","reservation_valid_until","reservation_pricing"]},"ReservationDetail":{"title":"Reservation Detail","description":"Details on a booking inside a reservation.","allOf":[{"$ref":"#/components/schemas/ProductBookingModel"},{"type":"object","required":["product_type_details","booking_reservation_reference","booking_reservation_valid_until"],"properties":{"booking_reservation_reference":{"title":"Booking Reservation Reference","type":"string","description":"Unique identifier for this booking within the current cart. To update this booking you should pass the same value in the next request."},"booking_reservation_valid_until":{"title":"Booking Reservation Valid Until","type":"string","format":"date-time","readOnly":true,"description":"The reserved booking will stay alive until this time, after that the booking will be auto-cancelled.\n> In this case ONLY this specific product will be auto-cancelled. To view your updated reservation you could call the 'Cart Details' endpoint.\n\n> Our system will try to reset the `booking_reservation_valid_until` every time the Update Cart endpoint is called. This will not work for most third-party products. Please keep an eye on the value `booking_reservation_valid_until` to make sure your cart does not expire."},"product_type_details":{"title":"Product Type Booking Details","description":"A list specifying the booking quantity per product type.","type":"array","items":{"$ref":"#/components/schemas/BookingItemWithPricing"}}}}]},"ProductBookingModel":{"title":"Product Booking Model","description":"Product booking model.","type":"object","additionalProperties":false,"properties":{"booking_external_reference":{"title":"Booking External Reference","description":"A unique booking identifier within the external system.","type":"string"},"booking_status":{"$ref":"#/components/schemas/BookingStatusTypes"},"booking_version":{"title":"Booking Version","description":"Booking version number.","type":"integer","readOnly":true,"default":1,"minimum":1,"multipleOf":1},"booking_voucher_released":{"title":"Booking Voucher Released","description":"Whether the vouchers of this booking are available / released. Voucher allocation can be delayed based on the voucher release requirements.","type":"boolean","readOnly":true},"booking_travel_date":{"title":"Booking Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.\nIf unset and availability is applicable, `booking_travel_date` will be returned as `availability_from_date_time` in the response.","type":"string","format":"date-time"},"booking_valid_until":{"title":"Booking Valid Until","description":"The booking will be valid until this time, after that the booking will be expired if not redeemed.\nMainly applicable to open products.","type":"string","format":"date-time","readOnly":true},"booking_invoice_status":{"$ref":"#/components/schemas/InvoiceStatus"},"booking_language":{"title":"Booking Language","description":"Language codes for the available languages of the product, e.g. Live Guides are available in English and Spanish languages. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.","type":"string","default":"en"},"booking_addon_reference":{"title":"Booking Addon Reference","description":"When booking an addon a reference to the original booking is required. \n\nPurchasing an addon requires a booking record for the main product and thus a booking reference for another booking within the same reservation or previously created order should be provided.\n\nIf you do not sent this parameter, it will not be be considered as an addon and registered as an individual sale instead.","type":"string"},"booking_pricing":{"$ref":"#/components/schemas/Pricing"},"booking_notes":{"title":"Booking Notes","description":"Booking notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"booking_customer_url":{"title":"Booking Customer URL","description":"This link that can be attached and communicated towards the end-consumer and allows for booking amendment.","type":"string","format":"URI","readOnly":true},"booking_voucher_url":{"title":"Booking Voucher URL","description":"Voucher(s) download URL.","type":"string","format":"URI","readOnly":true},"booking_created":{"title":"Booking Created","description":"Date and time of booking creation.","type":"string","format":"date-time","readOnly":true},"booking_modified":{"title":"Booking Modified","description":"Date and time of booking update.","type":"string","format":"date-time","readOnly":true},"booking_confirmed":{"title":"Booking Confirmed","description":"Date and time of booking confirmation.","type":"string","format":"date-time","readOnly":true},"booking_cancelled":{"title":"Booking Cancellation","description":"Date and time of booking cancellation.","type":"string","format":"date-time","readOnly":true},"booking_cancellation_reason":{"title":"Booking Cancellation Reason","description":"Reason for booking cancellation.","type":"string","readOnly":true},"product_id":{"title":"Product ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_relation_id":{"title":"Product Relation ID","description":"When products are booked as part of a cluster or bundle the main product id should be defined to determine the relationship.\n\nPurchasing a cluster or bundle requires a reference to the main product (shell). If not provided, an error will be returned.\n\nUnlike addons, when booking a bundle or cluster, only the sub-product is required and therefore there is no need to link it with a seperate (main) booking.\n\nIf you do not sent this parameter, and the sub-product is eligible for individual sale as well, it will be booked as such instead.","type":"string"},"product_pickup_point_id":{"title":"Product Pickup Point ID","description":"Mandatory if `product_pickup_point:MANDATORY` in product details.","type":"string"},"product_pickup_point":{"$ref":"#/components/schemas/PickupPoint"},"product_availability_id":{"title":"Product Availability ID","description":"The unique ID for the timeslot (`availability_id`) or specific availability spot (`availability_spot_id`) if `product_availability_assigned:true`. Only mandatory if `product_availability:true`.","type":"string"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_capacity_id":{"title":"Availability Slot Capacity ID","description":"Availability group / capacity identifier.","type":"string","readOnly":true},"product_availability_capacity_shared_id":{"title":"Availability Slot Shared Capacity ID","description":"Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.","type":"string","readOnly":true},"product_title":{"title":"Product Title","description":"The title of the product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for the supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_supplier_admin_id":{"title":"Product Supplier Admin ID","description":"Unique identifier for the supplier admin.","type":"string","readOnly":true},"product_supplier_admin_name":{"title":"Product Supplier Admin Name","description":"Name of the supplier admin.","type":"string","readOnly":true},"product_market_admin_id":{"title":"Product Market Admin ID","description":"Unique identifier for the market admin.","type":"string","readOnly":true},"product_market_admin_name":{"title":"Product Market Admin Name","description":"Name of the market admin.","type":"string","readOnly":true},"product_source_id":{"title":"Product Source ID","type":"string","description":"Unique ID of the product source.","readOnly":true},"product_source_name":{"title":"Product Source Name","type":"string","description":"Name of the supplier reservation system from which this product is sourced.","readOnly":true},"product_entry_notes":{"title":"Product Entry Notes","description":"Product entry information. (Know before you go).\nThe user-visible list of important notes, use for details such as age-restrictions or other conditions that make this service unsuitable.\n","type":"string","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_class":{"$ref":"#/components/schemas/ProductClass"},"product_currency_code":{"title":"Product Currency Code","description":"Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).","type":"string","readOnly":true},"product_cancellation_allowed":{"title":"Product Cancellation Allowed","type":"boolean","description":"Whether it is allowed to cancel this product / booking. \n\nThis takes into account the current state of the order as well as variables such as `booking_status` and  `product_type_redemption_status`.  \n\nNote that even if a product can be cancelled in this state, cancellation fees and restrictions might still apply and override this value.\nPlease check `product_cancellation_policies` for more details.","default":true,"readOnly":true},"product_options":{"title":"Product Booking Options","description":"The product options booked (including individual options from related combi products). \n","type":"array","items":{"$ref":"#/components/schemas/BookingExtraOptions"}},"product_combi_details":{"title":"Product Combi Details","description":"In case the booked product is the main combi-product (`product_class:COMBI`), this field should be populated for each and every listed sub-product inside `product_combi_details`.\nAll sub-product will inherited the missing details such as `product_type_details` from the parent.","type":"array","items":{"$ref":"#/components/schemas/ProductSubDetail"}},"product_bundle_details":{"title":"Product Bundle Details","description":"In case the booked product is the main bundle-product (`product_class:BUNDLE`), this field should be populated for each and every listed sub-product inside `product_bundle_details`.\nAll sub-product will inherited the missing details such as `product_type_details` from the parent.","type":"array","items":{"$ref":"#/components/schemas/ProductSubDetail"}},"product_addon_details":{"title":"Product Addon Details","description":"In case addons are booked for this product, all related addon booking details will be returned.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ProductAddonDetail"}}},"required":["product_id","product_title","product_supplier_id","product_supplier_name","product_market_admin_id","product_market_admin_name","product_type_details","booking_status","booking_created","booking_modified","booking_external_reference","product_admission_type","product_currency_code","product_cancellation_allowed"]},"BookingStatusTypes":{"title":"Booking Status Types","description":"Status of the booking.","type":"string","readOnly":true,"enum":["BOOKING_RESERVED","BOOKING_RESERVATION_CANCELLED","BOOKING_RESERVATION_EXPIRED","BOOKING_CONFIRMED","BOOKING_UPDATED","BOOKING_CANCELLED","BOOKING_PENDING_SUPPLIER","BOOKING_PENDING_GUEST","BOOKING_PENDING_DISTRIBUTOR","BOOKING_FAILED","BOOKING_PROCESSING","BOOKING_PROCESSING_CONFIRMATION","BOOKING_PROCESSING_CANCELLATION"]},"InvoiceStatus":{"title":"Invoice Status","description":"Status of the invoice.","type":"string","deprecated":true,"readOnly":true,"enum":["INVOICED","INVOICE_APPROVED","INVOICE_PAID","INVOICE_CANCELLED","NOT_INVOICED"]},"Pricing":{"title":"Price Breakdown","description":"The calculated price based on the selected products. \n\nWe highly recommend implementing a cross-check before confirming the order with your own calculated prices to prevent mismatches.","type":"object","properties":{"price_type":{"title":"Price Type","description":"Price breakdown on either purchase or sales and including or excluding tax.","deprecated":true,"type":"string","readOnly":true,"enum":["PURCHASE","SALES"]},"price_subtotal":{"title":"Price Sub Total","description":"Sum of `product_type_list_price` for all `product_types` including extra options, without promocodes, price variations and additional fees (`fee_included:true`).","type":"string","readOnly":true},"price_variations":{"title":"Price Variations","description":"All applicable price variations (`product_quantity_pricing`, `product_daily_pricing`, `product_dynamic_pricing` and more).\n\nSome variations are set automatically based on your request and the selected products, such as quantity and dynamic pricing, whereas other variations can be set manually (e.g cart and partner discount).","type":"array","items":{"$ref":"#/components/schemas/PriceVariations"}},"price_promocodes":{"title":"Price Promocodes","description":"Applied promocodes pricing. \n\nOnly applicable in case of `price_type:SALES_GROSS/SALES_NET`.","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/PromoCodePricing"}},"price_taxes":{"title":"Price Taxes","description":"Product tax breakdown. \n\nAlready included in the price breakdown in case `price_type:PURCHASE_GROSS/SALES_GROSS`, otherwise excluded. Taxes on fees are listed separately in `price_fees`.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ProductTax"}},"price_fees":{"title":"Price Fees","description":"List of additional fees. \n\nAdditional fees (`fee_included:true`) should be included in the `price_total`. \n\nNote that some fees are only visible to certain users.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/Fee"}},"price_total":{"title":"Total Sales Price","description":"The total sales / purchase price including all discounts, surcharges and fees above.","type":"string","readOnly":true}},"required":["price_type","price_subtotal","price_total"]},"PriceVariations":{"title":"Price Variation","description":"Variation which is applicable on the list price.","type":"object","properties":{"variation_label":{"title":"Variation Label","description":"Label / Explanation for this variation.","type":"string"},"variation_amount":{"title":"Variation Amount","description":"The amount which should be added / substracted to the `price_subtotal`. This can be a negative value (discount) or positive value (surcharge).","type":"string"},"variation_type":{"title":"Variation Type","type":"string","description":"Type of variation.\n\nOnly `CART_DISCOUNT_*` and `PARTNER_DISCOUNT` can be set in the request, other variations will be automatically added based on your order and returned on every response. If you sent other variations in your request, they will be ignored.\n<details>\n  <summary>**Variation Types**</summary>\n\n * `PRODUCT_DYNAMIC` - In case of `product_dynamic_pricing:true` the price variation based on availability will be shown here.\n * `PRODUCT_DAILY` - In case of `product_daily_pricing:true` the price variation based on the day will be shown here.\n * `PRODUCT_QUANTITY` - In case of `product_quantity_pricing:true` the price variation based on the quantity will be shown here.\n * `PRODUCT_DISCOUNT` - In case a `product_type_discount` is set, the price variation will be shown here.\n * `PRODUCT_MARKUP` - TBA.\n * `PRODUCT_BUNDLE` - TBA.\n * `PRODUCT_COMBI_DISCOUNT` - Combi discount.\n * `PARTNER_DISCOUNT` - In case of partner sales, the guest discount or partner discount / commission can be set by the cashier.\n * `CART_DISCOUNT_FIXED` - Fixed cart discount set by the cashier. \n \n    This discount is pre-configured and must exist in our system prior to making the booking.\n * `CART_DISCOUNT_CUSTOM` - Custom cart discount set by the cashier. \n \n    This discount is dynamic, does not have to exist in our system and can be set to any allowed value.\n * `PRODUCT_CAMPAIGN` - Promo campaign.\n * `AMENDMENT_DISCOUNT`\n * `AMENDMENT_FEE`\n * `OTHER` - Any variation not matching the types above.\n \n</details>\n","enum":["PRODUCT_DYNAMIC","PRODUCT_DAILY","PRODUCT_QUANTITY","PRODUCT_DISCOUNT","PRODUCT_MARKUP","PRODUCT_BUNDLE","PRODUCT_CAMPAIGN","PRODUCT_COMBI_DISCOUNT","PARTNER_DISCOUNT","CART_DISCOUNT_FIXED","CART_DISCOUNT_CUSTOM","AMENDMENT_DISCOUNT","AMENDMENT_FEE","OTHER"]}},"required":["variation_amount","variation_type"]},"PromoCodePricing":{"title":"Promocode Pricing","description":"Promocode pricing.","type":"object","readOnly":true,"properties":{"promo_code":{"title":"Promocode","description":"The promocode.","type":"string"},"promo_amount":{"title":"Promo Amount","description":"The promo amount.","type":"string"}},"required":["promo_code","promo_amount"]},"ProductTax":{"title":"Product Tax","description":"Applied tax.","type":"object","readOnly":true,"required":["tax_id","tax_name","tax_amount"],"properties":{"tax_id":{"title":"Tax ID","type":"string","description":"Unique identifier of this tax configuration.","readOnly":true},"tax_name":{"title":"Tax Name","description":"Name of the tax.","type":"string","readOnly":true},"tax_price_type":{"title":"Tax Price Type","description":"Price level for which this tax is applicable.","type":"string","enum":["LIST_PRICE","SALES_PRICE","DISTRIBUTOR_PRICE","RESELLER_PRICE","MARKET_PRICE","SUPPLIER_PRICE"]},"tax_amount":{"title":"Tax Amount","description":"Amount of tax.","type":"string","readOnly":true},"tax_rate":{"title":"Tax Rate","description":"Tax rate (percentage).","type":"string","readOnly":true},"tax_lines":{"$ref":"#/components/schemas/TaxLines"}}},"TaxLines":{"title":"Tax Lines","type":"object","description":"Additional tax lines.","properties":{"tax_lines_id":{"title":"Tax Lines ID","description":"Tax lines ID.","type":"string"},"tax_line_name":{"title":"Tax Line Name","description":"Name of the tax line.","type":"string"},"tax_line_type":{"title":"Tax Line Type","type":"string","description":"Tax abbreviation."},"tax_line_rate":{"title":"Tax Line Rate","type":"string","description":"Tax rate (percentage)."},"tax_line_region":{"title":"Tax Line Region","description":"Country or State of the related tax authority.","type":"string"}}},"Fee":{"title":"Fee","description":"Fee details.","type":"object","readOnly":true,"required":["fee_type","fee_amount","fee_tax_id","fee_tax_amount","fee_included","fee_refundable"],"properties":{"fee_type":{"$ref":"#/components/schemas/FeeType"},"fee_amount":{"title":"Fee Amount","description":"The applicable fee amount, can either be a surcharge or discount.","type":"string","readOnly":true},"fee_percentage":{"title":"Fee Percentage","description":"Fee percentage.","type":"string"},"fee_tax_amount":{"title":"Fee Tax Amount","description":"Amount of tax.","type":"string","readOnly":true},"fee_included":{"title":"Fee Included","description":"Whether this is an additional fee that should be listed separately and included in the `price_total` or is part of a calculation, e.g. margin breakdown (informational only). ","type":"boolean","readOnly":true}}},"FeeType":{"title":"Fee Type","readOnly":true,"description":"Type of fee.\n\nFee Type:\n  * `SERVICE` - The service fee or margin for this transaction or product.\n  * `PARTNER` - The partner fee or margin for this transaction or product.\n  * `DISTRIBUTOR` - The distributor fee or margin for this transaction or product.\n  * `AFFILIATE` - The affiliate fee or margin for this transaction or product.\n  * `RESELLER` - The reseller fee or margin for this transaction or product.\n  * `MARKET_ADMIN` - The market admin fee or margin for this transaction or product.\n  * `PLATFORM` - The platform fee or margin for this transaction or product.\n  * `PAYMENT` - The payment fee for this transaction or product.\n  * `INSURANCE` - The insurance fee for this transaction or product.\n  * `CUSTOM` - Custom fee for this transaction, product or order.","type":"string","enum":["SERVICE","PARTNER","DISTRIBUTOR","AFFILIATE","RESELLER","MARKET_ADMIN","PLATFORM","PAYMENT","INSURANCE","CUSTOM"]},"Note":{"title":"Note","description":"Details on the note.","type":"object","properties":{"note_value":{"title":"Note Value","description":"Note value.","type":"string"},"note_created":{"title":"Note Date","description":"Creation / Modification date of the note.","type":"string","format":"date-time","readOnly":true},"note_recipients":{"title":"Note Recipients","description":"List of accounts that are able to view the note.","type":"array","items":{"title":"Note Recipient","type":"string","description":"Account type of the users receiving / being able to view the note. \n\nFor example when sending a note from the distributor to the supplier, this will indicate the recipient (supplier).\n<details>\n  <summary>**Account Types**</summary>\n  \n  * `GUEST` - Note visible to the guest.\n  \n  * `PARTNER` - Note visible to the partner.\n\n  * `SUPPLIER` - Note visible to the supplier.\n  \n  * `RESELLER` - Note visible to the reseller / supplier admin.\n  \n  * `DISTRIBUTOR` - Note visible to the distributor.\n  \n</details>\n","enum":["GUEST","PARTNER","SUPPLIER","RESELLER","DISTRIBUTOR"]}},"note_creator_account_type":{"title":"Note Creator Account Type","type":"string","description":"Account type of the user who created the note. \n\nFor example when sending a note from the distributor to the supplier, this will indicate the sender (e.g distributor).\n<details>\n  <summary>**Account Types**</summary>\n\n  * `GUEST` - Note created by the guest.\n  \n  * `PARTNER` - Note created by the partner.\n\n  * `SUPPLIER` - Note created by the supplier.\n  \n  * `DISTRIBUTOR` - Note created by the distributor.\n  \n  * `RESELLER` - Note created by the reseller / supplier admin.\n  \n  * `PLATFORM_ADMIN` - Note created by the platform-admin.\n  \n  * `SUPER_ADMIN` - Note created by the super-admin.\n\n</details>\n","enum":["GUEST","PARTNER","SUPPLIER","RESELLER","DISTRIBUTOR"]},"note_creator_user_name":{"title":"Note Creator User Name","type":"string","description":"Name of the user that created this note.","readOnly":true},"note_creator_user_email":{"title":"Note Creator User Email","type":"string","description":"Email of the user that created this note.","readOnly":true},"note_creator_user_role":{"title":"Note Creator User Role","type":"string","description":"Userrole (name) of the user that created this note.","readOnly":true}},"required":["note_value","note_recipients"]},"PickupPoint":{"title":"Pickup Point","description":"Information on a pickup point.","type":"object","properties":{"pickup_point_id":{"title":"Pickup Point ID","description":"Pickup point ID.","type":"string"},"pickup_point_name":{"title":"Pickup Point Name","description":"Pickup point name / label.","type":"string","readOnly":true},"pickup_point_type":{"$ref":"#/components/schemas/PickupPointType"},"pickup_point_description":{"title":"Pickup Point Description","description":"Pickup point description.","type":"string","readOnly":true},"pickup_point_location":{"title":"Pickup Point Location","description":"Reference to the location details.","type":"string","readOnly":true},"pickup_point_time":{"title":"Pickup Point Time","description":"Time of pickup.","type":"string","format":"time"},"pickup_point_times":{"title":"Pickup Point Times","description":"Times available to select for this pickup point.","type":"array","items":{"title":"Pickup Point Time","description":"Time of pickup.","type":"string","format":"time"}},"pickup_point_duration":{"title":"Pickup Point Duration","description":"Duration of the pickup in minutes.","type":"integer","readOnly":true},"pickup_point_availability_dependency":{"title":"Pickup Point Availability Dependency","description":"Dependency on the selected `availability_slot`.\n\nThe selected (`pickup_point_time` + `pickup_point_duration`) is not allowed to exceed the selected `availability_from_date_time` and therefore only a limited amount of `pickup_point_times` should be shown.","type":"boolean","readOnly":true}},"required":["pickup_point_id","pickup_point_name"]},"PickupPointType":{"title":"Pickup Point Type","description":"Type of pickup point.\n\nPickup Point Type:\n  * `FIXED` - Fixed, pre-defined pickup point.\n   \n  * `CUSTOM` - Custom pickup point.","type":"string","enum":["FIXED","CUSTOM"]},"ProductAdmissionType":{"title":"Product Admission Types","type":"string","readOnly":true,"enum":["TIME_PERIOD","TIME_DATE","TIME_POINT","TIME_SLOT","TIME_OPEN"],"description":"<details>\n  <summary>**Product Admission Types**</summary>\n  \n* `TIME_PERIOD` - Customers can arrive at any time between the start (`availability_from_date_time`) and end time (`availability_to_date_time`) of the availability slot. Multiple periods in a single day should be expected.\n  Therefore a date- and timepicker should be shown.\n\n* `TIME_DATE` - Variation on `TIME_PERIOD`, whereas only a single period exists in a day. It is not required to choose between different times within a day, therefore only a datepicker is required.\n  Note that in case the slot includes midnight (two or more days), the day from which the `availability_from_date_time` originated should take precedence.\n\n* `TIME_POINT` - Customers are required to be present at the start time of the availability slot but can leave any time they want.\n* `TIME_OPEN` - Customers can arrive at any time. Availablity is not applicable.\n* `TIME_SLOT` - Customers are required to be present at the start time of the availability slot, and the service is expected to finish at the end time of the slot. </details>\n"},"ProductClass":{"title":"Product Class","type":"string","readOnly":true,"description":"<details>\n  <summary>**Product Classes**</summary>\n  \n  * `STANDARD` - Product types in the standard class are the most common and are supported by almost all systems.\n  \n  * `COMBI` - Product is a combi-product. This product is the main combi product and is not bookable on its own. All of the sub-products linked to this combi should be booked as well. These products are listed inside `product_combi_details`.\n  \n  * `CLUSTER` - Product is a cluster-product. This product is the main cluster product and is not bookable. One of the sub-products linked to this cluster should be booked instead. These products are listed inside `product_cluster_details`.\n  \n  * `MERCHANDISE` - \n  \n  * `BUNDLE` - Product is a bundle-product. This product is the main bundle product and is not bookable on its own. All of the sub-products linked to this bundle should be booked as well. These products are listed inside `product_bundle_details`.\n  \n  * `ADDON` - \n  \n  * `OTHER` - Products in the other/custom class are completely dynamic.\n\n</details>\n","enum":["STANDARD","COMBI","CLUSTER","MERCHANDISE","BUNDLE","ADDON","OTHER"]},"BookingExtraOptions":{"title":"Booking Extra Options","deprecated":true,"description":"The product options booked. In case any of the booked product options are listed as `option_mandatory:true` you are required to fill in this field.\n\nIf you book `product_options` which are priced based on product type (`option_price_type:PRODUCT_TYPE`) then all booked options will return with their actual prices.\n","type":"object","properties":{"option_id":{"title":"Option ID","description":"Option ID.","type":"string"},"option_count_visible":{"title":"Option Count Visible","description":"Whether the selected quantity should be visible in the cart or shown as combined single price.","type":"boolean"},"option_discount_applicable":{"title":"Option Discount Applicable","description":"Whether any cart or promotional discounts apply on this option.","type":"boolean"},"option_values":{"title":"Option Values","description":"Option values.","type":"array","items":{"$ref":"#/components/schemas/BookingExtraOptionDetails"}}},"required":["option_id"]},"BookingExtraOptionDetails":{"title":"Booking Extra Option Details","description":"Booking extra option details.","type":"object","allOf":[{"$ref":"#/components/schemas/ExtraOptionValue"},{"type":"object","properties":{"value_discount_price":{"title":"Value Discount Price","description":"Optionally returned value_discount_price if discount apply on option value.","type":"string","readOnly":true},"value_count":{"title":"Value Count","description":"Value count.","type":"integer","minimum":0,"maximum":500}},"required":["value_count"]}]},"ExtraOptionValue":{"title":"Extra Option Value","description":"Extra option value.","type":"object","properties":{"value_id":{"title":"Value ID","description":"Value ID.","type":"string"},"value_name":{"title":"Value Name","description":"(Translatable) Value name.","type":"string","readOnly":true},"value_price":{"title":"Value Price","description":"The price of this value. In case `option_price_type:PRODUCT_TYPE` then this field will be undefined on `product_options` level.","type":"string","readOnly":true},"value_cost_price":{"title":"Value Cost Price","description":"The cost price of this value.","type":"string","readOnly":true},"value_percentage":{"title":"Value Percentage","description":"Optionally returned if `value_price` is percentage based.","type":"string","readOnly":true},"value_price_tax_id":{"title":"Value Price Tax ID","description":"Tax ID for this product option value. Tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_price_tax_amount":{"title":"Value Price Tax Amount","description":"Amount of tax applied for this product option value. Additional tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_price_tax_rate":{"title":"Value Price Tax Rate","description":"Tax rate applied for this product option value. Additional tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_product_type_id":{"title":"Value Product Type ID","description":"Returned in case this value / option is only applicable to a specific product type (`option_price_type:PRODUCT_TYPE`).","type":"string","readOnly":true}},"required":["value_id"]},"ProductSubDetail":{"title":"Product Sub Detail","description":"Product sub detail.","type":"object","properties":{"product_parent_id":{"title":"Product Parent ID","description":"Unique identifier for the parent product assigned by Prio.","type":"string","readOnly":true},"product_id":{"title":"Product Sub ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_title":{"title":"Product Title","description":"The title of product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_source_id":{"title":"Product Source ID","type":"string","description":"Unique ID of the product source.","readOnly":true},"product_source_name":{"title":"Product Source Name","type":"string","description":"Source of the product. \n\nEither PrioTicket or the name of the other reservation system e.g. CSS.","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_currency_code":{"title":"Product Currency Code","description":"Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).","type":"string","readOnly":true},"product_availability_id":{"title":"Product Combi Availability ID","description":"The unique ID for the availability slot. Only mandatory if `product_availability:true`","type":"string"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_capacity_id":{"title":"Availability Slot Capacity ID","description":"Availability group / capacity identifier.","type":"string","readOnly":true},"product_availability_capacity_shared_id":{"title":"Availability Slot Shared Capacity ID","description":"Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.","type":"string","readOnly":true},"product_type_details":{"title":"Product Type Booking Details","description":"A list specifying the booking quantity per product type. Only returned for bundle products.","type":"array","items":{"$ref":"#/components/schemas/BookingItemWithPricing"}},"booking_travel_date":{"title":"Booking Combi Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.","type":"string","format":"date-time"},"booking_reference":{"title":"Booking Reference","type":"string","description":"Unique reference for this sub-booking.","readOnly":true},"booking_external_reference":{"title":"Booking External Reference","description":"A unique booking identifier within the external system.","type":"string"}},"required":["product_parent_id","product_id","product_title","product_supplier_id","product_supplier_name","product_admission_type","product_currency_code"]},"BookingItemWithPricing":{"title":"Regular Booking Item","description":"Regular booking item.","type":"object","allOf":[{"$ref":"#/components/schemas/BookingItem"},{"type":"object","properties":{"product_type_pricing":{"$ref":"#/components/schemas/Pricing"}}}]},"BookingItem":{"title":"Booking Item","description":"Reference to the specific type / configuration of the product.","type":"object","properties":{"product_type":{"$ref":"#/components/schemas/ProductType"},"product_type_class":{"$ref":"#/components/schemas/ProductTypeClass"},"product_type_id":{"title":"Product Type ID","type":"string","description":"In case of more complex product configurations e.g. multiple ambiguous product types, the preferred option must be specified using the ID."},"product_type_label":{"title":"Product Type Label","description":"(Translatable) The product type label.","type":"string","readOnly":true},"product_type_age_from":{"title":"Product Type Age From","description":"The starting age for age group.","readOnly":true,"type":"integer","multipleOf":1},"product_type_age_to":{"title":"Product Type Age To","description":"The ending age for age group.  If both `product_type_age_from` and `product_type_age_to` are empty no age-restrictions should be shown. If only `product_type_age_to` is empty, then it is advised to show the age-restriction as e.g. \"22+\".\n","type":"integer","readOnly":true,"multipleOf":1},"product_type_count":{"title":"Product Type Count","description":"The quantity being booked for the specified product type.\n\nPlease note that the following structures are deemed semantically the same.\n```\n\"product_type_details\":[\n  {\n     \"product_type_id\":\"13725\",\n     \"product_type_count\":\"2\"\n  }\n]\n\nand\n\n\"product_type_details\":[\n  {                     \n     \"product_type_id\":\"13725\",   \n     \"product_type_count\":1   \n  },\n  {       \n     \"product_type_id\":\"13725\",    \n     \"product_type_count\":1     \n  }\n]\n```\nWe allow this 'alternative format' for 'ease-of-use'. Please note that in the order response we have no other option than to 'split' the product types, otherwise, we would not be able to send multiple codes (single `product_type_code` per pax/piece) in the response.\n","type":"integer","minimum":1,"maximum":500,"multipleOf":1},"product_type_pax":{"title":"Product Type Pax","description":"Number of persons to be counted in the reporting for the selected product type quantity.","type":"integer","readOnly":true,"minimum":0},"product_type_capacity":{"title":"Product Type Capacity","type":"integer","readOnly":true,"minimum":0,"description":"The capacity count to be blocked in the system for the selected availability slot.\n\nFor example:\n\nIf a single table with six seats is booked by two persons, the setup would be as follows:\n\n  ```\n  \"product_type_count\": 1,\n  \"product_type_pax\": 2,\n  \"product_type_capacity\": 6\n  ```\n"},"product_type_spots":{"title":"Product Type Spots","description":"Product type spots.","type":"array","minItems":1,"items":{"$ref":"#/components/schemas/Spot"}},"product_type_code":{"title":"Product Type Code","description":"The product code allocated by Prio to redeem products.","type":"string"}},"required":["product_type_id","product_type","product_type_count","product_type_pax"]},"ProductType":{"title":"Product Type","type":"string","description":"Each product contains product types. These product types can offer aged based ticketing (such as Adult and Child), but also provide a variety of other flexible product variations such as group pricing, business and economy seating or different car configurations.\n\nBecause some products might behave different from others, each product type is categorized within a product class; a group of products that behaves similarly.\n<details>\n  <summary>**Product Types**</summary>\n\n  * Class Standard:\n    \n    Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.\n    \n    Tour and experience providers have the flexibility to vary prices and apply different rules based on the age of their customers. This means they can charge full ticket prices for adults while offering discounted rates for children, or they may have specific requirements such as requiring at least one adult for every group of children booking a tour.\n    \n    During the process of checking prices and proceeding to checkout, customers should be able to select the number of individuals from each available age group for their booking.\n  \n    * `ADULT` - Adult.\n    \n    * `CHILD` - Child.\n    \n    * `SENIOR` - Senior.\n    \n    * `YOUTH` - Youth.\n        \n    * `INFANT` - Infant.\n    \n  * Class Individual:\n  \n    Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.\n    \n    * `PERSON` - Person.\n    \n    * `STUDENT` - Student.\n    \n    * `RESIDENT` - Resident.\n    \n    * `MILITARY` - Military.\n    \n    * `IMPAIRED` - Impaired.\n  \n  * Class Item:\n  \n    Product types in the item class do not refer to actual persons, instead they could, for example, be packages (Regular, Silver, Diamond), objects (Merchandise, private tours), a type of event, class identifier (Economy, Business) and much more.\n  \n    * `ITEM` - Item.\n    \n  * Class Group:\n   \n    Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.\n    \n    * `GROUP` - Group.\n    \n    * `FAMILY` - Family.\n    \n  * Class Custom:\n  \n    Product types in the custom class are completely dynamic and therefore require explicit mapping with external systems. They do not return as `CUSTOM`, instead they can take any form.\n    \n    * `CUSTOM` - Custom.\n    \n</details>\n","enum":["ADULT","CHILD","SENIOR","YOUTH","INFANT","PERSON","STUDENT","RESIDENT","MILITARY","IMPAIRED","ITEM","GROUP","FAMILY","CUSTOM"]},"ProductTypeClass":{"title":"Product Type Class","type":"string","readOnly":true,"description":"<details>\n  <summary>**Product Type Classes**</summary>\n  \n  * `STANDARD` - Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.\n  \n  * `INDIVIDUAL` - Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.\n  \n  * `ITEM` - Product types in the item class do not refer to actual persons, instead they could, for example, be packages (Regular, Silver, Diamond), objects (Merchandise, private tours), a type of event, class identifier (Economy, Business) and much more.\n  \n  * `GROUP` - Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.\n  \n  * `CUSTOM` - Product types in the custom class are completely dynamic and therefore require explicit mapping with external systems. They do not return as CUSTOM, instead they can take any form.\n\n</details>\n","enum":["STANDARD","INDIVIDUAL","ITEM","GROUP","CUSTOM"]},"Spot":{"title":"Spot","type":"object","description":"Information on the selected spot. Only applicable if PrioSeating is being used (`product_availability_assigned:true`).\n","properties":{"spot_name":{"title":"Spot Name","type":"string","description":"Spot name.","readOnly":true},"spot_section":{"title":"Spot Section","type":"string","description":"Name of the section. Only applicable if the product has sections."},"spot_row":{"title":"Spot Row","type":"string","description":"The row the spot resides in."},"spot_number":{"title":"Spot Number","description":"The spot number.","type":"string"}},"required":["spot_state"]},"ProductAddonDetail":{"title":"Product Addon Detail","description":"Product Addon detail.","type":"object","properties":{"product_id":{"title":"Product Sub ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_title":{"title":"Product Title","description":"The title of product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"booking_travel_date":{"title":"Booking Combi Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.","type":"string","format":"date-time"},"booking_order_reference":{"title":"Booking Order Reference","description":"Booking order reference","type":"string"},"booking_reference":{"title":"Booking Reference","description":"A unique booking identifier within the system.","type":"string"},"booking_status":{"$ref":"#/components/schemas/BookingStatusTypes"}},"required":["product_id","product_title","product_supplier_id","product_supplier_name","product_admission_type"]},"ContactDetails":{"title":"Contact Details","description":"Information on the contact.","type":"object","properties":{"contact_uid":{"title":"Contact User Identifier","description":"A unique contact identifier created by Prio. \n\nIn case this field is left blank, a new contact will be created in the system. If you pass an already existing `contact_uid`, those contact details will be  used and linked to the current/future order. In this case all other fields will be ignored.\n> Only applicable for partners using the Contacts Module (Returning guests). For regular transactions this parameter can be safely ignored.","type":"string","format":"uuid"},"contact_external_uid":{"title":"Contact External User Identifier","description":"Unique external identifier of the contact.","type":"string"},"contact_version":{"title":"Contact Version","description":"Contact version; every time the contact details are updated, a new version is registered.","type":"integer","readOnly":true,"default":1,"multipleOf":1},"contact_number":{"title":"Contact Number","description":"Number of the contact.","type":"string","maxLength":50},"contact_type":{"$ref":"#/components/schemas/ContactType"},"contact_title":{"title":"Contact Title","description":"Title prefix of the contact (Mister / Miss / Misses etc).","type":"string"},"contact_name_first":{"title":"Contact First Name","description":"First name of the contact.","type":"string","maxLength":255},"contact_name_last":{"title":"Contact Last Name","description":"Surname of the contact. If you only have the fullname, we recommend sending it as `contact_name_last` and leaving the `contact_name_first` blank.","type":"string","maxLength":255},"contact_email":{"title":"Contact Email","description":"Email address of the contact.","type":"string","format":"email"},"contact_phone":{"title":"Contact Phone","description":"Must be a valid E.164 spec compliant phone number.","type":"string","format":"phone"},"contact_mobile":{"title":"Contact Phone","description":"Must be a valid E.164 spec compliant phone number.","type":"string","format":"phone"},"contact_language":{"title":"Contact Language","type":"string","description":"Language and culture code of the contact preferred language ([ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1))."},"contact_nationality":{"title":"Contact Nationality","description":"Country code of the contact ([ISO-3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)).","type":"string"},"contact_flight_number":{"title":"Contact Flight Number","description":"Contact Flight Number.","type":"string"},"contact_loyalty_number":{"title":"Contact Loyalty Number","description":"Contact Loyalty Number.","type":"string"},"contact_birth_place":{"title":"Contact Birth Place","description":"Place of birth.","type":"string"},"contact_birth_date":{"title":"Contact Birth Date","description":"Date of birth.","type":"string","format":"date"},"contact_passport":{"title":"Contact Passport","description":"Passport details of the contact.","type":"string"},"contact_gender":{"title":"Contact Gender","description":"Gender of the contact.","type":"string","enum":["MALE","FEMALE","OTHER"]},"contact_age":{"title":"Contact Age","description":"Age of the contact.","type":"integer","maximum":150},"contact_room_number":{"title":"Contact Room Number","description":"Contact room number.","type":"string"},"contact_website":{"title":"Contact Website","description":"Contact website.","type":"string","format":"URI"},"contact_company":{"$ref":"#/components/schemas/ContactCompany"},"contact_classification":{"$ref":"#/components/schemas/ContactClassification"},"contact_address":{"$ref":"#/components/schemas/AddressModel"},"contact_notes":{"title":"Contact Notes","description":"Contact notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"contact_custom_fields":{"title":"Contact Custom Fields","description":"Freeform entry of any key-value pair.","type":"array","items":{"$ref":"#/components/schemas/CustomField"}},"contact_created":{"title":"Contact Created","description":"Creation date and time of the contact.","type":"string","format":"date-time","readOnly":true},"contact_modified":{"title":"Contact Modified","description":"Last update date and time of the contact.","type":"string","format":"date-time","readOnly":true}},"required":["contact_created","contact_modified"]},"ContactType":{"title":"Contact Type","description":"Type of contact.\n\nSome supplier systems do not support multiple contacts per orders. In that case we have the following policy:\n1. If set, we sent `contact_type:BOOKER`.\n2. Otherwise, if set, we sent the first `contact_type:CONTACT`.\n3. If both are not set, we sent the first contact in the array.\n\n<details>\n  <summary>**Contact Types**</summary>\n\n* `BOOKER` - Main Booker details (End-consumer). Only a single main booker is recommended. \n  \n  This is the most common type of contact, as it contains information about the person / entity who made the booking.\n  \n  > Any automated emails such as order confirmations will be sent to this contact type. \n\n* `CONTACT` - General, non-specific contact. \n\n  Only use this type if a more specific classification is unknown.\n\n* `GUEST` - Guest / End-consumer / Passenger linked to the booking.\n\n  Defining the guests per booking allows for advanced functionality such as Check-In and passenger management.\n\n* `PARTNER` - Partner details.\n* `STAFF` - General staff.\n* `CASHIER` - Cashier performing the sales.\n* `PAYMENT` - Billing / Financial contact. \n\n  > Payment emails will be sent to this contact type by default.\n\n* `AGENT` - Agent details.\n* `EMERGENCY` - Emergency contact (Guest, host, family member etc.).\n* `GUIDE` - Teacher / Instructor / Guide details.\n* `SUPPLIER` - Supplier details.\n* `VENUE` - Venue details.\n* `HOST` - Host details.\n* `COMPANY` - (Guest) company details.\n* `DELIVERY` - (Guest) Delivery / Shipping contact / address details.\n* `MANAGER` - (UPCOMING) Manager contact.\n* `SUPPORT` - (UPCOMING) Support contact.\n* `INSTRUCTOR` - (UPCOMING) Instructor contact.\n* `OTHER` - Other type of contact, not mentioned above.\n</details>","type":"string","default":"CONTACT","enum":["BOOKER","CONTACT","GUEST","PARTNER","STAFF","CASHIER","PAYMENT","AGENT","EMERGENCY","GUIDE","SUPPLIER","VENUE","HOST","COMPANY","DELIVERY","OTHER"]},"ContactCompany":{"title":"Contact Company","description":"Contact company details.","type":"object","properties":{"company_name":{"title":"Company Name","description":"Company name.","type":"string"},"company_registration_number":{"title":"Company Registration Number","description":"Company registration number.","type":"string"},"company_tax_number":{"title":"Company Tax Number","description":"Company tax number.","type":"string"}}},"ContactClassification":{"title":"Contact Classification","description":"Contact classification.","type":"string","enum":["IMPORTANT","VERY_IMPORTANT","PROBLEMATIC","DISABLED_PERSON","TOP_MANAGEMENT","STAFF","LOYALTY_PROGRAM","MEDIA","FRIEND_OR_FAMILY","RETURNING","PERSONAL","BUSINESS"]},"AddressModel":{"title":"Address Model","type":"object","description":"Address details.","properties":{"id":{"title":"Address ID","type":"string","format":"uuid","deprecated":true,"readOnly":true,"description":"Unique address identifier."},"name":{"title":"Address Name","description":"Name / Label of this address / addressee.","type":"string"},"street":{"title":"Address Street","description":"Address line 1 / Street.","type":"string"},"addition":{"title":"Address Addition","description":"Additional address line 2.","type":"string"},"city":{"title":"Address City","description":"Town / City / Village.","type":"string"},"postal_code":{"title":"Address Postal Code","description":"Address postal code.","type":"string"},"region":{"title":"Address Region","description":"State / Province / Region.","type":"string"},"country":{"title":"Address Country","description":"Address country.","type":"string"},"country_code":{"title":"Address Country Code","description":"Returns country code of the product ( [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2))","type":"string"},"place_id":{"title":"Address Google Place ID","description":"Google Place ID","type":"string"},"latitude":{"title":"Address Latitude","description":"Address latitude.","type":"string"},"longitude":{"title":"Address Longitude","description":"Address longitude.","type":"string"},"notes":{"title":"Address Note","description":"Address note.","type":"string"}}},"CustomField":{"title":"Custom Field","type":"object","description":"Custom Fields allow you to store and list any arbitrary value in the system.\n\nThis metadata are data elements that you create yourself. When you add metadata to your request, they are echoed in the response so that you can connect the transaction to your metadata. For example, to add a shift number and an employee ID to a transaction. You are free to create metadata fields, even encoded, as long as the datatype is a string.","properties":{"custom_field_name":{"title":"Custom Field Name","type":"string","description":"Unique Name / Identifier for this field."},"custom_field_value":{"title":"Custom Field Value","type":"string","description":"Freeform value of this field."},"custom_field_type":{"$ref":"#/components/schemas/CustomFieldType"}}},"CustomFieldType":{"title":"Custom Field Type","type":"string","deprecated":true,"description":"Custom Field Type:\n  * `SYSTEM` - This field is only stored and returned in the API. Only visible to the system.\n  * `USER` - This value is stored and visualized, can be shown in a customized fashion in other modules.","enum":["SYSTEM","USER"]},"CheckoutField":{"title":"Checkout Field","description":"Checkout field shown on the checkout screen.","type":"object","properties":{"checkout_field_id":{"title":"Checkout Field ID","description":"Unique Checkout Field ID.","type":"string"},"checkout_field_title":{"title":"Checkout Field Title","type":"string","readOnly":true},"checkout_field_label":{"title":"Checkout Field Label","type":"string","readOnly":true},"checkout_field_place_holder":{"title":"Checkout Field Placeholder","type":"string","readOnly":true},"checkout_field_help_text":{"title":"Checkout Field Help Text","type":"string","readOnly":true},"checkout_field_account_type":{"title":"Checkout Field Account Type","description":"Whether this field is required by the venue (supplier) or the seller (distributor).","type":"string","readOnly":true,"enum":["SUPPLIER","DISTRIBUTOR"]},"checkout_field_booking_reference":{"title":"Checkout Field Booking Reference","type":"array","items":{"type":"string"}},"checkout_field_restriction":{"title":"Checkout Field Restriction","description":"Whether a field is required, optional or recommended. Mandatory fields must be filled during order checkout, otherwise the order will be rejected.","type":"string","readOnly":true,"enum":["REQUIRED","OPTIONAL","RECOMMENDED"]},"checkout_field_level":{"title":"Checkout Field Level","description":"Whether answers should be provided once or for each participant.","type":"string","readOnly":true,"enum":["PRODUCT","PARTICIPANT"]},"checkout_field_unit":{"title":"Checkout Field Unit","type":"string"},"checkout_field_input_type":{"title":"Checkout Field Input Type","type":"string","readOnly":true,"description":"* `SINGLE` - Single option value is available.\n* `RADIO` - Customer can select only one out of multiple option values.\n* `CHECKBOX` - Customers can select one or more option values.\n* `SHORT_ANSWER` - A one-line input field for text. (UPCOMING)\n* `PARAGRAPH` - A multi-line input field for text. (UPCOMING)\n* `DROPDOWN` - A selection from a dropdown. (UPCOMING)\n* `BOOLEAN` - A yes/no button. (UPCOMING)\n* `PHONE` - A phonenumber. (UPCOMING)\n* `EMAIL` - An email. (UPCOMING)\n* `DATE` - A date. (UPCOMING)\n* `TIME` - A time. (UPCOMING)\n* `DATETIME` - A date and time. (UPCOMING)\n* `NUMBER` - A number. (UPCOMING)\n* `LOCATION_SEARCH` - A search widget that supports finding matched location given user input from provided location list. (UPCOMING)\n* `CONSENT` - A consent section that requires opt-in.\n","enum":["SINGLE","RADIO","CHECKBOX","SHORT_ANSWER","PARAGRAPH","DROPDOWN","BOOLEAN","PHONE","EMAIL","DATE","TIME","DATETIME","NUMBER","LOCATION_SEARCH","CONSENT"]},"checkout_field_type":{"title":"Checkout Type","description":"Which field the restriction applies on.","type":"string","readOnly":true,"enum":["contact_title","contact_name_first","contact_name_last","contact_email","contact_confirm_email","contact_phone","contact_mobile","contact_language","contact_nationality","contact_country_residence","contact_birth_place","contact_birth_date","contact_passport","contact_passport_expiry","contact_age","contact_address","contact_address_1","contact_address_2","contact_address_postal_code","contact_address_city","contact_address_state","contact_address_country","contact_height","contact_weight","contact_type_company","contact_type_guest","contact_type_booker","contact_company_name","contact_company_address_1","contact_company_address_2","contact_company_postal_code","contact_company_city","contact_company_state","contact_company_country","SYSTEM","CUSTOM"]},"checkout_field_options":{"title":"Checkout Field Options","description":"In case of `checkout_field_input_type:RADIO/CHECKBOX/DROPDOWN`, one or more options should be selected.\n","type":"array","items":{"$ref":"#/components/schemas/CheckoutFieldOption"}},"checkout_field_values":{"title":"Checkout Field Values","description":"Checkout field input/selected values.","type":"array","items":{"$ref":"#/components/schemas/CheckoutFieldValue"}},"checkout_field_created":{"title":"Checkout Field Created","description":"Checkout field creation datetime.","type":"string","readOnly":true,"format":"date-time"}}},"CheckoutFieldOption":{"title":"Checkout Field Option","description":"Checkout field option.","type":"string"},"CheckoutFieldValue":{"title":"Checkout Field Value","description":"Checkout field value/answer.","type":"object","properties":{"checkout_field_value_product_type":{"title":"Checkout Field Value Product Type","description":"Restricts the checkout field selection to a specific product type.","type":"string"},"checkout_field_value":{"title":"Checkout Field Value","description":"Selected / Input value(s) of checkout field. Should be \"true\"\" in case of Boolean type, can be array in case of multi-select.","type":"array","items":{"title":"Checkout Field Entry","description":"Checkout field entry.","type":"string"}},"checkout_field_value_transaction_reference":{"title":"Checkout Field Value Transaction Reference","description":"Restricts the checkout field selection to a specific transaction.","type":"string"}}},"AppliedPromocode":{"title":"Applied Promocode","description":"Details on the applied promocode.","type":"object","properties":{"promo_title":{"title":"Promo Title.","description":"Title of applied promocode.","type":"string"},"promo_description":{"title":"Promo Description","description":"Promo description.","type":"string"},"promo_code":{"title":"Promocode","description":"Promocode.","type":"string"}},"required":["promo_title","promo_code"]},"PaymentDetails":{"title":"Payment Details","description":"Details on the payment(s). In case the payment is not made directly at booking, these details might not yet be available.","type":"object","required":["payment_id","payment_merchant_reference","payment_status","payment_method","payment_type","payment_recurring","payment_gateway_type","payment_currency_code","payment_amount","payment_total","payment_created","payment_created_name","payment_created_email"],"properties":{"payment_id":{"title":"Payment ID","description":"Unique Payment ID set by the Prio system. This is an internal identifier.","type":"string","format":"uuid","readOnly":true},"payment_original_id":{"title":"Payment Original ID","description":"In case of a modification (refund, capture after authorization) this will be the `payment_id` of the original record.","type":"string","format":"uuid","readOnly":true},"payment_partner_id":{"title":"Payment Partner ID","description":"Payment partner identifier.","type":"string"},"payment_merchant_reference":{"title":"Payment Merchant Reference","description":"Unique (external) payment reference set by the merchant / (third) party / POS system initiating the payment. This reference will also be used to identify the payment in the PSP system.","type":"string"},"payment_external_reference":{"title":"Payment External Reference","description":"External payment reference set to identify the shopper / entity / cardholder / guest performing the payment. This reference can also be used to identify the payment in the PSP system.","type":"string"},"payment_order_reference":{"title":"Payment Order Reference","description":"The `order_reference` linked to this payment.","type":"string"},"payment_booking_references":{"title":"Payment Bookings References","description":"The booking references linked to this payment. Only returned in case of partial payment (pay per booking).","type":"array","readOnly":true,"items":{"title":"Booking Reference","description":"The `booking_reference` linked to this payment.","type":"string"}},"payment_order_version":{"title":"Payment Order Version","description":"Version of the order (`order_version`) during the payment.","type":"integer","readOnly":true},"payment_status":{"$ref":"#/components/schemas/PaymentStatus"},"payment_method":{"$ref":"#/components/schemas/PaymentMethod"},"payment_scheme":{"$ref":"#/components/schemas/PaymentScheme"},"payment_type":{"$ref":"#/components/schemas/PaymentType"},"payment_link":{"title":"Payment Link","description":"Only applicable in case the PSP only supports payment via Hosted Payment Page Link or `payment_method:LINK`.","type":"string","readOnly":true,"format":"URI"},"payment_link_expires_at":{"title":"Payment Link Expiry","description":"Date and time when the payment link expires. In case of pre-payment this value will be the `reservation_valid_until`.","type":"string","readOnly":true,"format":"date-time"},"payment_recurring":{"title":"Payment Recurring","description":"Whether the payment details are stored for recurring payments.","type":"boolean","default":false,"readOnly":true},"payment_recurring_type":{"$ref":"#/components/schemas/PaymentRecurringType"},"payment_class":{"$ref":"#/components/schemas/PaymentClass"},"payment_refund_type":{"$ref":"#/components/schemas/RefundType"},"payment_refund_reason":{"title":"Payment Refund Reason","description":"Reason of refund.\n\nOnly applicable in case `payment_type:REFUND`.","type":"string"},"payment_currency_code":{"title":"Payment Currency Code","description":"The (guest) currency code of this payment. According to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).\n\n**(ADVANCED)**\nThis value defaults to `order.order_pricing[].price_currency_code`, unless the guest uses an alternative checkout currency, in which case an additional `payment_currency_rate` and `payment_currency_amount` will be returned.\n\nNote that the payment service provider can perform an additional conversion called dynamic currency conversion (DCC), which will be returned inside `payment_gateway_additional_values`.","type":"string"},"payment_currency_rate":{"title":"Payment Currency Rate","description":"Checkout / Guest currency conversion rate. \n\nIf not set and an alternative `payment_currency_code` is provided, the latest rates from the Currency API will be used as default.\n\n> Alternative rates can only be provided on (re)sales, purchase exchange rates are fixed.","type":"string"},"payment_currency_amount":{"title":"Payment Currency Amount","description":"The total amount / value that has been authorised / settled / refunded in the alternative (guest) currency (`payment_amount` * `payment_currency_rate`).","type":"string","readOnly":true},"payment_amount":{"title":"Payment Amount","description":"The amount authorised / settled / refunded during this transaction in the base (order) currency.\n\nIn case of refunds, this value will be a positive value but the payment type will be set to `payment_type:REFUND`.","type":"string","readOnly":true},"payment_total":{"title":"Payment Running Total","description":"The actual total amount that is (already) authorised / settled in the base (order) currency. This will be a running sum of all (previous) payment (`payment_amount`) transactions linked to this order. Refunds will be subtracted from the total.","type":"string","readOnly":true},"payment_gateway_details":{"$ref":"#/components/schemas/PaymentGatewayDetails"},"payment_contact":{"$ref":"#/components/schemas/ContactDetails"},"payment_notes":{"title":"Payment Notes","description":"Payment notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"payment_created":{"title":"Payment Create Date","description":"Date and time of payment.","type":"string","format":"date-time","readOnly":true},"payment_created_name":{"title":"Payment Created Name","description":"Cashier name / Username who created the payment.","type":"string","readOnly":true},"payment_created_email":{"title":"Payment Created Email","description":"Cashier email / User email who created the payment.","type":"string","format":"email","readOnly":true}}},"PaymentStatus":{"title":"Payment Status","description":"Status of guest payment.\n\n<details>\n  <summary>**Payment Statuses**</summary>\n\n * `PAID` (string) - Payment is authorized and settled / captured. This state serves as an indicator to proceed.\n \n    > If `SettlementType:EXTERNAL`, then the order will be automatically PAID upon Order Confirmation.\n * `AUTHORIZED` (string) - Payment has been authorized and can be charged / settled later. The payment is approved by the financial institution. This state serves as an indicator to proceed.\n * `PROCESSING` (string) - Payment is being processed, this is a temporary state. \n * `IN_PROGRESS` (string) - Payment flow has been initiated and is in progress, this is a temporary state. \n * `PENDING` (string) - Payment is pending. This is the initial state for most payments. Initiate a new payment via the Make Payment API.\n \n    > If `SettlementType:EXTERNAL`, then no further action is required.\n * `REFUNDED` (string) - Payment has been refunded / reimbursed. Please consult `payment_refund_type` for more details.\n * `REFUSED` (string) - Payment was refused during last attempt. Please consult your Payment Service Provider for more details. Initiate a new payment via the Make Payment API.\n * `CANCELLED` (string) - Payment has been cancelled during the last attempt or prior to the capture of an authorized payment. Initiate a new payment via the Make Payment API.\n * `ERROR_REFUND` (string) - Payment error occurred during last attempt. Initiate a new refund via the Refund Payment API.\n * `ERROR_PAYMENT` (string) - Payment error occurred during last payment attempt. Initiate a new payment via the Make Payment API.\n * `PARTIAL_PAID` (string) - Payment is partially paid.\n * `PARTIAL_REFUND` (string) - Payment is partially refunded.\n * `CHARGEBACK` (string) - Payment funds are returned to the guest due to a chargeback. Please consult your Payment Service Provider for more details.\n * `EXPIRED` (string) - The payment term has expired. This can happen if for example the authorization deadline has passed.\n * `NOT_REQUIRED` (string) - Payment is not required / applicable. This state serves as an indicator to proceed.\n \n</details>\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"string","readOnly":true,"default":"PENDING","enum":["PAID","AUTHORIZED","PROCESSING","IN_PROGRESS","PENDING","REFUNDED","REFUSED","CANCELLED","ERROR","ERROR_REFUND","ERROR_PAYMENT","PARTIAL_PAID","PARTIAL_REFUND","CHARGEBACK","EXPIRED","NOT_REQUIRED"]},"PaymentMethod":{"title":"Payment Method","description":"Payment method / type used.\n\nMore specific details might be available in `PaymentScheme` after payment.\n<details>\n  <summary>**Payment Methods**</summary>\n\n * `ONLINE` (string) - Accept payments with cards, wallets, and key local payment methods on your website and mobile app.\n * `TERMINAL` (string) - Accept payments with in-store or stand-alone POS terminals.\n * `LINK` (string) - Set payment link, often redirecting to a Hosted Payment Page (HPP). \n * `CASH` (string) - Accept cash payment.\n * `GUEST_BILL` (string) - Charge guest bill.\n * `RECURRING` (string) - Recurring payment.\n * `EXTERNAL` (string) - Payment made outside the client / Prio system.\n * `VOUCHER` (string) - Use voucher.\n * `BANK_TRANSFER` (string) - Set bank transfer, generally used to pay invoices.\n * `OTHER` (string) - Any method not mentioned above.\n \n</details>\n> Only applicable to Guest Payment. Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"string","default":"EXTERNAL","enum":["ONLINE","TERMINAL","LINK","CASH","GUEST_BILL","RECURRING","EXTERNAL","VOUCHER","BANK_TRANSFER","OTHER"]},"PaymentScheme":{"title":"Payment Scheme","description":"Payment scheme used. Available if returned by payment service provider.","type":"string","enum":["VISA","MASTERCARD","MAESTRO","PAYPAL","SOFORT","GIROPAY","SEPA","BANCONTACT","IDEAL","ALIPAY","AFTERPAY","BOLETO","KLARNA_NOW","KLARNA_LATER","DISCOVER","UNIONPAY","VPAY","JCB","TRUSTLY","SWISH","AMERICAN_EXPRESS","AMAZON_PAY","SAMSUNG_PAY","WECHAT_PAY","APPLE_PAY","GOOGLE_PAY","CREDITCARD","UNSPECIFIED","OTHER"]},"PaymentType":{"title":"Payment Type","description":"Type of payment.\n<details>\n  <summary>**Payment Types**</summary>\n\n  * `CAPTURE` (string) - The reserved funds are transferred from the shopper to your account. \n    \n    A payment that was already authorised by the payment processor must be captured to be completed (this is the act of transferring the reserved funds from shopper to merchant).\n  * `AUTHORIZATION` (string) - The payment details of the shopper are verified, and the funds are reserved.\n  \n    This is the process of the card issuer (like Visa or Mastercard) verifying payment details and reserving the funds to capture it later. \n    When a payment was authorised but hasn't been captured yet, a merchant can also decide to cancel it for some reason (like a high risk of fraud).\n  \n    > Note that authorisation is valid only for a limited amount of time. In case an authorised payment hasn't been captured or cancelled, it expires after the predefined deadline is missed.\n  * `REFUND` (string) - If you want to return the funds to your shopper, for example if they returned an item, you need to refund the payment.\n  \n</details>","type":"string","default":"CAPTURE","enum":["CAPTURE","AUTHORIZATION","REFUND"]},"PaymentRecurringType":{"title":"Payment Recurring Type","description":"The type of tokenization used for the recurring payment.\n\nOnly applicable in case of `payment_recurring:true`.\n\nPayment Recurring Type:\n  * `STORE` - One-off transactions where a shopper can either store their payment details or pay at a later time using their saved details.\n  * `SUBSCRIPTION` - A recurring transaction made at regular intervals for a product or a service.\n  * `TOP_UP` - Contracts that occur on a non-fixed schedule using stored card details. This includes automatic top-ups when the cardholder's balance drops below a certain amount.","type":"string","readOnly":true,"enum":["STORE","SUBSCRIPTION","TOP_UP"]},"PaymentClass":{"title":"Payment Class","description":"Payment Class:\n  * `SALES` (string) - Payment settles the outstanding sales amount.\n  * `PURCHASE` (string) - Payment settles the outstanding purchase amount.","type":"string","default":"SALES","deprecated":true,"enum":["SALES","PURCHASE"]},"RefundType":{"title":"Refund Type","readOnly":true,"description":"Type of refund.\n<details>\n  <summary>**Refund Types**</summary>\n\n  * `SYSTEM` - Refund is initiated (manually) by the Prio or Partner system. For example, an admin user in the Order Overview.\n  * `AUTO` - Refund is automatically initiated by the Prio system. For example, if a paid reservation has expired (not confirmed within the `reservation_valid_until`) or is being cancelled.\n  * `PSP` - Refund is (manually) initiated by the Payment Service Provider.\n  * `CHARGE_BACK` - Refund is initiated by the Payment Service Provider (Guest) because of a chargeback.\n  * `OTHER` - Refund is initiated due to other reasons.\n  \n</details>\n  \n> Only applicable in case `payment_type:REFUND`.","type":"string","default":"SYSTEM","enum":["SYSTEM","AUTO","PSP","CHARGE_BACK","OTHER"]},"PaymentGatewayDetails":{"title":"Payment Gateway Details","description":"Payment information for each gateway. Only applicable if a payment gateway has been used to process the payment.","type":"object","anyOf":[{"$ref":"#/components/schemas/PaymentGatewayAdyen"},{"$ref":"#/components/schemas/PaymentGatewayCybersource"},{"$ref":"#/components/schemas/PaymentGatewayHyperPay"},{"$ref":"#/components/schemas/PaymentGatewayAddonPayments"},{"$ref":"#/components/schemas/PaymentGatewayHotelBill"},{"$ref":"#/components/schemas/PaymentGatewayMews"},{"$ref":"#/components/schemas/PaymentGatewayNGenius"},{"$ref":"#/components/schemas/PaymentGatewayExternal"}],"discriminator":{"propertyName":"payment_gateway_type","mapping":{"ADYEN":"#/components/schemas/PaymentGatewayAdyen","CYBERSOURCE":"#/components/schemas/PaymentGatewayCybersource","HYPERPAY":"#/components/schemas/PaymentGatewayHyperPay","ADDONPAYMENTS":"#/components/schemas/PaymentGatewayAddonPayments","MEWS":"#/components/schemas/PaymentGatewayMews","NGENIUS":"#/components/schemas/PaymentGatewayNGenius","EXTERNAL":"#/components/schemas/PaymentGatewayExternal"}}},"PaymentGatewayAdyen":{"title":"Payment Gateway Adyen","description":"Details on the payment when using Adyen to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_terminal_id":{"title":"Payment Terminal ID","description":"Unique ID of the selected payment terminal.","type":"string","deprecated":true}}}]},"CommonPaymentGateway":{"title":"Common Payment Gateway","description":"Common payment gateway.","type":"object","discriminator":{"propertyName":"payment_gateway_type","mapping":{"ADYEN":"#/components/schemas/PaymentGatewayAdyen","CYBERSOURCE":"#/components/schemas/PaymentGatewayCybersource","HYPERPAY":"#/components/schemas/PaymentGatewayHyperPay","ADDONPAYMENTS":"#/components/schemas/PaymentGatewayAddonPayments","MEWS":"#/components/schemas/PaymentGatewayMews","NGENIUS":"#/components/schemas/PaymentGatewayNGenius","EXTERNAL":"#/components/schemas/PaymentGatewayExternal"}},"properties":{"payment_merchant_account_name":{"title":"Payment Merchant Account Name","description":"The name / identifier of the party selling goods or services to shoppers via an e-commerce website, a mobile app, on a point of sale, or across all three channels.","type":"string"},"payment_service_provider_reference":{"title":"Payment Service Provider Reference","description":"Unique payment reference set by the payment service provider. Note that every action will result in a different reference. The original reference can be found below.","type":"string","readOnly":true},"payment_service_provider_original_reference":{"title":"Payment Service Provider Original Reference","description":"The PSP reference associated with the original payment prior to the modification (refund, manual capture) request.","type":"string","readOnly":true},"payment_gateway_type":{"title":"Payment Gateway Type","type":"string","description":"Payment service provider used to process payments.\n<details>\n  <summary>**Payment Gateway Types**</summary>\n\n  * `ADYEN` - Adyen ([More info](https://www.adyen.com/))\n  * `CYBERSOURCE` - Cybersource ([More info](https://www.cybersource.com/))\n  * `HYPERPAY` - Hyperpay ([More info](https://www.hyperpay.com/))\n  * `ADDONPAYMENTS` - Addon Payments ([More info](https://www.addonpayments.com/))\n  * `MEWS` - Mews ([More info](https://www.mews.com/))\n  * `NGENIUS` - Network International ([More info](https://www.network.ae/))\n  * `MULTISAFE` - MultiSafePay ([More info](https://www.multisafepay.com/))\n  * `SUMUP` - SumUp Payments ([More info](https://sumup.com/))\n  * `IZETTLE` - iZettle ([More info](https://www.izettle.com/))\n  * `STRIPE` - Stripe ([More info](https://stripe.com/))\n  * `WORLDPAY` - WorldPay ([More info](https://online.worldpay.com/))\n  * `GOOGLE` - Google Pay ([More info](https://developers.google.com/pay/api))\n  * `PAYONEER` - Payoneer ([More info](https://www.payoneer.com/))\n  * `SMARTPAY` - Smart Pay ([More info](https://www.bankmuscat.com/en/Pages/default.aspx))\n  * `MOKA` - Moka ([More info](https://www.mokapos.com/en))\n  * `EXTERNAL` - The payment is settled externally.\n  * `OTHER` - Payment provider not listed above.\n  * `NONE` - No payment provider is used.\n  \n</details>\n  \n> Used to aid in serialization, deserialization, and validation.\n"},"payment_gateway_additional_values":{"title":"Payment Gateway Additional Values","description":"Additional (conditional) values returned by the payment service provider.\n\nThere are many additional data elements that can be returned. The list is long and growing, so we can't mention all of them here.\n\nFor example:\n  * Cardholder Name\n  * Cardnumber (last digits only)\n  * Card Scheme\n  * Shopper IP\n  * Card Issuer Country\n  * Card Issuer Name\n  * Fraudscore\n  * Transaction Type\n  * Payment Status\n  * Username","type":"object","additionalProperties":{"type":"string"}}},"required":["payment_merchant_account_name","payment_service_provider_reference","payment_gateway_type"]},"PaymentGatewayCybersource":{"title":"Payment Gateway Cybersource","description":"Payment gateway cybersource.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_auth_code":{"title":"Payment Auth Code","description":"Payment auth code.","type":"string","writeOnly":true}},"required":["payment_auth_code"]}]},"PaymentGatewayHyperPay":{"title":"Payment Gateway HyperPay","description":"Payment gateway hyperpay.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"PaymentGatewayAddonPayments":{"title":"Payment Gateway Addon Payments","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_auth_code":{"title":"Payment Auth Code","description":"Payment auth code.","type":"string","writeOnly":true}}}]},"PaymentGatewayHotelBill":{"title":"Payment Gateway Hotel Bill","description":"Payment gateway hotel bill.","type":"object","deprecated":true,"allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_hotel_id":{"title":"Payment Hotel ID","description":"Payment hotel ID.","type":"string"},"payment_hotel_guest_name":{"title":"Payment Hotel Guest Name","description":"Payment hotel guest name.","type":"string"},"payment_hotel_room_number":{"title":"Payment Hotel Room Number","description":"Payment hotel room number.","type":"string"}},"required":["payment_hotel_id","payment_hotel_guest_name","payment_hotel_room_number"]}]},"PaymentGatewayMews":{"title":"Payment Gateway Mews","description":"Details on the payment when using MEWS to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","required":["payment_customer_id"],"properties":{"payment_customer_id":{"title":"Payment Customer ID","description":"Unique identifier of the MEWS customer. Retrieved via the [MEWS Customers API](https://mews-systems.gitbook.io/connector-api/operations/customers).","type":"string"}}}]},"PaymentGatewayNGenius":{"title":"Payment Gateway N-Genius","description":"Details on the payment when using N-Genius to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"PaymentGatewayExternal":{"title":"Payment Gateway External","description":"Details on the payment when using an external Payment Gateway or using a physical payment method such as cash to settle the Guest Payment.\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"CreditLimit":{"title":"Credit Limit","description":"Credit limit is a functionality to set a selling limit to clients. \n\nYou are not able to create any additional bookings if your credit limit is reached. To reset your credit limit a payment is required.\n\nNote that if the credit limit details are returned in the reservation or order object that the values are relative to the reservation / order creation time. Subsequent calls will not update the results. ","type":"object","readOnly":true,"deprecated":true,"required":["credit_status","credit_total","credit_blocked","credit_used","credit_remaining","credit_reset","credit_invoice_interval","credit_invoice_settlement"],"properties":{"credit_status":{"title":"Credit Status","type":"string","description":"The credit status.","readOnly":true,"enum":["ACTIVE","SUSPENDED"]},"credit_total":{"title":"Credit Total","type":"string","description":"The total credit limit.","readOnly":true},"credit_deposit":{"title":"Credit Deposit","type":"string","description":"The amount of credit (safety) deposit.","readOnly":true,"deprecated":true},"credit_blocked":{"title":"Credit Blocked","type":"string","description":"The amount of credit blocked / reserved.","readOnly":true},"credit_used":{"title":"Credit Used","type":"string","description":"The amount of credit utilized.","readOnly":true},"credit_remaining":{"title":"Credit Remaining","type":"string","description":"The amount of credit remaining.","readOnly":true},"credit_invoice_interval":{"title":"Credit Invoice Interval","type":"string","description":"Type of credit invoice interval.\n\nInvoice Interval Types:\n   * `MANUAL` (string) - An invoice is generated upon manual user action.\n   * `PER_ORDER` (string) - An invoice is generated for each individual order.\n   * `LIMIT_REACHED` (string) - An invoice is generated once the credit limit is reached (`credit_remaining` equals 0).","readOnly":true,"enum":["MANUAL","PER_ORDER","LIMIT_REACHED"]},"credit_invoice_settlement":{"title":"Credit Invoice Invoice","type":"string","description":"Whether the invoice will be automatically settled / paid.","readOnly":true,"enum":["MANUAL","AUTO"]},"credit_reset":{"title":"Credit Reset","type":"string","format":"date-time","description":"The datetime of the last credit reset.","readOnly":true}}},"ErrorModel":{"title":"Error Model","description":"Error model.","type":"object","readOnly":true,"properties":{"error":{"title":"Error Code","description":"The error code which occured.\n\nAs our API has over 1000+ unique error codes (grouped by HTTP status). We discourage implementing individual errors on your customer front-end interface and suggest a catch-all clause for each HTTP status code instead.\n\nErrors can be shown directly to the customer using the `error_message`, while more specific details explaining the problem will be provided in the `errors` object.\nWe recommend a combination of `error_message` and `error_reference` when communicating with the customer and API support.\n","type":"string","readOnly":true},"error_reference":{"title":"Error Reference","description":"Unique reference linked to this error.\n\nWe recommend showing this reference to the customer to allow for better issue tracking.\n","type":"string","readOnly":true},"error_message":{"title":"Error Message","description":"Customer friendly error message which can be shown on your front-end.\n","type":"string","readOnly":true},"error_description":{"title":"Error Description","description":"Human-readable ASCII [[USASCII]](https://tools.ietf.org/html/rfc6749#ref-USASCII) text providing additional information, used to assist the client developer in understanding the error that occurred.","type":"string","readOnly":true},"error_uri":{"title":"Error URI","description":"A URI identifying a human-readable web page with information about the error, used to provide the client \ndeveloper with additional information about the error.","type":"string","readOnly":true},"errors":{"title":"Error Messages","description":"Specific messages indicating one or more problems.","type":"array","readOnly":true,"items":{"title":"Error Message","description":"Specific message indicating a problem.","type":"string","readOnly":true}}},"required":["error","error_reference"]},"CreateReservationRequest":{"title":"Create Reservation Request","description":"Create reservation request.","type":"object","properties":{"api_version":{"$ref":"#/components/schemas/ApiVersion"},"data":{"$ref":"#/components/schemas/CreateReservationRequestData"}},"required":["api_version","data"]},"CreateReservationRequestData":{"title":"Create Reservation Request Data","description":"Create reservation request data.","type":"object","properties":{"kind":{"$ref":"#/components/schemas/Kind"},"reservation":{"$ref":"#/components/schemas/ReservationModel"}},"required":["kind","reservation"]}},"responses":{"InvalidRequest":{"description":"Invalid Request\n\nThe HyperText Transfer Protocol (HTTP) 400 Bad Request response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"AuthenticationFailed":{"description":"Authentication Failed\n\nThe access token provided is expired, revoked, malformed, or invalid for other reasons. The resource SHOULD respond with the HTTP 401 (Unauthorized) status code.  The client MAY request a new access token and retry the protected resource request.","headers":{"WWW-Authenticate":{"description":"Defines the authentication method that should be used to gain access to a resource.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"Forbidden":{"description":"Forbidden\n\nThe request requires higher privileges than provided by the access token. The resource server SHOULD respond with the HTTP 403 (Forbidden) status code and MAY include the `scope` attribute with the scope necessary to access the protected resource.","headers":{"WWW-Authenticate":{"description":"Defines the authentication method that should be used to gain access to a resource.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"MethodNotAllowed":{"description":"Method Not Allowed\n\nThe HyperText Transfer Protocol (HTTP) 405 Method Not Allowed response status code indicates that the request method is known by the server but is not supported by the target resource.\n\nA request method is not supported for the requested\n      resource; for example, a GET request on a form that\n      requires data to be presented via POST, or a PUT request\n      on a read-only resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"NotAcceptable":{"description":"Not Acceptable\n\nThe HyperText Transfer Protocol (HTTP) 406 Not Acceptable client error response code indicates that the server cannot produce a response matching the list of acceptable values defined in the request's proactive content negotiation headers, and that the server is unwilling to supply a default representation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"Conflict":{"description":"Conflict\n\nThe HTTP 409 Conflict response status code indicates a request conflict with current state of the server.\n\nConflicts are most likely to occur in response to a PUT request. For example, you may get a 409 response when trying to pay an order which is already cancelled on the server, resulting in a version control conflict.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"UnprocessableEntity":{"description":"Unprocessable Entity\n\nThe HyperText Transfer Protocol (HTTP) 422 Unprocessable Entity response status code indicates that the server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"LimitReached":{"description":"Too Many Requests\n\nThe HTTP 429 Too Many Requests response status code indicates the user has sent too many requests in a given amount of time (\"rate limiting\").","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"InternalServerError":{"description":"Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error response code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"NotImplemented":{"description":"Not Implemented\n\nThe HyperText Transfer Protocol (HTTP) 501 Not Implemented server error response code means that the server does not support the functionality required to fulfill the request.\n\nThe server either does not recognize the request method, or it lacks the ability to fulfil the request. Usually this implies future availability (e.g., a new feature of a web-service API).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"BadGateway":{"description":"Bad Gateway\n\nThe HyperText Transfer Protocol (HTTP) 502 Bad Gateway server error response code indicates that the server, while acting as a gateway or proxy, received an invalid response from the upstream server.\n\nThe HTTP 502 Bad Gateway error is exclusively returned in case of problems during communication with the supplier or third-party system. ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"ServiceUnavailable":{"description":"Service Unavailable\n\nThe HyperText Transfer Protocol (HTTP) 503 Service Unavailable server error response code indicates that the server is not ready to handle the request.\n\nThe HTTP 503 Service Unavailable error is exclusively returned in case of problems during internal communication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"GatewayTimeout":{"description":"Gateway Timeout\n\nThe HyperText Transfer Protocol (HTTP) 504 Gateway Timeout server error response code indicates that the server, while acting as a gateway or proxy, did not get a response in time from the upstream server that it needed in order to complete the request.\n\nThe HTTP 504 Gateway Timeout error is exclusively returned in case of problems during communication with the supplier or third-party system. ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}}}},"paths":{"/reservations/{reservation_reference}":{"put":{"description":"This API is called to update an existing reservation / cart.\n> This endpoint can also be requested for products without availability (`product_availability:false`) or managed capacity (`product_capacity:false`).\n\n**Cart Functionality:**\n\n * To add a product to the cart, send a `reservation_details` array item with a blank `booking_reservation_reference`.\n \n * To amend an existing booking, please send the corresponding `booking_reservation_reference` for the array item with the amended data. In this case the latest request takes precedence and therefore the quantity is always overwritten, not summed.\n \n    Only sent the booking details of those bookings you would like to amend.\n \n * To remove a product from the cart, please call the \"Remove Cart Item\" endpoint. \n \n * To only change the contact details, do not provide the `reservation_details` object in the request.\n \n * TIP: The full reservation / cart details will be returned on every request. Therefore you are able to manage the cart outside of your system if required. ReadOnly properties which are included in the response, but not allowed in the request, such as `booking_reservation_valid_until` will be ignored and can be safely sent. If you choose not to do this, make sure both carts are kept in sync.","summary":"Update Reservation / Update Cart","tags":["Reservations / Cart"],"operationId":"updateReservation","parameters":[{"name":"reservation_reference","in":"path","required":true,"description":"A unique identifier for the created reservation in Prio.","schema":{"type":"string","minLength":8}}],"responses":{"200":{"description":"Reservation Updated","links":{"GetReservationByReference":{"$ref":"#/components/links/GetReservationByReference"}},"headers":{"Cache-Control":{"$ref":"#/components/headers/Cache-Control"},"Last-Modified":{"$ref":"#/components/headers/Last-Modified"},"Content-Language":{"$ref":"#/components/headers/Content-Language"},"Content-Length":{"$ref":"#/components/headers/Content-Length"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/Access-Control-Allow-Methods"},"Content-Security-Policy":{"$ref":"#/components/headers/Content-Security-Policy"},"X-XSS-Protection":{"$ref":"#/components/headers/X-XSS-Protection"},"X-Content-Type-Options":{"$ref":"#/components/headers/X-Content-Type-Options"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Origin":{"$ref":"#/components/headers/Origin"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationDetailResponse"}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/AuthenticationFailed"},"403":{"$ref":"#/components/responses/Forbidden"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/Conflict"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"429":{"$ref":"#/components/responses/LimitReached"},"500":{"$ref":"#/components/responses/InternalServerError"},"501":{"$ref":"#/components/responses/NotImplemented"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"requestBody":{"description":"Update Reservation Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReservationRequest"}}},"required":true}}}}}
````

## Cancel Reservation / Remove Cart Item / Empty Cart

> This API is called to cancel a reserved timeslot, delete products from your cart or empty the cart.\
> In case of a full cancellation, you are no longer able to amend the reservation.\
> Otherwise, the updated cart will be returned.\
> \
> Note that (combi-)pricing might have changed.\
> \
> \> If payment is made, funds will be automatically refunded.

````json
{"openapi":"3.0.0","info":{"title":"Distributor API Specification V3.8","version":"3.8.0"},"tags":[{"name":"Reservations / Cart","description":"Reserving a product is only mandatory in case the product has managed capacity. Although we also recommend to implement it in the following cases:\n- When holding customer products inside a shoppingcart. \n- Lock a slot while waiting for a confirmed payment.\n- High demand / low availability tickets (concert/events).\n- Adding promocodes to an order.\n- Managing combi- and cart-discounts.\n- Cross-client order process.\n\nReservations can be confirmed by passing the `reservation_reference` to the Create Order API. One or more products can be reserved at once. We highly recommend implementing the Cart flow for maximum functionality. \n"}],"servers":[{"url":"https://{environment}.prioticket.com/{version}/distributor","description":"Prio environments.","variables":{"environment":{"description":"* `distributor-api` - Production server; used for real transactions.\n\n* `sandbox-distributor-api` - Sandbox server.\n\n* `staging-distributor-api` - Pre-Production server; used for testing (UAT), verification, demo and certification.\n\n* `internal-distributor-api` - Internal server; reserved for internal use.\n","default":"staging-distributor-api","enum":["distributor-api","sandbox-distributor-api","staging-distributor-api","internal-distributor-api"]},"version":{"description":"Api version.","default":"v3.8","enum":["v3.8"]}}}],"security":[{"OAuth2":["https://www.prioticketapis.com/auth/distributor/reservation"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","description":"OAuth2 implementation.","flows":{"clientCredentials":{"tokenUrl":"https://sandbox-distributor-api.prioticket.com/v3.8/distributor/oauth2/token","scopes":{"https://www.prioticketapis.com/auth/distributor.products.readonly":"Grants access to products.","https://www.prioticketapis.com/auth/distributor.reservations":"Grants access to reservations.","https://www.prioticketapis.com/auth/distributor.bookings":"Grants access to bookings.","https://www.prioticketapis.com/auth/distributor.bookings.details":"Grants access to booking details.","https://www.prioticketapis.com/auth/distributor/reporting":"Grants access to reporting."}}}}},"links":{"GetReservationByReference":{"operationId":"getReservation","parameters":{"reservation_reference":"$response.body#/data/reservation/reservation_reference"},"description":"The `reservation_reference` value returned in the response can be used as the `reservation_reference` parameter in `GET /reservations/{reservation_reference}`.\n"}},"headers":{"Cache-Control":{"description":"Specifies the maximum amount of time a resource will be considered fresh. Contrary to Expires, this directive is relative to the time of the request.","schema":{"type":"string"}},"Last-Modified":{"description":"The Last-Modified response HTTP header contains the date and time at which the origin server believes the resource was last modified.","schema":{"type":"string"}},"Content-Language":{"description":"The Content-Language entity header is used to describe the language(s) intended for the audience, so that it allows a user to differentiate according to the users' own preferred language.","schema":{"type":"string"}},"Content-Length":{"description":"The Content-Length entity header indicates the size of the entity-body, in bytes, sent to the recipient.","schema":{"type":"string"}},"Access-Control-Allow-Methods":{"description":"The Access-Control-Allow-Methods response header specifies the method or methods allowed when accessing the resource in response to a preflight request.","schema":{"type":"string"}},"Content-Security-Policy":{"description":"Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks.","schema":{"type":"string"}},"X-XSS-Protection":{"description":"The HTTP X-XSS-Protection response header is a feature of Internet Explorer, Chrome and Safari that stops pages from loading when they detect reflected cross-site scripting (XSS) attacks.","schema":{"type":"string"}},"X-Content-Type-Options":{"description":"The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised in the Content-Type headers should not be changed and be followed.","schema":{"type":"string"}},"X-RateLimit-Limit":{"deprecated":true,"description":"Request limit per hour.","schema":{"type":"integer","deprecated":true}},"X-RateLimit-Remaining":{"description":"The number of requests left for the time window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"The UTC date/time at which the current rate limit window resets.","schema":{"type":"string"}},"Origin":{"description":"The Origin request header indicates where a fetch originates from.","schema":{"type":"string","format":"URI"}}},"schemas":{"ReservationDetailResponse":{"title":"Reservation Detail Response","description":"Reservation detail Response.","type":"object","properties":{"api_version":{"$ref":"#/components/schemas/ApiVersion"},"data":{"$ref":"#/components/schemas/ReservationDetailData"}},"required":["api_version","data"]},"ApiVersion":{"title":"API Version","description":"Represents the version of the service API that's served in the response.","type":"string","readOnly":true},"ReservationDetailData":{"title":"Reservation Detail Data","description":"Reservation detail data.","type":"object","properties":{"kind":{"$ref":"#/components/schemas/Kind"},"reservation":{"$ref":"#/components/schemas/ReservationModel"}},"required":["kind","reservation"]},"Kind":{"title":"Kind","description":"The kind property serves as a guide to what type of information this particular object stores.","type":"string","readOnly":true,"enum":["location","route","category","product","currency","tax","addon","availability","stock","reservation","order","promocode","promo","webhook","notification","voucher","contact","payment","credit","destination","recommendation"]},"ReservationModel":{"title":"Reservation Model","description":"Reservation model.","type":"object","properties":{"reservation_distributor_id":{"title":"Reservation Distributor ID","description":"Unique identifier for distributor assigned by Prio.","type":"string"},"reservation_distributor_name":{"title":"Reservation Distributor Name","description":"Name of the distributor.","type":"string","readOnly":true},"reservation_partner_id":{"title":"Reservation Partner ID","description":"Unique identifier for partner assigned by Prio.","type":"string"},"reservation_partner_name":{"title":"Reservation Partner Name","description":"Name of the partner.","type":"string","readOnly":true},"reservation_reference":{"title":"Reservation Reference","description":"A unique identifier for the created reservation in the Prio.","type":"string","readOnly":true,"minLength":8},"reservation_external_reference":{"title":"Reservation External Reference","description":"A unique reservation identifier within the external system.","type":"string","maxLength":50,"pattern":"^[\\\\a-zA-Z-_\\/\\d]+$"},"reservation_hold_token":{"title":"Reservation Hold Token","description":"Unique hold token for this reservation (Internal use only). Only a single holdtoken is allowed per reservation.","type":"string"},"reservation_valid_until":{"title":"Reservation Valid Until","description":"The reserved order will stay alive until this time, after that the reservation will be auto-cancelled.\n> Please note that if you are having multiple products in your cart, that the value will be set according to the product with the earliest expiration time. In this case ONLY this specific product will be auto-cancelled. To view your updated reservation you could call the 'Cart Details' endpoint.\n\n> Warning; Prio will simply confirm your pending reservation, even when products have been auto-cancelled in between. If this value is not checked by the reserving party, unexpected results could occur.","type":"string","format":"date-time","readOnly":true},"reservation_details":{"title":"Reservation Details","description":"Contains one or more bookings.","type":"array","items":{"$ref":"#/components/schemas/ReservationDetail"}},"reservation_contacts":{"title":"Reservation Contacts","description":"Contacts linked to this reservation / order. If provided, these values will override the `order_contacts` object during the Confirm Order step.","type":"array","items":{"$ref":"#/components/schemas/ContactDetails"}},"reservation_checkout_fields":{"title":"Reservation Checkout Fields","description":"Mandatory fields during checkout.","type":"array","items":{"$ref":"#/components/schemas/CheckoutField"}},"reservation_promocodes":{"title":"Reservation Promocodes","description":"The promocodes applied to this reservation.","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/AppliedPromocode"}},"reservation_pricing":{"$ref":"#/components/schemas/Pricing"},"reservation_payments":{"title":"Reservation Payments","description":"Details on the payments linked to this reservation. \n\nA reservation can have multiple payment records in case of installments, split payments, refunds and additional charges. Every action will result in a new record so all history is kept.\n\nPayment records are always returned in a descending order based on the payment date.\nTherefore the first entry in the array can be considered as the last payment and thus the `payment_total` (running sum) as the actual total amount paid and the `payment_status ` as the latest payment status for this reservation.","type":"array","items":{"$ref":"#/components/schemas/PaymentDetails"}},"reservation_credit":{"$ref":"#/components/schemas/CreditLimit"},"reservation_custom_fields":{"title":"Reservation Custom Fields","description":"Freeform entry of any key-value pair.","type":"array","items":{"$ref":"#/components/schemas/CustomField"}},"reservation_created":{"title":"Reservation Created","description":"Date and time of reservation creation.","type":"string","format":"date-time","readOnly":true},"reservation_created_name":{"title":"Reservation Created Name","description":"Cashier name / User name who created the reservation.","type":"string","readOnly":true},"reservation_created_email":{"title":"Reservation Created Email","description":"Cashier email / User email who created the reservation.","type":"string","format":"email","readOnly":true},"reservation_modified":{"title":"Reservation Modified","description":"Date and time of reservation update.","type":"string","format":"date-time","readOnly":true}},"required":["reservation_distributor_id","reservation_distributor_name","reservation_reference","reservation_external_reference","reservation_valid_until","reservation_pricing"]},"ReservationDetail":{"title":"Reservation Detail","description":"Details on a booking inside a reservation.","allOf":[{"$ref":"#/components/schemas/ProductBookingModel"},{"type":"object","required":["product_type_details","booking_reservation_reference","booking_reservation_valid_until"],"properties":{"booking_reservation_reference":{"title":"Booking Reservation Reference","type":"string","description":"Unique identifier for this booking within the current cart. To update this booking you should pass the same value in the next request."},"booking_reservation_valid_until":{"title":"Booking Reservation Valid Until","type":"string","format":"date-time","readOnly":true,"description":"The reserved booking will stay alive until this time, after that the booking will be auto-cancelled.\n> In this case ONLY this specific product will be auto-cancelled. To view your updated reservation you could call the 'Cart Details' endpoint.\n\n> Our system will try to reset the `booking_reservation_valid_until` every time the Update Cart endpoint is called. This will not work for most third-party products. Please keep an eye on the value `booking_reservation_valid_until` to make sure your cart does not expire."},"product_type_details":{"title":"Product Type Booking Details","description":"A list specifying the booking quantity per product type.","type":"array","items":{"$ref":"#/components/schemas/BookingItemWithPricing"}}}}]},"ProductBookingModel":{"title":"Product Booking Model","description":"Product booking model.","type":"object","additionalProperties":false,"properties":{"booking_external_reference":{"title":"Booking External Reference","description":"A unique booking identifier within the external system.","type":"string"},"booking_status":{"$ref":"#/components/schemas/BookingStatusTypes"},"booking_version":{"title":"Booking Version","description":"Booking version number.","type":"integer","readOnly":true,"default":1,"minimum":1,"multipleOf":1},"booking_voucher_released":{"title":"Booking Voucher Released","description":"Whether the vouchers of this booking are available / released. Voucher allocation can be delayed based on the voucher release requirements.","type":"boolean","readOnly":true},"booking_travel_date":{"title":"Booking Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.\nIf unset and availability is applicable, `booking_travel_date` will be returned as `availability_from_date_time` in the response.","type":"string","format":"date-time"},"booking_valid_until":{"title":"Booking Valid Until","description":"The booking will be valid until this time, after that the booking will be expired if not redeemed.\nMainly applicable to open products.","type":"string","format":"date-time","readOnly":true},"booking_invoice_status":{"$ref":"#/components/schemas/InvoiceStatus"},"booking_language":{"title":"Booking Language","description":"Language codes for the available languages of the product, e.g. Live Guides are available in English and Spanish languages. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.","type":"string","default":"en"},"booking_addon_reference":{"title":"Booking Addon Reference","description":"When booking an addon a reference to the original booking is required. \n\nPurchasing an addon requires a booking record for the main product and thus a booking reference for another booking within the same reservation or previously created order should be provided.\n\nIf you do not sent this parameter, it will not be be considered as an addon and registered as an individual sale instead.","type":"string"},"booking_pricing":{"$ref":"#/components/schemas/Pricing"},"booking_notes":{"title":"Booking Notes","description":"Booking notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"booking_customer_url":{"title":"Booking Customer URL","description":"This link that can be attached and communicated towards the end-consumer and allows for booking amendment.","type":"string","format":"URI","readOnly":true},"booking_voucher_url":{"title":"Booking Voucher URL","description":"Voucher(s) download URL.","type":"string","format":"URI","readOnly":true},"booking_created":{"title":"Booking Created","description":"Date and time of booking creation.","type":"string","format":"date-time","readOnly":true},"booking_modified":{"title":"Booking Modified","description":"Date and time of booking update.","type":"string","format":"date-time","readOnly":true},"booking_confirmed":{"title":"Booking Confirmed","description":"Date and time of booking confirmation.","type":"string","format":"date-time","readOnly":true},"booking_cancelled":{"title":"Booking Cancellation","description":"Date and time of booking cancellation.","type":"string","format":"date-time","readOnly":true},"booking_cancellation_reason":{"title":"Booking Cancellation Reason","description":"Reason for booking cancellation.","type":"string","readOnly":true},"product_id":{"title":"Product ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_relation_id":{"title":"Product Relation ID","description":"When products are booked as part of a cluster or bundle the main product id should be defined to determine the relationship.\n\nPurchasing a cluster or bundle requires a reference to the main product (shell). If not provided, an error will be returned.\n\nUnlike addons, when booking a bundle or cluster, only the sub-product is required and therefore there is no need to link it with a seperate (main) booking.\n\nIf you do not sent this parameter, and the sub-product is eligible for individual sale as well, it will be booked as such instead.","type":"string"},"product_pickup_point_id":{"title":"Product Pickup Point ID","description":"Mandatory if `product_pickup_point:MANDATORY` in product details.","type":"string"},"product_pickup_point":{"$ref":"#/components/schemas/PickupPoint"},"product_availability_id":{"title":"Product Availability ID","description":"The unique ID for the timeslot (`availability_id`) or specific availability spot (`availability_spot_id`) if `product_availability_assigned:true`. Only mandatory if `product_availability:true`.","type":"string"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_capacity_id":{"title":"Availability Slot Capacity ID","description":"Availability group / capacity identifier.","type":"string","readOnly":true},"product_availability_capacity_shared_id":{"title":"Availability Slot Shared Capacity ID","description":"Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.","type":"string","readOnly":true},"product_title":{"title":"Product Title","description":"The title of the product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for the supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_supplier_admin_id":{"title":"Product Supplier Admin ID","description":"Unique identifier for the supplier admin.","type":"string","readOnly":true},"product_supplier_admin_name":{"title":"Product Supplier Admin Name","description":"Name of the supplier admin.","type":"string","readOnly":true},"product_market_admin_id":{"title":"Product Market Admin ID","description":"Unique identifier for the market admin.","type":"string","readOnly":true},"product_market_admin_name":{"title":"Product Market Admin Name","description":"Name of the market admin.","type":"string","readOnly":true},"product_source_id":{"title":"Product Source ID","type":"string","description":"Unique ID of the product source.","readOnly":true},"product_source_name":{"title":"Product Source Name","type":"string","description":"Name of the supplier reservation system from which this product is sourced.","readOnly":true},"product_entry_notes":{"title":"Product Entry Notes","description":"Product entry information. (Know before you go).\nThe user-visible list of important notes, use for details such as age-restrictions or other conditions that make this service unsuitable.\n","type":"string","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_class":{"$ref":"#/components/schemas/ProductClass"},"product_currency_code":{"title":"Product Currency Code","description":"Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).","type":"string","readOnly":true},"product_cancellation_allowed":{"title":"Product Cancellation Allowed","type":"boolean","description":"Whether it is allowed to cancel this product / booking. \n\nThis takes into account the current state of the order as well as variables such as `booking_status` and  `product_type_redemption_status`.  \n\nNote that even if a product can be cancelled in this state, cancellation fees and restrictions might still apply and override this value.\nPlease check `product_cancellation_policies` for more details.","default":true,"readOnly":true},"product_options":{"title":"Product Booking Options","description":"The product options booked (including individual options from related combi products). \n","type":"array","items":{"$ref":"#/components/schemas/BookingExtraOptions"}},"product_combi_details":{"title":"Product Combi Details","description":"In case the booked product is the main combi-product (`product_class:COMBI`), this field should be populated for each and every listed sub-product inside `product_combi_details`.\nAll sub-product will inherited the missing details such as `product_type_details` from the parent.","type":"array","items":{"$ref":"#/components/schemas/ProductSubDetail"}},"product_bundle_details":{"title":"Product Bundle Details","description":"In case the booked product is the main bundle-product (`product_class:BUNDLE`), this field should be populated for each and every listed sub-product inside `product_bundle_details`.\nAll sub-product will inherited the missing details such as `product_type_details` from the parent.","type":"array","items":{"$ref":"#/components/schemas/ProductSubDetail"}},"product_addon_details":{"title":"Product Addon Details","description":"In case addons are booked for this product, all related addon booking details will be returned.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ProductAddonDetail"}}},"required":["product_id","product_title","product_supplier_id","product_supplier_name","product_market_admin_id","product_market_admin_name","product_type_details","booking_status","booking_created","booking_modified","booking_external_reference","product_admission_type","product_currency_code","product_cancellation_allowed"]},"BookingStatusTypes":{"title":"Booking Status Types","description":"Status of the booking.","type":"string","readOnly":true,"enum":["BOOKING_RESERVED","BOOKING_RESERVATION_CANCELLED","BOOKING_RESERVATION_EXPIRED","BOOKING_CONFIRMED","BOOKING_UPDATED","BOOKING_CANCELLED","BOOKING_PENDING_SUPPLIER","BOOKING_PENDING_GUEST","BOOKING_PENDING_DISTRIBUTOR","BOOKING_FAILED","BOOKING_PROCESSING","BOOKING_PROCESSING_CONFIRMATION","BOOKING_PROCESSING_CANCELLATION"]},"InvoiceStatus":{"title":"Invoice Status","description":"Status of the invoice.","type":"string","deprecated":true,"readOnly":true,"enum":["INVOICED","INVOICE_APPROVED","INVOICE_PAID","INVOICE_CANCELLED","NOT_INVOICED"]},"Pricing":{"title":"Price Breakdown","description":"The calculated price based on the selected products. \n\nWe highly recommend implementing a cross-check before confirming the order with your own calculated prices to prevent mismatches.","type":"object","properties":{"price_type":{"title":"Price Type","description":"Price breakdown on either purchase or sales and including or excluding tax.","deprecated":true,"type":"string","readOnly":true,"enum":["PURCHASE","SALES"]},"price_subtotal":{"title":"Price Sub Total","description":"Sum of `product_type_list_price` for all `product_types` including extra options, without promocodes, price variations and additional fees (`fee_included:true`).","type":"string","readOnly":true},"price_variations":{"title":"Price Variations","description":"All applicable price variations (`product_quantity_pricing`, `product_daily_pricing`, `product_dynamic_pricing` and more).\n\nSome variations are set automatically based on your request and the selected products, such as quantity and dynamic pricing, whereas other variations can be set manually (e.g cart and partner discount).","type":"array","items":{"$ref":"#/components/schemas/PriceVariations"}},"price_promocodes":{"title":"Price Promocodes","description":"Applied promocodes pricing. \n\nOnly applicable in case of `price_type:SALES_GROSS/SALES_NET`.","readOnly":true,"type":"array","items":{"$ref":"#/components/schemas/PromoCodePricing"}},"price_taxes":{"title":"Price Taxes","description":"Product tax breakdown. \n\nAlready included in the price breakdown in case `price_type:PURCHASE_GROSS/SALES_GROSS`, otherwise excluded. Taxes on fees are listed separately in `price_fees`.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ProductTax"}},"price_fees":{"title":"Price Fees","description":"List of additional fees. \n\nAdditional fees (`fee_included:true`) should be included in the `price_total`. \n\nNote that some fees are only visible to certain users.","type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/Fee"}},"price_total":{"title":"Total Sales Price","description":"The total sales / purchase price including all discounts, surcharges and fees above.","type":"string","readOnly":true}},"required":["price_type","price_subtotal","price_total"]},"PriceVariations":{"title":"Price Variation","description":"Variation which is applicable on the list price.","type":"object","properties":{"variation_label":{"title":"Variation Label","description":"Label / Explanation for this variation.","type":"string"},"variation_amount":{"title":"Variation Amount","description":"The amount which should be added / substracted to the `price_subtotal`. This can be a negative value (discount) or positive value (surcharge).","type":"string"},"variation_type":{"title":"Variation Type","type":"string","description":"Type of variation.\n\nOnly `CART_DISCOUNT_*` and `PARTNER_DISCOUNT` can be set in the request, other variations will be automatically added based on your order and returned on every response. If you sent other variations in your request, they will be ignored.\n<details>\n  <summary>**Variation Types**</summary>\n\n * `PRODUCT_DYNAMIC` - In case of `product_dynamic_pricing:true` the price variation based on availability will be shown here.\n * `PRODUCT_DAILY` - In case of `product_daily_pricing:true` the price variation based on the day will be shown here.\n * `PRODUCT_QUANTITY` - In case of `product_quantity_pricing:true` the price variation based on the quantity will be shown here.\n * `PRODUCT_DISCOUNT` - In case a `product_type_discount` is set, the price variation will be shown here.\n * `PRODUCT_MARKUP` - TBA.\n * `PRODUCT_BUNDLE` - TBA.\n * `PRODUCT_COMBI_DISCOUNT` - Combi discount.\n * `PARTNER_DISCOUNT` - In case of partner sales, the guest discount or partner discount / commission can be set by the cashier.\n * `CART_DISCOUNT_FIXED` - Fixed cart discount set by the cashier. \n \n    This discount is pre-configured and must exist in our system prior to making the booking.\n * `CART_DISCOUNT_CUSTOM` - Custom cart discount set by the cashier. \n \n    This discount is dynamic, does not have to exist in our system and can be set to any allowed value.\n * `PRODUCT_CAMPAIGN` - Promo campaign.\n * `AMENDMENT_DISCOUNT`\n * `AMENDMENT_FEE`\n * `OTHER` - Any variation not matching the types above.\n \n</details>\n","enum":["PRODUCT_DYNAMIC","PRODUCT_DAILY","PRODUCT_QUANTITY","PRODUCT_DISCOUNT","PRODUCT_MARKUP","PRODUCT_BUNDLE","PRODUCT_CAMPAIGN","PRODUCT_COMBI_DISCOUNT","PARTNER_DISCOUNT","CART_DISCOUNT_FIXED","CART_DISCOUNT_CUSTOM","AMENDMENT_DISCOUNT","AMENDMENT_FEE","OTHER"]}},"required":["variation_amount","variation_type"]},"PromoCodePricing":{"title":"Promocode Pricing","description":"Promocode pricing.","type":"object","readOnly":true,"properties":{"promo_code":{"title":"Promocode","description":"The promocode.","type":"string"},"promo_amount":{"title":"Promo Amount","description":"The promo amount.","type":"string"}},"required":["promo_code","promo_amount"]},"ProductTax":{"title":"Product Tax","description":"Applied tax.","type":"object","readOnly":true,"required":["tax_id","tax_name","tax_amount"],"properties":{"tax_id":{"title":"Tax ID","type":"string","description":"Unique identifier of this tax configuration.","readOnly":true},"tax_name":{"title":"Tax Name","description":"Name of the tax.","type":"string","readOnly":true},"tax_price_type":{"title":"Tax Price Type","description":"Price level for which this tax is applicable.","type":"string","enum":["LIST_PRICE","SALES_PRICE","DISTRIBUTOR_PRICE","RESELLER_PRICE","MARKET_PRICE","SUPPLIER_PRICE"]},"tax_amount":{"title":"Tax Amount","description":"Amount of tax.","type":"string","readOnly":true},"tax_rate":{"title":"Tax Rate","description":"Tax rate (percentage).","type":"string","readOnly":true},"tax_lines":{"$ref":"#/components/schemas/TaxLines"}}},"TaxLines":{"title":"Tax Lines","type":"object","description":"Additional tax lines.","properties":{"tax_lines_id":{"title":"Tax Lines ID","description":"Tax lines ID.","type":"string"},"tax_line_name":{"title":"Tax Line Name","description":"Name of the tax line.","type":"string"},"tax_line_type":{"title":"Tax Line Type","type":"string","description":"Tax abbreviation."},"tax_line_rate":{"title":"Tax Line Rate","type":"string","description":"Tax rate (percentage)."},"tax_line_region":{"title":"Tax Line Region","description":"Country or State of the related tax authority.","type":"string"}}},"Fee":{"title":"Fee","description":"Fee details.","type":"object","readOnly":true,"required":["fee_type","fee_amount","fee_tax_id","fee_tax_amount","fee_included","fee_refundable"],"properties":{"fee_type":{"$ref":"#/components/schemas/FeeType"},"fee_amount":{"title":"Fee Amount","description":"The applicable fee amount, can either be a surcharge or discount.","type":"string","readOnly":true},"fee_percentage":{"title":"Fee Percentage","description":"Fee percentage.","type":"string"},"fee_tax_amount":{"title":"Fee Tax Amount","description":"Amount of tax.","type":"string","readOnly":true},"fee_included":{"title":"Fee Included","description":"Whether this is an additional fee that should be listed separately and included in the `price_total` or is part of a calculation, e.g. margin breakdown (informational only). ","type":"boolean","readOnly":true}}},"FeeType":{"title":"Fee Type","readOnly":true,"description":"Type of fee.\n\nFee Type:\n  * `SERVICE` - The service fee or margin for this transaction or product.\n  * `PARTNER` - The partner fee or margin for this transaction or product.\n  * `DISTRIBUTOR` - The distributor fee or margin for this transaction or product.\n  * `AFFILIATE` - The affiliate fee or margin for this transaction or product.\n  * `RESELLER` - The reseller fee or margin for this transaction or product.\n  * `MARKET_ADMIN` - The market admin fee or margin for this transaction or product.\n  * `PLATFORM` - The platform fee or margin for this transaction or product.\n  * `PAYMENT` - The payment fee for this transaction or product.\n  * `INSURANCE` - The insurance fee for this transaction or product.\n  * `CUSTOM` - Custom fee for this transaction, product or order.","type":"string","enum":["SERVICE","PARTNER","DISTRIBUTOR","AFFILIATE","RESELLER","MARKET_ADMIN","PLATFORM","PAYMENT","INSURANCE","CUSTOM"]},"Note":{"title":"Note","description":"Details on the note.","type":"object","properties":{"note_value":{"title":"Note Value","description":"Note value.","type":"string"},"note_created":{"title":"Note Date","description":"Creation / Modification date of the note.","type":"string","format":"date-time","readOnly":true},"note_recipients":{"title":"Note Recipients","description":"List of accounts that are able to view the note.","type":"array","items":{"title":"Note Recipient","type":"string","description":"Account type of the users receiving / being able to view the note. \n\nFor example when sending a note from the distributor to the supplier, this will indicate the recipient (supplier).\n<details>\n  <summary>**Account Types**</summary>\n  \n  * `GUEST` - Note visible to the guest.\n  \n  * `PARTNER` - Note visible to the partner.\n\n  * `SUPPLIER` - Note visible to the supplier.\n  \n  * `RESELLER` - Note visible to the reseller / supplier admin.\n  \n  * `DISTRIBUTOR` - Note visible to the distributor.\n  \n</details>\n","enum":["GUEST","PARTNER","SUPPLIER","RESELLER","DISTRIBUTOR"]}},"note_creator_account_type":{"title":"Note Creator Account Type","type":"string","description":"Account type of the user who created the note. \n\nFor example when sending a note from the distributor to the supplier, this will indicate the sender (e.g distributor).\n<details>\n  <summary>**Account Types**</summary>\n\n  * `GUEST` - Note created by the guest.\n  \n  * `PARTNER` - Note created by the partner.\n\n  * `SUPPLIER` - Note created by the supplier.\n  \n  * `DISTRIBUTOR` - Note created by the distributor.\n  \n  * `RESELLER` - Note created by the reseller / supplier admin.\n  \n  * `PLATFORM_ADMIN` - Note created by the platform-admin.\n  \n  * `SUPER_ADMIN` - Note created by the super-admin.\n\n</details>\n","enum":["GUEST","PARTNER","SUPPLIER","RESELLER","DISTRIBUTOR"]},"note_creator_user_name":{"title":"Note Creator User Name","type":"string","description":"Name of the user that created this note.","readOnly":true},"note_creator_user_email":{"title":"Note Creator User Email","type":"string","description":"Email of the user that created this note.","readOnly":true},"note_creator_user_role":{"title":"Note Creator User Role","type":"string","description":"Userrole (name) of the user that created this note.","readOnly":true}},"required":["note_value","note_recipients"]},"PickupPoint":{"title":"Pickup Point","description":"Information on a pickup point.","type":"object","properties":{"pickup_point_id":{"title":"Pickup Point ID","description":"Pickup point ID.","type":"string"},"pickup_point_name":{"title":"Pickup Point Name","description":"Pickup point name / label.","type":"string","readOnly":true},"pickup_point_type":{"$ref":"#/components/schemas/PickupPointType"},"pickup_point_description":{"title":"Pickup Point Description","description":"Pickup point description.","type":"string","readOnly":true},"pickup_point_location":{"title":"Pickup Point Location","description":"Reference to the location details.","type":"string","readOnly":true},"pickup_point_time":{"title":"Pickup Point Time","description":"Time of pickup.","type":"string","format":"time"},"pickup_point_times":{"title":"Pickup Point Times","description":"Times available to select for this pickup point.","type":"array","items":{"title":"Pickup Point Time","description":"Time of pickup.","type":"string","format":"time"}},"pickup_point_duration":{"title":"Pickup Point Duration","description":"Duration of the pickup in minutes.","type":"integer","readOnly":true},"pickup_point_availability_dependency":{"title":"Pickup Point Availability Dependency","description":"Dependency on the selected `availability_slot`.\n\nThe selected (`pickup_point_time` + `pickup_point_duration`) is not allowed to exceed the selected `availability_from_date_time` and therefore only a limited amount of `pickup_point_times` should be shown.","type":"boolean","readOnly":true}},"required":["pickup_point_id","pickup_point_name"]},"PickupPointType":{"title":"Pickup Point Type","description":"Type of pickup point.\n\nPickup Point Type:\n  * `FIXED` - Fixed, pre-defined pickup point.\n   \n  * `CUSTOM` - Custom pickup point.","type":"string","enum":["FIXED","CUSTOM"]},"ProductAdmissionType":{"title":"Product Admission Types","type":"string","readOnly":true,"enum":["TIME_PERIOD","TIME_DATE","TIME_POINT","TIME_SLOT","TIME_OPEN"],"description":"<details>\n  <summary>**Product Admission Types**</summary>\n  \n* `TIME_PERIOD` - Customers can arrive at any time between the start (`availability_from_date_time`) and end time (`availability_to_date_time`) of the availability slot. Multiple periods in a single day should be expected.\n  Therefore a date- and timepicker should be shown.\n\n* `TIME_DATE` - Variation on `TIME_PERIOD`, whereas only a single period exists in a day. It is not required to choose between different times within a day, therefore only a datepicker is required.\n  Note that in case the slot includes midnight (two or more days), the day from which the `availability_from_date_time` originated should take precedence.\n\n* `TIME_POINT` - Customers are required to be present at the start time of the availability slot but can leave any time they want.\n* `TIME_OPEN` - Customers can arrive at any time. Availablity is not applicable.\n* `TIME_SLOT` - Customers are required to be present at the start time of the availability slot, and the service is expected to finish at the end time of the slot. </details>\n"},"ProductClass":{"title":"Product Class","type":"string","readOnly":true,"description":"<details>\n  <summary>**Product Classes**</summary>\n  \n  * `STANDARD` - Product types in the standard class are the most common and are supported by almost all systems.\n  \n  * `COMBI` - Product is a combi-product. This product is the main combi product and is not bookable on its own. All of the sub-products linked to this combi should be booked as well. These products are listed inside `product_combi_details`.\n  \n  * `CLUSTER` - Product is a cluster-product. This product is the main cluster product and is not bookable. One of the sub-products linked to this cluster should be booked instead. These products are listed inside `product_cluster_details`.\n  \n  * `MERCHANDISE` - \n  \n  * `BUNDLE` - Product is a bundle-product. This product is the main bundle product and is not bookable on its own. All of the sub-products linked to this bundle should be booked as well. These products are listed inside `product_bundle_details`.\n  \n  * `ADDON` - \n  \n  * `OTHER` - Products in the other/custom class are completely dynamic.\n\n</details>\n","enum":["STANDARD","COMBI","CLUSTER","MERCHANDISE","BUNDLE","ADDON","OTHER"]},"BookingExtraOptions":{"title":"Booking Extra Options","deprecated":true,"description":"The product options booked. In case any of the booked product options are listed as `option_mandatory:true` you are required to fill in this field.\n\nIf you book `product_options` which are priced based on product type (`option_price_type:PRODUCT_TYPE`) then all booked options will return with their actual prices.\n","type":"object","properties":{"option_id":{"title":"Option ID","description":"Option ID.","type":"string"},"option_count_visible":{"title":"Option Count Visible","description":"Whether the selected quantity should be visible in the cart or shown as combined single price.","type":"boolean"},"option_discount_applicable":{"title":"Option Discount Applicable","description":"Whether any cart or promotional discounts apply on this option.","type":"boolean"},"option_values":{"title":"Option Values","description":"Option values.","type":"array","items":{"$ref":"#/components/schemas/BookingExtraOptionDetails"}}},"required":["option_id"]},"BookingExtraOptionDetails":{"title":"Booking Extra Option Details","description":"Booking extra option details.","type":"object","allOf":[{"$ref":"#/components/schemas/ExtraOptionValue"},{"type":"object","properties":{"value_discount_price":{"title":"Value Discount Price","description":"Optionally returned value_discount_price if discount apply on option value.","type":"string","readOnly":true},"value_count":{"title":"Value Count","description":"Value count.","type":"integer","minimum":0,"maximum":500}},"required":["value_count"]}]},"ExtraOptionValue":{"title":"Extra Option Value","description":"Extra option value.","type":"object","properties":{"value_id":{"title":"Value ID","description":"Value ID.","type":"string"},"value_name":{"title":"Value Name","description":"(Translatable) Value name.","type":"string","readOnly":true},"value_price":{"title":"Value Price","description":"The price of this value. In case `option_price_type:PRODUCT_TYPE` then this field will be undefined on `product_options` level.","type":"string","readOnly":true},"value_cost_price":{"title":"Value Cost Price","description":"The cost price of this value.","type":"string","readOnly":true},"value_percentage":{"title":"Value Percentage","description":"Optionally returned if `value_price` is percentage based.","type":"string","readOnly":true},"value_price_tax_id":{"title":"Value Price Tax ID","description":"Tax ID for this product option value. Tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_price_tax_amount":{"title":"Value Price Tax Amount","description":"Amount of tax applied for this product option value. Additional tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_price_tax_rate":{"title":"Value Price Tax Rate","description":"Tax rate applied for this product option value. Additional tax information can be retrieved from the Tax API.","type":"string","readOnly":true},"value_product_type_id":{"title":"Value Product Type ID","description":"Returned in case this value / option is only applicable to a specific product type (`option_price_type:PRODUCT_TYPE`).","type":"string","readOnly":true}},"required":["value_id"]},"ProductSubDetail":{"title":"Product Sub Detail","description":"Product sub detail.","type":"object","properties":{"product_parent_id":{"title":"Product Parent ID","description":"Unique identifier for the parent product assigned by Prio.","type":"string","readOnly":true},"product_id":{"title":"Product Sub ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_title":{"title":"Product Title","description":"The title of product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_source_id":{"title":"Product Source ID","type":"string","description":"Unique ID of the product source.","readOnly":true},"product_source_name":{"title":"Product Source Name","type":"string","description":"Source of the product. \n\nEither PrioTicket or the name of the other reservation system e.g. CSS.","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_currency_code":{"title":"Product Currency Code","description":"Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).","type":"string","readOnly":true},"product_availability_id":{"title":"Product Combi Availability ID","description":"The unique ID for the availability slot. Only mandatory if `product_availability:true`","type":"string"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_capacity_id":{"title":"Availability Slot Capacity ID","description":"Availability group / capacity identifier.","type":"string","readOnly":true},"product_availability_capacity_shared_id":{"title":"Availability Slot Shared Capacity ID","description":"Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.","type":"string","readOnly":true},"product_type_details":{"title":"Product Type Booking Details","description":"A list specifying the booking quantity per product type. Only returned for bundle products.","type":"array","items":{"$ref":"#/components/schemas/BookingItemWithPricing"}},"booking_travel_date":{"title":"Booking Combi Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.","type":"string","format":"date-time"},"booking_reference":{"title":"Booking Reference","type":"string","description":"Unique reference for this sub-booking.","readOnly":true},"booking_external_reference":{"title":"Booking External Reference","description":"A unique booking identifier within the external system.","type":"string"}},"required":["product_parent_id","product_id","product_title","product_supplier_id","product_supplier_name","product_admission_type","product_currency_code"]},"BookingItemWithPricing":{"title":"Regular Booking Item","description":"Regular booking item.","type":"object","allOf":[{"$ref":"#/components/schemas/BookingItem"},{"type":"object","properties":{"product_type_pricing":{"$ref":"#/components/schemas/Pricing"}}}]},"BookingItem":{"title":"Booking Item","description":"Reference to the specific type / configuration of the product.","type":"object","properties":{"product_type":{"$ref":"#/components/schemas/ProductType"},"product_type_class":{"$ref":"#/components/schemas/ProductTypeClass"},"product_type_id":{"title":"Product Type ID","type":"string","description":"In case of more complex product configurations e.g. multiple ambiguous product types, the preferred option must be specified using the ID."},"product_type_label":{"title":"Product Type Label","description":"(Translatable) The product type label.","type":"string","readOnly":true},"product_type_age_from":{"title":"Product Type Age From","description":"The starting age for age group.","readOnly":true,"type":"integer","multipleOf":1},"product_type_age_to":{"title":"Product Type Age To","description":"The ending age for age group.  If both `product_type_age_from` and `product_type_age_to` are empty no age-restrictions should be shown. If only `product_type_age_to` is empty, then it is advised to show the age-restriction as e.g. \"22+\".\n","type":"integer","readOnly":true,"multipleOf":1},"product_type_count":{"title":"Product Type Count","description":"The quantity being booked for the specified product type.\n\nPlease note that the following structures are deemed semantically the same.\n```\n\"product_type_details\":[\n  {\n     \"product_type_id\":\"13725\",\n     \"product_type_count\":\"2\"\n  }\n]\n\nand\n\n\"product_type_details\":[\n  {                     \n     \"product_type_id\":\"13725\",   \n     \"product_type_count\":1   \n  },\n  {       \n     \"product_type_id\":\"13725\",    \n     \"product_type_count\":1     \n  }\n]\n```\nWe allow this 'alternative format' for 'ease-of-use'. Please note that in the order response we have no other option than to 'split' the product types, otherwise, we would not be able to send multiple codes (single `product_type_code` per pax/piece) in the response.\n","type":"integer","minimum":1,"maximum":500,"multipleOf":1},"product_type_pax":{"title":"Product Type Pax","description":"Number of persons to be counted in the reporting for the selected product type quantity.","type":"integer","readOnly":true,"minimum":0},"product_type_capacity":{"title":"Product Type Capacity","type":"integer","readOnly":true,"minimum":0,"description":"The capacity count to be blocked in the system for the selected availability slot.\n\nFor example:\n\nIf a single table with six seats is booked by two persons, the setup would be as follows:\n\n  ```\n  \"product_type_count\": 1,\n  \"product_type_pax\": 2,\n  \"product_type_capacity\": 6\n  ```\n"},"product_type_spots":{"title":"Product Type Spots","description":"Product type spots.","type":"array","minItems":1,"items":{"$ref":"#/components/schemas/Spot"}},"product_type_code":{"title":"Product Type Code","description":"The product code allocated by Prio to redeem products.","type":"string"}},"required":["product_type_id","product_type","product_type_count","product_type_pax"]},"ProductType":{"title":"Product Type","type":"string","description":"Each product contains product types. These product types can offer aged based ticketing (such as Adult and Child), but also provide a variety of other flexible product variations such as group pricing, business and economy seating or different car configurations.\n\nBecause some products might behave different from others, each product type is categorized within a product class; a group of products that behaves similarly.\n<details>\n  <summary>**Product Types**</summary>\n\n  * Class Standard:\n    \n    Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.\n    \n    Tour and experience providers have the flexibility to vary prices and apply different rules based on the age of their customers. This means they can charge full ticket prices for adults while offering discounted rates for children, or they may have specific requirements such as requiring at least one adult for every group of children booking a tour.\n    \n    During the process of checking prices and proceeding to checkout, customers should be able to select the number of individuals from each available age group for their booking.\n  \n    * `ADULT` - Adult.\n    \n    * `CHILD` - Child.\n    \n    * `SENIOR` - Senior.\n    \n    * `YOUTH` - Youth.\n        \n    * `INFANT` - Infant.\n    \n  * Class Individual:\n  \n    Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.\n    \n    * `PERSON` - Person.\n    \n    * `STUDENT` - Student.\n    \n    * `RESIDENT` - Resident.\n    \n    * `MILITARY` - Military.\n    \n    * `IMPAIRED` - Impaired.\n  \n  * Class Item:\n  \n    Product types in the item class do not refer to actual persons, instead they could, for example, be packages (Regular, Silver, Diamond), objects (Merchandise, private tours), a type of event, class identifier (Economy, Business) and much more.\n  \n    * `ITEM` - Item.\n    \n  * Class Group:\n   \n    Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.\n    \n    * `GROUP` - Group.\n    \n    * `FAMILY` - Family.\n    \n  * Class Custom:\n  \n    Product types in the custom class are completely dynamic and therefore require explicit mapping with external systems. They do not return as `CUSTOM`, instead they can take any form.\n    \n    * `CUSTOM` - Custom.\n    \n</details>\n","enum":["ADULT","CHILD","SENIOR","YOUTH","INFANT","PERSON","STUDENT","RESIDENT","MILITARY","IMPAIRED","ITEM","GROUP","FAMILY","CUSTOM"]},"ProductTypeClass":{"title":"Product Type Class","type":"string","readOnly":true,"description":"<details>\n  <summary>**Product Type Classes**</summary>\n  \n  * `STANDARD` - Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.\n  \n  * `INDIVIDUAL` - Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.\n  \n  * `ITEM` - Product types in the item class do not refer to actual persons, instead they could, for example, be packages (Regular, Silver, Diamond), objects (Merchandise, private tours), a type of event, class identifier (Economy, Business) and much more.\n  \n  * `GROUP` - Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.\n  \n  * `CUSTOM` - Product types in the custom class are completely dynamic and therefore require explicit mapping with external systems. They do not return as CUSTOM, instead they can take any form.\n\n</details>\n","enum":["STANDARD","INDIVIDUAL","ITEM","GROUP","CUSTOM"]},"Spot":{"title":"Spot","type":"object","description":"Information on the selected spot. Only applicable if PrioSeating is being used (`product_availability_assigned:true`).\n","properties":{"spot_name":{"title":"Spot Name","type":"string","description":"Spot name.","readOnly":true},"spot_section":{"title":"Spot Section","type":"string","description":"Name of the section. Only applicable if the product has sections."},"spot_row":{"title":"Spot Row","type":"string","description":"The row the spot resides in."},"spot_number":{"title":"Spot Number","description":"The spot number.","type":"string"}},"required":["spot_state"]},"ProductAddonDetail":{"title":"Product Addon Detail","description":"Product Addon detail.","type":"object","properties":{"product_id":{"title":"Product Sub ID","description":"Unique identifier for the product assigned by Prio.","type":"string"},"product_title":{"title":"Product Title","description":"The title of product.","type":"string","readOnly":true},"product_supplier_id":{"title":"Product Supplier ID","description":"Unique identifier for supplier.","type":"string","readOnly":true},"product_supplier_name":{"title":"Product Supplier Name","description":"Name of the supplier which offers the product(s).","type":"string","readOnly":true},"product_admission_type":{"$ref":"#/components/schemas/ProductAdmissionType"},"product_availability_from_date_time":{"title":"Product Availability From Date Time","description":"The starting date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"product_availability_to_date_time":{"title":"Product Availability To Date Time","description":"The till date and time of the activity availability.","type":"string","format":"date-time","readOnly":true},"booking_travel_date":{"title":"Booking Combi Travel Date","description":"If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.","type":"string","format":"date-time"},"booking_order_reference":{"title":"Booking Order Reference","description":"Booking order reference","type":"string"},"booking_reference":{"title":"Booking Reference","description":"A unique booking identifier within the system.","type":"string"},"booking_status":{"$ref":"#/components/schemas/BookingStatusTypes"}},"required":["product_id","product_title","product_supplier_id","product_supplier_name","product_admission_type"]},"ContactDetails":{"title":"Contact Details","description":"Information on the contact.","type":"object","properties":{"contact_uid":{"title":"Contact User Identifier","description":"A unique contact identifier created by Prio. \n\nIn case this field is left blank, a new contact will be created in the system. If you pass an already existing `contact_uid`, those contact details will be  used and linked to the current/future order. In this case all other fields will be ignored.\n> Only applicable for partners using the Contacts Module (Returning guests). For regular transactions this parameter can be safely ignored.","type":"string","format":"uuid"},"contact_external_uid":{"title":"Contact External User Identifier","description":"Unique external identifier of the contact.","type":"string"},"contact_version":{"title":"Contact Version","description":"Contact version; every time the contact details are updated, a new version is registered.","type":"integer","readOnly":true,"default":1,"multipleOf":1},"contact_number":{"title":"Contact Number","description":"Number of the contact.","type":"string","maxLength":50},"contact_type":{"$ref":"#/components/schemas/ContactType"},"contact_title":{"title":"Contact Title","description":"Title prefix of the contact (Mister / Miss / Misses etc).","type":"string"},"contact_name_first":{"title":"Contact First Name","description":"First name of the contact.","type":"string","maxLength":255},"contact_name_last":{"title":"Contact Last Name","description":"Surname of the contact. If you only have the fullname, we recommend sending it as `contact_name_last` and leaving the `contact_name_first` blank.","type":"string","maxLength":255},"contact_email":{"title":"Contact Email","description":"Email address of the contact.","type":"string","format":"email"},"contact_phone":{"title":"Contact Phone","description":"Must be a valid E.164 spec compliant phone number.","type":"string","format":"phone"},"contact_mobile":{"title":"Contact Phone","description":"Must be a valid E.164 spec compliant phone number.","type":"string","format":"phone"},"contact_language":{"title":"Contact Language","type":"string","description":"Language and culture code of the contact preferred language ([ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1))."},"contact_nationality":{"title":"Contact Nationality","description":"Country code of the contact ([ISO-3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)).","type":"string"},"contact_flight_number":{"title":"Contact Flight Number","description":"Contact Flight Number.","type":"string"},"contact_loyalty_number":{"title":"Contact Loyalty Number","description":"Contact Loyalty Number.","type":"string"},"contact_birth_place":{"title":"Contact Birth Place","description":"Place of birth.","type":"string"},"contact_birth_date":{"title":"Contact Birth Date","description":"Date of birth.","type":"string","format":"date"},"contact_passport":{"title":"Contact Passport","description":"Passport details of the contact.","type":"string"},"contact_gender":{"title":"Contact Gender","description":"Gender of the contact.","type":"string","enum":["MALE","FEMALE","OTHER"]},"contact_age":{"title":"Contact Age","description":"Age of the contact.","type":"integer","maximum":150},"contact_room_number":{"title":"Contact Room Number","description":"Contact room number.","type":"string"},"contact_website":{"title":"Contact Website","description":"Contact website.","type":"string","format":"URI"},"contact_company":{"$ref":"#/components/schemas/ContactCompany"},"contact_classification":{"$ref":"#/components/schemas/ContactClassification"},"contact_address":{"$ref":"#/components/schemas/AddressModel"},"contact_notes":{"title":"Contact Notes","description":"Contact notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"contact_custom_fields":{"title":"Contact Custom Fields","description":"Freeform entry of any key-value pair.","type":"array","items":{"$ref":"#/components/schemas/CustomField"}},"contact_created":{"title":"Contact Created","description":"Creation date and time of the contact.","type":"string","format":"date-time","readOnly":true},"contact_modified":{"title":"Contact Modified","description":"Last update date and time of the contact.","type":"string","format":"date-time","readOnly":true}},"required":["contact_created","contact_modified"]},"ContactType":{"title":"Contact Type","description":"Type of contact.\n\nSome supplier systems do not support multiple contacts per orders. In that case we have the following policy:\n1. If set, we sent `contact_type:BOOKER`.\n2. Otherwise, if set, we sent the first `contact_type:CONTACT`.\n3. If both are not set, we sent the first contact in the array.\n\n<details>\n  <summary>**Contact Types**</summary>\n\n* `BOOKER` - Main Booker details (End-consumer). Only a single main booker is recommended. \n  \n  This is the most common type of contact, as it contains information about the person / entity who made the booking.\n  \n  > Any automated emails such as order confirmations will be sent to this contact type. \n\n* `CONTACT` - General, non-specific contact. \n\n  Only use this type if a more specific classification is unknown.\n\n* `GUEST` - Guest / End-consumer / Passenger linked to the booking.\n\n  Defining the guests per booking allows for advanced functionality such as Check-In and passenger management.\n\n* `PARTNER` - Partner details.\n* `STAFF` - General staff.\n* `CASHIER` - Cashier performing the sales.\n* `PAYMENT` - Billing / Financial contact. \n\n  > Payment emails will be sent to this contact type by default.\n\n* `AGENT` - Agent details.\n* `EMERGENCY` - Emergency contact (Guest, host, family member etc.).\n* `GUIDE` - Teacher / Instructor / Guide details.\n* `SUPPLIER` - Supplier details.\n* `VENUE` - Venue details.\n* `HOST` - Host details.\n* `COMPANY` - (Guest) company details.\n* `DELIVERY` - (Guest) Delivery / Shipping contact / address details.\n* `MANAGER` - (UPCOMING) Manager contact.\n* `SUPPORT` - (UPCOMING) Support contact.\n* `INSTRUCTOR` - (UPCOMING) Instructor contact.\n* `OTHER` - Other type of contact, not mentioned above.\n</details>","type":"string","default":"CONTACT","enum":["BOOKER","CONTACT","GUEST","PARTNER","STAFF","CASHIER","PAYMENT","AGENT","EMERGENCY","GUIDE","SUPPLIER","VENUE","HOST","COMPANY","DELIVERY","OTHER"]},"ContactCompany":{"title":"Contact Company","description":"Contact company details.","type":"object","properties":{"company_name":{"title":"Company Name","description":"Company name.","type":"string"},"company_registration_number":{"title":"Company Registration Number","description":"Company registration number.","type":"string"},"company_tax_number":{"title":"Company Tax Number","description":"Company tax number.","type":"string"}}},"ContactClassification":{"title":"Contact Classification","description":"Contact classification.","type":"string","enum":["IMPORTANT","VERY_IMPORTANT","PROBLEMATIC","DISABLED_PERSON","TOP_MANAGEMENT","STAFF","LOYALTY_PROGRAM","MEDIA","FRIEND_OR_FAMILY","RETURNING","PERSONAL","BUSINESS"]},"AddressModel":{"title":"Address Model","type":"object","description":"Address details.","properties":{"id":{"title":"Address ID","type":"string","format":"uuid","deprecated":true,"readOnly":true,"description":"Unique address identifier."},"name":{"title":"Address Name","description":"Name / Label of this address / addressee.","type":"string"},"street":{"title":"Address Street","description":"Address line 1 / Street.","type":"string"},"addition":{"title":"Address Addition","description":"Additional address line 2.","type":"string"},"city":{"title":"Address City","description":"Town / City / Village.","type":"string"},"postal_code":{"title":"Address Postal Code","description":"Address postal code.","type":"string"},"region":{"title":"Address Region","description":"State / Province / Region.","type":"string"},"country":{"title":"Address Country","description":"Address country.","type":"string"},"country_code":{"title":"Address Country Code","description":"Returns country code of the product ( [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2))","type":"string"},"place_id":{"title":"Address Google Place ID","description":"Google Place ID","type":"string"},"latitude":{"title":"Address Latitude","description":"Address latitude.","type":"string"},"longitude":{"title":"Address Longitude","description":"Address longitude.","type":"string"},"notes":{"title":"Address Note","description":"Address note.","type":"string"}}},"CustomField":{"title":"Custom Field","type":"object","description":"Custom Fields allow you to store and list any arbitrary value in the system.\n\nThis metadata are data elements that you create yourself. When you add metadata to your request, they are echoed in the response so that you can connect the transaction to your metadata. For example, to add a shift number and an employee ID to a transaction. You are free to create metadata fields, even encoded, as long as the datatype is a string.","properties":{"custom_field_name":{"title":"Custom Field Name","type":"string","description":"Unique Name / Identifier for this field."},"custom_field_value":{"title":"Custom Field Value","type":"string","description":"Freeform value of this field."},"custom_field_type":{"$ref":"#/components/schemas/CustomFieldType"}}},"CustomFieldType":{"title":"Custom Field Type","type":"string","deprecated":true,"description":"Custom Field Type:\n  * `SYSTEM` - This field is only stored and returned in the API. Only visible to the system.\n  * `USER` - This value is stored and visualized, can be shown in a customized fashion in other modules.","enum":["SYSTEM","USER"]},"CheckoutField":{"title":"Checkout Field","description":"Checkout field shown on the checkout screen.","type":"object","properties":{"checkout_field_id":{"title":"Checkout Field ID","description":"Unique Checkout Field ID.","type":"string"},"checkout_field_title":{"title":"Checkout Field Title","type":"string","readOnly":true},"checkout_field_label":{"title":"Checkout Field Label","type":"string","readOnly":true},"checkout_field_place_holder":{"title":"Checkout Field Placeholder","type":"string","readOnly":true},"checkout_field_help_text":{"title":"Checkout Field Help Text","type":"string","readOnly":true},"checkout_field_account_type":{"title":"Checkout Field Account Type","description":"Whether this field is required by the venue (supplier) or the seller (distributor).","type":"string","readOnly":true,"enum":["SUPPLIER","DISTRIBUTOR"]},"checkout_field_booking_reference":{"title":"Checkout Field Booking Reference","type":"array","items":{"type":"string"}},"checkout_field_restriction":{"title":"Checkout Field Restriction","description":"Whether a field is required, optional or recommended. Mandatory fields must be filled during order checkout, otherwise the order will be rejected.","type":"string","readOnly":true,"enum":["REQUIRED","OPTIONAL","RECOMMENDED"]},"checkout_field_level":{"title":"Checkout Field Level","description":"Whether answers should be provided once or for each participant.","type":"string","readOnly":true,"enum":["PRODUCT","PARTICIPANT"]},"checkout_field_unit":{"title":"Checkout Field Unit","type":"string"},"checkout_field_input_type":{"title":"Checkout Field Input Type","type":"string","readOnly":true,"description":"* `SINGLE` - Single option value is available.\n* `RADIO` - Customer can select only one out of multiple option values.\n* `CHECKBOX` - Customers can select one or more option values.\n* `SHORT_ANSWER` - A one-line input field for text. (UPCOMING)\n* `PARAGRAPH` - A multi-line input field for text. (UPCOMING)\n* `DROPDOWN` - A selection from a dropdown. (UPCOMING)\n* `BOOLEAN` - A yes/no button. (UPCOMING)\n* `PHONE` - A phonenumber. (UPCOMING)\n* `EMAIL` - An email. (UPCOMING)\n* `DATE` - A date. (UPCOMING)\n* `TIME` - A time. (UPCOMING)\n* `DATETIME` - A date and time. (UPCOMING)\n* `NUMBER` - A number. (UPCOMING)\n* `LOCATION_SEARCH` - A search widget that supports finding matched location given user input from provided location list. (UPCOMING)\n* `CONSENT` - A consent section that requires opt-in.\n","enum":["SINGLE","RADIO","CHECKBOX","SHORT_ANSWER","PARAGRAPH","DROPDOWN","BOOLEAN","PHONE","EMAIL","DATE","TIME","DATETIME","NUMBER","LOCATION_SEARCH","CONSENT"]},"checkout_field_type":{"title":"Checkout Type","description":"Which field the restriction applies on.","type":"string","readOnly":true,"enum":["contact_title","contact_name_first","contact_name_last","contact_email","contact_confirm_email","contact_phone","contact_mobile","contact_language","contact_nationality","contact_country_residence","contact_birth_place","contact_birth_date","contact_passport","contact_passport_expiry","contact_age","contact_address","contact_address_1","contact_address_2","contact_address_postal_code","contact_address_city","contact_address_state","contact_address_country","contact_height","contact_weight","contact_type_company","contact_type_guest","contact_type_booker","contact_company_name","contact_company_address_1","contact_company_address_2","contact_company_postal_code","contact_company_city","contact_company_state","contact_company_country","SYSTEM","CUSTOM"]},"checkout_field_options":{"title":"Checkout Field Options","description":"In case of `checkout_field_input_type:RADIO/CHECKBOX/DROPDOWN`, one or more options should be selected.\n","type":"array","items":{"$ref":"#/components/schemas/CheckoutFieldOption"}},"checkout_field_values":{"title":"Checkout Field Values","description":"Checkout field input/selected values.","type":"array","items":{"$ref":"#/components/schemas/CheckoutFieldValue"}},"checkout_field_created":{"title":"Checkout Field Created","description":"Checkout field creation datetime.","type":"string","readOnly":true,"format":"date-time"}}},"CheckoutFieldOption":{"title":"Checkout Field Option","description":"Checkout field option.","type":"string"},"CheckoutFieldValue":{"title":"Checkout Field Value","description":"Checkout field value/answer.","type":"object","properties":{"checkout_field_value_product_type":{"title":"Checkout Field Value Product Type","description":"Restricts the checkout field selection to a specific product type.","type":"string"},"checkout_field_value":{"title":"Checkout Field Value","description":"Selected / Input value(s) of checkout field. Should be \"true\"\" in case of Boolean type, can be array in case of multi-select.","type":"array","items":{"title":"Checkout Field Entry","description":"Checkout field entry.","type":"string"}},"checkout_field_value_transaction_reference":{"title":"Checkout Field Value Transaction Reference","description":"Restricts the checkout field selection to a specific transaction.","type":"string"}}},"AppliedPromocode":{"title":"Applied Promocode","description":"Details on the applied promocode.","type":"object","properties":{"promo_title":{"title":"Promo Title.","description":"Title of applied promocode.","type":"string"},"promo_description":{"title":"Promo Description","description":"Promo description.","type":"string"},"promo_code":{"title":"Promocode","description":"Promocode.","type":"string"}},"required":["promo_title","promo_code"]},"PaymentDetails":{"title":"Payment Details","description":"Details on the payment(s). In case the payment is not made directly at booking, these details might not yet be available.","type":"object","required":["payment_id","payment_merchant_reference","payment_status","payment_method","payment_type","payment_recurring","payment_gateway_type","payment_currency_code","payment_amount","payment_total","payment_created","payment_created_name","payment_created_email"],"properties":{"payment_id":{"title":"Payment ID","description":"Unique Payment ID set by the Prio system. This is an internal identifier.","type":"string","format":"uuid","readOnly":true},"payment_original_id":{"title":"Payment Original ID","description":"In case of a modification (refund, capture after authorization) this will be the `payment_id` of the original record.","type":"string","format":"uuid","readOnly":true},"payment_partner_id":{"title":"Payment Partner ID","description":"Payment partner identifier.","type":"string"},"payment_merchant_reference":{"title":"Payment Merchant Reference","description":"Unique (external) payment reference set by the merchant / (third) party / POS system initiating the payment. This reference will also be used to identify the payment in the PSP system.","type":"string"},"payment_external_reference":{"title":"Payment External Reference","description":"External payment reference set to identify the shopper / entity / cardholder / guest performing the payment. This reference can also be used to identify the payment in the PSP system.","type":"string"},"payment_order_reference":{"title":"Payment Order Reference","description":"The `order_reference` linked to this payment.","type":"string"},"payment_booking_references":{"title":"Payment Bookings References","description":"The booking references linked to this payment. Only returned in case of partial payment (pay per booking).","type":"array","readOnly":true,"items":{"title":"Booking Reference","description":"The `booking_reference` linked to this payment.","type":"string"}},"payment_order_version":{"title":"Payment Order Version","description":"Version of the order (`order_version`) during the payment.","type":"integer","readOnly":true},"payment_status":{"$ref":"#/components/schemas/PaymentStatus"},"payment_method":{"$ref":"#/components/schemas/PaymentMethod"},"payment_scheme":{"$ref":"#/components/schemas/PaymentScheme"},"payment_type":{"$ref":"#/components/schemas/PaymentType"},"payment_link":{"title":"Payment Link","description":"Only applicable in case the PSP only supports payment via Hosted Payment Page Link or `payment_method:LINK`.","type":"string","readOnly":true,"format":"URI"},"payment_link_expires_at":{"title":"Payment Link Expiry","description":"Date and time when the payment link expires. In case of pre-payment this value will be the `reservation_valid_until`.","type":"string","readOnly":true,"format":"date-time"},"payment_recurring":{"title":"Payment Recurring","description":"Whether the payment details are stored for recurring payments.","type":"boolean","default":false,"readOnly":true},"payment_recurring_type":{"$ref":"#/components/schemas/PaymentRecurringType"},"payment_class":{"$ref":"#/components/schemas/PaymentClass"},"payment_refund_type":{"$ref":"#/components/schemas/RefundType"},"payment_refund_reason":{"title":"Payment Refund Reason","description":"Reason of refund.\n\nOnly applicable in case `payment_type:REFUND`.","type":"string"},"payment_currency_code":{"title":"Payment Currency Code","description":"The (guest) currency code of this payment. According to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).\n\n**(ADVANCED)**\nThis value defaults to `order.order_pricing[].price_currency_code`, unless the guest uses an alternative checkout currency, in which case an additional `payment_currency_rate` and `payment_currency_amount` will be returned.\n\nNote that the payment service provider can perform an additional conversion called dynamic currency conversion (DCC), which will be returned inside `payment_gateway_additional_values`.","type":"string"},"payment_currency_rate":{"title":"Payment Currency Rate","description":"Checkout / Guest currency conversion rate. \n\nIf not set and an alternative `payment_currency_code` is provided, the latest rates from the Currency API will be used as default.\n\n> Alternative rates can only be provided on (re)sales, purchase exchange rates are fixed.","type":"string"},"payment_currency_amount":{"title":"Payment Currency Amount","description":"The total amount / value that has been authorised / settled / refunded in the alternative (guest) currency (`payment_amount` * `payment_currency_rate`).","type":"string","readOnly":true},"payment_amount":{"title":"Payment Amount","description":"The amount authorised / settled / refunded during this transaction in the base (order) currency.\n\nIn case of refunds, this value will be a positive value but the payment type will be set to `payment_type:REFUND`.","type":"string","readOnly":true},"payment_total":{"title":"Payment Running Total","description":"The actual total amount that is (already) authorised / settled in the base (order) currency. This will be a running sum of all (previous) payment (`payment_amount`) transactions linked to this order. Refunds will be subtracted from the total.","type":"string","readOnly":true},"payment_gateway_details":{"$ref":"#/components/schemas/PaymentGatewayDetails"},"payment_contact":{"$ref":"#/components/schemas/ContactDetails"},"payment_notes":{"title":"Payment Notes","description":"Payment notes.","type":"array","items":{"$ref":"#/components/schemas/Note"}},"payment_created":{"title":"Payment Create Date","description":"Date and time of payment.","type":"string","format":"date-time","readOnly":true},"payment_created_name":{"title":"Payment Created Name","description":"Cashier name / Username who created the payment.","type":"string","readOnly":true},"payment_created_email":{"title":"Payment Created Email","description":"Cashier email / User email who created the payment.","type":"string","format":"email","readOnly":true}}},"PaymentStatus":{"title":"Payment Status","description":"Status of guest payment.\n\n<details>\n  <summary>**Payment Statuses**</summary>\n\n * `PAID` (string) - Payment is authorized and settled / captured. This state serves as an indicator to proceed.\n \n    > If `SettlementType:EXTERNAL`, then the order will be automatically PAID upon Order Confirmation.\n * `AUTHORIZED` (string) - Payment has been authorized and can be charged / settled later. The payment is approved by the financial institution. This state serves as an indicator to proceed.\n * `PROCESSING` (string) - Payment is being processed, this is a temporary state. \n * `IN_PROGRESS` (string) - Payment flow has been initiated and is in progress, this is a temporary state. \n * `PENDING` (string) - Payment is pending. This is the initial state for most payments. Initiate a new payment via the Make Payment API.\n \n    > If `SettlementType:EXTERNAL`, then no further action is required.\n * `REFUNDED` (string) - Payment has been refunded / reimbursed. Please consult `payment_refund_type` for more details.\n * `REFUSED` (string) - Payment was refused during last attempt. Please consult your Payment Service Provider for more details. Initiate a new payment via the Make Payment API.\n * `CANCELLED` (string) - Payment has been cancelled during the last attempt or prior to the capture of an authorized payment. Initiate a new payment via the Make Payment API.\n * `ERROR_REFUND` (string) - Payment error occurred during last attempt. Initiate a new refund via the Refund Payment API.\n * `ERROR_PAYMENT` (string) - Payment error occurred during last payment attempt. Initiate a new payment via the Make Payment API.\n * `PARTIAL_PAID` (string) - Payment is partially paid.\n * `PARTIAL_REFUND` (string) - Payment is partially refunded.\n * `CHARGEBACK` (string) - Payment funds are returned to the guest due to a chargeback. Please consult your Payment Service Provider for more details.\n * `EXPIRED` (string) - The payment term has expired. This can happen if for example the authorization deadline has passed.\n * `NOT_REQUIRED` (string) - Payment is not required / applicable. This state serves as an indicator to proceed.\n \n</details>\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"string","readOnly":true,"default":"PENDING","enum":["PAID","AUTHORIZED","PROCESSING","IN_PROGRESS","PENDING","REFUNDED","REFUSED","CANCELLED","ERROR","ERROR_REFUND","ERROR_PAYMENT","PARTIAL_PAID","PARTIAL_REFUND","CHARGEBACK","EXPIRED","NOT_REQUIRED"]},"PaymentMethod":{"title":"Payment Method","description":"Payment method / type used.\n\nMore specific details might be available in `PaymentScheme` after payment.\n<details>\n  <summary>**Payment Methods**</summary>\n\n * `ONLINE` (string) - Accept payments with cards, wallets, and key local payment methods on your website and mobile app.\n * `TERMINAL` (string) - Accept payments with in-store or stand-alone POS terminals.\n * `LINK` (string) - Set payment link, often redirecting to a Hosted Payment Page (HPP). \n * `CASH` (string) - Accept cash payment.\n * `GUEST_BILL` (string) - Charge guest bill.\n * `RECURRING` (string) - Recurring payment.\n * `EXTERNAL` (string) - Payment made outside the client / Prio system.\n * `VOUCHER` (string) - Use voucher.\n * `BANK_TRANSFER` (string) - Set bank transfer, generally used to pay invoices.\n * `OTHER` (string) - Any method not mentioned above.\n \n</details>\n> Only applicable to Guest Payment. Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"string","default":"EXTERNAL","enum":["ONLINE","TERMINAL","LINK","CASH","GUEST_BILL","RECURRING","EXTERNAL","VOUCHER","BANK_TRANSFER","OTHER"]},"PaymentScheme":{"title":"Payment Scheme","description":"Payment scheme used. Available if returned by payment service provider.","type":"string","enum":["VISA","MASTERCARD","MAESTRO","PAYPAL","SOFORT","GIROPAY","SEPA","BANCONTACT","IDEAL","ALIPAY","AFTERPAY","BOLETO","KLARNA_NOW","KLARNA_LATER","DISCOVER","UNIONPAY","VPAY","JCB","TRUSTLY","SWISH","AMERICAN_EXPRESS","AMAZON_PAY","SAMSUNG_PAY","WECHAT_PAY","APPLE_PAY","GOOGLE_PAY","CREDITCARD","UNSPECIFIED","OTHER"]},"PaymentType":{"title":"Payment Type","description":"Type of payment.\n<details>\n  <summary>**Payment Types**</summary>\n\n  * `CAPTURE` (string) - The reserved funds are transferred from the shopper to your account. \n    \n    A payment that was already authorised by the payment processor must be captured to be completed (this is the act of transferring the reserved funds from shopper to merchant).\n  * `AUTHORIZATION` (string) - The payment details of the shopper are verified, and the funds are reserved.\n  \n    This is the process of the card issuer (like Visa or Mastercard) verifying payment details and reserving the funds to capture it later. \n    When a payment was authorised but hasn't been captured yet, a merchant can also decide to cancel it for some reason (like a high risk of fraud).\n  \n    > Note that authorisation is valid only for a limited amount of time. In case an authorised payment hasn't been captured or cancelled, it expires after the predefined deadline is missed.\n  * `REFUND` (string) - If you want to return the funds to your shopper, for example if they returned an item, you need to refund the payment.\n  \n</details>","type":"string","default":"CAPTURE","enum":["CAPTURE","AUTHORIZATION","REFUND"]},"PaymentRecurringType":{"title":"Payment Recurring Type","description":"The type of tokenization used for the recurring payment.\n\nOnly applicable in case of `payment_recurring:true`.\n\nPayment Recurring Type:\n  * `STORE` - One-off transactions where a shopper can either store their payment details or pay at a later time using their saved details.\n  * `SUBSCRIPTION` - A recurring transaction made at regular intervals for a product or a service.\n  * `TOP_UP` - Contracts that occur on a non-fixed schedule using stored card details. This includes automatic top-ups when the cardholder's balance drops below a certain amount.","type":"string","readOnly":true,"enum":["STORE","SUBSCRIPTION","TOP_UP"]},"PaymentClass":{"title":"Payment Class","description":"Payment Class:\n  * `SALES` (string) - Payment settles the outstanding sales amount.\n  * `PURCHASE` (string) - Payment settles the outstanding purchase amount.","type":"string","default":"SALES","deprecated":true,"enum":["SALES","PURCHASE"]},"RefundType":{"title":"Refund Type","readOnly":true,"description":"Type of refund.\n<details>\n  <summary>**Refund Types**</summary>\n\n  * `SYSTEM` - Refund is initiated (manually) by the Prio or Partner system. For example, an admin user in the Order Overview.\n  * `AUTO` - Refund is automatically initiated by the Prio system. For example, if a paid reservation has expired (not confirmed within the `reservation_valid_until`) or is being cancelled.\n  * `PSP` - Refund is (manually) initiated by the Payment Service Provider.\n  * `CHARGE_BACK` - Refund is initiated by the Payment Service Provider (Guest) because of a chargeback.\n  * `OTHER` - Refund is initiated due to other reasons.\n  \n</details>\n  \n> Only applicable in case `payment_type:REFUND`.","type":"string","default":"SYSTEM","enum":["SYSTEM","AUTO","PSP","CHARGE_BACK","OTHER"]},"PaymentGatewayDetails":{"title":"Payment Gateway Details","description":"Payment information for each gateway. Only applicable if a payment gateway has been used to process the payment.","type":"object","anyOf":[{"$ref":"#/components/schemas/PaymentGatewayAdyen"},{"$ref":"#/components/schemas/PaymentGatewayCybersource"},{"$ref":"#/components/schemas/PaymentGatewayHyperPay"},{"$ref":"#/components/schemas/PaymentGatewayAddonPayments"},{"$ref":"#/components/schemas/PaymentGatewayHotelBill"},{"$ref":"#/components/schemas/PaymentGatewayMews"},{"$ref":"#/components/schemas/PaymentGatewayNGenius"},{"$ref":"#/components/schemas/PaymentGatewayExternal"}],"discriminator":{"propertyName":"payment_gateway_type","mapping":{"ADYEN":"#/components/schemas/PaymentGatewayAdyen","CYBERSOURCE":"#/components/schemas/PaymentGatewayCybersource","HYPERPAY":"#/components/schemas/PaymentGatewayHyperPay","ADDONPAYMENTS":"#/components/schemas/PaymentGatewayAddonPayments","MEWS":"#/components/schemas/PaymentGatewayMews","NGENIUS":"#/components/schemas/PaymentGatewayNGenius","EXTERNAL":"#/components/schemas/PaymentGatewayExternal"}}},"PaymentGatewayAdyen":{"title":"Payment Gateway Adyen","description":"Details on the payment when using Adyen to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_terminal_id":{"title":"Payment Terminal ID","description":"Unique ID of the selected payment terminal.","type":"string","deprecated":true}}}]},"CommonPaymentGateway":{"title":"Common Payment Gateway","description":"Common payment gateway.","type":"object","discriminator":{"propertyName":"payment_gateway_type","mapping":{"ADYEN":"#/components/schemas/PaymentGatewayAdyen","CYBERSOURCE":"#/components/schemas/PaymentGatewayCybersource","HYPERPAY":"#/components/schemas/PaymentGatewayHyperPay","ADDONPAYMENTS":"#/components/schemas/PaymentGatewayAddonPayments","MEWS":"#/components/schemas/PaymentGatewayMews","NGENIUS":"#/components/schemas/PaymentGatewayNGenius","EXTERNAL":"#/components/schemas/PaymentGatewayExternal"}},"properties":{"payment_merchant_account_name":{"title":"Payment Merchant Account Name","description":"The name / identifier of the party selling goods or services to shoppers via an e-commerce website, a mobile app, on a point of sale, or across all three channels.","type":"string"},"payment_service_provider_reference":{"title":"Payment Service Provider Reference","description":"Unique payment reference set by the payment service provider. Note that every action will result in a different reference. The original reference can be found below.","type":"string","readOnly":true},"payment_service_provider_original_reference":{"title":"Payment Service Provider Original Reference","description":"The PSP reference associated with the original payment prior to the modification (refund, manual capture) request.","type":"string","readOnly":true},"payment_gateway_type":{"title":"Payment Gateway Type","type":"string","description":"Payment service provider used to process payments.\n<details>\n  <summary>**Payment Gateway Types**</summary>\n\n  * `ADYEN` - Adyen ([More info](https://www.adyen.com/))\n  * `CYBERSOURCE` - Cybersource ([More info](https://www.cybersource.com/))\n  * `HYPERPAY` - Hyperpay ([More info](https://www.hyperpay.com/))\n  * `ADDONPAYMENTS` - Addon Payments ([More info](https://www.addonpayments.com/))\n  * `MEWS` - Mews ([More info](https://www.mews.com/))\n  * `NGENIUS` - Network International ([More info](https://www.network.ae/))\n  * `MULTISAFE` - MultiSafePay ([More info](https://www.multisafepay.com/))\n  * `SUMUP` - SumUp Payments ([More info](https://sumup.com/))\n  * `IZETTLE` - iZettle ([More info](https://www.izettle.com/))\n  * `STRIPE` - Stripe ([More info](https://stripe.com/))\n  * `WORLDPAY` - WorldPay ([More info](https://online.worldpay.com/))\n  * `GOOGLE` - Google Pay ([More info](https://developers.google.com/pay/api))\n  * `PAYONEER` - Payoneer ([More info](https://www.payoneer.com/))\n  * `SMARTPAY` - Smart Pay ([More info](https://www.bankmuscat.com/en/Pages/default.aspx))\n  * `MOKA` - Moka ([More info](https://www.mokapos.com/en))\n  * `EXTERNAL` - The payment is settled externally.\n  * `OTHER` - Payment provider not listed above.\n  * `NONE` - No payment provider is used.\n  \n</details>\n  \n> Used to aid in serialization, deserialization, and validation.\n"},"payment_gateway_additional_values":{"title":"Payment Gateway Additional Values","description":"Additional (conditional) values returned by the payment service provider.\n\nThere are many additional data elements that can be returned. The list is long and growing, so we can't mention all of them here.\n\nFor example:\n  * Cardholder Name\n  * Cardnumber (last digits only)\n  * Card Scheme\n  * Shopper IP\n  * Card Issuer Country\n  * Card Issuer Name\n  * Fraudscore\n  * Transaction Type\n  * Payment Status\n  * Username","type":"object","additionalProperties":{"type":"string"}}},"required":["payment_merchant_account_name","payment_service_provider_reference","payment_gateway_type"]},"PaymentGatewayCybersource":{"title":"Payment Gateway Cybersource","description":"Payment gateway cybersource.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_auth_code":{"title":"Payment Auth Code","description":"Payment auth code.","type":"string","writeOnly":true}},"required":["payment_auth_code"]}]},"PaymentGatewayHyperPay":{"title":"Payment Gateway HyperPay","description":"Payment gateway hyperpay.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"PaymentGatewayAddonPayments":{"title":"Payment Gateway Addon Payments","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_auth_code":{"title":"Payment Auth Code","description":"Payment auth code.","type":"string","writeOnly":true}}}]},"PaymentGatewayHotelBill":{"title":"Payment Gateway Hotel Bill","description":"Payment gateway hotel bill.","type":"object","deprecated":true,"allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","properties":{"payment_hotel_id":{"title":"Payment Hotel ID","description":"Payment hotel ID.","type":"string"},"payment_hotel_guest_name":{"title":"Payment Hotel Guest Name","description":"Payment hotel guest name.","type":"string"},"payment_hotel_room_number":{"title":"Payment Hotel Room Number","description":"Payment hotel room number.","type":"string"}},"required":["payment_hotel_id","payment_hotel_guest_name","payment_hotel_room_number"]}]},"PaymentGatewayMews":{"title":"Payment Gateway Mews","description":"Details on the payment when using MEWS to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"},{"type":"object","required":["payment_customer_id"],"properties":{"payment_customer_id":{"title":"Payment Customer ID","description":"Unique identifier of the MEWS customer. Retrieved via the [MEWS Customers API](https://mews-systems.gitbook.io/connector-api/operations/customers).","type":"string"}}}]},"PaymentGatewayNGenius":{"title":"Payment Gateway N-Genius","description":"Details on the payment when using N-Genius to collect a payment.","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"PaymentGatewayExternal":{"title":"Payment Gateway External","description":"Details on the payment when using an external Payment Gateway or using a physical payment method such as cash to settle the Guest Payment.\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).","type":"object","allOf":[{"$ref":"#/components/schemas/CommonPaymentGateway"}]},"CreditLimit":{"title":"Credit Limit","description":"Credit limit is a functionality to set a selling limit to clients. \n\nYou are not able to create any additional bookings if your credit limit is reached. To reset your credit limit a payment is required.\n\nNote that if the credit limit details are returned in the reservation or order object that the values are relative to the reservation / order creation time. Subsequent calls will not update the results. ","type":"object","readOnly":true,"deprecated":true,"required":["credit_status","credit_total","credit_blocked","credit_used","credit_remaining","credit_reset","credit_invoice_interval","credit_invoice_settlement"],"properties":{"credit_status":{"title":"Credit Status","type":"string","description":"The credit status.","readOnly":true,"enum":["ACTIVE","SUSPENDED"]},"credit_total":{"title":"Credit Total","type":"string","description":"The total credit limit.","readOnly":true},"credit_deposit":{"title":"Credit Deposit","type":"string","description":"The amount of credit (safety) deposit.","readOnly":true,"deprecated":true},"credit_blocked":{"title":"Credit Blocked","type":"string","description":"The amount of credit blocked / reserved.","readOnly":true},"credit_used":{"title":"Credit Used","type":"string","description":"The amount of credit utilized.","readOnly":true},"credit_remaining":{"title":"Credit Remaining","type":"string","description":"The amount of credit remaining.","readOnly":true},"credit_invoice_interval":{"title":"Credit Invoice Interval","type":"string","description":"Type of credit invoice interval.\n\nInvoice Interval Types:\n   * `MANUAL` (string) - An invoice is generated upon manual user action.\n   * `PER_ORDER` (string) - An invoice is generated for each individual order.\n   * `LIMIT_REACHED` (string) - An invoice is generated once the credit limit is reached (`credit_remaining` equals 0).","readOnly":true,"enum":["MANUAL","PER_ORDER","LIMIT_REACHED"]},"credit_invoice_settlement":{"title":"Credit Invoice Invoice","type":"string","description":"Whether the invoice will be automatically settled / paid.","readOnly":true,"enum":["MANUAL","AUTO"]},"credit_reset":{"title":"Credit Reset","type":"string","format":"date-time","description":"The datetime of the last credit reset.","readOnly":true}}},"ErrorModel":{"title":"Error Model","description":"Error model.","type":"object","readOnly":true,"properties":{"error":{"title":"Error Code","description":"The error code which occured.\n\nAs our API has over 1000+ unique error codes (grouped by HTTP status). We discourage implementing individual errors on your customer front-end interface and suggest a catch-all clause for each HTTP status code instead.\n\nErrors can be shown directly to the customer using the `error_message`, while more specific details explaining the problem will be provided in the `errors` object.\nWe recommend a combination of `error_message` and `error_reference` when communicating with the customer and API support.\n","type":"string","readOnly":true},"error_reference":{"title":"Error Reference","description":"Unique reference linked to this error.\n\nWe recommend showing this reference to the customer to allow for better issue tracking.\n","type":"string","readOnly":true},"error_message":{"title":"Error Message","description":"Customer friendly error message which can be shown on your front-end.\n","type":"string","readOnly":true},"error_description":{"title":"Error Description","description":"Human-readable ASCII [[USASCII]](https://tools.ietf.org/html/rfc6749#ref-USASCII) text providing additional information, used to assist the client developer in understanding the error that occurred.","type":"string","readOnly":true},"error_uri":{"title":"Error URI","description":"A URI identifying a human-readable web page with information about the error, used to provide the client \ndeveloper with additional information about the error.","type":"string","readOnly":true},"errors":{"title":"Error Messages","description":"Specific messages indicating one or more problems.","type":"array","readOnly":true,"items":{"title":"Error Message","description":"Specific message indicating a problem.","type":"string","readOnly":true}}},"required":["error","error_reference"]}},"responses":{"InvalidRequest":{"description":"Invalid Request\n\nThe HyperText Transfer Protocol (HTTP) 400 Bad Request response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"AuthenticationFailed":{"description":"Authentication Failed\n\nThe access token provided is expired, revoked, malformed, or invalid for other reasons. The resource SHOULD respond with the HTTP 401 (Unauthorized) status code.  The client MAY request a new access token and retry the protected resource request.","headers":{"WWW-Authenticate":{"description":"Defines the authentication method that should be used to gain access to a resource.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"Forbidden":{"description":"Forbidden\n\nThe request requires higher privileges than provided by the access token. The resource server SHOULD respond with the HTTP 403 (Forbidden) status code and MAY include the `scope` attribute with the scope necessary to access the protected resource.","headers":{"WWW-Authenticate":{"description":"Defines the authentication method that should be used to gain access to a resource.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"MethodNotAllowed":{"description":"Method Not Allowed\n\nThe HyperText Transfer Protocol (HTTP) 405 Method Not Allowed response status code indicates that the request method is known by the server but is not supported by the target resource.\n\nA request method is not supported for the requested\n      resource; for example, a GET request on a form that\n      requires data to be presented via POST, or a PUT request\n      on a read-only resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"NotAcceptable":{"description":"Not Acceptable\n\nThe HyperText Transfer Protocol (HTTP) 406 Not Acceptable client error response code indicates that the server cannot produce a response matching the list of acceptable values defined in the request's proactive content negotiation headers, and that the server is unwilling to supply a default representation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"Conflict":{"description":"Conflict\n\nThe HTTP 409 Conflict response status code indicates a request conflict with current state of the server.\n\nConflicts are most likely to occur in response to a PUT request. For example, you may get a 409 response when trying to pay an order which is already cancelled on the server, resulting in a version control conflict.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"UnprocessableEntity":{"description":"Unprocessable Entity\n\nThe HyperText Transfer Protocol (HTTP) 422 Unprocessable Entity response status code indicates that the server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"LimitReached":{"description":"Too Many Requests\n\nThe HTTP 429 Too Many Requests response status code indicates the user has sent too many requests in a given amount of time (\"rate limiting\").","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"InternalServerError":{"description":"Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error response code indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"NotImplemented":{"description":"Not Implemented\n\nThe HyperText Transfer Protocol (HTTP) 501 Not Implemented server error response code means that the server does not support the functionality required to fulfill the request.\n\nThe server either does not recognize the request method, or it lacks the ability to fulfil the request. Usually this implies future availability (e.g., a new feature of a web-service API).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"BadGateway":{"description":"Bad Gateway\n\nThe HyperText Transfer Protocol (HTTP) 502 Bad Gateway server error response code indicates that the server, while acting as a gateway or proxy, received an invalid response from the upstream server.\n\nThe HTTP 502 Bad Gateway error is exclusively returned in case of problems during communication with the supplier or third-party system. ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"ServiceUnavailable":{"description":"Service Unavailable\n\nThe HyperText Transfer Protocol (HTTP) 503 Service Unavailable server error response code indicates that the server is not ready to handle the request.\n\nThe HTTP 503 Service Unavailable error is exclusively returned in case of problems during internal communication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}},"GatewayTimeout":{"description":"Gateway Timeout\n\nThe HyperText Transfer Protocol (HTTP) 504 Gateway Timeout server error response code indicates that the server, while acting as a gateway or proxy, did not get a response in time from the upstream server that it needed in order to complete the request.\n\nThe HTTP 504 Gateway Timeout error is exclusively returned in case of problems during communication with the supplier or third-party system. ","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"}}}}}},"paths":{"/reservations/{reservation_reference}":{"delete":{"description":"This API is called to cancel a reserved timeslot, delete products from your cart or empty the cart.\nIn case of a full cancellation, you are no longer able to amend the reservation.\nOtherwise, the updated cart will be returned.\n\nNote that (combi-)pricing might have changed.\n\n> If payment is made, funds will be automatically refunded.","summary":"Cancel Reservation / Remove Cart Item / Empty Cart","tags":["Reservations / Cart"],"operationId":"cancelReservation","parameters":[{"name":"reservation_reference","in":"path","required":true,"description":"A unique identifier for the created reservation in the Prio system.","schema":{"type":"string","minLength":8}},{"name":"booking_reservation_reference","in":"query","required":false,"explode":false,"style":"form","description":"When using the Cart functionality you are able to remove individual products.","schema":{"title":"Booking Reservation References","type":"array","items":{"title":"Booking Reservation Reference","type":"string","minLength":8}}},{"name":"cancellation_reason","in":"query","required":false,"description":"Optional reason for this cancellation.","schema":{"type":"string"}}],"responses":{"200":{"description":"Item(s) removed from Cart","links":{"GetReservationByReference":{"$ref":"#/components/links/GetReservationByReference"}},"headers":{"Cache-Control":{"$ref":"#/components/headers/Cache-Control"},"Last-Modified":{"$ref":"#/components/headers/Last-Modified"},"Content-Language":{"$ref":"#/components/headers/Content-Language"},"Content-Length":{"$ref":"#/components/headers/Content-Length"},"Access-Control-Allow-Methods":{"$ref":"#/components/headers/Access-Control-Allow-Methods"},"Content-Security-Policy":{"$ref":"#/components/headers/Content-Security-Policy"},"X-XSS-Protection":{"$ref":"#/components/headers/X-XSS-Protection"},"X-Content-Type-Options":{"$ref":"#/components/headers/X-Content-Type-Options"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"Origin":{"$ref":"#/components/headers/Origin"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReservationDetailResponse"}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/AuthenticationFailed"},"403":{"$ref":"#/components/responses/Forbidden"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/Conflict"},"422":{"$ref":"#/components/responses/UnprocessableEntity"},"429":{"$ref":"#/components/responses/LimitReached"},"500":{"$ref":"#/components/responses/InternalServerError"},"501":{"$ref":"#/components/responses/NotImplemented"},"502":{"$ref":"#/components/responses/BadGateway"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/GatewayTimeout"}}}}}}
````


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.prioticket.com/endpoints/reservations-cart.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
