{ "openapi" : "3.0.0", "info" : { "title" : "Prio Distributor API V3.2 (General Availability)", "description" : "# Interface Specification \n![Uptime](https://badgen.net/uptime-robot/status/m785487968-fe65ff8817eb8d24c10c8d99) ![Uptime Robot ratio (30 days)](https://img.shields.io/uptimerobot/ratio/m785487968-fe65ff8817eb8d24c10c8d99) ![Maintenance](https://img.shields.io/badge/Maintained-yes-green.svg) ![Security Headers](https://img.shields.io/security-headers?url=https%3A%2F%2Fdistributor-api.prioticket.com%2Fv3.2%2Fdistributor%2Fsystem%2Fping)\n\n[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/2f2d6fd6445d67442542#?env%5BSandbox%20API%20V3.2%5D=W3sia2V5IjoiZGlzdHJpYnV0b3JJRCIsInZhbHVlIjoiNTAxIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJVc2VybmFtZSIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJQYXNzd29yZCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJQcm9kdWN0SUQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiZW52aXJvbm1lbnQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoicHJvZHVjdF90eXBlX2lkIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InByb2R1Y3RfYXZhaWxhYmlsaXR5X2lkIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InJlc2VydmF0aW9uX3JlZmVyZW5jZSIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJvcmRlcl9yZWZlcmVuY2UiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9XQ==)\n## Note\nThis product is in **General Availability**.\n\n GA products and features are available to all customers, ready for production use, and covered by our SLAs. GA products and features are commonly available throughout the whole system and are fully implemented.\n\n## Description\nThis document describes the Prio Distributor API, powered by a platform through which products can be distributed for services and venues. This API allows to obtain information about our inventory, check real-time availability and make bookings. Every booking will result in valid tickets with which users have access to the services and venues. Access is allowed when a valid passcode gets scanned and redeemed by the supplier.\n\nThe Prio Distributor API can be divided into four parts:\n* Content APIs: Exposes our product inventory such as Destinations, Categories and Products.\n* Product Availability API: Most products have have limited capacity or require you to select a certain time. The availability API returns those slots.\n* Reservation API: The reservation API allows you to block/reserve a ticket for a limited time so that you are able to obtain the payment from the guest. Furthermore it allows for managing a shoppingcart if needed.\n* Booking APIs: The booking API allows to confirm reservations, make direct bookings and retrieve your tickets / barcodes.\n\n---\n\n## Getting Started\n### Integration Process\nTo facilitate our partners in the best possible way we recommend to follow the process as described below:\n\nPre-development stage\n1. Review our documentation.\n2. Fill in our \"Prio Partner Integration Questionnaire\" and finalize the scope of the integration.\n---\nDevelopment stage\n3. Partner starts implementing the API according to agreed scope.\n---\nEnd-to-end testing stage\n4. Partner notifies the API Verification Team () who will initiate the end-to-end verification process with the partner.\n---\nMapping stage\n5. Prio and Partner create mutual product mapping sheet. (Optional)\n---\nLaunch and monitoring stage\n \n6. Prio provides production credentials.\n7. One or more test orders are made on production to reassure third-party connectivity. \n8. Partner is monitored and added to the Marketplace.\n---\n### Partner Integration Questionnaire\nThe \"Prio Partner Integration Questionnaire\" will be used to guide your implementation to the Prio system. It contains basic information on your company, integration use-cases, scoping, process explanations and more.\n### Scope\nAs mentioned earlier we highly recommended scoping your requirements list with your integration manager. This API offers an extensive list of possibilities and exceptions. Depending on your product setup, you are not required to implement each and every feature. Partial implementation of this API is possible due to a limited number of mandatory fields as well as multiple alternative request / response formats.\n\nFor example, a valid order can be made in our system with less than 8 values and a single endpoint:\n \n ```\n {\n \"order\": {\n \"order_distributor_id\": \"{{order_distributor_id}}\",\n \"order_language\": \"{{order_language}}\",\n \"order_external_reference\": \"{{order_external_reference}}\",\n \"order_bookings\": [\n {\n \"booking_option_type\": \"DIRECT_BOOKING\",\n \"product_id\": \"{product_id}\",\n \"product_type_details\": [\n {\n \"product_type_id\": \"{{product_type_id}}\",\n \"product_type_count\": \"{{product_type_count}}\"\n }\n ]\n }\n ],\n \"order_contact\": {\n \"contact_email\": \"{{contact_email}}\"\n }\n }\n}\n```\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Basic FunctionalitiesAdvanced Functionalities
Basic Product TypesAdvanced Product Types
Admission TypesMulti Currency
Third Party TicketsQuantity Pricing
AvailabilityDaily Pricing
CapacityAge Group Pricing
CurrencyPartner Sales
Seasonal PricingAdvanced Product Options
Basic Product OptionsPickup Points
Product Includes (Content)Combi Products
Product Excludes (Content)Cluster Products
DurationAddon Products
Opening Times (Content)Promocodes
Locations (Content)Custom Fields
Categories (Content)Tags (Content)
Highlights (Content)Cancellation Policy (Restriction)
Cancellation Policy (Content)Multi language (Content)
Turnout Time (Content)Routes (Content)
Booking Quantity LimitGroup code (Code Setttings)
Travel Date RequiredProduct Type Quantity Limit
Dynamic reservation timeoutGroup Pricing
DiscountsSeating
Price Result check (Own products)Partial Cancellation and Partial Refunds
Create / Update / Cancel ReservationsAdvanced Contact Details
Create / Update / Cancel OrdersOrder Guests
Basic Contact DetailsOrder Options
Advanced code settings
Advanced filtering
Prio PSP support
\n \n--- \n \n### Postman \n[Postman](https://www.getpostman.com/) is a very popular tool for API development. Luckily Postman now has support for OpenAPI, which means you can import this whole API as a collection in a few steps.\nFor more information check: [Working with OpenAPI](https://learning.getpostman.com/docs/postman/collections/working_with_openAPI/).\nOur API definition can be found [here](https://swagger.prioticket.com/definitions/Prio-Distributor-API/v32/distributor.json).\n\nDownload below a fully prepared example with environment variables:\n\n[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/2f2d6fd6445d67442542#?env%5BSandbox%20API%20V3.2%5D=W3sia2V5IjoiZGlzdHJpYnV0b3JJRCIsInZhbHVlIjoiNTAxIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJVc2VybmFtZSIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJQYXNzd29yZCIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJQcm9kdWN0SUQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoiZW52aXJvbm1lbnQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoicHJvZHVjdF90eXBlX2lkIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InByb2R1Y3RfYXZhaWxhYmlsaXR5X2lkIiwidmFsdWUiOiIiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InJlc2VydmF0aW9uX3JlZmVyZW5jZSIsInZhbHVlIjoiIiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJvcmRlcl9yZWZlcmVuY2UiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9XQ==)\n \n---\n## Formats\n\n ### General Formats\n\n\n + All data should be in the [UTF-8](https://en.wikipedia.org/wiki/UTF-8) character set.\n\n\n + Currency codes are sent in the [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217) format.\n\n\n + Language is defined in the [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.\n\n\n + Amounts and values should follow the international standard. Rounding might be required.\n\n\n + All data fields are case-sensitive.\n\n\n + Optional parameters that are not set or left empty will not be returned in\n the response. Please take care that you also consider some values to be nullable.\n\n ---\n\n ### Date / Time Formats\n\n Points in time are expressed as strings using the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) datetime format. We always expect the local time with its UTC offset.\n \n > For example,
Burj Khalifa entrance Ticket in Dubai for 12th of May 2016 at 14:00 (local time):

\n Expected:
\n `2016-05-12T14:00:00+04:00`
\n Not expected:
\n `2016-05-12T10:00:00+08:00` / `2016-05-12T18:00:00+00:00`

\n > Note 1: Although the above examples express the same point in time, \n we consider only the first one as valid because we always require the date and time in reference to the location of the activity.

\n > Note 2: Although mentioned in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt), due to technical restrictions we do not support the Z suffix. Please send `+00:00` to denote a zero UTC offset instead.\n \n---\n### Headers\n \n #### Authorization\n \n To allow secure data transmission between Suppliers and Distributors all API\n requests require HTTPS.\n\n The API Key Token information for the sandbox and production environment will be sent\n in a separate mail.
\n\n If the request lacks any authentication information (e.g., the client\n was unaware that authentication is necessary or attempted using an\n unsupported authentication method), the **resource server** should not\n include an error code or other error information.\n\n `Authorization: Bearer JWT Token`
\n \n ---\n\n #### Idempotency\n \n The Prio API supports [idempotency](https://tools.ietf.org/html/rfc7231#section-4.2.2), allowing you to retry a request multiple times while only performing the action once. This helps avoid unwanted duplication in case of failures and retries. For example, in the case of a timeout error, it is possible to safely retry sending the same API Create Order call multiple times with the guarantee that the order will only be created once.\n\n This API supports idempotency on POST requests (other request types such as GET, DELETE and PUT are idempotent by definition). \n \n ---\n\n #### Content-Type\n\n The `Content-Type` should be `application/json`.\n \n ---\n \n## Product Configuration \n\n ### Product types\n\n All products require a `product_type` value. This parameter describes a\n specific individual type.\n \n #### Values:\n \n + ADULT \n + CHILD \n + INFANT\n + YOUTH\n + SENIOR\n \n + PERSON (any age)\n + MILITARY\n + STUDENT\n + IMPAIRED\n + ITEM \n\n + GROUP \n \n + CUSTOM\n \n---\n \n### Product admission types\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 Examples:\n\n * An amusement park which has two opening periods, for example, a morning shift (09:00 - 12:00) and an afternoon shift (14:00 - 22:00).\n\n * An afternoon admission to an amusement park that can be used from\n 1pm to 9pm.\n \n ---\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 Examples:\n \n * A museum ticket that can be used during any time on the purchase date.\n * A public transport ticket which is valid for the whole day.\n \n ---\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\n Examples:\n\n * In the museum admission scenario, a timed entry ticket\n for 10am requires the user to be at the museum at 10am. The start time of\n availability slots for this service represents the designated entry\n time. The end time, however, is used solely as a key to identify the\n availability slot for booking.\n \n ---\n \n+ `TIME_OPEN` - Customers can arrive at any time. Availablity is not applicable.\n\n Examples:\n \n * A museum entry voucher which can be used anytime during the year.\n \n ---\n \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.\n \n Examples:\n\n * A tour that starts at 9am that requires all attendees to arrive\n at the start time, and returns at around 12pm.\n * A haircut reservation at 3pm on Saturday that will take approximately\n 30 minutes.\n * A fitness class from 6pm to 8pm.\n \n---\n \n### Pricing\n \n Different pricing configurations can be set depending on the product type (`product_type`), age group (`product_type_age`), booking quantity (`product_quantity_pricing`), season (`product_seasonal_pricing`), daily pricing (`product_daily_pricing`).\n \n All prices are given per `product_type`, per season (`product_seasonal_pricing:true`).\n Every possible variation to this price is given as either a discount or surcharge.\n The newly calculated price is returned in both the Reservation and Order API.\n \n TIP: To check whether you have implemented all logic correctly, it is advised that you cross-check the returned prices in the API with your own.\n \n ---\n \n### Booking Restrictions\n#### Basics\n\n Prio offers many different product configurations as well as restrictions on when a product can be purchased. Below a basic example on some of them.\n\n ``` \n OffsetDateTime currentDate = OffsetDateTime.now();\n OffsetDateTime travelDate = OffsetDateTime.now().plusDays(10);\n\n Integer bookingCount = 3;\n // Allowed to make a booking\n if(\n product.getProductBookingStartDate().isBefore(currentDate)\n && product.getProductBookingEndDate().isAfter(currentDate)\n && product.getProductStartDate().isBefore(travelDate)\n && product.getProductEndDate().isAfter(travelDate)\n && travelDate.isAfter(currentDate.plusMinutes(product.getProductBookingCutoffTime()))\n && product.getProductMinSize() >= bookingCount\n && product.getProductMaxSize() <= bookingCount\n && !product.isProductDisabled()\n );\n ```\n \n--- \n \n## Use Cases\n \n ### Search Journey\n \n Imagine a customer would like to see the 'Lion King' movie in one of the movie theaters in his vicinity.\n \n He chooses 'Cinema Inc' which has multiple locations across the city.\n \n 1. The customer is able to view all movies across all locations [Product List API](#/Products/getProductList).\n 2. The customer is able to view all movies per location [Product List API](#/Products/getProductList).\n 3. The customer is able to view all locations per product [Product List API](#/Products/getProduct) `product_locations`.\n \n ---\n \n ### Translations\n \n This API supports multilingual content.\n \n All translatable fields can be found inside the `product_content` object.\n \n Normally the returned content would default to the `product_default_language`, which is commonly English. Would you wish to retrieve more languages, those supported for that specific product can be found inside `product_content_languages`.\n \n One of the language codes in the above array can then be sent within the original request in the URL as `&product_content_language={language_code}`.\n \n ---\n \n ### Pagination\n \n Please be aware that some datasets can be bigger than others. The size of your inventory varies depending on your catalogue setup.\n Pagination is supported on endpoints for which potentially thousands of records can be expected. To retrieve the full dataset we recommend implementing the paging rules.\n \n This only applies to partners which process considerable volume.\n \n ---\n\n## Errors\n\nThe API will return the appropriate [HTTP status code](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for every request and this could therefore be used to categorize most common types of errors (e.g 400/401/402/403/404/405/406/409/418/422/429/500/501/502/503/504 are supported).\n
Additionally, the `error`, `error_description` and `errors` field can be consulted for more detailed information on the problem.\nIn case of a HTTP 400 the request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed. For most common issues a more detailed description will be shown, else `INVALID_REQUEST` will be returned.\n> Please note that in the future more specific error codes might be added, therefore resulting in newly possible HTTP codes. Consider all between 200 and 300 as successfull responses, and every 400+/500+ as errors.\n---\n## Using the interactive documentation\nThis is an interactive documentation which allows you to experience the API first hand without writing any code. To start calling Endpoints, first \"Authorize\" yourself by using the button below. Fill in the default sandbox credentials or the credentials received by your Account Manager.\n\nDefault Sandbox Credentials: \n* API Key: *Currently the API Key is only enforced on the Production Environment.*\n* client_id: `demo-distributor@prioticket.com`\n* client_secret: `NpEZ&x4QBQV6#L&v`\n* distributor_id: `501`\n\nAfter the authorization is successful, all subsequent calls will automatically contain the Bearer token.\n\n---\n### OpenAPI Specification\n#### Read-Only and Write-Only Properties\nPlease note that some schemas are being reused multiple times, across endpoints but also between requests and responses. `readOnly` properties are included in responses but not in requests, and `writeOnly` properties may be sent in requests but not in responses.\nFurthermore because all response types are JSON, the order in which the parameters are sent is not relevant and for documentation purposes might change over time.\n\n More info on this topic can be found in the [Open API Specification](https://swagger.io/docs/specification/data-models/data-types/)\n \n#### Deprecation and upcoming changes\nDue to limitations on our interactive documentation we list current unavailable methods as deprecated. Note that these are not actually deprecated, instead they will be added in the future. You can safely ignore these parameters as they affect either new or obsolute functionality for services that do not apply nor are within the scope for your current integration.\n\nFurthermore, in case you are viewing the latest version available, continuous amendments to both the documentation and the API can be expected. This means we are constantly adding new functionalities and parameters to the same API version, as long as these are deemed non-breaking and backwards compatible. In case any breaking changes need to be made, a new version will be introduced. Please note that the syntax of upcoming (not yet released) functionalities might be subject to change.\n#### Libraries\nBecause our API definition is publicly available you can use several open-source tools to generate client libraries. Please note that these libraries are auto-generated and should be considered Alpha releases. Backwards compatibility is not guaranteed and as this is a third-party tool we can not offer any assistance.\n In case you find using a SDK helpful we recommend to use the [Open API Generator](https://openapi-generator.tech/).\n\n---\nPrioTicket Confidential\n\n This documentation is protected by law from any form of duplication unless prior permission is obtained from the officers of PrioTicket.\n\n---", "termsOfService" : "https://prioticket.com/terms", "contact" : { "name" : "API Support", "url" : "https://support.prioticket.com", "email" : "api-support@prioticket.com" }, "version" : "3.2.0", "x-google-endpoints" : [ { "name" : "distributor-api.endpoints.prio-distributor-api.cloud.goog", "allowCors" : true } ] }, "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; used for testing, verification, demo and certification.\n\n* `staging-distributor-api` - Pre-Production server; Internal near-production server used for deployment.\n\n* `internal-distributor-api` - Internal server; reserved for internal use.\n", "default" : "sandbox-distributor-api", "enum" : [ "distributor-api", "sandbox-distributor-api", "staging-distributor-api", "internal-distributor-api" ] }, "version" : { "description" : "Api version.", "default" : "v3.2", "enum" : [ "v3.2" ] } } }, { "url" : "https://virtserver.swaggerhub.com/PrioTicket/PrioTicket-Distributor-Booking-API/3.2.0", "description" : "Mock server (unused at the moment)" } ], "tags" : [ { "name" : "Authentication", "description" : "To ensure no spooky stuff happens." }, { "name" : "System", "description" : "Information on the system." }, { "name" : "Products", "description" : "Manage and retrieve all your products.\n- View your inventory.\n- Get tax information.\n- Extensive search and filter.\n- Retrieve availability and capacity.\n- Get product ratings and reviews.\n\n In most cases, this content is periodically cached on the partner end, but these API endpoints are also optimized for direct front-end use.\n" }, { "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" }, { "name" : "Orders", "description" : "Manage and create orders.\n\n - Confirm reservations.\n - Make direct bookings.\n - Amend existing orders.\n - List all orders and bookings.\n - (Partial) cancel orders.\n - Get pre-generated vouchers.\n" }, { "name" : "Payments", "description" : "Manage and settle payments using the API.\n\nNot applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).\n" }, { "name" : "Contacts", "description" : "View and Manage Contacts. \n\nPlease note that this API does not amend order contacts. To amend order details, please call the Update Order API instead.\n\nOnly applicable for partners using the Contacts Module (Returning guests). For regular transactions these endpoints can be safely ignored.\n" } ], "paths" : { "/oauth2/token" : { "post" : { "tags" : [ "Authentication" ], "summary" : "Exchange credentials for token. (Example only)", "description" : "You will be provided with a client_id and a client_secret which you'll use to authenticate yourself in the system.\nThe first thing you need to do is to get access token which you will then use for further requests. \nWhen it expires, you will need to request another one.\nMultiple tokens can be active at once. \n\nSupported types:\n+ `client_credentials`\nOnce you have a valid access token, you will need to use it to sign all requests made to the Prio API.\n\nThis is done by providing Authorization HTTP header along with each of your requests in the following format:\n\n+ `Authorization:` `` ``\n\nIf this header is not present in the request, the service will reject the request by returning the\nHTTP error code 400 and respond with an appropriate error message.\n> Please do not manually perform this operation, we highly encourage you to use an existing OAuth library for your specific language.\n\n> Make sure to call this endpoint only in case your current token has expired to reduce roundtrips and overal latency.", "operationId" : "getToken", "parameters" : [ { "name" : "Authorization", "in" : "header", "description" : "The client sends HTTP requests with the Authorization header that contains the word Basic word followed by a space and a base64-encoded string username:password.", "required" : false, "style" : "simple", "explode" : false, "schema" : { "type" : "string" }, "example" : "Basic MTM5OlBJTC1VQk9DLTE2UUQtRE5S" } ], "requestBody" : { "description" : "Clients in possession of a client password MAY use the HTTP Basic authentication scheme \nas defined in [RFC2617](https://tools.ietf.org/html/rfc2617) to authenticate withthe authorization server. \n\nThe client identifier is encoded using the \"application/x-www-form-urlencoded\" encoding algorithm, and the encoded value is used as the username; the client password is encoded using the same algorithm and used as the password.\n\nAlternatively, the authorization server supports including the client credentials in the request-body using the following parameters:Including the client credentials in the request-body using the two parameters is NOT RECOMMENDED and SHOULD be limited to clients unable to directly utilize the HTTP Basic authentication scheme (or other password-based HTTP authentication schemes). The parameters can only be transmitted in the request-body and MUST NOT be included in the request URI.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ClientCredentialsGrantRequest" } } }, "required" : true }, "responses" : { "200" : { "description" : "Successfully Authenticated", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ClientCredentialsGrantResponse" } } } }, "400" : { "description" : "Invalid Request\n\nThe request is missing a required parameter, includes an\n unsupported parameter value (other than grant type),\n repeats a parameter, includes multiple credentials,\n utilizes more than one mechanism for authenticating the\n client, or is otherwise malformed.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Invalid Auth Request" } } } }, "401" : { "description" : "Authentication Failed\n\nClient authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method). The authorization server MAY return an HTTP 401 (Unauthorized) status code to indicate which HTTP authentication schemes are supported. If the client attempted to authenticate via the `Authorization` request header field, the authorization server MUST respond with an HTTP 401 (Unauthorized) status code and include the `WWW-Authenticate` response header field matching the authentication scheme used by the client.", "headers" : { "WWW-Authenticate" : { "description" : "Defines the authentication method that should be used to gain access to a resource.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/OAuthErrorModel" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "basicAuth" : [ ] } ] } }, "/system/ping" : { "get" : { "tags" : [ "System" ], "summary" : "Get System Ping", "description" : "Ping of the system.", "operationId" : "getSystemPing", "responses" : { "200" : { "description" : "Ping" }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } } } }, "/system/status" : { "get" : { "tags" : [ "System" ], "summary" : "Get System Status", "description" : "Status of the system.", "operationId" : "getSystemStatus", "responses" : { "200" : { "description" : "System OK" }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ] } ] } }, "/products/locations" : { "get" : { "tags" : [ "Products" ], "summary" : "List Product Destinations", "description" : "This API returns all the available locations of products.", "operationId" : "getProductLocationList", "parameters" : [ { "name" : "distributor_id", "in" : "query", "description" : "Unique identifier for distributor assigned by Prio.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "product_id", "in" : "query", "description" : "[FILTER] on `product_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "PRODUCT_ID_123" }, { "name" : "items_per_page", "in" : "query", "description" : "[PAGING] Items Per Page - Allows user's to configure the `items_per_page` value. For example, to load 100 items per page, the developer may point the user to a url with the query string ?items_per_page=100. This parameter is mainly usefull to manage response times, higher values result in longer response times and therefore it is recommended to keep this value as low as possible. We do allow to adjust this value so it can be used to batch/cache/update inventory at once.\n> Clients should anticipate that the value of this parameter may not be honored by the API, and should rely exclusively on the contents of the `items_per_page` response element in calculating actual page size.", "required" : false, "style" : "form", "explode" : true, "schema" : { "maximum" : 500, "minimum" : 1, "type" : "integer", "example" : 5, "default" : 10 } }, { "name" : "start_index", "in" : "query", "description" : "[PAGING] Index-based paging - Allows user's to jump directly to a specific item position within a list of items. For example, to load 10 items starting at item 200, the developer may point the user to a url with the query string ?start_index=200.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 }, { "name" : "page", "in" : "query", "description" : "[PAGING] Page-based paging - Allows user's to jump directly to a specific page within the items. This is similar to index-based paging, but saves the developer the extra step of having to calculate the item index for a new page of items. For example, rather than jump to item number 200, the developer could jump to page 20. The urls during page-based paging could use the query string ?page=1 or ?page=20. The `page_index` and `total_pages` properties are used for this style of paging.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 } ], "responses" : { "200" : { "description" : "Location List 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/LocationListResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/products" ] } ] } }, "/products/categories" : { "get" : { "tags" : [ "Products" ], "summary" : "List Product Categories", "description" : "This API provides all the product categories that are available in the Prio system per distributor.", "operationId" : "getProductCategoryList", "parameters" : [ { "name" : "distributor_id", "in" : "query", "description" : "Unique identifier for distributor assigned by Prio.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "category_id", "in" : "query", "description" : "[FILTER] on categories (`category_id`).", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Category IDs", "type" : "array", "items" : { "title" : "Category ID", "type" : "string" } } }, { "name" : "category_type", "in" : "query", "description" : "[FILTER] on Category Type (`category_type`).", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Category Types", "type" : "array", "items" : { "title" : "Category Type", "type" : "string", "enum" : [ "SYSTEM", "RESELLER" ] } } } ], "responses" : { "200" : { "description" : "Product Category 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/DistributorProductCategoriesResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/products" ] } ] } }, "/products/routes" : { "get" : { "tags" : [ "Products" ], "summary" : "List Product Routes", "description" : "This API returns all the routes of the products linked to a distributor.", "operationId" : "getProductRouteList", "parameters" : [ { "name" : "distributor_id", "in" : "query", "description" : "Unique identifier for distributor assigned by Prio.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "product_id", "in" : "query", "description" : "[FILTER] on `product_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "PRODUCT_ID_123" }, { "name" : "items_per_page", "in" : "query", "description" : "[PAGING] Items Per Page - Allows user's to configure the `items_per_page` value. For example, to load 100 items per page, the developer may point the user to a url with the query string ?items_per_page=100. This parameter is mainly usefull to manage response times, higher values result in longer response times and therefore it is recommended to keep this value as low as possible. We do allow to adjust this value so it can be used to batch/cache/update inventory at once.\n> Clients should anticipate that the value of this parameter may not be honored by the API, and should rely exclusively on the contents of the `items_per_page` response element in calculating actual page size.", "required" : false, "style" : "form", "explode" : true, "schema" : { "maximum" : 500, "minimum" : 1, "type" : "integer", "example" : 5, "default" : 10 } }, { "name" : "start_index", "in" : "query", "description" : "[PAGING] Index-based paging - Allows user's to jump directly to a specific item position within a list of items. For example, to load 10 items starting at item 200, the developer may point the user to a url with the query string ?start_index=200.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 }, { "name" : "page", "in" : "query", "description" : "[PAGING] Page-based paging - Allows user's to jump directly to a specific page within the items. This is similar to index-based paging, but saves the developer the extra step of having to calculate the item index for a new page of items. For example, rather than jump to item number 200, the developer could jump to page 20. The urls during page-based paging could use the query string ?page=1 or ?page=20. The `page_index` and `total_pages` properties are used for this style of paging.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 } ], "responses" : { "200" : { "description" : "Product Routes 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/RoutesListResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/products" ] } ] } }, "/products/currency_rates" : { "get" : { "tags" : [ "Products" ], "summary" : "List Currency Rates", "description" : "This API returns all the currency rates on a daily basis.", "operationId" : "getCurrencyRates", "parameters" : [ { "name" : "currency_date", "in" : "query", "description" : "[FILTER] on `currency_date`.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date" } }, { "name" : "currency_base", "in" : "query", "description" : "[FILTER] on `currency_base`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "title" : "Currency Base Code", "type" : "string", "description" : "Currency Base Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).", "example" : "USD" } } ], "responses" : { "200" : { "description" : "Product Currency Rates 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/DistributorCurrencyRatesResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/products" ] } ] } }, "/products/taxes" : { "get" : { "tags" : [ "Products" ], "summary" : "List Product Taxes", "description" : "This API returns all the tax configurations of the products linked to a distributor.", "operationId" : "getProductTaxList", "parameters" : [ { "name" : "distributor_id", "in" : "query", "description" : "Unique identifier for distributor assigned by Prio.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "product_id", "in" : "query", "description" : "[FILTER] on `product_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "PRODUCT_ID_123" }, { "name" : "tax_region", "in" : "query", "description" : "[FILTER] on `tax_region`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "title" : "Tax Region", "type" : "string" } }, { "name" : "items_per_page", "in" : "query", "description" : "[PAGING] Items Per Page - Allows user's to configure the `items_per_page` value. For example, to load 100 items per page, the developer may point the user to a url with the query string ?items_per_page=100. This parameter is mainly usefull to manage response times, higher values result in longer response times and therefore it is recommended to keep this value as low as possible. We do allow to adjust this value so it can be used to batch/cache/update inventory at once.\n> Clients should anticipate that the value of this parameter may not be honored by the API, and should rely exclusively on the contents of the `items_per_page` response element in calculating actual page size.", "required" : false, "style" : "form", "explode" : true, "schema" : { "maximum" : 500, "minimum" : 1, "type" : "integer", "example" : 5, "default" : 10 } }, { "name" : "start_index", "in" : "query", "description" : "[PAGING] Index-based paging - Allows user's to jump directly to a specific item position within a list of items. For example, to load 10 items starting at item 200, the developer may point the user to a url with the query string ?start_index=200.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 }, { "name" : "page", "in" : "query", "description" : "[PAGING] Page-based paging - Allows user's to jump directly to a specific page within the items. This is similar to index-based paging, but saves the developer the extra step of having to calculate the item index for a new page of items. For example, rather than jump to item number 200, the developer could jump to page 20. The urls during page-based paging could use the query string ?page=1 or ?page=20. The `page_index` and `total_pages` properties are used for this style of paging.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 } ], "responses" : { "200" : { "description" : "Product Tax Rates 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/DistributorProductTaxesResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/products" ] } ] } }, "/products" : { "get" : { "tags" : [ "Products" ], "summary" : "List Products", "description" : "This API provides all the products in the Prio system per distributor.\nExtensive filtering is available but do note that certain filters might affect performance.", "operationId" : "getProductList", "parameters" : [ { "name" : "distributor_id", "in" : "query", "description" : "Unique identifier for distributor assigned by Prio.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "product_content_language", "in" : "query", "description" : "[CONFIG] Content language to return in the response. Languages are defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format. If the defined language is not available, the product will be returned in the `product_default_language`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "en" }, { "name" : "product_content", "in" : "query", "description" : "[FILTER] Global search on product content.\nSearches the fields:\n + `product_title`\n + `product_short_description`\n + `product_long_description`\n + `product_supplier_name`\n + `product_highlights`\n + `product_includes`\n \nRegex used: '(?is)^(?=.*\\\\b(query1.*)\\\\b)(?=.*\\\\b(query2.*)\\\\b).*'\n\n + Case insensitive.\n + Positive lookaheads and word boundaries to make word order not matter and to recognize word spacing.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "tour museum amsterdam" }, { "name" : "product_start_date", "in" : "query", "description" : "[FILTER] on `product_start_date`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date" } }, { "name" : "product_end_date", "in" : "query", "description" : "[FILTER] on `product_end_date`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date" } }, { "name" : "product_duration", "in" : "query", "description" : "[FILTER] on `product_duration`. (Minutes)", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer" }, "example" : 90 }, { "name" : "product_booking_quantity_min", "in" : "query", "description" : "[FILTER] on `product_booking_quantity_min`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer" }, "example" : 1 }, { "name" : "product_booking_quantity_max", "in" : "query", "description" : "[FILTER] on `product_booking_quantity_max`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer" }, "example" : 3 }, { "name" : "product_id", "in" : "query", "description" : "[FILTER] on `product_id`.", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product IDs", "type" : "array", "items" : { "title" : "Product ID", "type" : "string" } } }, { "name" : "product_supplier", "in" : "query", "description" : "[FILTER] on `product_supplier_id`.", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product Supplier IDs", "type" : "array", "items" : { "title" : "Product Supplier ID", "type" : "string" } } }, { "name" : "product_category", "in" : "query", "description" : "[FILTER] on categories (`category_id`).", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product Category IDs", "type" : "array", "items" : { "title" : "Product Category ID", "type" : "string" } } }, { "name" : "product_tag", "in" : "query", "description" : "[FILTER] on Tag, combination of `product_tag_id`, `product_tag_description` and `product_tag_group`.", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product Tags", "type" : "array", "items" : { "title" : "Product Tag", "type" : "string" } } }, { "name" : "product_language", "in" : "query", "description" : "[FILTER] on available Product Languages. Languages are defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product Language Codes", "type" : "array", "items" : { "title" : "Product Language Code", "type" : "string" } } }, { "name" : "product_location_id", "in" : "query", "description" : "[FILTER] on `location_id`", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product Location IDs", "type" : "array", "items" : { "title" : "Location ID", "type" : "string" } } }, { "name" : "product_location_country_code", "in" : "query", "description" : "[FILTER] on country ( [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2))", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product Location Country Codes", "type" : "array", "items" : { "title" : "Product Location Country Code", "type" : "string" } } }, { "name" : "product_custom_field", "in" : "query", "description" : "[FILTER] on `product_custom_fields`", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product Custom Fields", "type" : "array", "items" : { "$ref" : "#/components/schemas/CustomField" } } }, { "name" : "product_type", "in" : "query", "description" : "[FILTER] on Product Type (`product_type`).", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Product Types", "type" : "array", "items" : { "title" : "Product Type", "type" : "string", "enum" : [ "ADULT", "CHILD", "SENIOR", "YOUTH", "INFANT", "PERSON", "STUDENT", "RESIDENT", "MILITARY", "IMPAIRED", "ITEM", "GROUP", "FAMILY", "CUSTOM" ] } } }, { "name" : "product_disabled", "in" : "query", "description" : "[FILTER] Include disabled products (`product_disabled:true`).", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "default" : false } }, { "name" : "product_availability", "in" : "query", "description" : "[FILTER] Include products with `product_availability:true`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "default" : true } }, { "name" : "product_relations", "in" : "query", "description" : "[FILTER] Include product relations. (Addon, Combi, Cluster)", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "default" : true } }, { "name" : "product_planet", "in" : "query", "description" : "[FILTER] on an astronomical body. *(Reserved for future use)*", "required" : false, "deprecated" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string", "example" : "EARTH", "default" : "EARTH", "enum" : [ "EARTH", "MARS", "JUPITER" ] } }, { "name" : "product_modified", "in" : "query", "description" : "[FILTER] Only show products modified after the given date.\n* Deleted products are ignored and should be handled manually.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time" } }, { "name" : "product_sort_by", "in" : "query", "description" : "[SORT] Select sorting method. UPCOMING: [DURATION_LENGTH, SOLD_COUNT].", "required" : false, "style" : "form", "explode" : true, "schema" : { "title" : "Product Sort By", "type" : "string", "description" : "Method of sorting.", "example" : "PRODUCT_CREATED", "default" : "PRODUCT_MODIFIED", "enum" : [ "PRODUCT_CREATED", "PRODUCT_MODIFIED", "PRODUCT_TITLE_A_Z", "SUPPLIER_NAME_A_Z", "LOCATION_NAME_A_Z", "PRICE_VALUE", "DISCOUNT_VALUE", "DURATION_LENGTH", "SOLD_COUNT" ] } }, { "name" : "product_sort_order", "in" : "query", "description" : "[SORT] Keyword used to sort result sets in either ascending or descending order.", "required" : false, "style" : "form", "explode" : true, "schema" : { "title" : "Product Sort Order", "type" : "string", "description" : "Order of sorting.", "example" : "ASC", "default" : "DESC", "enum" : [ "ASC", "DESC" ] } }, { "name" : "items_per_page", "in" : "query", "description" : "[PAGING] Items Per Page - Allows user's to configure the `items_per_page` value. For example, to load 100 items per page, the developer may point the user to a url with the query string ?items_per_page=100. This parameter is mainly usefull to manage response times, higher values result in longer response times and therefore it is recommended to keep this value as low as possible. We do allow to adjust this value so it can be used to batch/cache/update inventory at once.\n> Clients should anticipate that the value of this parameter may not be honored by the API, and should rely exclusively on the contents of the `items_per_page` response element in calculating actual page size.", "required" : false, "style" : "form", "explode" : true, "schema" : { "maximum" : 500, "minimum" : 1, "type" : "integer", "example" : 5, "default" : 10 } }, { "name" : "start_index", "in" : "query", "description" : "[PAGING] Index-based paging - Allows user's to jump directly to a specific item position within a list of items. For example, to load 10 items starting at item 200, the developer may point the user to a url with the query string ?start_index=200.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 }, { "name" : "page", "in" : "query", "description" : "[PAGING] Page-based paging - Allows user's to jump directly to a specific page within the items. This is similar to index-based paging, but saves the developer the extra step of having to calculate the item index for a new page of items. For example, rather than jump to item number 200, the developer could jump to page 20. The urls during page-based paging could use the query string ?page=1 or ?page=20. The `page_index` and `total_pages` properties are used for this style of paging.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 } ], "responses" : { "200" : { "description" : "Product List 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/ProductListResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/products" ] } ] } }, "/products/{product_id}" : { "get" : { "tags" : [ "Products" ], "summary" : "List Product Details", "description" : "This API provides all the product information that is available in the Prio system for the requested product (`product_id`).", "operationId" : "getProduct", "parameters" : [ { "name" : "distributor_id", "in" : "query", "description" : "Unique identifier for distributor assigned by Prio.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "product_id", "in" : "path", "description" : "Unique identifier for the product assigned by Prio.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "string" } }, { "name" : "product_content_language", "in" : "query", "description" : "Language code to request language specific product data. If left empty or language is not available (not included in `product_content_languages`), the response will be in the default language i.e. English. The actual language returned can also be found inside the `Content-Language` header.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" } } ], "responses" : { "200" : { "description" : "Product 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/ProductDetailResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/products" ] } ] } }, "/products/{product_id}/availability" : { "get" : { "tags" : [ "Products" ], "summary" : "List Product Availabilities", "description" : "The availability API is used to make sure that the product or service is available on the desired date and time slot. \n\nDepending on the `product_availability` parameter given in the product feed, the availability needs to be requested using this endpoint prior to making a booking.\n\nThis endpoint should be called in order to get up-to-date availability information for a product with managed capacity. \nThe response will contain the availability for each time slot of the requested product that lies within the specified date range. \nTime slots will not be omitted in case of no availability. Neither will a NO_AVAILABILITY error be returned in that case. Instead, an explicit vacancy of zero should be expected.\n\n**Caching Recommendations**\n\n Availability changes more often: the availability for the upcoming 3 days should be updated every hour, and that of the upcoming 30 days should be updated every day.\n \n * Before every order, we recommend checking the availability again to get the exact price and availability.\n * Once per hour, update the availability for the coming week.\n * Once per day, update the availability for the coming month.\n\n> Dates and times are always relative to the supplier timezone.\n\n> A maximum of 90 days is allowed. If you would like to batch availability for a longer period, please make multiple calls.", "operationId" : "getProductAvailability", "parameters" : [ { "name" : "distributor_id", "in" : "query", "description" : "Unique identifier for distributor assigned by Prio.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "product_id", "in" : "path", "description" : "Unique identifier for the product assigned by Prio.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "string" } }, { "name" : "from_date", "in" : "query", "description" : "[FILTER] From which date availability is requested.\nIf supplied with `to_date` , then availability request is for a date range. \nIf supplied without `to_date`, then for a single date availability is requested.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date" } }, { "name" : "to_date", "in" : "query", "description" : "[FILTER] Till which date availability is requested.\nIf this is empty, availability will be searched for the given `from_date` only. ", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date" } }, { "name" : "include_disabled", "in" : "query", "description" : "[FILTER] Include disabled / closed (`availability_active:false`) entries. ", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : true, "default" : false } }, { "name" : "availability_capacity_id", "in" : "query", "description" : "[FILTER] on `availability_capacity_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" } }, { "name" : "spots_open_min", "in" : "query", "description" : "[FILTER] The minimum remaining `availability_spots_open`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "exclusiveMaximum" : false, "minimum" : 0, "type" : "integer" } }, { "name" : "sub_products_depth", "in" : "query", "description" : "[FILTER] The iteration depth of the included entries of the sub-products in the response. This will not apply to sub-products which have shared capacity linked to the main product.\n\nExample Setup:\n```\nProduct 101 (Main)\n Product 201 (Sub)\n Product 301 (Nested)\n Product 302 (Nested)\n Product 202 (Sub)\n Product 401 (Nested)\n Product 402 (Nested)\n```\n* `sub_products_depth:0` will return Product 101.\n* `sub_products_depth:1` will return Product 101, 201 and 202.\n* `sub_products_depth:2` will return Product 101, 201, 202, 301, 302, 401 and 402.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "integer", "example" : 1, "default" : 0 } }, { "name" : "party_size", "in" : "query", "description" : "[FILTER] The party size that can be accommodated during this time slot. Only applicable for selected merchants.\n", "required" : false, "deprecated" : true, "style" : "form", "explode" : true, "schema" : { "exclusiveMaximum" : false, "minimum" : 1, "type" : "integer" } }, { "name" : "availability_modified", "in" : "query", "description" : "[FILTER] Only show entries modified after the given date.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time" } } ], "responses" : { "200" : { "description" : "Product Availability 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/AvailabilitiesListResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/products" ] } ] } }, "/reservations" : { "post" : { "tags" : [ "Reservations / Cart" ], "summary" : "Create Reservation / Create Cart", "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. Followup request such as amending the cart should be done using the 'Update Reservation` endpoint.", "operationId" : "createReservation", "requestBody" : { "$ref" : "#/components/requestBodies/CreateReservationRequest" }, "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" } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ReservationDetailResponse" } } }, "links" : { "GetReservationByReference" : { "$ref" : "#/components/links/GetReservationByReference" }, "DeleteBookingReservationByReference" : { "$ref" : "#/components/links/DeleteBookingReservationByReference" } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "409" : { "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation" ] } ] } }, "/reservations/{reservation_reference}" : { "get" : { "tags" : [ "Reservations / Cart" ], "summary" : "Reservation Details / Cart Details", "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.", "operationId" : "getReservation", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier got in response of the create reservation API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" } } ], "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" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation" ] } ] }, "put" : { "tags" : [ "Reservations / Cart" ], "summary" : "Update Reservation / Update Cart", "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 * To remove a product from the cart, please call the \"Remove Cart Item\" endpoint. \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 by sending the amended response as request in consecutive calls. ReadOnly properties which are included in the response, but not allowed in the request, such as `booking_pricing` and `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.", "operationId" : "updateReservation", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier for the created reservation in Prio.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" } } ], "requestBody" : { "$ref" : "#/components/requestBodies/CreateReservationRequest" }, "responses" : { "200" : { "description" : "Reservation Updated", "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" } } }, "links" : { "GetReservationByReference" : { "$ref" : "#/components/links/GetReservationByReference" } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "409" : { "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation" ] } ] }, "delete" : { "tags" : [ "Reservations / Cart" ], "summary" : "Cancel Reservation / Remove Cart Item / Empty Cart", "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, the origin server will\n send a 204 (No Content) status code if the\n action has been enacted and no further information is to be supplied.\nOtherwise, a 200 with 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.", "operationId" : "cancelReservation", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier for the created reservation in the Prio system.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" } }, { "name" : "booking_reservation_reference", "in" : "query", "description" : "When using the Cart functionality you are able to remove individual products.", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Booking Reservation References", "type" : "array", "items" : { "title" : "Booking Reservation Reference", "minLength" : 8, "type" : "string", "example" : "BOOKING_RESERVATION_REFERENCE_123" } } }, { "name" : "cancellation_reason", "in" : "query", "description" : "Optional reason for this cancellation.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "Payment declined" } ], "responses" : { "200" : { "description" : "Item removed from Cart", "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" } } }, "links" : { "GetReservationByReference" : { "$ref" : "#/components/links/GetReservationByReference" } } }, "204" : { "description" : "Reservation Cancelled" }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "409" : { "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation" ] } ] } }, "/reservations/{reservation_reference}/promocode" : { "post" : { "tags" : [ "Reservations / Cart" ], "summary" : "Add Promocode", "description" : "This API is called to apply promocodes on a reservation.\n\n**Promocode Functionality:**\n\n * To add a promocode to the Cart / Reservation, add the applicable promocode to the query. The promocode will automatically be added to the Cart and the updated prices will be returned in the response.\n* There could be multiple reasons for a promocode to be declined. For example, insufficient cart balance, expired, already used etc. In this case an error `INVALID_PROMOCODE` will be returned with a customer friendly message which can be shown on your front-end.", "operationId" : "addPromocode", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier got in response of the reservation_reference API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" }, "example" : "ORDRREF123456" }, { "name" : "promo_code", "in" : "query", "description" : "The promocode which should be applied to the cart.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string", "example" : "PROMOCODE_123" } } ], "responses" : { "200" : { "description" : "Promocode Added", "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" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "409" : { "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/orders" ] } ] } }, "/reservations/{reservation_reference}/promocode/{promo_code}" : { "delete" : { "tags" : [ "Reservations / Cart" ], "summary" : "Remove Promocode", "description" : "This API is called to remove an applied promocode on a reservation.\nIf a DELETE method is successfully applied, the origin server SHOULD send a 200 (Promocode Removed) status code if the action has been enacted. The new reservation will be returned with the updated prices.", "operationId" : "removePromocode", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier got in response of the reservation API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" }, "example" : "RESREF123" }, { "name" : "promo_code", "in" : "path", "description" : "The promocode which should should be removed from the cart.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "PROMOCODE_123" } } ], "responses" : { "200" : { "description" : "Promocode Removed", "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" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "409" : { "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation" ] } ] } }, "/reservations/{reservation_reference}/payments/config" : { "get" : { "tags" : [ "Payments" ], "summary" : "Get Payment Configuration", "description" : "This API is called to get available payment methods and configuration from a Prio PSP. ", "operationId" : "getPaymentConfig", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier got in response of the create reservation API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" } }, { "name" : "payment_service_provider", "in" : "query", "description" : "Selected payment service provider.", "required" : false, "style" : "form", "explode" : true, "schema" : { "$ref" : "#/components/schemas/PaymentServiceProvider" } } ], "responses" : { "200" : { "description" : "Prio PSP Payment Configuration", "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/PaymentConfigResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation/payments" ] } ] } }, "/reservations/{reservation_reference}/payments/status" : { "get" : { "tags" : [ "Payments" ], "summary" : "Get Payment Status", "description" : "This API is called to get the status of the payment.\n", "operationId" : "getPaymentStatus", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier got in response of the create reservation API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" } } ], "responses" : { "200" : { "description" : "Payment Status 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/PaymentStatusResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation/payments" ] } ] } }, "/reservations/{reservation_reference}/payments" : { "post" : { "tags" : [ "Payments" ], "summary" : "Create Payment", "description" : "This API is called to initiate a payment on a Prio connected PSP or settle a manual payment. This is a required step if `SettlementType:DIRECT`. \n> Once a payment has been made you are unable to amend the reservation.\n", "operationId" : "makePayment", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier got in response of the create reservation API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/MakePaymentRequest" } } }, "required" : true }, "responses" : { "200" : { "description" : "Make Payment 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/MakePaymentResponse" } } } }, "201" : { "description" : "Payment initiated, result will be notified on the set `return_url`.", "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" } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "callbacks" : { "payment" : { "{$request.body#/return_url}" : { "post" : { "summary" : "Payment Result", "description" : "This notification is sent if a payment result is available.", "requestBody" : { "content" : { "application/json" : { "schema" : { "title" : "Sample N-Genius Payment Response", "required" : [ "resultCode" ], "type" : "object", "properties" : { "resultCode" : { "title" : "Result Code", "type" : "string", "description" : "Provides information about the result of the request.", "readOnly" : true, "example" : "Authorised" } }, "example" : "{\n \"result_code\": \"Authorised\"\n}\n" } } }, "required" : true }, "responses" : { "200" : { "description" : "Your server returns this code if it accepts the callback. Returning a successful 200 code is required.\n\nIf we don't receive the response message within 10 seconds, we will consider the host to be down immediately. As queued notification are not applicable for this action.\n\nWe'll not retry sending the notication and an automatic refund will be initiated for the recent payment.\n" } } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation/payments" ] } ] } }, "/reservations/{reservation_reference}/payments/details" : { "post" : { "tags" : [ "Payments" ], "summary" : "Submit Additional Payment Details", "description" : "This API allows to submit additional payment details. Only applicable to merchants using the Adyen Marketplace. [More Information](https://docs.adyen.com/checkout/drop-in-web#step-4-additional-front-end)", "operationId" : "addPaymentDetails", "parameters" : [ { "name" : "reservation_reference", "in" : "path", "description" : "A unique identifier got in response of the create reservation API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AdyenSetPaymentDetailsRequest" } } }, "required" : true }, "responses" : { "200" : { "description" : "Successful payment 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/AdyenDropInPaymentResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/reservation/payments" ] } ] } }, "/orders" : { "get" : { "tags" : [ "Orders" ], "summary" : "List Orders", "description" : "This API is meant to return a small subset of orders.\n> If you would like to retrieve all orders for Reporting / BI purposes we recommended a different approach, please contact your account manager for more information.\n", "operationId" : "getOrderList", "parameters" : [ { "name" : "reseller_id", "in" : "query", "description" : "[FILTER] on `reseller_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "distributor_id", "in" : "query", "description" : "[FILTER] on `distributor_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "supplier_id", "in" : "query", "description" : "[FILTER] on `supplier_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 145 }, { "name" : "order_reference", "in" : "query", "description" : "[FILTER] on `order_reference`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minLength" : 8, "type" : "string" }, "example" : "ORDRREF123456" }, { "name" : "order_external_reference", "in" : "query", "description" : "[FILTER] on `order_external_reference`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "EXTERNALREF123" }, { "name" : "order_status", "in" : "query", "description" : "[FILTER] on `order_status`.", "required" : false, "deprecated" : true, "style" : "form", "explode" : false, "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/OrderStatusTypes" } } }, { "name" : "order_contact_uid", "in" : "query", "description" : "[FILTER] on `order_contact_uid`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "f847dc60-aaf0-11ea-8926-471c6c723e1d" }, { "name" : "order_contact_name", "in" : "query", "description" : "[FILTER] on `order_contact_name`, `contact_name_first` and `contact_name_last`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "John Doe" }, { "name" : "order_contact_email", "in" : "query", "description" : "[FILTER] on `order_contact_email`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "email" }, "example" : "JohnDoe@example.com" }, { "name" : "order_created_from", "in" : "query", "description" : "[FILTER] on `order_created`. Only the orders created from this specific date will be returned. A longer time range might increase response times.\n", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time" } }, { "name" : "order_created_to", "in" : "query", "description" : "[FILTER] on `order_created`. Only the orders created till this specific date will be returned. A longer time range might increase response times.\n", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time" } }, { "name" : "booking_reference", "in" : "query", "description" : "[FILTER] on `booking_reference`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minLength" : 8, "type" : "string" }, "example" : "BOOKINGREF123" }, { "name" : "booking_external_reference", "in" : "query", "description" : "[FILTER] on `booking_external_reference`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "EXTERNALREF123" }, { "name" : "product_id", "in" : "query", "description" : "[FILTER] on `product_id`.", "required" : false, "deprecated" : true, "style" : "form", "explode" : false, "schema" : { "title" : "Product IDs", "type" : "array", "items" : { "title" : "Product ID", "type" : "string" } } }, { "name" : "product_type_code", "in" : "query", "description" : "[FILTER] on `product_type_code`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minLength" : 8, "type" : "string" }, "example" : "1539762088951995" }, { "name" : "product_availability_id", "in" : "query", "description" : "[FILTER] on `product_availability_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "20191026090010006526" }, { "name" : "product_availability_capacity_id", "in" : "query", "description" : "[FILTER] on `product_availability_capacity_id`.", "required" : false, "deprecated" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "20191026090010006526" }, { "name" : "order_custom_fields", "in" : "query", "description" : "[FILTER] on `order_custom_fields`.", "required" : false, "deprecated" : true, "style" : "form", "explode" : false, "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/CustomField" } } }, { "name" : "order_created_email", "in" : "query", "description" : "[FILTER] on `order_created_email`. Only the orders made by this user / cashier will be returned.\n", "required" : false, "deprecated" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "examplecashier@prioticket.com" }, { "name" : "filter_bookings", "in" : "query", "description" : "[FILTER] (sub) bookings from response. \n\nWhether to include all bookings belonging to the same order or only those matching the defined filters. By default the system will return every booking of an order, regardless whether some of those bookings do not match the defined filters.\n\nFor example. when a filter for `product_id` is set, only orders which contain that product will be returned, but additional bookings (for different product IDs) of that same order might be listed as well.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : false, "default" : false } }, { "name" : "order_sort_by", "in" : "query", "description" : "[SORT] Select sorting method.\n\nUPCOMING: [REDEMPTION_DATE, TRAVEL_DATE, INVOICE_DATE].", "required" : false, "style" : "form", "explode" : true, "schema" : { "title" : "Order Sort By", "type" : "string", "description" : "Method of sorting.", "example" : "ORDER_CREATED", "default" : "ORDER_CREATED", "enum" : [ "ORDER_CREATED", "ORDER_MODIFIED" ] } }, { "name" : "order_sort_order", "in" : "query", "description" : "[SORT] Keyword used to sort result sets in either ascending or descending order.", "required" : false, "style" : "form", "explode" : true, "schema" : { "title" : "Order Sort Order", "type" : "string", "description" : "Order of sorting.", "example" : "ASC", "default" : "DESC", "enum" : [ "ASC", "DESC" ] } }, { "name" : "items_per_page", "in" : "query", "description" : "[PAGING] Items Per Page - Allows user's to configure the `items_per_page` value. For example, to load 100 items per page, the developer may point the user to a url with the query string ?items_per_page=100. This parameter is mainly usefull to manage response times, higher values result in longer response times and therefore it is recommended to keep this value as low as possible. We do allow to adjust this value so it can be used to batch/cache/update inventory at once.\n> Clients should anticipate that the value of this parameter may not be honored by the API, and should rely exclusively on the contents of the `items_per_page` response element in calculating actual page size.", "required" : false, "style" : "form", "explode" : true, "schema" : { "maximum" : 500, "minimum" : 1, "type" : "integer", "example" : 5, "default" : 10 } }, { "name" : "start_index", "in" : "query", "description" : "[PAGING] Index-based paging - Allows user's to jump directly to a specific item position within a list of items. For example, to load 10 items starting at item 200, the developer may point the user to a url with the query string ?start_index=200.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 }, { "name" : "page", "in" : "query", "description" : "[PAGING] Page-based paging - Allows user's to jump directly to a specific page within the items. This is similar to index-based paging, but saves the developer the extra step of having to calculate the item index for a new page of items. For example, rather than jump to item number 200, the developer could jump to page 20. The urls during page-based paging could use the query string ?page=1 or ?page=20. The `page_index` and `total_pages` properties are used for this style of paging.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 } ], "responses" : { "200" : { "description" : "Get Orders 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/OrderListResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/orders" ] } ] }, "post" : { "tags" : [ "Orders" ], "summary" : "Create Order / Confirm Reservation / Checkout Cart", "description" : "This API is called to book / confirm product(s) and get a barcode / QR-code in response.\n\nCreating an order triggers a payment obligation. Make sure that you received the money from the guest and please note that some products are non-refundable. Do not create an order if its not certain that the product will be purchased.\n\nThere are 2 different booking options:\n\n**Direct Booking** \n\n + Direct booking of a product without availability (`product_availability:false`) and no traveldate (`product_traveldate_required:false`) (non-dated, no capacity ticket)\n \n + Direct booking of a product without availability (`product_availability:false`) and required traveldate (`product_traveldate_required:true`) (dated, unlimited capacity ticket)\n \n + Direct booking of a product with availability (`product_availability:true`) and with or without capacity (`product_capacity:true/false`).\n \n > Adding a promotional code to a Direct Booking is not supported.\n \n**Confirm Reservation / Checkout Cart**\n\n + Booking of product(s) with a `reservation_reference` (Confirmation of an active reservation (Confirm and Order)). This can be any product with any configuration.\n\n> Please note that multiple types of **Direct Booking** can be made at once, but only a single **Confirm Reservation** at a time is supported. Would you wish to confirm multiple reserved products at once, please put multiple bookings in a single reservation (Cart). You can not \"mix\" different booking options (**Direct Booking** && **Confirm Reservation**) in the same request.\n Therefore only multiple entries of the **Direct Booking** option is being supported.\n \n> In case multiple products are to be booked, if any of them are unavailable, the whole order will be declined.\n\n> You are unable to combine products with different base currencies in the same order.", "operationId" : "createOrder", "requestBody" : { "description" : "Create Order Request.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CreateOrderRequest" } } }, "required" : true }, "responses" : { "201" : { "description" : "Order 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" } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/OrderDetailResponse" } } }, "links" : { "GetOrderByOrderReference" : { "operationId" : "getOrder", "parameters" : { "order_reference" : "$response.body#/order_reference" }, "description" : "The `order_reference` value returned in the response can be used as the `order_reference` parameter in `GET /orders/{order_reference}`.\n" }, "UpdateOrderByOrderReference" : { "operationId" : "updateOrder", "parameters" : { "order_reference" : "$response.body#/order_reference" }, "description" : "The `order_reference` value returned in the response can be used as the `order_reference` parameter in `PUT /orders/{order_reference}`.\n" }, "CancelOrderByOrderReference" : { "operationId" : "cancelOrder", "parameters" : { "order_reference" : "$response.body#/order_reference" }, "description" : "The `order_reference` value returned in the response can be used as the `order_reference` parameter in `DELETE /orders/{order_reference}`.\n" } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "402" : { "description" : "Payment Required\n\nThe current payment state is invalid.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "PAYMENT_REQUIRED", "error_description" : "The provided payment details are invalid.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "409" : { "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/orders" ] } ] } }, "/orders/{order_reference}" : { "get" : { "tags" : [ "Orders" ], "summary" : "Order Details", "description" : "This API is called to get order details and status.", "operationId" : "getOrder", "parameters" : [ { "name" : "order_reference", "in" : "path", "description" : "A unique identifier got in response of booking API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" }, "example" : "ORDRREF123456" }, { "name" : "order_version", "in" : "query", "description" : "Order / Revision number. By default the latest revision will be returned.", "required" : false, "deprecated" : true, "style" : "form", "explode" : true, "schema" : { "type" : "integer", "example" : 1 } } ], "responses" : { "200" : { "description" : "Get Order 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/OrderDetailResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/orders" ] } ] }, "put" : { "tags" : [ "Orders" ], "summary" : "Update Order", "description" : "This API is called to update a booking. \nOnly booking details and contact / guest details can be updated. \nFor requesting other timeslots or changing the booking count, you can cancel the current order and a new reservation or new booking should be made.\n> The option to amend the selected traveldate of a confirmed order will be made available in a later API version.\n\n> Make sure you sent the complete Update Order object, missing fields will be removed from our records.", "operationId" : "updateOrder", "parameters" : [ { "name" : "order_reference", "in" : "path", "description" : "A unique identifier got in response of booking API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" }, "example" : "ORDRREF123456" } ], "requestBody" : { "description" : "Update Order Request.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/UpdateOrderRequest" } } }, "required" : true }, "responses" : { "200" : { "description" : "Successfully updated order", "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/OrderDetailResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "409" : { "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/orders" ] } ] }, "delete" : { "tags" : [ "Orders" ], "summary" : "Cancel Order / Booking", "description" : "This API is called to (partial) cancel an order/ booking.\nIn case of a full cancellation, the origin server will\n send a 204 (No Content) status code if the\n action has been enacted and no further information is to be supplied.\nOtherwise, a 200 with the updated order will be returned.\n> This API can only be called for products with `product_cancellation_allowed:true`. In case your order contains non-cancelable products, a full cancellation will result in an error.", "operationId" : "cancelOrder", "parameters" : [ { "name" : "order_reference", "in" : "path", "description" : "A unique identifier got in response of booking API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string" }, "example" : "ORDRREF123456" }, { "name" : "booking_reference", "in" : "query", "description" : "A unique identifier got in response of booking API.", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Booking References", "type" : "array", "items" : { "title" : "Booking Reference", "minLength" : 8, "type" : "string", "example" : "BOOKING_REFERENCE_123" } } }, { "name" : "cancellation_reason", "in" : "query", "description" : "Optional reason for this cancellation.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "Payment declined" }, { "name" : "payment_refund", "in" : "query", "description" : "Whether the guest payment should be refunded. In case the order is partially cancelled, the amount will be partially refunded as well. If multiple payments are made (split-payment) then all linked payments will be refunded. This value will be ignored in case no payment is made.", "required" : false, "deprecated" : true, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : true } } ], "responses" : { "200" : { "description" : "Item removed from order", "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/OrderDetailResponse" } } } }, "204" : { "description" : "Order Cancelled" }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "409" : { "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/orders" ] } ] } }, "/orders/{order_reference}/voucher" : { "get" : { "tags" : [ "Orders" ], "summary" : "Get Voucher", "description" : "Get a valid voucher / ticket in PDF format.\n\nSome third party reservation systems are unable to provide the voucher codes in a string format, instead you can obtain the PDF file using this API.\n> Please note that by sending the correct Media Type header you can define whether to receive a download URL (`application/json`) or an encoded PDF file directly (`application/pdf`).\n", "operationId" : "getVoucher", "parameters" : [ { "name" : "order_reference", "in" : "path", "description" : "A unique identifier got in response of booking API.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "title" : "Order Reference", "minLength" : 8, "type" : "string" }, "example" : "ORDRREF123456" }, { "name" : "booking_reference", "in" : "query", "description" : "A unique identifier got in response of booking API.", "required" : false, "style" : "form", "explode" : true, "schema" : { "title" : "Booking Reference", "minLength" : 8, "type" : "string", "example" : "BOOKING_REFERENCE_123" } } ], "responses" : { "200" : { "description" : "A PDF file", "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/GetVoucherResponseJSON" } }, "application/pdf" : { "schema" : { "$ref" : "#/components/schemas/GetVoucherResponsePDF" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/orders" ] } ] } }, "/contacts" : { "get" : { "tags" : [ "Contacts" ], "summary" : "List Contacts", "description" : "Get list of contacts.", "operationId" : "getContactList", "parameters" : [ { "name" : "reseller_id", "in" : "query", "description" : "[FILTER] on `reseller_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "distributor_id", "in" : "query", "description" : "[FILTER] on `distributor_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, { "name" : "contact_type", "in" : "query", "description" : "[FILTER] on `contact_type`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "$ref" : "#/components/schemas/ContactType" }, "example" : "GUEST" }, { "name" : "items_per_page", "in" : "query", "description" : "[PAGING] Items Per Page - Allows user's to configure the `items_per_page` value. For example, to load 100 items per page, the developer may point the user to a url with the query string ?items_per_page=100. This parameter is mainly usefull to manage response times, higher values result in longer response times and therefore it is recommended to keep this value as low as possible. We do allow to adjust this value so it can be used to batch/cache/update inventory at once.\n> Clients should anticipate that the value of this parameter may not be honored by the API, and should rely exclusively on the contents of the `items_per_page` response element in calculating actual page size.", "required" : false, "style" : "form", "explode" : true, "schema" : { "maximum" : 500, "minimum" : 1, "type" : "integer", "example" : 5, "default" : 10 } }, { "name" : "start_index", "in" : "query", "description" : "[PAGING] Index-based paging - Allows user's to jump directly to a specific item position within a list of items. For example, to load 10 items starting at item 200, the developer may point the user to a url with the query string ?start_index=200.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 }, { "name" : "page", "in" : "query", "description" : "[PAGING] Page-based paging - Allows user's to jump directly to a specific page within the items. This is similar to index-based paging, but saves the developer the extra step of having to calculate the item index for a new page of items. For example, rather than jump to item number 200, the developer could jump to page 20. The urls during page-based paging could use the query string ?page=1 or ?page=20. The `page_index` and `total_pages` properties are used for this style of paging.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 } ], "responses" : { "200" : { "description" : "Get Contacts 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/ContactListResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/contacts" ] } ] } }, "/contacts/{contact_uid}" : { "get" : { "tags" : [ "Contacts" ], "summary" : "Contact Details", "description" : "Get contact details.", "operationId" : "getContact", "parameters" : [ { "name" : "contact_uid", "in" : "path", "description" : "Unique Contact ID.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string", "example" : "MTAwOV90ZXN0MTAwOUB0ZXN0LmNvbQ==" } }, { "name" : "include_versions", "in" : "query", "description" : "[CONFIG] Include all contact revisions.", "required" : false, "deprecated" : true, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "default" : false }, "example" : true } ], "responses" : { "200" : { "description" : "Get Contact 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/ContactDetailResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/contacts" ] } ] }, "put" : { "tags" : [ "Contacts" ], "summary" : "Update Contact", "description" : "This API is called to update an existing contact.\n\n**Contact Functionality:**\n \n * To amend an existing contact, please send the corresponding `contact_uid` in both the path as well as the body parameter with the amended data. In this case the latest request takes precedence and therefore the data is always overwritten, not merged.\n \n * TIP: The contact details will be returned on every request. Therefore you are able to merge and combine all data on your side manually.\n \n > Please note that this API will not amend the contact details of individual orders by default. To amend the contact details of an order, please pass the corresponding order references as well.", "operationId" : "updateContact", "parameters" : [ { "name" : "contact_uid", "in" : "path", "description" : "Unique Contact ID.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "minLength" : 8, "type" : "string", "example" : "MTAwOV90ZXN0MTAwOUB0ZXN0LmNvbQ==" } }, { "name" : "order_reference", "in" : "query", "description" : "By default, previous orders will not be amended. If you would like to update existing orders to the latest contact version, please include these here as well.\n If the contact was not linked to the order yet, it will be added.", "required" : false, "style" : "form", "explode" : false, "schema" : { "title" : "Order References", "type" : "array", "example" : [ "ORDRREF123456", "ORDRREF12345678" ], "items" : { "title" : "Order Reference", "type" : "string", "example" : "ORDRREF123456" } } } ], "requestBody" : { "description" : "Update Contact Request.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/UpdateContactRequest" } } }, "required" : true }, "responses" : { "200" : { "description" : "Update Contact 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/ContactDetailResponse" } } } }, "400" : { "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "401" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "403" : { "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "405" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "406" : { "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "422" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "429" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "500" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "501" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "502" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "503" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "504" : { "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "security" : [ { "ApiKeyAuth" : [ ], "OAuth2" : [ "https://www.prioticketapis.com/auth/distributor/contacts" ] } ] } } }, "components" : { "schemas" : { "TopLevelProperties" : { "title" : "Top Level Properties", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "type" : "object" } }, "additionalProperties" : false }, "ApiVersion" : { "title" : "API Version", "type" : "string", "description" : "Represents the version of the service API that's served in the response.", "readOnly" : true, "example" : "3.2.0" }, "TopLevelData" : { "title" : "Top Level Data", "required" : [ "kind" ], "type" : "object", "properties" : { "kind" : { "$ref" : "#/components/schemas/Kind" } }, "additionalProperties" : false }, "Kind" : { "title" : "Kind", "type" : "string", "description" : "The kind property serves as a guide to what type of information this particular object stores.", "readOnly" : true, "enum" : [ "location", "route", "category", "product", "currency", "tax", "addon", "availability", "reservation", "order", "promocode", "promo", "notification", "voucher", "contact" ] }, "NotificationEvent" : { "title" : "Notification Event", "type" : "string", "description" : "Type of notification event.", "deprecated" : true, "enum" : [ "products", "orders", "payments", "vouchers" ] }, "ClientCredentialsGrantRequest" : { "title" : "Client Credentials Grant Request", "required" : [ "grant_type" ], "type" : "object", "properties" : { "grant_type" : { "title" : "Grant Type", "type" : "string", "description" : "Value MUST be set to \"client_credentials\".", "example" : "client_credentials" }, "scope" : { "title" : "Scope", "type" : "string", "description" : "The scope of the access request.", "example" : "https://www.prioticketapis.com/auth/distributor.booking" } }, "additionalProperties" : false }, "ClientCredentialsGrantResponse" : { "title" : "Client Credentials Grant Response", "required" : [ "access_token", "expires_in", "token_type" ], "type" : "object", "properties" : { "access_token" : { "title" : "Access Token", "type" : "string", "description" : "The access token issued by the authorization server.", "example" : "eyJhbGciOiJIUzI1NiJ9.e30.XmNK3GpH3Ys_7wsYBfq4C3M6goz71I7dTgUkuIa5lyQ" }, "token_type" : { "title" : "Token Type", "type" : "string", "description" : "The type of the token issued.", "example" : "Bearer" }, "expires_in" : { "title" : "Expires In", "type" : "integer", "description" : "The lifetime in seconds of the access token. For example, the value \"3600\" denotes that the access token will expire in one hour from the time the response was generated.", "example" : 3600 }, "scope" : { "title" : "Scope", "type" : "string", "description" : "OPTIONAL, if identical to the scope requested by the client; otherwise, REQUIRED.", "example" : "https://www.prioticketapis.com/auth/distributor.booking" } }, "additionalProperties" : false, "example" : { "access_token" : "eyJhbGciOiJIUzI1NiJ9.e30.XmNK3GpH3Ys_7wsYBfq4C3M6goz71I7dTgUkuIa5lyQ", "token_type" : "Bearer", "expires_in" : 3600, "scope" : "https://www.prioticketapis.com/auth/distributor.booking" } }, "ProductCurrency" : { "title" : "Product Currency", "required" : [ "product_currency_code", "product_id" ], "type" : "object", "properties" : { "product_id" : { "title" : "Product ID", "type" : "string", "description" : "Unique identifier for the product assigned by Prio.", "readOnly" : true, "example" : "PRODUCT_ID_123" }, "product_currency_code" : { "title" : "Product Currency Code", "type" : "string", "description" : "Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).", "example" : "USD" } }, "description" : "Reference to the same product with a different currency." }, "CurrencyConversion" : { "title" : "Currency Conversion", "required" : [ "currency_date", "currency_rates", "curreny_base" ], "type" : "object", "properties" : { "currency_base" : { "title" : "Currency Base", "type" : "string", "description" : "Currency base code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).", "example" : "USD" }, "currency_date" : { "title" : "Currency Date", "type" : "string", "description" : "Applicable date for these rates.", "format" : "date" }, "currency_rates" : { "title" : "Currency Rates", "type" : "object", "additionalProperties" : { "title" : "Currency Rate", "type" : "string", "description" : "Conversion rate for this foreign currency." }, "description" : "Conversion rate for each foreign currency.", "example" : { "CAD" : "1.260046", "CHF" : "0.933058" } } }, "description" : "Conversion rates for a specific currency." }, "RouteModel" : { "title" : "Route Model", "required" : [ "route_active", "route_id", "route_name" ], "type" : "object", "properties" : { "route_id" : { "title" : "Route ID", "type" : "string", "description" : "Unique identifier of this route.", "example" : "ROUTEID123456" }, "route_active" : { "title" : "Route Active", "type" : "boolean", "description" : "Whether this route should be shown.", "example" : true, "default" : true }, "route_name" : { "title" : "Route Name", "type" : "string", "description" : "Returns route name.", "example" : "Green Route" }, "route_description" : { "title" : "Route Description", "type" : "string", "description" : "Description of the route." }, "route_color" : { "title" : "Route Color", "type" : "string", "description" : "Returns the color of this route. (HEX)", "example" : "#FF0000" }, "route_duration" : { "title" : "Route Duration", "minimum" : 1, "type" : "integer", "description" : "The duration of the route (in minutes).", "example" : 90 }, "route_type" : { "title" : "Route Type", "type" : "string", "description" : "The type of route.", "example" : "DRIVING", "enum" : [ "DRIVING", "WALKING", "BICYCLING", "TRANSIT", "BOAT" ] }, "route_start_time" : { "title" : "Route Start Time", "type" : "string", "description" : "The starting time of the route.", "example" : "09:00:00" }, "route_end_time" : { "title" : "Route End Time", "type" : "string", "description" : "The end time of the route.", "example" : "20:00:00" }, "route_frequency" : { "title" : "Route Frequency", "minimum" : 1, "type" : "integer", "description" : "Returns the \"loop\" frequency of this route.", "example" : 8 }, "route_audio_languages" : { "title" : "Route Audio Languages", "type" : "array", "description" : "The audio languages available on this route. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.", "example" : [ "en", "jp", "nl" ], "items" : { "title" : "Route Audio Language", "type" : "string" } }, "route_live_languages" : { "title" : "Route Live Languages", "type" : "array", "description" : "The guide languages available on this route. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.", "example" : [ "en", "jp", "nl" ], "items" : { "title" : "Route Live Language", "type" : "string" } }, "route_products" : { "title" : "Route Products", "type" : "array", "description" : "List of applicable products on this route.", "items" : { "title" : "Product ID", "type" : "string", "description" : "Unique identifier for the product assigned by Prio.", "readOnly" : true, "example" : "PRODUCT_ID_123" } }, "route_locations" : { "title" : "Route Locations", "type" : "array", "description" : "Specifies an array of directional waypoints. Waypoints alter a route by routing it through the specified location(s).", "items" : { "$ref" : "#/components/schemas/RouteLocation" } } }, "additionalProperties" : false }, "RouteLocation" : { "title" : "Route Location", "required" : [ "route_location_active", "route_location_id", "route_location_name" ], "type" : "object", "properties" : { "route_location_id" : { "title" : "Route Location ID", "type" : "string", "description" : "The unique location ID.", "example" : "LOCATIONID123456" }, "route_location_active" : { "title" : "Route Location Active", "type" : "boolean", "description" : "Whether this location is active.", "example" : true }, "route_location_name" : { "title" : "Route Location Name", "type" : "string", "description" : "The name of the location.", "example" : "Paseo de Coln" }, "route_location_description" : { "type" : "string", "description" : "The description of the location." }, "route_location_latitude" : { "title" : "Route Location Latitude", "type" : "string", "example" : "37.383752" }, "route_location_longitude" : { "title" : "Route Location Longitude", "type" : "string", "example" : "-5.997302999999988" }, "route_location_stopover" : { "title" : "Route Location Stopover", "type" : "boolean", "description" : "A boolean which indicates that the waypoint is a stop on the route, which has the effect of showing it as a destination.", "example" : true } }, "additionalProperties" : false }, "LocationModel" : { "title" : "Location Model", "required" : [ "location_id", "location_name", "location_type" ], "type" : "object", "properties" : { "location_id" : { "title" : "Location ID", "type" : "string", "description" : "Unique identifier of this location.", "example" : "LOCATION_ID_123" }, "location_label" : { "title" : "Location Label", "type" : "string", "description" : "The label for this location.", "example" : "Theaters" }, "location_name" : { "title" : "Location Name", "type" : "string", "description" : "Returns location name.", "example" : "Theater 1" }, "location_description" : { "title" : "Location Description", "type" : "string", "description" : "Optional description of the location.", "example" : "The largest theater in Amsterdam." }, "location_type" : { "$ref" : "#/components/schemas/LocationType" }, "location_address" : { "$ref" : "#/components/schemas/AddressModel" } }, "additionalProperties" : false }, "LocationType" : { "title" : "Location Type", "type" : "string", "description" : "Type of location.\n\nLocation Types:\n * `SHOP` - Location where tickets can be purchased. Generally also offers the ability for customers to get support.\n * `COMPANY` - Headquarters or similar location. \n * `PICKUP` - Location where passengers can be picked-up, tour starts or vouchers can be retrieved.\n * `POI` - Arbitrary Point-of-Interest.\n * `VENUE` - Venue of the supplier.\n * `DEPARTURE` - Departure location.\n * `START` - Starting point of the product / tour.\n * `END` - Ending point of the product / tour.\n * `ENTRY` - Entrance of the venue. Generally for large venues which have multiple entrances.\n * `DESTINATION` - In case of tours or transport.\n * `MEETING` - Meeting point.\n * `INFO` - Generally a location where customers can retrieve more information / support.\n * `STOP` - In case of tours or transport.\n * `ONLINE` - (UPCOMING) Activity or information is available online. A `location_url` is likely provided.\n * `STEP` - A step in a certain tour or transport.\n * `OTHER` - Any type not listed above.\n * `UNKNOWN` - Type unknown / not set.", "readOnly" : true, "example" : "VENUE", "default" : "VENUE", "enum" : [ "SHOP", "COMPANY", "PICKUP", "POI", "VENUE", "DEPARTURE", "START", "END", "ENTRY", "DESTINATION", "MEETING", "INFO", "STOP", "ONLINE", "STEP", "OTHER", "UNKNOWN" ] }, "CategoryModel" : { "title" : "Category", "required" : [ "category_id", "category_name" ], "type" : "object", "properties" : { "category_id" : { "title" : "Category ID", "type" : "string", "description" : "Unique category identifier.", "readOnly" : true, "example" : "3743" }, "category_name" : { "title" : "Category Name", "type" : "string", "description" : "Category name.", "example" : "Museums" }, "category_parent_id" : { "title" : "Category Parent ID", "type" : "string", "description" : "Optional parent category.", "example" : "2393" }, "category_type" : { "title" : "Category Type", "type" : "string", "enum" : [ "SYSTEM", "RESELLER" ] }, "category_icon" : { "title" : "Category Icon", "type" : "string", "description" : "URL which points to category icon.", "format" : "uri", "example" : "https://prioticket.com/qrcodes/categoryupload/img_1438406614_museum.png" }, "category_images" : { "title" : "Category Images", "type" : "array", "description" : "It contains images related to the category.", "items" : { "$ref" : "#/components/schemas/Image" } } }, "additionalProperties" : false }, "ProductTypeClass" : { "title" : "Product Type Class", "type" : "string", "description" : "Product Type Class:\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", "readOnly" : true, "deprecated" : true, "enum" : [ "STANDARD", "INDIVIDUAL", "ITEM", "GROUP", "CUSTOM" ], "x-enum-descriptions" : [ "Product types in the standard class are the most common and are supported by almost all systems. These types will always be age-restricted.", "Product types in the individual class are less common and therefore have fewer supported systems. These types will never be age-restricted.", "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.", "Product types in the group class always consist of multiple persons. It can, for example, be a family of 2 Adults and 2 Childs.", "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." ] }, "ProductType" : { "title" : "Product Type", "type" : "string", "description" : "Product Type:\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 * `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", "readOnly" : true, "example" : "ADULT", "enum" : [ "ADULT", "CHILD", "SENIOR", "YOUTH", "INFANT", "PERSON", "STUDENT", "RESIDENT", "MILITARY", "IMPAIRED", "ITEM", "GROUP", "FAMILY", "CUSTOM" ] }, "ExtraOptions" : { "title" : "Product Options", "required" : [ "option_count_type", "option_id", "option_mandatory", "option_name", "option_price_type", "option_selection_type", "option_type" ], "type" : "object", "properties" : { "option_id" : { "title" : "Option ID", "type" : "string", "example" : "PRODUCT_OPTION_ID" }, "option_name" : { "title" : "Option Name", "type" : "string", "description" : "(Translatable) Option name.", "readOnly" : true, "example" : "Drinks" }, "option_description" : { "title" : "Option Description", "type" : "string", "description" : "(Translatable) Option description.", "readOnly" : true, "example" : "What kind of drinks should be included?" }, "option_type" : { "title" : "Extra Option Type", "type" : "string", "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* `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", "readOnly" : true, "example" : "SINGLE", "enum" : [ "SINGLE", "RADIO", "CHECKBOX", "SHORT_ANSWER", "PARAGRAPH", "DROPDOWN", "BOOLEAN", "DATE", "TIME", "DATETIME", "NUMBER", "LOCATION_SEARCH" ] }, "option_selection_type" : { "title" : "Option Selection Type", "type" : "string", "description" : "* `MANUAL` - Whether the guest is able to select the options himself.\n* `AUTO` - Whether the option is automatically added to the cart. This only applies to `option_count_type:RESTRICTED`. Only available for `option_type:SINGLE`.\n", "readOnly" : true, "example" : "MANUAL", "default" : "MANUAL", "enum" : [ "MANUAL", "AUTO" ] }, "option_count_type" : { "title" : "Option Count Type", "type" : "string", "description" : "* `FLEXIBLE` - The sum of `option_values.value_count` is not restricted to the `booking quantity` (Product Option) or `product_type_count` (Product Type Option). Do note that it should still adhere to `option_quantity_min` and `option_quantity_max`.\n* `RESTRICTED` - The sum of `option_values.value_count` must be equal to the `booking quantity` (Product Option) or `product_type_count` (Product Type Option).\n", "readOnly" : true, "example" : "FLEXIBLE", "default" : "FLEXIBLE", "enum" : [ "FLEXIBLE", "RESTRICTED" ] }, "option_list_type" : { "title" : "Option List Type", "type" : "string", "description" : "Whether to show this option on product level (once on the page), or repeat the option for each selected `product_type` / Person / PAX.\n* `PRODUCT` - Show the option once on product level.\n* `PRODUCT_TYPE` - Show the option for each selected `product_type`.\n", "readOnly" : true, "example" : "PRODUCT_TYPE", "default" : "PRODUCT_TYPE", "enum" : [ "PRODUCT", "PRODUCT_TYPE" ] }, "option_price_type" : { "title" : "Option Price Type", "type" : "string", "description" : "Whether this option has individual pricing for each `product_type` or a fixed amount. If `PRODUCT_TYPE` then the prices will be returned per `value_product_type_id` regardless of whether this is a Product- or Product Type Option.\n* `PRODUCT` - Prices are equal regardless of the selected `product_type`'s. Price is still increased based on the selected quantity.\n* `PRODUCT_TYPE` - Prices are different per `product_type`. For `product_options` this will always be in combination with `option_count_type:RESTRICTED` (as you are unable to determine how many options should be charged for which `product_type`).\n", "readOnly" : true, "example" : "PRODUCT_TYPE", "default" : "PRODUCT_TYPE", "enum" : [ "PRODUCT", "PRODUCT_TYPE" ] }, "option_booking_quantity_min" : { "title" : "Option Booking Quantity Minimum", "type" : "integer", "description" : "The minimum booking quantity required for this option to be applicable. The booking quantity is a sum of all values of `product_type_count`.", "readOnly" : true, "example" : 1 }, "option_booking_quantity_max" : { "title" : "Option Booking Quantity Maximum", "type" : "integer", "description" : "The maximum booking quantity allowed for this option to be applicable The booking quantity is a sum of all values of `product_type_count`.", "readOnly" : true, "example" : 5 }, "option_quantity_min" : { "title" : "Option Quantity Minimum", "minimum" : 0, "type" : "integer", "description" : "The minimum option count required. If `option_mandatory:true` and `option_quantity_min` is not set then option count should be equal to `product_type_count`.\n Option count is a sum of all values of `option_values.value_count`.", "readOnly" : true, "example" : 1, "default" : 0 }, "option_quantity_max" : { "title" : "Option Quantity Maximum", "minimum" : 0, "type" : "integer", "description" : "The maximum option count allowed. If `option_mandatory:true` and `option_quantity_max` is not set then option count should be equal to `product_type_count`.\n Option count is a sum of all values of `option_values.value_count`.", "readOnly" : true, "example" : 5, "default" : 0 }, "option_mandatory" : { "title" : "Option Mandatory", "type" : "boolean", "description" : "Whether it is mandatory to set this option.", "readOnly" : true, "example" : true, "default" : false }, "option_icon" : { "title" : "Option Icon", "type" : "string", "format" : "uri", "readOnly" : true, "example" : "https://test.prioticket.com/products/145/img_1445586351_test1445593536.jpg", "deprecated" : true }, "option_values" : { "title" : "Option Values", "type" : "array", "items" : { "$ref" : "#/components/schemas/ExtraOptionValueDetails" } } } }, "RoutesListResponse" : { "title" : "Routes List Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/RoutesListResponseData" } }, "description" : "Routes list response." }, "RoutesListResponseData" : { "title" : "Routes List Response Data", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/ReservedPaginationData" }, { "required" : [ "items", "total_items" ], "type" : "object", "properties" : { "items" : { "title" : "Routes", "type" : "array", "items" : { "$ref" : "#/components/schemas/RouteModel" } } } } ] }, "LocationListResponse" : { "title" : "Location List Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/LocationListResponseData" } }, "description" : "Location list response." }, "LocationListResponseData" : { "title" : "Location List Response Data", "allOf" : [ { "$ref" : "#/components/schemas/ReservedPaginationData" }, { "required" : [ "items", "total_items" ], "type" : "object", "properties" : { "items" : { "title" : "Locations", "type" : "array", "items" : { "$ref" : "#/components/schemas/LocationListModel" } } } } ] }, "LocationListModel" : { "title" : "Location", "allOf" : [ { "$ref" : "#/components/schemas/LocationModel" }, { "type" : "object", "properties" : { "location_products" : { "type" : "array", "description" : "The products available at this location.", "items" : { "title" : "Product ID", "type" : "string", "description" : "Unique identifier for the product assigned by Prio.", "readOnly" : true, "example" : "PRODUCT_ID_123" } } } } ] }, "DistributorProductTaxesResponse" : { "title" : "Product Taxes Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/DistributorProductTaxesResponseData" } }, "description" : "Product tax list response." }, "DistributorProductTaxesResponseData" : { "title" : "Distributor Product Taxes Response Data", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/ReservedPaginationData" }, { "type" : "object", "properties" : { "items" : { "title" : "Product Taxes", "type" : "array", "items" : { "$ref" : "#/components/schemas/ProductTaxDetail" } } } } ] }, "DistributorCurrencyRatesResponse" : { "title" : "Currency Rates Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/DistributorCurrencyRatesResponseData" } }, "description" : "Product currency list response." }, "DistributorCurrencyRatesResponseData" : { "title" : "Currency Rates Response Data", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelData" }, { "required" : [ "items", "total_items" ], "type" : "object", "properties" : { "total_items" : { "$ref" : "#/components/schemas/TotalItems" }, "items" : { "title" : "Currency Rates", "type" : "array", "items" : { "$ref" : "#/components/schemas/CurrencyConversion" } } } } ] }, "DistributorProductCategoriesResponse" : { "title" : "Product Categories Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/DistributorProductCategoriesResponseData" } }, "description" : "Product category list response." }, "DistributorProductCategoriesResponseData" : { "title" : "Distributor Product Categories Response Data", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelData" }, { "required" : [ "items", "total_items" ], "type" : "object", "properties" : { "total_items" : { "$ref" : "#/components/schemas/TotalItems" }, "items" : { "title" : "Categories", "type" : "array", "items" : { "$ref" : "#/components/schemas/CategoryModel" } } } } ] }, "ReservedPaginationData" : { "title" : "Reserved Pagination Data", "required" : [ "current_item_count", "items_per_page", "kind", "page_index", "start_index", "total_items", "total_pages" ], "type" : "object", "properties" : { "kind" : { "$ref" : "#/components/schemas/Kind" }, "current_item_count" : { "title" : "Current Item Count", "maximum" : 500, "minimum" : 0, "type" : "integer", "description" : "The number of items in this result set. Should be equivalent to items.length, and is provided as a convenience property. For example, suppose a developer requests a set of search items, and asks for 10 items per page. The total set of that search has 14 total items. The first page of items will have 10 items in it, so both `items_per_page` and `current_item_count` will equal \"10\". The next page of items will have the remaining 4 items; `items_per_page` will still be \"10\", but `current_item_count` will be \"4\".", "example" : 10 }, "items_per_page" : { "title" : "Items Per Page", "maximum" : 500, "minimum" : 0, "type" : "integer", "description" : "The number of items in the result. This is not necessarily the size of the data.items array; if we are viewing the last page of items, the size of data.items may be less than `items_per_page`. However the size of data.items should not exceed `items_per_page`.", "example" : 10 }, "start_index" : { "title" : "Start Index", "minimum" : 1, "type" : "integer", "description" : "The index of the first item in data.items. For consistency, `start_index` should be 1-based. For example, the first item in the first set of items should have a `start_index` of 1. If the user requests the next set of data, the `start_index` may be 10.", "example" : 1 }, "total_items" : { "title" : "Total Items", "minimum" : 0, "type" : "integer", "description" : "The total number of items available in this set. For example, if a user has 100 blog posts, the response may only contain 10 items, but the `total_items` would be 100.", "example" : 200 }, "page_index" : { "title" : "Page Index", "minimum" : 1, "type" : "integer", "description" : "The index of the current page of items. For consistency, `page_index` should be 1-based. For example, the first page of items has a `page_index` of 1. `page_index` can also be calculated from the item-based paging properties: `page_index` = floor(`start_index` / `items_per_page`) + 1.", "example" : 1 }, "total_pages" : { "title" : "Total Pages", "minimum" : 0, "type" : "integer", "description" : "The total number of pages in the result set. `total_pages` can also be calculated from the item-based paging properties above: `total_pages` = ceiling(`total_items` / `items_per_page`)\n", "example" : 20 } }, "description" : "The following properties are located in the data object, and help page through a list of items.\nThe paging properties below allow for various styles of paging, including:\n+ Previous/Next paging - Allows user's to move forward and backward through a list, one page at a time. The nextLink and previousLink properties (described in the \"Reserved Property Names for Links\" section below) are used for this style of paging.\n+ Index-based paging - Allows user's to jump directly to a specific item position within a list of items. For example, to load 10 items starting at item 200, the developer may point the user to a url with the query string ?startIndex=200.\n+ Page-based paging - Allows user's to jump directly to a specific page within the items. This is similar to index-based paging, but saves the developer the extra step of having to calculate the item index for a new page of items. For example, rather than jump to item number 200, the developer could jump to page 20. The urls during page-based paging could use the query string ?page=1 or ?page=20. The pageIndex and totalPages properties are used for this style of paging." }, "ProductListResponse" : { "title" : "Product List Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/ProductListResponseData" } }, "description" : "Product list response." }, "ProductListResponseData" : { "title" : "Product List Response Data", "allOf" : [ { "$ref" : "#/components/schemas/ReservedPaginationData" }, { "required" : [ "items" ], "type" : "object", "properties" : { "items" : { "title" : "Products", "type" : "array", "description" : "Returns a list of all products.", "items" : { "$ref" : "#/components/schemas/ProductModel" } } } } ] }, "ProductDetailResponse" : { "title" : "Product Detail Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/ProductDetailData" } }, "description" : "Product detail response." }, "ProductDetailData" : { "title" : "Product Detail Data", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelData" }, { "required" : [ "product" ], "type" : "object", "properties" : { "product" : { "$ref" : "#/components/schemas/ProductModel" } } } ] }, "ProductModel" : { "title" : "Product Model", "required" : [ "product_addon", "product_admission_type", "product_availability", "product_availability_assigned", "product_booking_start_date", "product_cancellation_allowed", "product_capacity", "product_capacity_type", "product_cluster", "product_code_settings", "product_combi", "product_content", "product_content_languages", "product_created", "product_currency", "product_daily_pricing", "product_default_language", "product_disabled", "product_distributor_id", "product_distributor_name", "product_dynamic_pricing", "product_id", "product_modified", "product_overbooking_allowed", "product_past_date_booking_allowed", "product_pickup_point", "product_quantity_pricing", "product_redemption_rules", "product_relation_details_visible", "product_seasonal_pricing", "product_service_type", "product_source_id", "product_source_name", "product_start_date", "product_supplier_id", "product_third_party", "product_traveldate_required", "product_type_seasons" ], "type" : "object", "properties" : { "product_id" : { "title" : "Product ID", "type" : "string", "description" : "Unique identifier for the product assigned by Prio.", "readOnly" : true, "example" : "PRODUCT_ID_123" }, "product_external_id" : { "title" : "Product External ID", "type" : "string", "description" : "Unique identifier for the product assigned by the third party.", "example" : "PRODUCT_EXTERNAL_ID_123" }, "product_internal_reference" : { "title" : "Product Internal Reference", "type" : "string", "description" : "Internal Reference / SKU for the product.", "example" : "PRODUCT_INTERNAL_REF" }, "product_supplier_id" : { "title" : "Product Supplier ID", "type" : "string", "description" : "Unique identifier for supplier.", "readOnly" : true, "example" : "145" }, "product_distributor_id" : { "title" : "Product Distributor ID", "type" : "string", "description" : "Unique identifier for the distributor.", "readOnly" : true, "example" : "501" }, "product_distributor_name" : { "title" : "Product Distributor Name", "type" : "string", "description" : "Name of the distributor.", "readOnly" : true, "example" : "Demo Distributor" }, "product_source_id" : { "title" : "Product Source ID", "type" : "string", "description" : "Unique ID of the product source.", "deprecated" : true }, "product_source_name" : { "title" : "Product Source Name", "type" : "string", "description" : "Source of the product. Either PrioTicket or the name of the other reservation system e.g. CSS.", "example" : "Prioticket" }, "product_contract_source_id" : { "title" : "Product Contract Source ID", "type" : "string", "description" : "Contract source id.", "deprecated" : true }, "product_contract_source_name" : { "title" : "Product Contract Source Name", "type" : "string", "description" : "Contract source of the product. Either PrioTicket or the name of the contracting party.", "example" : "Prioticket", "deprecated" : true }, "product_default_language" : { "title" : "Product Default Language", "type" : "string", "description" : "Default Supplier Language. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.", "example" : "en", "default" : "en" }, "product_color" : { "title" : "Product Color", "type" : "string", "description" : "Color of the product. (HEX)", "example" : "#b9f2ff" }, "product_supplier_key_public" : { "title" : "Product Supplier Public Key", "type" : "string", "description" : "Supplier public key (Internal use only).", "example" : "b7064e02-37a5-9ce5-ff63-b7536b364102" }, "product_from_price" : { "title" : "Product From Price", "type" : "string", "description" : "Static From price which can be shown. (Usually regular Adult including discount).", "example" : "16.40" }, "product_start_date" : { "title" : "Product Start Date", "type" : "string", "description" : "Starting date of product.", "format" : "date-time" }, "product_end_date" : { "title" : "Product End date", "type" : "string", "description" : "End date of the product.", "format" : "date-time" }, "product_booking_start_date" : { "title" : "Product Booking Start Date", "type" : "string", "description" : "The earliest date on which the product is available for sale. This can be earlier than the `product_start_date`.", "format" : "date-time" }, "product_booking_advance_time_min" : { "title" : "Product Booking Advance Time Min", "type" : "integer", "description" : "The minimum amount of minutes you are required to book in advance to the selected travel date (`booking_travel_date`) or availability slot (`availability_from_date_time`).", "example" : 60 }, "product_booking_quantity_min" : { "title" : "Product Booking Quantity Max", "multipleOf" : 1, "minimum" : 1, "type" : "integer", "description" : "The minimum amount of available seats/spot/places/services required per product booking. ", "example" : 1 }, "product_booking_quantity_max" : { "title" : "Product Booking Quantity Max", "multipleOf" : 1, "minimum" : 1, "type" : "integer", "description" : "The maximum amount of available seats/spots/places/services allowed per product booking.", "example" : 5 }, "product_turnout_time" : { "title" : "Product Turnout Time", "minimum" : 0, "type" : "integer", "description" : "The amount of minutes at which guests should arrive prior to the start time of the reservation.\n\nFor example: You need to be at the meeting point 15 minutes in advance.", "example" : 15 }, "product_duration" : { "title" : "Product Duration", "minimum" : 1, "type" : "integer", "description" : "Duration of product in minutes.", "example" : 90 }, "product_show_capacity_count" : { "title" : "Product Show Capacity Count", "minimum" : 0, "type" : "integer", "description" : "The value from which the current capacity should be shown to the customer.", "example" : 25 }, "product_disabled" : { "title" : "Product Disabled", "type" : "boolean", "description" : "Whether the product is disabled or not.", "example" : false, "default" : false }, "product_third_party" : { "title" : "Product Third Party", "type" : "boolean", "description" : "Whether the product is from a third party.", "example" : false, "default" : false }, "product_seasonal_pricing" : { "title" : "Product Seasonal Pricing", "type" : "boolean", "description" : "Whether pricing can differentiate between specific date ranges (Product types can be returned more than once with different settings).", "readOnly" : true, "example" : true, "default" : false }, "product_quantity_pricing" : { "title" : "Product Quantity Pricing", "type" : "boolean", "description" : "Different pricing based on the booking quantity.", "readOnly" : true, "example" : true, "default" : false }, "product_relation_details_visible" : { "title" : "Product Relation Details Visible", "type" : "boolean", "description" : "Whether you should show the underlying details of the linked sub-products. Only applicable if either `product_cluster:true`, `product_combi:true` or `product_addon:true`.", "example" : true, "default" : false }, "product_cluster" : { "title" : "Product Has Cluster", "type" : "boolean", "description" : "Product is a cluster-product. In case this value is indicated as `true`, 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`.", "readOnly" : true, "example" : true, "default" : false }, "product_combi" : { "title" : "Product Has Combi", "type" : "boolean", "description" : "Product is a combi-product. In case this value is indicated as `true`, 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`.", "readOnly" : true, "example" : true, "default" : false }, "product_addon" : { "title" : "Product Has Addon", "type" : "boolean", "description" : "Product has one or more addon-products. In case this value is indicated as `true`, this product has one or more optional addons. All of the optional addons are listed inside `product_addon_details`.", "readOnly" : true, "example" : true, "default" : false }, "product_availability" : { "title" : "Product Has Availability", "type" : "boolean", "description" : "Whether it is required to select an availability slot to make a booking request. \n\nIn case (`product_cluster:true` or `product_combi:true`) and `product_availability:true` then the product has shared capacity across it sub-products. If `product_availability:false` then this main cluster/combi product does not have shared capacity across its sub-products and therefore those should be checked individually. ", "example" : true, "default" : true }, "product_availability_assigned" : { "title" : "Product Has Assigned Availability", "type" : "boolean", "description" : "Whether availability slots are assigned to a specific `spot`. In case `product_availability_assigned:true` assigned 'spots' will be returned once a booking is confirmed (using a best available seat algorithm). Optionally, if seatmaps are being supported, you are able to send your own selected seats.", "example" : true, "default" : false }, "product_capacity" : { "title" : "Product Has Capacity", "type" : "boolean", "description" : "Whether this product has managed capacity.", "example" : true, "default" : true }, "product_traveldate_required" : { "title" : "Product Traveldate Required", "type" : "boolean", "description" : "Whether a traveldate is required upon booking. Redundant if availability is selected.", "example" : false, "default" : false }, "product_cancellation_allowed" : { "title" : "Product Cancellation Allowed", "type" : "boolean", "description" : "Whether it is allowed to cancel this product. \n\nNote that even if a product can be cancelled, cancellation fees might still apply.\nPlease check `product_cancellation_policies` for more details.", "example" : true, "default" : true }, "product_overbooking_allowed" : { "title" : "Product Overbooking Allowed", "type" : "boolean", "description" : "Whether it is allowed to overbook. Not appplicable to third party products.", "readOnly" : true, "example" : false, "default" : false }, "product_past_date_booking_allowed" : { "title" : "Product Past Date Booking Allowed", "type" : "boolean", "description" : "Whether it is allowed to select a date in the past.", "readOnly" : true, "example" : true, "default" : false }, "product_capacity_type" : { "$ref" : "#/components/schemas/CapacityType" }, "product_admission_type" : { "$ref" : "#/components/schemas/ProductAdmissionType" }, "product_pickup_point" : { "title" : "Product Pickup", "type" : "string", "description" : "Whether its required to set a pickup point for this product. Details on the available locations are inside `product_locations`.", "example" : "MANDATORY", "enum" : [ "MANDATORY", "OPTIONAL", "NOT_SET" ] }, "product_pickup_point_details" : { "title" : "Product Pickup Points", "type" : "array", "description" : "If `product_pickup_point:MANDATORY/OPTIONAL`, then `pickup_point_details` are required.", "items" : { "$ref" : "#/components/schemas/PickupPoint" } }, "product_content" : { "$ref" : "#/components/schemas/ProductContent" }, "product_redemption_rules" : { "$ref" : "#/components/schemas/ProductRedemptionRules" }, "product_code_settings" : { "$ref" : "#/components/schemas/ProductCodeSettings" }, "product_payment_detail" : { "$ref" : "#/components/schemas/ProductPaymentDetails" }, "product_currencies" : { "title" : "Product Currencies", "type" : "array", "description" : "If this product is available in multiple supplier base currencies, all related products are listed here.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/ProductCurrency" } }, "product_type_seasons" : { "title" : "Product Type Seasons", "type" : "array", "description" : "Product types per season.", "items" : { "$ref" : "#/components/schemas/ProductTypeSeason" } }, "product_options" : { "title" : "Product Options", "type" : "array", "description" : "General product options.", "items" : { "$ref" : "#/components/schemas/ExtraOptions" } }, "product_cancellation_policies" : { "title" : "Product Cancellation Policies", "type" : "array", "description" : "Sometimes a product has a cancellation fee. In that case the order amount might not be refunded in full. If no cancellation policies are set and `product_cancellation_allowed:true` then you can always cancel products until they are redeemed.", "readOnly" : true, "items" : { "$ref" : "#/components/schemas/CancellationPolicy" } }, "product_noshow_policy" : { "$ref" : "#/components/schemas/ProductNoShowPolicy" }, "product_opening_times" : { "title" : "Product Opening Times", "type" : "array", "description" : "Opening times of the product / venue.", "items" : { "$ref" : "#/components/schemas/OpeningTimes" } }, "product_block_out_dates" : { "title" : "Product Block Out Dates", "type" : "array", "description" : "Dates when the product is not available, these dates will not show as available dates.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/ProductBlockoutDate" } }, "product_special_dates" : { "title" : "Product Special Dates", "type" : "array", "description" : "Dates for a special event, depending on the products extra information might be available.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/ProductSpecialDate" } }, "product_locations" : { "title" : "Product Locations", "type" : "array", "description" : "Venues / Locations of interested for this product.", "items" : { "$ref" : "#/components/schemas/ProductLocation" } }, "product_cluster_details" : { "title" : "Product Clusters", "type" : "array", "description" : "In case `product_cluster:true` the following array will be populated. This array contains all linked cluster-products to this main cluster-product. One of these should be booked instead of the main-product. Depending on the configuration, details and availability might be shared across these products.", "items" : { "$ref" : "#/components/schemas/ProductRelationDetails" } }, "product_combi_details" : { "title" : "Product Combi's", "type" : "array", "description" : "The List Products API lists all available product configurations enabled for the distributor.\nIf you have a combination (combi-product) of (Product A + Product B) a third product (Product C) will be created. \n\nThe API will return the following:\n```\nArray [\n Product A Details {\n `product_id`:'PRODUCT_ID_A'\n `product_combi:false`,\n `product_combi_details`:[])\n }\n \n Product B Details {\n `product_id`:'PRODUCT_ID_B',\n `product_combi:false`,\n `product_combi_details`:[])\n }\n \n Product C Details { \n `product_id`:'PRODUCT_ID_C'\n `product_combi:true`, \n `product_combi_details`:['PRODUCT_ID_A', 'PRODUCT_ID_B')\n }\n]\n```\nEvery product has a unique ID and acts as a separate entity. Therefore there is no need to handle this logic on your side and you could handle them as separate products. \nIn case `product_combi:true` the following array will be populated. This array contains all linked combi-products to this main combi-product. Depending on the configuration, details and availability might be shared across these products.\n* To make a combination booking ALL combi sub-products MUST be set in the booking request as well as the main combi-product itself. Failing to do so will cause an invalid response.\n* All sub-products must be set in the `product_combi_details` object of the main combi-product booking object, else the products will be set as individual bookings. (Some sub-products can be booked as separate products as well)\n* All sub-products will inherited the `product_type_details` configuration of the main combi-product and therefore should not be set.", "items" : { "$ref" : "#/components/schemas/ProductRelationDetails" } }, "product_addon_details" : { "title" : "Product Addons", "type" : "array", "description" : "In case `product_addon:true` the following array will be populated. This array contains all linked addon-products to this main product. One or more of these could be booked in addition to the main product. ", "items" : { "$ref" : "#/components/schemas/ProductRelationDetails" } }, "product_categories" : { "title" : "Product Categories", "type" : "array", "description" : "The categories the product belongs to.", "items" : { "title" : "Category", "type" : "string", "example" : "PRODUCT_CATEGORY_ID_123" } }, "product_languages" : { "title" : "Product Languages", "type" : "array", "description" : "Language codes for the available languages of the product, e.g. Shows are available in English and Spanish. \n\nLanguage is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.", "example" : [ "en", "es", "jp" ], "items" : { "title" : "Product Language", "type" : "string" } }, "product_content_languages" : { "title" : "Product Content Languages", "type" : "array", "description" : "Language Codes of the languages for which the product data is available. \n\nLanguage is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format. This field can be used to show multilingual content on your website.", "example" : [ "en", "nl" ], "items" : { "title" : "Content Language Code", "type" : "string" } }, "product_guide_languages" : { "title" : "Product Guide Languages", "type" : "array", "description" : "Language codes of the available guides.\n\nLanguage is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.", "items" : { "$ref" : "#/components/schemas/GuideLanguage" } }, "product_routes" : { "title" : "Product Routes", "type" : "array", "description" : "Array of routes linked to this product.", "items" : { "title" : "Route ID", "type" : "string", "example" : "PRODUCT_ROUTE_ID_123" } }, "product_notes" : { "title" : "Product Notes", "type" : "array", "description" : "Optional notes on this product.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/Note" } }, "product_created" : { "title" : "Product Created", "type" : "string", "description" : "The date on which the product has been created.", "format" : "date-time", "readOnly" : true }, "product_modified" : { "title" : "Product Modified", "type" : "string", "description" : "The date on which the product has been last modified.", "format" : "date-time", "readOnly" : true } }, "additionalProperties" : false }, "ProductNoShowPolicy" : { "title" : "Product No Show Policy", "type" : "object", "properties" : { "fee_percentage" : { "title" : "Fee Percentage", "type" : "string" }, "fee_amount" : { "title" : "Fee Amount", "type" : "string", "example" : "10.00" } }, "description" : "The fee that should be charged if the customer does not turn up.", "deprecated" : true }, "GuideLanguage" : { "title" : "Guide Language", "required" : [ "language_codes", "language_type" ], "type" : "object", "properties" : { "language_codes" : { "title" : "Language Codes", "type" : "array", "items" : { "title" : "Language Code", "type" : "string", "example" : "nl" } }, "language_type" : { "title" : "Language Type", "type" : "string", "description" : "Type of language.", "example" : "GUIDE_AUDIO", "enum" : [ "GUIDE_LIVE", "GUIDE_AUDIO" ] } }, "description" : "Language code of the available guide.\n\nLanguage is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format." }, "ProductRedemptionRules" : { "title" : "Product Redemption Rules", "required" : [ "redemption_count_type", "redemption_has_duration" ], "type" : "object", "properties" : { "redemption_has_duration" : { "title" : "Redemption has duration", "type" : "boolean", "description" : "In case this product has a fixed duration a countdown will be started based on the `redemption_duration_type`.", "example" : true, "default" : false }, "redemption_duration_time" : { "title" : "Redemption Duration Time", "type" : "integer", "description" : "The total amount of time in seconds that the pass is supposed to be valid. Only applicable if `redemption_has_duration:true`.", "example" : 86400 }, "redemption_duration_type" : { "title" : "Redemption Duration Type", "type" : "string", "description" : "When the actual countdown starts. Only applicable if `redemption_has_duration:true`.\n* `TRAVEL_DATE` - This product countdown starts on the selected traveldate (`booking_travel_date` or `availability_from_date_time`)\n* `BOOKING_DATE` - This product countdown starts on the booking date (directly after purchase).\n* `SCAN` - This product countdown starts after the first scan.\n* `CONVERSION` - This product countdown starts after converting the voucher into a pass.\n", "example" : "SCAN", "default" : "SCAN", "enum" : [ "TRAVEL_DATE", "BOOKING_DATE", "SCAN", "CONVERSION" ] }, "redemption_count_type" : { "title" : "Redemption Count Type", "type" : "string", "description" : "The amount of allowed redemptions for this product.\nIf `redemption_has_duration:true`, then this value is ONLY applicable during an active countdown. Otherwise it is a general admission counter.\n* `UNLIMITED` - This product can be redeemed an unlimited amount of times (during the redeem duration).\n* `LIMITED` - This product can be redeemed a limited amount of times (during the redeem duration).\n", "example" : "LIMITED", "default" : "LIMITED", "enum" : [ "UNLIMITED", "LIMITED" ] }, "redemption_count_value" : { "title" : "Redemption Count Value", "minimum" : 1, "type" : "integer", "description" : "The amount of times this product can be redeemed. Only applicable if `redemption_count_type:LIMITED`.", "example" : 5, "default" : 1 } }, "description" : "Rules on the product redemption." }, "ProductRelationDetails" : { "title" : "Product Relation", "required" : [ "product_admission_type", "product_currency_code", "product_id", "product_parent_id", "product_supplier_id", "product_supplier_name", "product_title" ], "type" : "object", "properties" : { "product_id" : { "title" : "Product ID", "type" : "string", "description" : "Unique identifier for the product assigned by Prio.", "example" : "PRODUCT_RELATION_123" }, "product_parent_id" : { "title" : "Product Parent ID", "type" : "string", "description" : "Unique identifier for the parent product assigned by Prio.", "readOnly" : true, "example" : "PRODUCT_PARENT_ID_123" }, "product_supplier_id" : { "title" : "Product Supplier ID", "type" : "string", "description" : "Unique identifier for supplier.", "readOnly" : true, "example" : "145" }, "product_supplier_name" : { "title" : "Product Supplier Name", "type" : "string", "description" : "Name of the supplier which offers the product(s).", "readOnly" : true, "example" : "Test Museum" }, "product_title" : { "title" : "Product Title", "type" : "string", "description" : "The title of product.", "example" : "Test Product" }, "product_from_price" : { "title" : "Product From Price", "type" : "string", "description" : "Static From price which can be shown. (Usually regular Adult including discount).", "example" : "16.40" }, "product_currency_code" : { "title" : "Product Currency Code", "type" : "string", "description" : "Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).", "readOnly" : true, "example" : "USD" }, "product_start_date" : { "title" : "Product Start Date", "type" : "string", "description" : "Starting date of the product.", "format" : "date-time" }, "product_end_date" : { "title" : "Product End Date", "type" : "string", "description" : "End date of the product.", "format" : "date-time" }, "product_booking_window_product_id" : { "title" : "Product Booking Window Product ID", "type" : "string", "description" : "The booking window dependant product, also called dependencies, indicates the restrictions on sub-ticket bookings in regards to the selected travel-date of another product. This means that some products can only be bought between a fixed booking window relative to another product (booking). This is mainly used in itenaries and tours where external factors such as travel time restrict a guest to book multiple attractions in a short period.\n\nThis dependancy can be set for another (previous) sub-product in this array or the main product of this booking.\n\nOnly applicable if `product_combi:true` or `product_addon:true`.", "example" : "PRODUCT_ID_123" }, "product_booking_window_start_time" : { "title" : "Product Booking Window Start Time", "type" : "integer", "description" : "The minimum amount of minutes passed after the selected travel date (`booking_travel_date`) or availability slot (`availability_from_date_time`) of the `product_booking_window_product_id`.\n\nOnly applicable if `product_combi:true` or `product_addon:true`.", "example" : 1440 }, "product_booking_window_end_time" : { "title" : "Product Booking Window End Time", "type" : "integer", "description" : "The maximum amount of minutes allowed after the previously selected travel date (`booking_travel_date`) or availability slot (`availability_from_date_time`) of the `product_booking_window_product_id`.\n\nOnly applicable if `product_combi:true` or `product_addon:true`.", "example" : 2160 }, "product_admission_type" : { "$ref" : "#/components/schemas/ProductAdmissionType" }, "product_relation_type" : { "$ref" : "#/components/schemas/RelationType" }, "product_images" : { "title" : "Product Images", "type" : "array", "description" : "It contains images related to the product.", "items" : { "$ref" : "#/components/schemas/Image" } } }, "description" : "Details on the Product Relation (sub-products)." }, "ProductCombiDetail" : { "title" : "Product Combi Detail", "required" : [ "product_admission_type", "product_currency_code", "product_id", "product_parent_id", "product_supplier_id", "product_supplier_name", "product_title" ], "type" : "object", "properties" : { "product_parent_id" : { "title" : "Product Parent ID", "type" : "string", "description" : "Unique identifier for the parent product assigned by Prio.", "readOnly" : true, "example" : "PRODUCT_PARENT_ID_123", "deprecated" : true }, "product_id" : { "title" : "Product Combi ID", "type" : "string", "description" : "Unique identifier for the product assigned by Prio.", "example" : "PRODUCT_COMBI_ID_123" }, "product_title" : { "title" : "Product Title", "type" : "string", "description" : "The title of product.", "readOnly" : true, "example" : "Test Product" }, "product_supplier_id" : { "title" : "Product Supplier ID", "type" : "string", "description" : "Unique identifier for supplier.", "readOnly" : true, "example" : "145" }, "product_supplier_name" : { "title" : "Product Supplier Name", "type" : "string", "description" : "Name of the supplier which offers the product(s).", "readOnly" : true, "example" : "Test Museum" }, "product_admission_type" : { "$ref" : "#/components/schemas/ProductAdmissionType" }, "product_currency_code" : { "title" : "Product Currency Code", "type" : "string", "description" : "Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).", "readOnly" : true, "example" : "USD" }, "product_availability_id" : { "title" : "Product Combi Availability ID", "type" : "string", "description" : "The unique ID for the availability slot. Only mandatory if `product_availability:true`", "example" : "20191026090010006526" }, "product_availability_from_date_time" : { "title" : "Product Availability From Date Time", "type" : "string", "description" : "The starting date and time of the activity availability.", "format" : "date-time", "readOnly" : true }, "product_availability_to_date_time" : { "title" : "Product Availability To Date Time", "type" : "string", "description" : "The till date and time of the activity availability.", "format" : "date-time", "readOnly" : true }, "product_availability_capacity_id" : { "title" : "Availability Slot Capacity ID", "type" : "string", "description" : "Availability group / capacity identifier.", "readOnly" : true, "example" : "43525235" }, "product_availability_capacity_shared_id" : { "title" : "Availability Slot Shared Capacity ID", "type" : "string", "description" : "Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.", "readOnly" : true, "example" : "435252453" }, "booking_travel_date" : { "title" : "Booking Combi Travel Date", "type" : "string", "description" : "If `product_availability:false` you can still define the expected redemption date of this product. Required if `product_traveldate_required:true`.", "format" : "date-time" }, "booking_external_reference" : { "title" : "Booking External Reference", "type" : "string", "description" : "A unique booking identifier within the external system.", "example" : "BOOKING_EXTERNALREF123", "deprecated" : true } } }, "ProductLocation" : { "title" : "Product Location", "allOf" : [ { "$ref" : "#/components/schemas/LocationModel" }, { "required" : [ "location_pickup_point" ], "type" : "object", "properties" : { "location_pickup_point" : { "title" : "Location Has Pickup Point", "type" : "boolean", "description" : "Whether this location is a pickup point.", "example" : true, "default" : false } } } ] }, "ProductAdmissionType" : { "title" : "Product Admission Types", "type" : "string", "description" : "* `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.\n", "readOnly" : true, "example" : "TIME_PERIOD", "enum" : [ "TIME_PERIOD", "TIME_DATE", "TIME_POINT", "TIME_SLOT", "TIME_OPEN" ] }, "ProductContent" : { "title" : "Product Content", "required" : [ "product_long_description", "product_short_description", "product_supplier_name", "product_title" ], "type" : "object", "properties" : { "product_title" : { "title" : "Product Title.", "type" : "string", "description" : "The title of product.", "example" : "Test Product" }, "product_supplier_name" : { "title" : "Product Supplier Name", "type" : "string", "description" : "Name of the supplier which offers the product(s).", "readOnly" : true, "example" : "Test Museum" }, "product_duration_text" : { "title" : "Product Duration Text", "type" : "string", "description" : "Duration of product as contextial representation.", "example" : "1.5 hour" }, "product_short_description" : { "title" : "Product Short Description", "type" : "string", "description" : "The short description of product.", "example" : "Rijksmuseum Entrance product + Multimediatour" }, "product_long_description" : { "title" : "Product Long Description", "type" : "string", "description" : "The long description of product.", "example" : "Experience a beautiful evening cruise during the Amsterdam Light Festival without queueing up. Besides a place on a date and time of your choice, this cruise also includes a drink and a snack." }, "product_additional_information" : { "title" : "Product Additional Information", "type" : "string", "description" : "Additional information show on the website and voucher.", "example" : "Some additional information." }, "product_entry_notes" : { "title" : "Product Entry Notes", "type" : "string", "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", "example" : "Reconfirmation: Please call or email atleast 72 hour in advance to reconfirm your arrival." }, "product_favorite" : { "title" : "Product Favorite", "type" : "boolean", "description" : "Indicator that this product is marked as a favorite.", "example" : false }, "product_highlights" : { "title" : "Product Highlights", "type" : "array", "items" : { "$ref" : "#/components/schemas/Highlight" } }, "product_includes" : { "title" : "Product Includes", "type" : "array", "items" : { "$ref" : "#/components/schemas/ProductInclude" } }, "product_excludes" : { "title" : "Product Excludes", "type" : "array", "items" : { "$ref" : "#/components/schemas/ProductExclude" } }, "product_marketing_labels" : { "title" : "Product Marketing Labels", "type" : "array", "deprecated" : true, "items" : { "title" : "Marketing Label", "type" : "string", "example" : "Popular" } }, "product_images" : { "title" : "Product Images", "type" : "array", "description" : "It contains images related to the product.", "items" : { "$ref" : "#/components/schemas/Image" } } }, "description" : "All translatable product content." }, "Image" : { "title" : "Image", "required" : [ "image_type", "image_url" ], "type" : "object", "properties" : { "image_type" : { "title" : "Product Image Type", "type" : "string", "example" : "BANNER", "enum" : [ "BANNER", "MAIN", "DETAIL" ] }, "image_url" : { "title" : "Image URL", "type" : "string", "format" : "uri", "example" : "https://test.prioticket.com/products/145/img_1445586351_test1445593536.jpg" } }, "additionalProperties" : false, "description" : "Details on the image." }, "Highlight" : { "title" : "Product Highlight", "required" : [ "highlight_description", "highlight_id" ], "type" : "object", "properties" : { "highlight_id" : { "title" : "Highlight ID", "type" : "string", "description" : "Highlight ID.", "readOnly" : true, "example" : "4673854", "deprecated" : true }, "highlight_description" : { "title" : "Highlight Description", "type" : "string", "description" : "Description of the highlight.", "example" : "Audio commentary in 21 languages through our Personal Audio System." }, "highlight_type" : { "title" : "Highlight Type", "type" : "string", "example" : "SLOGAN", "deprecated" : true, "enum" : [ "SLOGAN", "ADDON", "INCLUDES", "ABOUT" ] }, "highlight_icon" : { "title" : "Highlight Icon", "type" : "string", "format" : "uri", "example" : "https://test.prioticket.com/products/145/img_1445586351_test1445593536.jpg", "deprecated" : true } }, "additionalProperties" : false }, "ProductInclude" : { "title" : "Product Include", "required" : [ "include_id", "include_name" ], "type" : "object", "properties" : { "include_id" : { "title" : "Include ID", "type" : "string", "description" : "Unique product include ID.", "readOnly" : true, "example" : "385993", "deprecated" : true }, "include_name" : { "title" : "Include Name", "type" : "string", "description" : "The name of the included product.", "example" : "Drinks", "deprecated" : true }, "include_description" : { "title" : "Include Description", "type" : "string", "description" : "More detail on the included product.", "example" : "Free non-alcoholic beverages" }, "include_icon" : { "title" : "Include Icon", "type" : "string", "format" : "uri", "example" : "https://test.prioticket.com/products/145/img_1445586351_test1445593536.jpg", "deprecated" : true } }, "additionalProperties" : false }, "ProductExclude" : { "title" : "Product Exclude", "required" : [ "exclude_id", "exclude_name" ], "type" : "object", "properties" : { "exclude_id" : { "title" : "Exclude ID", "type" : "string", "description" : "Unique product exclude ID.", "readOnly" : true, "example" : "385993", "deprecated" : true }, "exclude_name" : { "title" : "Exclude Name", "type" : "string", "description" : "The name of the excluded product.", "example" : "Drinks", "deprecated" : true }, "exclude_description" : { "title" : "Exclude Description", "type" : "string", "description" : "More detail on the excluded product.", "example" : "Alcoholic beverages" }, "exclude_icon" : { "title" : "Exclude Icon", "type" : "string", "format" : "uri", "example" : "https://test.prioticket.com/products/145/img_1445586351_test1445593536.jpg", "deprecated" : true } }, "additionalProperties" : false }, "CancellationPolicy" : { "title" : "Cancellation Policy", "required" : [ "cancellation_type" ], "type" : "object", "properties" : { "cancellation_description" : { "title" : "Cancellation description", "type" : "string", "description" : "Description of this cancellation policy.", "example" : "Please cancel any booking 1 hour in advance." }, "cancellation_type" : { "title" : "Cancellation Type", "type" : "string", "description" : "Whether the `cancellation_fee_threshold` is based on the travel date or booking date.", "example" : "TRAVEL_DATE", "default" : "TRAVEL_DATE", "enum" : [ "TRAVEL_DATE", "BOOKING_DATE" ] }, "cancellation_fee_threshold" : { "title" : "Cancellation Fee Threshold", "minimum" : 0, "type" : "integer", "description" : "The amount of minutes before / after the traveldate / booking date for which this policy is applicable.", "example" : 3600 }, "cancellation_fee_percentage" : { "title" : "Cancellation Fee Percentage", "type" : "number", "description" : "Percentage of the total booking value that should be charged.", "format" : "double", "example" : 20.5 }, "cancellation_fee_amount" : { "title" : "Cancellation Fee Amount", "type" : "string", "description" : "Fixed amount that should be charged.", "example" : "5.00" } }, "additionalProperties" : false, "description" : "Optional fee that may be charged if a cancellation is requested. Either a fixed amount or a set percentage should be charged." }, "CustomField" : { "title" : "Custom Field", "type" : "object", "properties" : { "custom_field_name" : { "title" : "Custom Field Name", "type" : "string", "description" : "Unique Name / Identifier for this field.", "example" : "Custom Field Name" }, "custom_field_value" : { "title" : "Custom Field Value", "type" : "string", "description" : "Freeform value of this field.", "example" : "Custom Field Value" } }, "description" : "Custom Fields allow you to store and list any arbitrary value in the system." }, "ProductTypeDetails" : { "title" : "Product Type Details", "required" : [ "product_type", "product_type_id", "product_type_pricing" ], "type" : "object", "properties" : { "product_type" : { "$ref" : "#/components/schemas/ProductType" }, "product_type_class" : { "$ref" : "#/components/schemas/ProductTypeClass" }, "product_type_variant_id" : { "title" : "Product Type Variant ID", "type" : "string", "description" : "Unique identifier for this product type variant.", "readOnly" : true, "example" : "PRODUCT_TYPE_VARIANT_ID_123", "deprecated" : true }, "product_type_id" : { "title" : "Product Type ID", "type" : "string", "readOnly" : true, "example" : "PRODUCT_TYPE_ID_123" }, "product_type_label" : { "title" : "Product Type Label", "type" : "string", "description" : "(Translatable) The actual label to show on your front-end.", "example" : "Adult" }, "product_type_description" : { "title" : "Product Type Description", "type" : "string", "description" : "(Translatable) Optional description of this product type. If provided, it is highly recommended to show it on your front-end as it might contain important information about the eligibility.", "example" : "Standard Entry Fee" }, "product_type_age_from" : { "title" : "Product Type Age From", "multipleOf" : 1, "minimum" : 0, "type" : "integer", "description" : "The starting age for age group.", "readOnly" : true, "example" : 18 }, "product_type_age_to" : { "title" : "Product Type Age To", "multipleOf" : 1, "minimum" : 0, "type" : "integer", "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", "readOnly" : true, "example" : 65 }, "product_type_pax" : { "title" : "Product Type Pax", "multipleOf" : 1, "minimum" : 0, "type" : "integer", "description" : "Number of persons that should be counted in the reporting.", "readOnly" : true, "example" : 1 }, "product_type_capacity" : { "title" : "Product Type Capacity", "minimum" : 0, "type" : "integer", "description" : "Capacity that should be counted / blocked in the system.\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", "readOnly" : true, "example" : 1, "deprecated" : true }, "product_type_quantity_min" : { "title" : "Product Type Quantity Min", "multipleOf" : 1, "minimum" : 1, "type" : "integer", "description" : "The minimum required quantity to be selected. The `product_type_count` must be equal or higher.", "example" : 1 }, "product_type_quantity_max" : { "title" : "Product Type Quantity Max", "multipleOf" : 1, "minimum" : 1, "type" : "integer", "description" : "The maximum allowed quantity to be selected. The `product_type_count` must be equal or lower.", "example" : 10 }, "product_type_price_type" : { "title" : "Product Type Price Type", "type" : "string", "description" : "Whether the price is applicable per individual or fixed for the whole group. \nPrice Type:\n * `INDIVIDUAL` - Depending on the booking quantity, the price increases.\n * `GROUP` - The price for this product type is fixed regardless of how many are booked.", "enum" : [ "INDIVIDUAL", "GROUP" ] }, "product_type_price_tax_id" : { "title" : "Product Type Price Tax ID", "type" : "string", "description" : "Tax ID for this product type. Tax information can be retrieved from the Tax API.", "example" : "TAX_ID_123", "deprecated" : true }, "product_type_pricing" : { "$ref" : "#/components/schemas/ProductTypePricing" }, "product_type_fees" : { "title" : "Product Type Fees", "type" : "array", "description" : "List of fees. Some fee types are only visible for certain users.", "readOnly" : true, "items" : { "$ref" : "#/components/schemas/Fee" } }, "product_type_quantity_variations" : { "title" : "Product Type Quantity Variations", "type" : "array", "description" : "Only set if `product_quantity_pricing:true`.", "items" : { "$ref" : "#/components/schemas/ProductTypeQuantityVariation" } } }, "description" : "Details on a single product type." }, "ProductTypeSeason" : { "title" : "Product Type Season", "required" : [ "product_type_season_details", "product_type_season_start_date" ], "type" : "object", "properties" : { "product_type_season_label" : { "title" : "Product Type Season Label", "type" : "string", "description" : "Optional label for this season. Only applicable if set and `product_seasonal_pricing:true.", "example" : "Summer Season" }, "product_type_season_start_date" : { "title" : "Product Type Season Start Date", "type" : "string", "description" : "Start date of this season.", "format" : "date-time" }, "product_type_season_end_date" : { "title" : "Product Type Season End Date", "type" : "string", "description" : "End date of this season.", "format" : "date-time" }, "product_type_season_details" : { "title" : "Product Type Season Details", "type" : "array", "description" : "Contains information related to the different product type versions in this season.", "items" : { "$ref" : "#/components/schemas/ProductTypeDetails" } } }, "description" : "Details on a single product type season." }, "ProductTypeQuantityVariation" : { "title" : "Product Type Quantity Variation", "required" : [ "product_type_quantity_variation_amount", "product_type_quantity_variation_min" ], "type" : "object", "properties" : { "product_type_quantity_variation_min" : { "title" : "Product Type Quantity Variation Min", "minimum" : 1, "type" : "integer", "description" : "If `product_quantity_pricing:true`; The minimum booking quantity of this type required for this pricing configuration. This value has `product_type_quantity_min` as an absolute minimum.", "example" : 1 }, "product_type_quantity_variation_max" : { "title" : "Product Type Quantity Variation Max", "minimum" : 1, "type" : "integer", "description" : "If `product_quantity_pricing:true`; The maximum booking quantity allowed for this pricing configuration. This value will never exceed `product_type_quantity_max`.", "example" : 5 }, "product_type_quantity_variation_amount" : { "title" : "Product Type Quantity Variation Amount", "type" : "string", "description" : "Quantity related price change applicable to the product type sales price.", "example" : "-2.50" } } }, "ProductTypeDailyVariationDetail" : { "title" : "Product Type Daily Variation Detail", "required" : [ "product_type_daily_variation_amount" ], "type" : "object", "properties" : { "product_type_daily_variation_amount" : { "title" : "Product Type Daily Variation Amount", "type" : "string", "example" : "-1.00" }, "product_type_daily_variation_day" : { "$ref" : "#/components/schemas/DayOfTheWeek" } }, "description" : "If `product_type_daily_variation_day` is empty, then the variation is applicable to the whole week. Otherwise each applicable individual day of the week will be returned. Days cannot be repeated within the same variation." }, "Fee" : { "title" : "Fee", "required" : [ "fee_amount", "fee_type" ], "type" : "object", "properties" : { "fee_type" : { "$ref" : "#/components/schemas/FeeType" }, "fee_amount" : { "title" : "Fee Amount", "type" : "string", "description" : "Fee amount.", "example" : "0.50" } }, "description" : "Fee details.", "readOnly" : true }, "FeeType" : { "title" : "Fee Type", "type" : "string", "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.", "readOnly" : true, "enum" : [ "SERVICE", "PARTNER", "DISTRIBUTOR", "AFFILIATE", "RESELLER", "MARKET_ADMIN" ] }, "RelationType" : { "title" : "Relation Type", "type" : "string", "description" : "Clustering in our system means creating a non-bookable main product, with sub-products linked underneath it. Optionally, these sub-products could then be clustered themselves as well.\nThere are multiple reason why you would like to create cluster products, below we highlight the most common ones.\nDo note that `product_relation_details_visible` defines whether additional details on these sub-products should be shown.\nOnly applicable if `product_cluster:true`.\n\n Relation Type:\n * `RELATED` - Similar products which could be shown. Other museums in the region. (Cross-product)\n * `UPGRADE` - This cluster consists of one or more products which can act as an upgrade. \n Our system supports discounted upgrades as well as in-destination upsells, even if the product has already been activated (pass with duration).\n \n For example:\n \n * A 24 hour ticket and a 48 hour ticket.\n * A standard and premium ticket.\n * `OPTION` - Several flavors of a product. (Inter-product)\n \n For example:\n * A bike without gears.\n * A bike with gears.\n * `SEATING` - (To be announced)\n * `DESTINATION` - (To be announced)\n * `OTHER` - Non-defined.\n", "enum" : [ "RELATED", "UPGRADE", "OPTION", "SEATING", "DESTINATION", "OTHER" ] }, "ProductTypePricing" : { "title" : "Product Type Pricing", "required" : [ "product_type_list_price", "product_type_resale_price", "product_type_sales_price" ], "type" : "object", "properties" : { "product_type_list_price" : { "title" : "Product Type List Price", "type" : "string", "description" : "Standard price before discount for the end customer of this product type set by the supplier.", "example" : "20.50" }, "product_type_discount" : { "title" : "Product Type Discount", "type" : "string", "description" : "Strike-through discount applicable to `product_type_list_price`.", "example" : "2.00" }, "product_type_discount_percentage" : { "title" : "Product Type Discount Percentage", "type" : "string", "description" : "Strike-through discount percentage. If blank then the Strike-through discount is not based on percentages.", "example" : "20.00" }, "product_type_sales_price" : { "title" : "Product Type Sales Price", "type" : "string", "description" : "Standard price after discount for the end-customer set by the supplier. (`product_type_list_price` - `product_type_discount` == `product_type_sales_price`).", "example" : "18.50" }, "product_type_resale_price" : { "title" : "Product Type Resale Price", "type" : "string", "description" : "Price for which a product type is sold to and purchased by indirect channels.", "example" : "16.40" }, "product_type_display_price" : { "title" : "Product Type Display Price", "type" : "boolean", "description" : "The display price is used to set an indicative price for this product configuration. Each individual season can have one or more display prices.", "example" : true } }, "description" : "Product Type specific pricing." }, "Flag" : { "title" : "Flag", "required" : [ "flag_id", "flag_name", "flag_value" ], "type" : "object", "properties" : { "flag_id" : { "title" : "Flag ID", "type" : "string", "description" : "Flag identifier.", "example" : "223425262" }, "flag_type" : { "title" : "Flag Type", "type" : "string", "description" : "Type of flag.", "enum" : [ "TAG", "FLAG", "PARTNER_LABEL", "MARKETING_LABEL", "FINANCIAL_LABEL", "PROMOTION_LABEL" ] }, "flag_name" : { "title" : "Flag Name", "type" : "string", "description" : "Flag name.", "example" : "stockCode" }, "flag_value" : { "title" : "Flag Value", "type" : "string", "description" : "Flag value.", "example" : "123BCa1" } }, "description" : "Flag details. This object will not be returned directly upon booking." }, "ProductTax" : { "title" : "Product Tax", "required" : [ "tax_amount", "tax_id" ], "type" : "object", "properties" : { "tax_id" : { "title" : "Tax ID", "type" : "string", "description" : "Unique identifier of this tax configuration.", "example" : "TAX_ID_123" }, "tax_amount" : { "title" : "Tax Amount", "type" : "string", "description" : "Amount of tax applied.", "example" : "0.65" } }, "description" : "Applied tax.", "readOnly" : true, "deprecated" : true }, "ProductTaxDetail" : { "title" : "Product Tax Detail", "required" : [ "tax_id", "tax_name", "tax_rate", "tax_type" ], "type" : "object", "properties" : { "tax_id" : { "title" : "Tax ID", "type" : "string", "description" : "Unique identifier of this tax configuration.", "example" : "TAX_ID_123" }, "tax_name" : { "title" : "Tax Name", "type" : "string", "description" : "Name of the tax.", "readOnly" : true, "example" : "VAT Regular 20%" }, "tax_type" : { "title" : "Tax Type", "type" : "string", "description" : "Tax abbreviation.", "readOnly" : true, "example" : "VAT" }, "tax_rate" : { "title" : "Tax Rate", "type" : "string", "description" : "Tax rate (percentage).", "readOnly" : true, "example" : "20.00" }, "tax_region" : { "title" : "Tax Region", "type" : "string", "description" : "Country or State of the related tax authority." } }, "description" : "Product Tax Detail.", "readOnly" : true }, "ProductBlockoutDate" : { "title" : "Product Blockout Date", "required" : [ "date" ], "type" : "object", "properties" : { "product_block_out_date" : { "title" : "Product Block Out Date", "type" : "string", "format" : "date" }, "product_block_out_start_time" : { "title" : "Product Block Out Start Time", "type" : "string", "description" : "Starting time of a event for a particular day.", "format" : "time", "example" : "09:00:00" }, "product_block_out_end_time" : { "title" : "Product Block Out End Time", "type" : "string", "description" : "End time of a event for a particular day.", "format" : "time", "example" : "17:00:00" }, "product_block_out_reason" : { "title" : "Product Block Out Reason", "type" : "string", "description" : "Reason for the product not to be available.", "example" : "Marathon" }, "product_block_out_custom_field" : { "title" : "Product Block Out Custom Field", "type" : "string", "description" : "Custom field which can be used for adding additional information to this event.", "example" : "Due to the a national holiday we are unable to operate on this day, you are welcome to join us another time." } }, "additionalProperties" : false }, "ProductSpecialDate" : { "title" : "Product Special Date", "required" : [ "date" ], "type" : "object", "properties" : { "product_special_date" : { "title" : "Product Special Data", "type" : "string", "format" : "date" }, "product_special_start_time" : { "title" : "Product Special Start Time", "type" : "string", "description" : "Starting time of a event for a particular day.", "format" : "time", "example" : "09:00:00" }, "product_special_end_time" : { "title" : "Product Special End Time", "type" : "string", "description" : "End time of a event for a particular day.", "format" : "time", "example" : "17:00:00" }, "product_special_reason" : { "title" : "Product Special Reason", "type" : "string", "description" : "Reason for the product not to be available.", "example" : "Marathon" }, "product_special_custom_field" : { "title" : "Product Special Custom Field", "type" : "string", "description" : "Custom field which can be used for adding additional information to this event.", "example" : "Due to the Marathon we are unable to operate on this day, you are welcome to join us next week" } }, "additionalProperties" : false }, "OpeningTimes" : { "title" : "Opening Times", "required" : [ "opening_time_details" ], "type" : "object", "properties" : { "opening_time_valid_from" : { "title" : "Opening Time Valid From", "type" : "string", "format" : "date" }, "opening_time_valid_till" : { "title" : "Opening Time Valid Till", "type" : "string", "format" : "date" }, "opening_time_details" : { "title" : "Opening Time Details", "type" : "array", "description" : "Opening Time Details, based on the days of the week. If unset, the product / venue can be deemed unavailable / closed.", "items" : { "$ref" : "#/components/schemas/OpeningTimeDetail" } } }, "additionalProperties" : false }, "OpeningTimeDetail" : { "title" : "Opening Time Detail", "required" : [ "opening_time_day" ], "type" : "object", "properties" : { "opening_time_day" : { "$ref" : "#/components/schemas/DayOfTheWeek" }, "opening_time_start" : { "title" : "Opening Time Start", "type" : "string", "description" : "Starting time of a venue for a particular day.", "format" : "time", "example" : "09:00:00" }, "opening_time_end" : { "title" : "Opening Time End", "type" : "string", "description" : "Closing time of a venue for a particular day.", "format" : "time", "example" : "17:00:00" } }, "additionalProperties" : false }, "DayOfTheWeek" : { "title" : "Day Of The Week", "type" : "string", "description" : "Days or period of a week.", "example" : "THURSDAY", "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ] }, "PickupPoint" : { "title" : "Pickup Point", "required" : [ "pickup_point_id", "pickup_point_name" ], "type" : "object", "properties" : { "pickup_point_id" : { "title" : "Pickup Point ID", "type" : "string", "description" : "Pickup point ID.", "readOnly" : true, "example" : "PICKUP_POINT_ID_123" }, "pickup_point_name" : { "title" : "Pickup Point Name", "type" : "string", "description" : "Pickup point name.", "readOnly" : true, "example" : "Walkingtour at the Wyndham Apollo Hotel" }, "pickup_point_time" : { "title" : "Pickup Point Time", "type" : "string", "description" : "Time of pickup.", "format" : "time", "readOnly" : true, "example" : "10:00" }, "pickup_point_description" : { "title" : "Pickup Point Description", "type" : "string", "description" : "Pickup point description.", "readOnly" : true, "example" : "Meet at the Wyndham Apollo hotel." }, "pickup_point_location" : { "title" : "Pickup Point Location", "type" : "string", "description" : "Reference to the location details.", "readOnly" : true, "example" : "LOCATION_ID_123" } }, "description" : "Information on a pickup point.", "readOnly" : true }, "AvailabilitiesListResponse" : { "title" : "Availabilities List Response", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelProperties" }, { "type" : "object", "properties" : { "data" : { "$ref" : "#/components/schemas/AvailabilitiesListResponseData" } } } ] }, "AvailabilitiesListResponseData" : { "title" : "Availabilities List Response Data", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelData" }, { "required" : [ "items", "total_items" ], "type" : "object", "properties" : { "total_items" : { "$ref" : "#/components/schemas/TotalItems" }, "items" : { "title" : "Availability Slots", "type" : "array", "description" : "List of all availability slots.", "items" : { "$ref" : "#/components/schemas/AvailabilityModel" } } } } ] }, "AvailabilityModel" : { "title" : "Availability Slot Model", "required" : [ "availability_active", "availability_created", "availability_from_date_time", "availability_id", "availability_modified" ], "type" : "object", "properties" : { "availability_id" : { "title" : "Availability Slot ID", "type" : "string", "description" : "The unique ID for this availability slot.", "readOnly" : true, "example" : "20191026090010006526" }, "availability_capacity_id" : { "title" : "Availability Slot Capacity ID", "type" : "string", "description" : "Availability group / capacity identifier.", "readOnly" : true, "example" : "43525235" }, "availability_capacity_shared_id" : { "title" : "Availability Slot Shared Capacity ID", "type" : "string", "description" : "Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.", "example" : "435252453" }, "availability_active" : { "title" : "Availability Slot Active", "type" : "boolean", "description" : "Whether this availability slot is active (open) or not (closed). This availability cannot be booked if `availability_active:false`.", "example" : true, "default" : true }, "availability_label" : { "title" : "Availability Slot Label", "type" : "string", "description" : "Optional label for this availability slot.", "example" : "Morning" }, "availability_product_id" : { "title" : "Availability Slot Product ID", "type" : "string", "description" : "The product linked to this availability slot.\n\n> In case you are requesting the availability for a main combi product (`product_combi: true`) or a cluster product (`product_cluster:true`) and `sub_products_depth: > 0` all sub-product availabilities will be returned as well. ", "example" : "3532" }, "availability_duration" : { "title" : "Availability Slot Duration", "minimum" : 1, "type" : "integer", "description" : "Duration of the timeslot in seconds", "example" : 3600 }, "availability_from_date_time" : { "title" : "Availability Slot From Date Time", "type" : "string", "description" : "The starting date and time of the activity availability slot.", "format" : "date-time" }, "availability_to_date_time" : { "title" : "Availability Slot To Date Time", "type" : "string", "description" : "The till date and time of the activity availability slot.", "format" : "date-time" }, "availability_spots" : { "$ref" : "#/components/schemas/AvailabilitySpots" }, "availability_pricing" : { "title" : "Availability Slot Pricing", "type" : "array", "description" : "Daily / Dynamic Pricing, only returned in case `product_daily_pricing:true` or `product_dynamic_pricing:true` for this product.\n\nPlease note that in case both are enabled, the combined difference will be returned.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/AvailabilityPrice" } }, "availability_notes" : { "title" : "Availability Notes", "type" : "array", "description" : "Availability notes.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/Note" } }, "availability_created" : { "title" : "Availability Slot Created", "type" : "string", "description" : "The date on which the availability slot has been created.", "format" : "date-time" }, "availability_modified" : { "title" : "Availability Slot Modified", "type" : "string", "description" : "The date on which this availability slot has been modified (Capacity and Configuration).", "format" : "date-time" } }, "additionalProperties" : false, "description" : "Information on a specific availability slot.\n> Only applicable if `product_availability:true`." }, "AvailabilitySpots" : { "title" : "Availability Spots", "required" : [ "availability_spots_id", "availability_spots_open" ], "type" : "object", "properties" : { "availability_spots_total" : { "title" : "Availability Spots Total", "minimum" : 0, "type" : "integer", "description" : "The total number of spots that the merchant has configured for this distributor (including those that are not available).", "example" : 100 }, "availability_spots_reserved" : { "title" : "Availability Spots Reserved", "minimum" : 0, "type" : "integer", "description" : "The number of spots currently reserved / blocked for this availability entry. These might open up in the near future (Active checkouts). This value is already deducted from the `availability_spots_open` parameter and can be safely ignored in capacity calculations.\n\nFormula: `availability_spots_total` - (`availability_spots_booked` + `availability_spots_reserved`) = `availability_spots_open`.", "example" : 15 }, "availability_spots_booked" : { "title" : "Availability Spots Booked", "minimum" : 0, "type" : "integer", "description" : "The number of spots currently booked for this availability entry. These might open up in the near future (Cancellations). This value is already deducted from the `availability_spots_open` parameter and can be safely ignored in capacity calculations.\n\nFormula: `availability_spots_total` - (`availability_spots_booked` + `availability_spots_reserved`) = `availability_spots_open`.", "example" : 10 }, "availability_spots_open" : { "title" : "Availability Spots Open", "minimum" : 0, "type" : "integer", "description" : "The number of spots currently available for this availability entry.", "example" : 75 }, "availability_spots_redeemed" : { "title" : "Availability Spots Redeemed", "minimum" : 0, "type" : "integer", "description" : "The number of spots that are redeemed. \n\n> Only visible to suppliers.", "example" : 10, "deprecated" : true }, "availability_spots_details" : { "title" : "Availability Spots Details", "type" : "array", "description" : "List of available spots.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/Spot" } } }, "description" : "Information over the spots that the merchant has set for this configuration.\n> Only applicable for managed capacity `product_capacity:true`.\n\n> In case of 3rd party aggregated data, not all fields will be available." }, "Spot" : { "title" : "Spot", "required" : [ "spot_state" ], "type" : "object", "properties" : { "spot_name" : { "title" : "Spot Name", "type" : "string", "description" : "Spot name.", "readOnly" : true, "example" : "Regular seat", "deprecated" : true }, "spot_section" : { "title" : "Spot Section", "type" : "string", "description" : "Name of the section. Only applicable if the product has sections.", "example" : "VIP Area" }, "spot_row" : { "title" : "Spot Row", "type" : "string", "description" : "The row the spot resides in.", "example" : "F" }, "spot_number" : { "title" : "Spot Number", "type" : "string", "description" : "The spot number.", "example" : "5" }, "spot_state" : { "title" : "Spot State", "type" : "string", "description" : "The state of the spot.", "readOnly" : true, "deprecated" : true, "enum" : [ "AVAILABLE", "BOOKED", "RESERVED", "DISABLED" ] } }, "description" : "Information on the selected spot. Only applicable if PrioSeating is being used (`product_availability_assigned:true`).\n" }, "AvailabilityPrice" : { "title" : "Availability Price", "required" : [ "availability_pricing_variation_amount" ], "type" : "object", "properties" : { "availability_pricing_variation_amount" : { "title" : "Availability Pricing Variation Amount", "type" : "string", "description" : "The dynamic variation amount.", "example" : "-3.00" }, "availability_pricing_variation_percentage" : { "title" : "Availability Pricing Variation Percentage", "type" : "string", "description" : "The dynamic variation percentage. If blank then the variation is not based on percentages.", "example" : "20.00" }, "availability_pricing_variation_description" : { "title" : "Availability Pricing Variation Description", "type" : "string", "description" : "Reason for the price variation.", "example" : "Peak hour" }, "availability_pricing_variation_type" : { "title" : "Availability Pricing Variation Type", "type" : "string", "description" : "Whether this availability pricing variation applies to the sales or resale price.", "example" : "SALES_PRICE", "deprecated" : true, "default" : "SALES_PRICE", "enum" : [ "SALES_PRICE", "RESALE_PRICE" ] }, "availability_pricing_variation_product_type_id" : { "title" : "Availability Pricing Variation Product Type ID", "type" : "string", "description" : "The applicable product type.", "example" : "PRODUCT_TYPE_ID_123", "deprecated" : true }, "availability_pricing_variation_product_type" : { "$ref" : "#/components/schemas/ProductType" } }, "description" : "Pricing for this specific availability entry." }, "CommonPaymentRequest" : { "title" : "Common Payment Request", "required" : [ "payment_object_type", "payment_service_provider" ], "type" : "object", "properties" : { "payment_object_type" : { "$ref" : "#/components/schemas/PaymentObjectType" }, "payment_service_provider" : { "$ref" : "#/components/schemas/PaymentServiceProvider" }, "payment_currency_code" : { "title" : "Payment Currency Code", "type" : "string", "description" : "Optional alternative currency code. According to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217). If not provided, this value will be set to the default currency.", "example" : "EUR" }, "payment_currency_amount" : { "title" : "Payment Currency Amount", "type" : "string", "description" : "Optional alternative currency amount. If not provided, this value will be set to the total order amount.", "example" : "10.25" }, "payment_contact" : { "$ref" : "#/components/schemas/PaymentContact" }, "payment_shopper_reference" : { "title" : "Payment Shopper Reference", "type" : "string", "description" : "Optional reference from the shopper / guest making the payment.", "example" : "3561645566565654", "deprecated" : true }, "payment_note" : { "title" : "Payment Note", "type" : "string", "description" : "(Deprecated) Payment note.", "example" : "Payment note", "deprecated" : true }, "payment_notes" : { "title" : "Payment Notes", "type" : "array", "description" : "Payment notes.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/Note" } } }, "description" : "Common payment request." }, "AdyenDropInPaymentRequest" : { "title" : "Adyen Drop-In Payment Request", "required" : [ "payment_method" ], "type" : "object", "description" : "Use the Adyen Drop-in solution to collect payments.", "example" : "{\n \"payment_service_provider\": \"ADYEN\",\n \"payment_method\": paymentComponentData.paymentMethod,\n \"return_url\":\"adyencheckout://your.package.name\"\n}\n", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentRequest" }, { "type" : "object", "properties" : { "payment_method" : { "title" : "Payment Method", "type" : "object", "description" : "The paymentComponentData.paymentMethod from Drop-in.", "writeOnly" : true }, "return_url" : { "title" : "Return URL", "type" : "string", "description" : "In case of a redirection, this is the URL to where your shopper should be redirected back to after they complete the payment.", "example" : "https://your-company.com/checkout?shopperOrder=12xy.." } } } ] }, "AdyenPaymentLinkRequest" : { "title" : "Adyen Payment Link Request", "type" : "object", "description" : "Use the Adyen Payment Link solution to collect payments.", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentRequest" } ] }, "AdyenPaymentLinkResponse" : { "title" : "Adyen Payment Link Response", "required" : [ "payment_expires_at", "payment_link", "payment_object_type" ], "type" : "object", "properties" : { "payment_object_type" : { "$ref" : "#/components/schemas/PaymentObjectType" }, "payment_link" : { "title" : "Payment Link", "type" : "string", "description" : "Hosted Payment Page Link.", "format" : "URI", "readOnly" : true, "example" : "https://checkoutshopper-test.adyen.com/checkoutshopper/payByLink.shtml?d=..." }, "payment_expires_at" : { "title" : "Payment Expiry", "type" : "string", "description" : "Date and time when the payment link expires. In case of pre-payment this value will be the `reservation_valid_until`.", "format" : "date-time", "readOnly" : true } }, "description" : "Adyen Payment Link Response." }, "AdyenDropInPaymentResponse" : { "title" : "Adyen Drop-In Payment Response", "required" : [ "payment_object_type" ], "type" : "object", "properties" : { "payment_object_type" : { "$ref" : "#/components/schemas/PaymentObjectType" }, "pspReference" : { "title" : "Payment Service Provider Reference", "type" : "string", "description" : "Payment service provider reference.", "readOnly" : true, "example" : "851596788674417J" }, "resultCode" : { "title" : "Result Code", "type" : "string", "description" : "Provides information about the result of the request.", "readOnly" : true, "example" : "Authorised" }, "merchantReference" : { "title" : "Merchant Reference", "type" : "string", "description" : "Merchant reference.", "readOnly" : true, "example" : "159678860952905" }, "paymentMethod" : { "title" : "Payment Method", "type" : "string", "description" : "Payment method.", "readOnly" : true, "example" : "ONLINE" }, "action" : { "title" : "Action", "type" : "object", "description" : "If you receive this object, this indicates that you need to perform an additional action again.", "readOnly" : true, "example" : "{\n \"data\": {\n \"MD\": \"OEVudmZVMUlkWjd0MDNwUWs2bmhSdz09...\",\n \"PaReq\": \"eNpVUttygjAQ/RXbDyAXBYRZ00HpTH3wUosPfe...\",\n \"TermUrl\": \"adyencheckout://your.package.name\"\n },\n \"method\": \"POST\",\n \"paymentData\": \"Ab02b4c0!BQABAgA4e3wGkhVah4CJL19qdegdmm9E...\",\n \"paymentMethodType\": \"scheme\",\n \"type\": \"redirect\",\n \"url\": \"https://test.adyen.com/hpp/3d/validate.shtml\"\n}\n" }, "refusalReason" : { "title" : "Refusal Reason", "type" : "string", "description" : "Indicating the cause of the error.", "readOnly" : true, "example" : "Not enough balance" } }, "description" : "Adyen Drop-In Payment Response", "readOnly" : true }, "AdyenTerminalAPIPaymentResponse" : { "title" : "Adyen Terminal API Payment Response", "required" : [ "payment_object_type", "payment_service_provider_reference" ], "type" : "object", "properties" : { "payment_object_type" : { "$ref" : "#/components/schemas/PaymentObjectType" }, "payment_service_provider_reference" : { "title" : "Payment Service Provider Reference", "type" : "string", "description" : "Unique value generated by the payments platform for the transaction.", "example" : "722b7d36-960d-4c34-8c91-3ffb23af31eb" } }, "description" : "Adyen Terminal API Payment Response.", "readOnly" : true, "deprecated" : true }, "NGeniusPaymentResponse" : { "title" : "N-Genius Payment Response", "required" : [ "payment_link", "payment_object_type", "payment_service_provider_reference" ], "type" : "object", "properties" : { "payment_object_type" : { "$ref" : "#/components/schemas/PaymentObjectType" }, "payment_link" : { "title" : "Payment Link", "type" : "string", "description" : "Hosted Payment Page Link.", "format" : "URI", "readOnly" : true, "example" : "https://paypage.sandbox.ngenius-payments.com/?code=cb00f950b9b3d3e" }, "payment_service_provider_reference" : { "title" : "Payment Service Provider Reference", "type" : "string", "example" : "722b7d36-960d-4c34-8c91-3ffb23af31eb" } }, "description" : "N-Genius Payment Response", "readOnly" : true, "example" : "{\n \"payment_link\": \"https://paypage.sandbox.ngenius-payments.com/?code=cb00f950b9b3d3e\",\n \"payment_service_provider_reference\": \"722b7d36-960d-4c34-8c91-3ffb23af31eb\"\n}\n" }, "MewsPaymentResponse" : { "title" : "Mews Payment Response", "required" : [ "payment_details", "payment_object_type" ], "type" : "object", "properties" : { "payment_object_type" : { "$ref" : "#/components/schemas/PaymentObjectType" }, "payment_details" : { "$ref" : "#/components/schemas/PaymentDetails" } }, "description" : "Mews payment response.", "readOnly" : true }, "ManualPaymentResponse" : { "title" : "Manual Payment Response", "required" : [ "payment_details", "payment_object_type" ], "type" : "object", "properties" : { "payment_object_type" : { "$ref" : "#/components/schemas/PaymentObjectType" }, "payment_details" : { "$ref" : "#/components/schemas/PaymentDetails" } }, "description" : "Manual payment response.", "readOnly" : true }, "MewsPaymentRequest" : { "title" : "Mews Payment Request", "required" : [ "customer_id" ], "type" : "object", "description" : "Use the Mews platform to collect payments.", "deprecated" : true, "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentRequest" }, { "type" : "object", "properties" : { "customer_id" : { "title" : "Customer ID", "type" : "string", "description" : "Unique identifier of the customer.", "example" : "794d2b77-0a9a-4190-9fa9-62ea9bf2a56e" } } } ] }, "ManualPaymentRequest" : { "title" : "Manual Payment Request", "required" : [ "payment_method" ], "type" : "object", "description" : "Manual payment; handled via an external payment service provider or physical payment method such as Cash and Voucher conversion.", "example" : "{\n \"payment_object_type\": \"MANUAL\", \n \"payment_method\": \"CASH\"\n}\n", "deprecated" : true, "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentRequest" }, { "type" : "object", "properties" : { "payment_merchant_account_name" : { "title" : "Payment Merchant Account Name", "type" : "string", "example" : "John Doe" }, "payment_merchant_reference" : { "title" : "Payment Merchant Reference", "type" : "string", "example" : "1478349849927_771663371" }, "payment_service_provider_reference" : { "title" : "Payment Service Provider Reference", "type" : "string", "example" : "4714783500596458" }, "payment_method" : { "$ref" : "#/components/schemas/PaymentMethod" }, "payment_type" : { "$ref" : "#/components/schemas/PaymentType" }, "payment_scheme" : { "$ref" : "#/components/schemas/PaymentScheme" } } } ] }, "NGeniusPaymentRequest" : { "title" : "N-Genius Payment Request", "required" : [ "return_url" ], "type" : "object", "description" : "Use the N-Genius platform to collect payments.", "deprecated" : true, "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentRequest" }, { "type" : "object", "properties" : { "return_url" : { "title" : "Return URL", "type" : "string", "description" : "In case of a redirection, this is the URL to where your shopper should be redirected back to after they complete the payment.", "example" : "https://your-company.com/webhooks/payment..." } } } ] }, "PaymentConfigResponse" : { "title" : "Payment Config Response", "type" : "object", "properties" : { "payment_methods" : { "title" : "Payment Methods", "type" : "string", "description" : "In case of `payment_service_provider:ADYEN` a list of available payment methods is returned in the response, including any required fields. If you want to know more about the properties returned in the response, see the [response parameters](https://docs.adyen.com/api-explorer/#/PaymentSetupAndVerificationService/paymentMethods__resParam_groups) in the Adyen API Explorer.", "readOnly" : true }, "payment_origin_key" : { "title" : "Payment Origin Key", "type" : "string", "description" : "In case of `payment_service_provider:ADYEN`, the required Origin-Key for Web Drop-In will be returned. More information can be found [here](https://docs.adyen.com/user-management/how-to-get-an-origin-key).", "readOnly" : true, "example" : "pub.v2.99..." }, "payment_origin_domain" : { "title" : "Payment Origin Domain", "type" : "string", "description" : "In case of `payment_service_provider:ADYEN`, the configured origin domain authorized for web payments.", "format" : "URI", "readOnly" : true, "example" : "https://www.your-company.com" } }, "description" : "Payment configuration for the selected payment service provider.", "readOnly" : true }, "MakePaymentRequest" : { "title" : "Make Payment Request", "type" : "object", "description" : "Create a payment.", "example" : "{\n \"payment_object_type\": \"MANUAL\", \n \"payment_method\": \"CASH\"\n}\n", "discriminator" : { "propertyName" : "payment_object_type", "mapping" : { "ADYEN_DROP_IN" : "#/components/schemas/AdyenDropInPaymentRequest", "ADYEN_LINK" : "#/components/schemas/AdyenPaymentLinkRequest", "ADYEN_TERMINAL" : "#/components/schemas/AdyenTerminalAPIPaymentRequest", "NGENIUS_HPP" : "#/components/schemas/NGeniusPaymentRequest", "MEWS_BILL" : "#/components/schemas/MewsPaymentRequest", "MANUAL" : "#/components/schemas/ManualPaymentRequest" } }, "oneOf" : [ { "$ref" : "#/components/schemas/AdyenDropInPaymentRequest" }, { "$ref" : "#/components/schemas/AdyenPaymentLinkRequest" }, { "$ref" : "#/components/schemas/AdyenTerminalAPIPaymentRequest" }, { "$ref" : "#/components/schemas/NGeniusPaymentRequest" }, { "$ref" : "#/components/schemas/MewsPaymentRequest" }, { "$ref" : "#/components/schemas/ManualPaymentRequest" } ] }, "AdyenTerminalAPIPaymentRequest" : { "title" : "Adyen Terminal API Payment Request", "required" : [ "payment_terminal_id" ], "type" : "object", "description" : "Use the Adyen Terminal API to collect a payment. See [Adyen Terminal API documentation]('https://docs.adyen.com/point-of-sale/terminal-api-fundamentals#cloud').", "deprecated" : true, "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentRequest" }, { "type" : "object", "properties" : { "payment_terminal_id" : { "title" : "Payment Terminal ID", "type" : "string", "description" : "Unique ID of the selected payment terminal.", "example" : "V400m-328689332", "deprecated" : true } }, "deprecated" : true } ] }, "MakePaymentResponse" : { "title" : "Make Payment Response", "type" : "object", "description" : "Make payment response.", "readOnly" : true, "discriminator" : { "propertyName" : "payment_object_type", "mapping" : { "ADYEN_DROP_IN" : "#/components/schemas/AdyenDropInPaymentResponse", "ADYEN_LINK" : "#/components/schemas/AdyenPaymentLinkResponse", "ADYEN_TERMINAL" : "#/components/schemas/AdyenTerminalAPIPaymentResponse", "NGENIUS_HPP" : "#/components/schemas/NGeniusPaymentResponse", "MEWS" : "#/components/schemas/MewsPaymentResponse", "MANUAL" : "#/components/schemas/ManualPaymentResponse" } }, "oneOf" : [ { "$ref" : "#/components/schemas/AdyenDropInPaymentResponse" }, { "$ref" : "#/components/schemas/AdyenPaymentLinkResponse" }, { "$ref" : "#/components/schemas/AdyenTerminalAPIPaymentResponse" }, { "$ref" : "#/components/schemas/NGeniusPaymentResponse" }, { "$ref" : "#/components/schemas/MewsPaymentResponse" }, { "$ref" : "#/components/schemas/ManualPaymentResponse" } ] }, "PaymentObjectType" : { "title" : "Payment Object Type", "type" : "string", "description" : "Used to aid in serialization, deserialization, and validation.\n\nMust be one of the following values:\n * `ADYEN_DROP_IN`\n * `ADYEN_LINK`\n * `ADYEN_TERMINAL`\n * `NGENIUS_HPP`\n * `MEWS_BILL`\n * `MANUAL`", "example" : "MANUAL", "deprecated" : true }, "PaymentStatusResponse" : { "title" : "Payment Status Response", "required" : [ "payment_status" ], "type" : "object", "properties" : { "payment_status" : { "$ref" : "#/components/schemas/PaymentStatus" } }, "description" : "Payment status response.", "readOnly" : true }, "AdyenSetPaymentDetailsRequest" : { "title" : "Adyen Set Payment Details Request", "required" : [ "data" ], "type" : "object", "properties" : { "data" : { "title" : "Additional Details", "type" : "string" } } }, "ReservationDetailResponse" : { "title" : "Reservation Detail Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/ReservationDetailData" } }, "description" : "Reservation detail Response." }, "ReservationDetailData" : { "title" : "Reservation Detail Data", "required" : [ "kind", "reservation" ], "type" : "object", "properties" : { "kind" : { "$ref" : "#/components/schemas/Kind" }, "reservation" : { "$ref" : "#/components/schemas/ReservationModel" } }, "description" : "Reservation detail data." }, "CreateReservationRequest" : { "title" : "Create Reservation Request", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/CreateReservationRequestData" } }, "description" : "Create reservation request." }, "CreateReservationRequestData" : { "title" : "Create Reservation Request Data", "required" : [ "kind", "reservation" ], "type" : "object", "properties" : { "kind" : { "$ref" : "#/components/schemas/Kind" }, "reservation" : { "$ref" : "#/components/schemas/ReservationModel" } }, "description" : "Create reservation request data." }, "GetVoucherResponseJSON" : { "title" : "Get Voucher Response JSON", "required" : [ "data", "url" ], "type" : "object", "properties" : { "data" : { "$ref" : "#/components/schemas/GetVoucherResponseJSONData" }, "url" : { "title" : "Download URL", "type" : "string", "format" : "URI", "example" : "https://report.prioticket.com/order/voucher/MTU5HzAwODQBMzA5NzI4" } }, "description" : "Receive the voucher(s) via a download link." }, "GetVoucherResponseJSONData" : { "title" : "Get Voucher Response JSON Data", "required" : [ "voucher_created", "voucher_order_reference", "voucher_url" ], "type" : "object", "properties" : { "voucher_order_reference" : { "title" : "Voucher Order Reference", "type" : "string", "description" : "Order reference of voucher(s).", "deprecated" : true }, "voucher_booking_reference" : { "title" : "Voucher Booking Reference", "type" : "string", "description" : "Booking reference of voucher(s).", "deprecated" : true }, "voucher_url" : { "title" : "Voucher URL", "type" : "string", "description" : "Voucher(s) download URL.", "format" : "URI", "deprecated" : true }, "voucher_created" : { "title" : "Voucher Created", "type" : "string", "description" : "Voucher(s) creation date-time.", "format" : "date-time", "deprecated" : true } }, "deprecated" : true }, "GetVoucherResponsePDF" : { "title" : "PDF Voucher", "type" : "string", "description" : "Receive an encoded PDF file directly.", "format" : "binary" }, "ReservationPaymentStatus" : { "title" : "Reservation Payment Status", "type" : "string", "description" : "Status of the payment when using a Prio Payment Service Provider. Not applicable to partners using invoice.\nStatus Types:\n\n * `PENDING` - Payment is still pending, please initiate a payment before calling the Confirm Reservation API.\n \n * `PAID` - Reservation has a linked payment, please confirm the reservation.\n \n * `NOT_REQUIRED` - Payment is not required.\n", "readOnly" : true, "deprecated" : true, "enum" : [ "NOT_REQUIRED", "PAID", "PENDING", "REQUIRED" ] }, "ReservationModel" : { "title" : "Reservation Model", "required" : [ "reservation_details", "reservation_distributor_id", "reservation_distributor_name", "reservation_external_reference", "reservation_pricing", "reservation_reference", "reservation_valid_until" ], "type" : "object", "properties" : { "reservation_distributor_id" : { "title" : "Reservation Distributor ID", "type" : "string", "description" : "Unique identifier for distributor assigned by Prio.", "example" : "501" }, "reservation_distributor_name" : { "title" : "Reservation Distributor Name", "type" : "string", "description" : "Name of the distributor.", "readOnly" : true, "example" : "Demo Distributor", "deprecated" : true }, "reservation_partner_id" : { "title" : "Reservation Partner ID", "type" : "string", "description" : "Unique identifier for partner assigned by Prio.", "example" : "4534543543", "deprecated" : true }, "reservation_partner_name" : { "title" : "Reservation Partner Name", "type" : "string", "description" : "Name of the partner.", "readOnly" : true, "deprecated" : true }, "reservation_reference" : { "title" : "Reservation Reference", "minLength" : 8, "type" : "string", "description" : "A unique identifier for the created reservation in the Prio.", "readOnly" : true, "example" : "ABC123456" }, "reservation_external_reference" : { "title" : "Reservation External Reference", "pattern" : "^[\\\\a-zA-Z-_\\/\\d]+$", "type" : "string", "description" : "A unique reservation identifier within the external system.", "example" : "EXTERNALREF123" }, "reservation_hold_token" : { "title" : "Reservation Hold Token", "type" : "string", "description" : "Unique hold token for this reservation (Internal use only). Only a single holdtoken is allowed per reservation.", "example" : "17378c14-ae6a-46a4-ada4-9c745a45e018" }, "reservation_valid_until" : { "title" : "Reservation Valid Until", "type" : "string", "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.", "format" : "date-time", "readOnly" : true }, "reservation_details" : { "title" : "Reservation Details", "type" : "array", "description" : "Contains one or more bookings.", "items" : { "$ref" : "#/components/schemas/ReservationDetail" } }, "reservation_promocodes" : { "title" : "Reservation Promocodes", "type" : "array", "description" : "The promocodes applied to this reservation.", "readOnly" : true, "items" : { "$ref" : "#/components/schemas/AppliedPromocode" } }, "reservation_pricing" : { "$ref" : "#/components/schemas/Pricing" }, "reservation_custom_fields" : { "title" : "Reservation Custom Fields", "type" : "array", "description" : "Freeform entry of any key-value pair.", "items" : { "$ref" : "#/components/schemas/CustomField" } } }, "description" : "Reservation model." }, "AppliedPromocode" : { "title" : "Applied Promocode", "required" : [ "promo_code", "promo_title" ], "type" : "object", "properties" : { "promo_title" : { "title" : "Promo Title.", "type" : "string", "description" : "Title of applied promocode.", "example" : "Christmas Sale 2019" }, "promo_description" : { "title" : "Promo Description", "type" : "string", "example" : "20 percent discount during the Christmas days." }, "promo_code" : { "title" : "Promocode", "type" : "string", "example" : "PROMOCODE_123" } }, "description" : "Details on the applied promocode." }, "Pricing" : { "title" : "Calculated Pricing", "required" : [ "price_subtotal", "price_total" ], "type" : "object", "properties" : { "price_subtotal" : { "title" : "Price Sub Total", "type" : "string", "description" : "Price for all `product_types`, including options, without promocodes and price variations.", "readOnly" : true, "example" : "20.00" }, "price_variations" : { "title" : "Price Variations", "type" : "array", "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).", "example" : [ { "variation_label" : "Peak Hour", "variation_amount" : "2.50", "variation_type" : "PRODUCT_DYNAMIC" } ], "items" : { "$ref" : "#/components/schemas/PriceVariations" } }, "price_promocodes" : { "title" : "Price Promocodes", "type" : "array", "description" : "Applied promocodes pricing.", "readOnly" : true, "items" : { "$ref" : "#/components/schemas/PromoCodePricing" } }, "price_taxes" : { "title" : "Price Taxes", "type" : "array", "description" : "Tax breakdown.", "readOnly" : true, "deprecated" : true, "items" : { "$ref" : "#/components/schemas/ProductTax" } }, "price_fees" : { "title" : "Price Fees", "type" : "array", "description" : "List of applicable fees. Some fee types are only visible for certain users.", "readOnly" : true, "deprecated" : true, "items" : { "$ref" : "#/components/schemas/Fee" } }, "price_total" : { "title" : "Price Total", "type" : "string", "description" : "The new price including all discounts above.", "readOnly" : true, "example" : "12.00" } }, "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." }, "PromoCodePricing" : { "title" : "Promocode Pricing", "required" : [ "promo_amount", "promo_code" ], "type" : "object", "properties" : { "promo_code" : { "title" : "Promocode", "type" : "string", "description" : "The promocode.", "example" : "PROMOCODE_123" }, "promo_amount" : { "title" : "Promo Amount", "type" : "string", "description" : "The promo amount.", "example" : "-5.50" } }, "description" : "Promocode pricing.", "readOnly" : true }, "PriceVariations" : { "title" : "Price Variation", "required" : [ "variation_amount", "variation_type" ], "type" : "object", "properties" : { "variation_label" : { "title" : "Variation Label", "type" : "string", "description" : "Label / Explanation for this variation.", "example" : "Peak Hour" }, "variation_amount" : { "title" : "Variation Amount", "type" : "string", "description" : "The amount which should be added / substracted to the `price_subtotal`. This can be a negative value (discount) or positive value (surcharge).", "example" : "-5.00" }, "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.\n\nVariation Type:\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. Included in `price_subtotal` by default.\n * `PRODUCT_DISCOUNT` - In case a `product_type_discount` is set, the price variation will be shown here. Included in `price_subtotal` by default.\n * `PRODUCT_COMBI_DISCOUNT` - (UPCOMING)\n * `PARTNER_DISCOUNT` - In case of partner sales, the guest discount or partner discount / commission can be set by the cashier.\n * `CART_DISCOUNT` - Cart discount set by the cashier.\n * `CUSTOM_DISCOUNT` - (UPCOMING)\n * `OTHER` - Any variation not matching the types above.\n", "enum" : [ "PRODUCT_DYNAMIC", "PRODUCT_DAILY", "PRODUCT_QUANTITY", "PRODUCT_DISCOUNT", "PRODUCT_COMBI_DISCOUNT", "PARTNER_DISCOUNT", "CART_DISCOUNT", "CUSTOM_DISCOUNT", "OTHER" ] } }, "description" : "Variation which is applicable on the list price.", "readOnly" : true }, "ReservationDetail" : { "title" : "Reservation Detail", "description" : "Details on a booking inside a reservation.", "allOf" : [ { "$ref" : "#/components/schemas/ProductBookingModel" }, { "required" : [ "booking_reservation_reference", "booking_reservation_valid_until", "product_type_details" ], "type" : "object", "properties" : { "product_type_details" : { "title" : "Product Type Booking Details", "type" : "array", "description" : "A list specifying the booking quantity per product type.", "items" : { "$ref" : "#/components/schemas/RegularBookingItem" } }, "booking_reservation_reference" : { "title" : "Booking Reservation Reference", "minLength" : 8, "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.", "example" : "BOOKING_RESERVATION_REFERENCE_123" }, "booking_reservation_valid_until" : { "title" : "Booking Reservation Valid Until", "type" : "string", "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.", "format" : "date-time", "readOnly" : true } } } ] }, "PickupPointType" : { "title" : "Pickup Point Type", "type" : "string", "description" : "Type of pickup point.\n\nPickup Point Type:\n * `FIXED` - Fixed, pre-defined pickup point.\n \n * `CUSTOM` - Custom pickup point.", "deprecated" : true, "enum" : [ "FIXED", "CUSTOM" ] }, "CapacityType" : { "title" : "Capacity Type", "type" : "string", "description" : "Type of capacity.\n* `OWN` - This product has his own capacity.\n \n* `SHARED` - This product does not have it's own capacity, instead it uses shared capacity from other products.\n* `COMBINED` - This product has his own capacity combined with the capacity of other products.\n* `NOT_SET` - This product does not have capacity.\n", "enum" : [ "OWN", "SHARED", "COMBINED", "NOT_SET" ] }, "ProductBookingModel" : { "title" : "Product Booking Model", "required" : [ "booking_external_reference", "booking_pricing", "booking_status", "product_admission_type", "product_currency_code", "product_id", "product_supplier_id", "product_supplier_name", "product_title", "product_type_details" ], "type" : "object", "properties" : { "booking_external_reference" : { "title" : "Booking External Reference", "type" : "string", "description" : "A unique booking identifier within the external system.", "example" : "BOOKING_EXTERNALREF123" }, "booking_status" : { "$ref" : "#/components/schemas/BookingStatusTypes" }, "booking_travel_date" : { "title" : "Booking Travel Date", "type" : "string", "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.", "format" : "date-time" }, "booking_valid_until" : { "title" : "Booking Valid Until", "type" : "string", "description" : "The booking will be valid until this time, after that the booking will be expired if not redeemed.\nMainly applicable to open products.", "format" : "date-time", "readOnly" : true }, "booking_language" : { "title" : "Booking Language", "type" : "string", "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.", "example" : "en", "default" : "en" }, "booking_pricing" : { "$ref" : "#/components/schemas/Pricing" }, "booking_notes" : { "title" : "Booking Notes", "type" : "array", "items" : { "$ref" : "#/components/schemas/Note" } }, "product_id" : { "title" : "Product ID", "type" : "string", "description" : "Unique identifier for the product assigned by Prio.", "example" : "PRODUCT_ID_123" }, "product_relation_id" : { "title" : "Product Relation ID", "type" : "string", "description" : "If this product is booked as part of a cluster or purchased as an addon the related main product id should be defined.\n\nPurchasing an addon requires a booking record for the linked main product. If that is not found within the same order, an error will be returned.\n\nWhen part of a cluster, only the sub-product is required and therefore there is no need to include the main cluster product as a seperate booking in the same order.\n\nIf you do not sent this parameter, it will be considered as an individual sale.", "example" : "MAIN_PRODUCT_ID_123" }, "product_pickup_point_id" : { "title" : "Product Pickup Point ID", "type" : "string", "description" : "Mandatory if `product_pickup_point:MANDATORY` in product details.", "example" : "PICKUP_POINT_ID_123" }, "product_pickup_point" : { "$ref" : "#/components/schemas/PickupPoint" }, "product_availability_id" : { "title" : "Product Availability ID", "type" : "string", "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`.", "example" : "20191026090010006526" }, "product_availability_from_date_time" : { "title" : "Product Availability From Date Time", "type" : "string", "description" : "The starting date and time of the activity availability.", "format" : "date-time", "readOnly" : true }, "product_availability_to_date_time" : { "title" : "Product Availability To Date Time", "type" : "string", "description" : "The till date and time of the activity availability.", "format" : "date-time", "readOnly" : true }, "product_availability_capacity_id" : { "title" : "Availability Slot Capacity ID", "type" : "string", "description" : "Availability group / capacity identifier.", "readOnly" : true, "example" : "43525235" }, "product_availability_capacity_shared_id" : { "title" : "Availability Slot Shared Capacity ID", "type" : "string", "description" : "Shared availability / capacity identifier. Only applicable if `capacity_type:SHARED / COMBINED`.", "readOnly" : true, "example" : "435252453" }, "product_title" : { "title" : "Product Title", "type" : "string", "description" : "The title of product.", "readOnly" : true, "example" : "Test Product" }, "product_supplier_id" : { "title" : "Product Supplier ID", "type" : "string", "description" : "Unique identifier for supplier.", "readOnly" : true, "example" : "145" }, "product_supplier_name" : { "title" : "Product Supplier Name", "type" : "string", "description" : "Name of the supplier which offers the product(s).", "readOnly" : true, "example" : "Test Museum" }, "product_cancellation_allowed" : { "title" : "Product Cancellation Allowed", "type" : "boolean", "description" : "Whether it is allowed to cancel this product. \n\nNote that even if a product can be cancelled, cancellation fees might still apply.\nPlease check `product_cancellation_policies` for more details.", "example" : true, "deprecated" : true, "default" : true }, "product_admission_type" : { "$ref" : "#/components/schemas/ProductAdmissionType" }, "product_currency_code" : { "title" : "Product Currency Code", "type" : "string", "description" : "Product Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).", "readOnly" : true, "example" : "USD" }, "product_options" : { "title" : "Product Booking Options", "type" : "array", "description" : "The product options booked (including individual options from related combi products). \n", "items" : { "$ref" : "#/components/schemas/BookingExtraOptions" } }, "product_combi_details" : { "title" : "Product Combi Details", "type" : "array", "description" : "In case the booked product is the main combi-product (`product_combi:true`), 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.", "items" : { "$ref" : "#/components/schemas/ProductCombiDetail" } } }, "additionalProperties" : false }, "OrderModel" : { "title" : "Order Model", "required" : [ "order_bookings", "order_channel", "order_contact", "order_created", "order_distributor_id", "order_distributor_name", "order_external_reference", "order_language", "order_modified", "order_platform_id", "order_platform_name", "order_pricing", "order_redacted", "order_reference", "order_reseller_id", "order_reseller_name", "order_status", "order_version" ], "type" : "object", "properties" : { "order_platform_id" : { "title" : "Order Platform ID.", "type" : "string", "description" : "Unique identifier of the platform.", "readOnly" : true, "example" : "1", "deprecated" : true }, "order_platform_name" : { "title" : "Order Platform Name", "type" : "string", "description" : "Name of the platform.", "readOnly" : true, "example" : "Platform Name", "deprecated" : true }, "order_reseller_id" : { "title" : "Order Reseller ID.", "type" : "string", "description" : "Unique identifier of the reseller.", "readOnly" : true, "example" : "1300" }, "order_reseller_name" : { "title" : "Order Reseller Name", "type" : "string", "description" : "Name of the reseller.", "readOnly" : true, "example" : "Demo reseller" }, "order_distributor_id" : { "title" : "Order Distributor ID", "type" : "string", "description" : "Unique identifier for distributor assigned by Prio.", "example" : "501" }, "order_distributor_name" : { "title" : "Order Distributor Name", "type" : "string", "description" : "Name of the distributor.", "readOnly" : true, "example" : "Demo Distributor" }, "order_partner_id" : { "title" : "Order Partner ID", "type" : "string", "description" : "Unique identifier for partner assigned by Prio.", "example" : "4534543543" }, "order_partner_name" : { "title" : "Order Partner Name", "type" : "string", "description" : "Name of the partner.", "readOnly" : true, "example" : "Partner Name", "deprecated" : true }, "order_reference" : { "title" : "Order Reference", "minLength" : 8, "type" : "string", "description" : "A unique identifier for the created order in the Prio.", "readOnly" : true, "example" : "ORDRREF123456" }, "order_external_reference" : { "title" : "Order External Reference", "type" : "string", "description" : "A unique order identifier within the external system.", "example" : "EXTERNALREF123" }, "order_external_partner_reference" : { "title" : "Order External Partner Reference", "type" : "string", "description" : "(Deprecated) A unique partner identifier within the external system.", "example" : "EXTERNALPARTNERREF123", "deprecated" : true }, "order_status" : { "$ref" : "#/components/schemas/OrderStatusTypes" }, "order_settlement_type" : { "$ref" : "#/components/schemas/SettlementType" }, "order_channel" : { "$ref" : "#/components/schemas/OrderChannel" }, "order_language" : { "title" : "Language", "type" : "string", "description" : "Language to use for communication, e.g pre-arrival emails. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.", "example" : "en" }, "order_currency" : { "title" : "Order Currency", "type" : "string", "description" : "Order currency. According to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).", "readOnly" : true, "example" : "EUR", "deprecated" : true }, "order_version" : { "title" : "Order Version", "type" : "integer", "description" : "Order version number.", "readOnly" : true, "example" : 1 }, "order_redacted" : { "title" : "Order Redacted", "type" : "boolean", "description" : "Whether this order has redacted or de-identified sensitive data such as personally identifiable information (PII).", "example" : false, "deprecated" : true, "default" : false }, "order_promocodes" : { "title" : "Order Promocodes", "type" : "array", "description" : "The promocodes applied to this order. Only shown in case one or more promocodes have been applied in the reservation. Not applicable to Direct Booking.", "readOnly" : true, "items" : { "$ref" : "#/components/schemas/AppliedPromocode" } }, "order_pricing" : { "$ref" : "#/components/schemas/Pricing" }, "order_payment_details" : { "$ref" : "#/components/schemas/PaymentDetails" }, "order_payments" : { "title" : "Order Payments", "type" : "array", "description" : "Details on the payments linked to this order. \n\nAn order can have multiple payment records in case of installments, split payments, refunds and additional charges.\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 order.\n\n*Note: The `order_payments` parameter replaces the deprecated `order_payment_details`.*", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/PaymentDetails" } }, "order_contact" : { "$ref" : "#/components/schemas/ContactDetails" }, "order_contacts" : { "title" : "Order Contacts", "type" : "array", "description" : "Contacts linked to this order.\n\n*Note: The `order_contacts` parameter replaces the deprecated `order_contact`.*", "items" : { "$ref" : "#/components/schemas/ContactDetails" } }, "order_options" : { "$ref" : "#/components/schemas/OrderOptions" }, "order_notes" : { "title" : "Order Notes", "type" : "array", "description" : "Order notes.", "items" : { "$ref" : "#/components/schemas/Note" } }, "order_flags" : { "title" : "Order Flags", "type" : "array", "description" : "Order flags.", "items" : { "$ref" : "#/components/schemas/Flag" } }, "order_custom_fields" : { "title" : "Order Custom Fields", "type" : "array", "description" : "Freeform entry of any key-value pair.", "items" : { "$ref" : "#/components/schemas/CustomField" } }, "order_created" : { "title" : "Order Created", "type" : "string", "description" : "Date and time of order creation.", "format" : "date-time", "readOnly" : true }, "order_modified" : { "title" : "Order Modified", "type" : "string", "description" : "Date and time of order update.", "format" : "date-time", "readOnly" : true }, "order_confirmed" : { "title" : "Order Confirmed", "type" : "string", "description" : "Date and time of order confirmation.", "format" : "date-time", "readOnly" : true }, "order_invoiced" : { "title" : "Order Invoiced", "type" : "string", "description" : "Date and time of order invoice.", "format" : "date-time", "readOnly" : true, "deprecated" : true }, "order_cancellation_date_time" : { "title" : "Order Cancellation Date Time", "type" : "string", "description" : "Date and time of order cancellation.", "format" : "date-time", "readOnly" : true }, "order_created_name" : { "title" : "Order Created Name", "type" : "string", "description" : "Cashier name / User name who created the order.", "deprecated" : true }, "order_created_email" : { "title" : "Order Created Email", "type" : "string", "description" : "Cashier email / User email who created the order.", "deprecated" : true } } }, "Note" : { "title" : "Note", "required" : [ "note_creator", "note_date", "note_type", "note_value" ], "type" : "object", "properties" : { "note_value" : { "title" : "Note Value", "type" : "string", "example" : "Wheelchair assistance required." }, "note_type" : { "title" : "Note Type", "type" : "string", "description" : "* `GUEST` - Note visible to the guest.\n* `PARTNER` - Note visible to the partner.\n* `SUPPLIER` - Note visible to the supplier.\n* `RESELLER` - Note visible to the reseller / supplier admin.\n* `DISTRIBUTOR` - Note visible to the distributor.\n* `INTERNAL` - Note visible to the account of the user.\n", "example" : "GUEST", "deprecated" : true, "enum" : [ "GUEST", "PARTNER", "SUPPLIER", "RESELLER", "DISTRIBUTOR", "INTERNAL" ] }, "note_date" : { "title" : "Note Date", "type" : "string", "description" : "Creation / Modification date of the note.", "format" : "date-time", "readOnly" : true }, "note_creator" : { "title" : "Note Creator", "type" : "string", "description" : "User who created the note.", "readOnly" : true, "example" : "Andrew (Supervisor)" } }, "description" : "Details on the note." }, "ContactClassification" : { "title" : "Contact Classification", "type" : "string", "description" : "Contact classification.", "enum" : [ "IMPORTANT", "VERY_IMPORTANT", "PROBLEMATIC", "DISABLEDPERSON", "TOPMANAGEMENT", "STAFF", "LOYALTYPROGRAM", "MEDIA", "FRIENDORFAMILY", "RETURNING", "PERSONAL", "BUSINESS" ] }, "BookingItemConfirmed" : { "title" : "Confirmed Booking Item Detail", "type" : "object", "description" : "Details on the confirmed booked product type.", "readOnly" : true, "allOf" : [ { "$ref" : "#/components/schemas/BookingItem" }, { "required" : [ "product_type_code", "product_type_redemption_status" ], "type" : "object", "properties" : { "product_type_code" : { "title" : "Product Type Code", "type" : "string", "description" : "The product code allocated by Prio to redeem products.", "readOnly" : true, "example" : "1539762088951995" }, "product_type_transaction_id" : { "title" : "Product Type Transaction ID", "type" : "string", "description" : "Unique identifier of this transaction.", "readOnly" : true, "example" : "159118380521834001", "deprecated" : true }, "product_type_transaction_ids" : { "title" : "Product Type Transaction IDs", "type" : "array", "description" : "Transaction IDs of this product type. (V3.2 only). Multiple IDs will be returned in case of `product_group_code:true`.", "readOnly" : true, "deprecated" : true, "items" : { "title" : "Transaction ID", "type" : "string", "example" : "159118380521834001" } }, "product_type_redemption_status" : { "$ref" : "#/components/schemas/RedemptionStatus" } } } ] }, "OrderChannel" : { "title" : "Order Channel", "type" : "string", "description" : "The channel that the action is performed on.\nOrder channel:\n* `SPOS` - Sales Portal.\n* `PPOS` - Purchase Portal.\n \n* `DPOS` - (Legacy) Desktop Point-of-Sale.\n* `WPOS` - Web Widgets.\n* `MPOS` - Mobile Point-of-Sale\n* `CPOS` - Cashier Point-of-Sale\n* `SSPOS` - Self-Service Terminal.\n* `PARTNER` - API Partner channel.\n* `OTHER` - Other channel not mentioned above.\n", "readOnly" : true, "example" : "PARTNER", "default" : "PARTNER", "enum" : [ "SPOS", "PPOS", "DPOS", "WPOS", "MPOS", "CPOS", "SSPOS", "PARTNER", "OTHER" ] }, "MessagingMethod" : { "title" : "Messaging Method", "type" : "string", "description" : "Method of contacting the customer. Only use this functionality if the customer gave explicit consent to use the certain channels. Abusing this functionality might result in banning your account.\n\nMessaging Methods:\n* `EMAIL` - Email.\n \n* `WHATSAPP` - (UPCOMING)\n* `MESSENGER` - Not yet available.\n* `TELEGRAM` - Not yet available.\n \n* `WECHAT` - Not yet available.\n* `PHONE` - (UPCOMING)\n \n* `SMS` - Guests will receive a short message with a booking confirmation including a web link to more details. - (UPCOMING)", "example" : "SMS", "deprecated" : true, "default" : "EMAIL", "enum" : [ "EMAIL", "WHATSAPP", "MESSENGER", "TELEGRAM", "WECHAT", "PHONE", "SMS" ] }, "MessagingType" : { "title" : "Messaging Type", "type" : "string", "enum" : [ "ORDER", "RECEIPT", "OFFERS", "MARKETING", "SUPPORT", "NOTIFICATION" ] }, "MessagingConfig" : { "title" : "Messaging Config", "type" : "object", "properties" : { "messaging_method" : { "$ref" : "#/components/schemas/MessagingMethod" }, "messaging_type" : { "$ref" : "#/components/schemas/MessagingType" }, "messaging_chatbot" : { "title" : "Messaging Chatbot", "type" : "boolean", "default" : false } } }, "ContactDetails" : { "title" : "Contact Details", "required" : [ "contact_created", "contact_email", "contact_modified" ], "type" : "object", "properties" : { "contact_uid" : { "title" : "Contact User Identifier", "type" : "string", "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.", "format" : "uuid" }, "contact_external_uid" : { "title" : "Contact External User Identifier", "type" : "string", "description" : "Unique external identifier of the contact.", "example" : "MTAwOV90ZXN0MTAwOUB0ZXN0LmNvbQ==" }, "contact_version" : { "title" : "Contact Version", "type" : "string", "description" : "Contact version; every time the contact details are updated, a new version is registered.", "readOnly" : true, "example" : "1", "default" : "1" }, "contact_number" : { "title" : "Contact Number", "type" : "string", "description" : "Number of the contact.", "example" : "4573246" }, "contact_type" : { "$ref" : "#/components/schemas/ContactType" }, "contact_title" : { "title" : "Contact Title", "type" : "string", "description" : "Title prefix of the contact (Mister / Miss / Misses etc).", "example" : "Mr." }, "contact_name" : { "title" : "Contact Name", "type" : "string", "description" : "(Deprecated) Name of the contact. Use `contact_name_last` instead.", "example" : "John Doe", "deprecated" : true }, "contact_name_first" : { "title" : "Contact First Name", "type" : "string", "description" : "First name of the contact.", "example" : "John" }, "contact_name_last" : { "title" : "Contact Last Name", "type" : "string", "description" : "Last name of the contact. If you only have the fullname, we recommend sending it as `contact_name_last` and leaving the `contact_name_first` blank.", "example" : "Doe" }, "contact_email" : { "title" : "Contact Email", "type" : "string", "description" : "Email address of the contact.", "format" : "email", "example" : "Johndoe@example.com" }, "contact_phone" : { "title" : "Contact Phone", "type" : "string", "description" : "Must be a valid E.164 spec compliant phone number.", "format" : "phone", "example" : "+14155552671" }, "contact_mobile" : { "title" : "Contact Phone", "type" : "string", "description" : "Must be a valid E.164 spec compliant phone number.", "format" : "phone", "example" : "+14155552671" }, "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)).", "example" : "NL" }, "contact_nationality" : { "title" : "Contact Nationality", "type" : "string", "description" : "Country code of the contact ([ISO-3166-1](https://en.wikipedia.org/wiki/ISO_3166-1)).", "example" : "Dutch" }, "contact_flight_number" : { "title" : "Contact Flight Number", "type" : "string", "description" : "Contact Flight Number.", "example" : "KL 445" }, "contact_loyalty_number" : { "title" : "Contact Loyalty Number", "type" : "string", "description" : "Contact Loyalty Number.", "example" : "46564564564547476" }, "contact_birth_place" : { "title" : "Contact Birth Place", "type" : "string", "description" : "Place of birth.", "example" : "Amsterdam" }, "contact_birth_date" : { "title" : "Contact Birth Date", "type" : "string", "description" : "Date of birth.", "format" : "date" }, "contact_passport" : { "title" : "Contact Passport", "type" : "string", "description" : "Passport details of the contact.", "example" : "JXXXXXXX" }, "contact_gender" : { "title" : "Contact Gender", "type" : "string", "description" : "Gender of the contact.", "enum" : [ "MALE", "FEMALE", "OTHER" ] }, "contact_age" : { "title" : "Contact Age", "maximum" : 150, "minimum" : 0, "type" : "integer", "description" : "Age of the contact.", "example" : 19 }, "contact_room_number" : { "title" : "Contact Room Number", "type" : "string", "description" : "Contact room number.", "example" : "523" }, "contact_website" : { "title" : "Contact Website", "type" : "string", "description" : "Contact website.", "format" : "URI", "example" : "example.com" }, "contact_classification" : { "$ref" : "#/components/schemas/ContactClassification" }, "contact_address" : { "$ref" : "#/components/schemas/AddressModel" }, "contact_notes" : { "title" : "Contact Notes", "type" : "array", "description" : "Contact notes.", "items" : { "$ref" : "#/components/schemas/Note" } }, "contact_custom_fields" : { "title" : "Contact Custom Fields", "type" : "array", "description" : "Freeform entry of any key-value pair.", "items" : { "$ref" : "#/components/schemas/CustomField" } }, "contact_created" : { "title" : "Contact Created", "type" : "string", "description" : "Creation date and time of the contact.", "format" : "date-time", "readOnly" : true }, "contact_modified" : { "title" : "Contact Modified", "type" : "string", "description" : "Last update date and time of the contact.", "format" : "date-time", "readOnly" : true } }, "description" : "Information on the contact." }, "VoucherType" : { "title" : "Voucher Type", "type" : "string", "description" : "Whether this voucher can be shown on your mobile or should be printed.", "example" : "DIGITAL", "deprecated" : true, "enum" : [ "DIGITAL", "PHYSICAL" ] }, "ContactType" : { "title" : "Contact Type", "type" : "string", "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\nContact Type:\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* `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* `AGENT` - Agent details.\n* `EMERGENCY` - Emergency contact (Guest, host, family member etc.).\n* `GUIDE` - 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* `OTHER` - Other type of contact, not mentioned above.", "example" : "GUEST", "default" : "CONTACT", "enum" : [ "BOOKER", "CONTACT", "GUEST", "PARTNER", "STAFF", "CASHIER", "PAYMENT", "AGENT", "EMERGENCY", "GUIDE", "SUPPLIER", "VENUE", "HOST", "COMPANY", "DELIVERY", "OTHER" ] }, "OrderOptions" : { "title" : "Order Options", "type" : "object", "properties" : { "email_options" : { "$ref" : "#/components/schemas/EmailOptionsModel" }, "price_on_voucher" : { "title" : "Price on Voucher", "type" : "boolean", "description" : "Show price on voucher.", "example" : true, "deprecated" : true, "default" : true } }, "description" : "Additional order options such as email delivery." }, "EmailOptionsModel" : { "title" : "Email options", "required" : [ "email_recipients" ], "type" : "object", "properties" : { "email_types" : { "$ref" : "#/components/schemas/EmailTypes" }, "email_recipients" : { "title" : "Email Recipients", "minItems" : 1, "type" : "array", "description" : "Email recipients which should be notified.", "items" : { "$ref" : "#/components/schemas/EmailRecipient" } } }, "description" : "Email settings." }, "EmailTypes" : { "title" : "Email Types", "type" : "object", "properties" : { "send_tickets" : { "title" : "Send Tickets", "type" : "boolean", "description" : "Send all vouchers to the specified email recipients.", "default" : false }, "send_receipt" : { "title" : "Send Receipt", "type" : "boolean", "description" : "Send the receipt to the specified email recipients.", "default" : false }, "send_marketing" : { "title" : "Send Marketing", "type" : "boolean", "deprecated" : true, "default" : false }, "send_offers" : { "title" : "Send Offers", "type" : "boolean", "deprecated" : true, "default" : false }, "send_notification" : { "title" : "Send Notifications", "type" : "boolean", "deprecated" : true, "default" : false } } }, "ProductStatus" : { "title" : "Product Status", "type" : "string", "description" : "Status of the product.", "deprecated" : true, "enum" : [ "DRAFT", "REVIEW", "PUBLISHED", "ARCHIVED", "INACTIVE", "UNAVAILABLE" ] }, "EmailRecipient" : { "title" : "Email Recipient", "required" : [ "recipients_address" ], "type" : "object", "properties" : { "recipients_name" : { "title" : "Reciptient Name", "type" : "string", "example" : "John Doe" }, "recipients_address" : { "title" : "Reciptient Address", "type" : "string", "format" : "email", "example" : "example@prioticket.com" } }, "description" : "Single email recipient." }, "AddressModel" : { "title" : "Address Model", "type" : "object", "properties" : { "name" : { "title" : "Address Name", "type" : "string", "description" : "Name of this address / Addressee.", "example" : "Start of the walking Tour / My house / Office / John Doe" }, "city" : { "title" : "Address City", "type" : "string", "description" : "Town / City / Village.", "example" : "Amsterdam" }, "postal_code" : { "title" : "Address Postal Code", "type" : "string", "example" : "1011 PN" }, "country" : { "title" : "Address Country", "type" : "string", "example" : "The Netherlands" }, "country_code" : { "title" : "Address Country Code", "type" : "string", "description" : "Returns country code of the product ( [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2))", "example" : "NL" }, "latitude" : { "title" : "Address Latitude", "type" : "string", "example" : "52.3785323" }, "longitude" : { "title" : "Address Longitude", "type" : "string", "example" : "4.893942" }, "notes" : { "title" : "Address Note", "type" : "string", "example" : "It's on the fourth floor" } }, "description" : "Address details." }, "ContactListResponse" : { "title" : "Contact List Response", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelProperties" }, { "type" : "object", "properties" : { "data" : { "$ref" : "#/components/schemas/ContactListResponseData" } } } ] }, "ContactDetailResponse" : { "title" : "Contact Detail Response", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelProperties" }, { "type" : "object", "properties" : { "data" : { "$ref" : "#/components/schemas/ContactDetailResponseData" } } } ] }, "ContactDetailResponseData" : { "title" : "Contact Detail Response Data", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelData" }, { "required" : [ "items" ], "type" : "object", "properties" : { "items" : { "title" : "Contact Revisions", "type" : "array", "description" : "A list of all contact revisions. \n\nIf `include_versions:false`, only a single record will be returned.", "items" : { "$ref" : "#/components/schemas/ContactDetails" } } } } ] }, "ContactListResponseData" : { "title" : "Contact List Response Data", "allOf" : [ { "$ref" : "#/components/schemas/ReservedPaginationData" }, { "required" : [ "items" ], "type" : "object", "properties" : { "items" : { "title" : "Contacts", "type" : "array", "description" : "A list of all contacts.", "items" : { "$ref" : "#/components/schemas/ContactDetails" } } } } ] }, "OrderListResponse" : { "title" : "Order List Response", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelProperties" }, { "type" : "object", "properties" : { "data" : { "$ref" : "#/components/schemas/OrderListResponseData" } } } ] }, "OrderListResponseData" : { "title" : "Order List Response Data", "allOf" : [ { "$ref" : "#/components/schemas/ReservedPaginationData" }, { "required" : [ "items" ], "type" : "object", "properties" : { "items" : { "title" : "Orders", "type" : "array", "description" : "A list of all orders.", "items" : { "$ref" : "#/components/schemas/ConfirmedOrderModel" } } } } ] }, "ConfirmedOrderModel" : { "title" : "Confirmed Order", "description" : "Details on the confirmed order.", "allOf" : [ { "$ref" : "#/components/schemas/OrderModel" }, { "type" : "object", "properties" : { "order_bookings" : { "title" : "Order Bookings", "type" : "array", "description" : "Details on the bookings made in this order.", "items" : { "$ref" : "#/components/schemas/ConfirmedBooking" } } } } ] }, "CreateOrderModel" : { "title" : "Create Order Model", "type" : "object", "writeOnly" : true, "allOf" : [ { "$ref" : "#/components/schemas/OrderModel" }, { "type" : "object", "properties" : { "order_bookings" : { "title" : "Order Bookings", "type" : "array", "description" : "Details of the bookings to be made.", "items" : { "$ref" : "#/components/schemas/BookingOption" } } } } ] }, "CommonBookingOption" : { "title" : "Common Booking Option", "required" : [ "booking_option_type" ], "type" : "object", "properties" : { "booking_option_type" : { "title" : "Booking Option Type", "type" : "string", "description" : "Used to aid in serialization, deserialization, and validation.\n\nMust be one of the following values:\n * `CONFIRM_RESERVATION`\n * `DIRECT_BOOKING`", "example" : "CONFIRM_RESERVATION" } } }, "BookingOption" : { "title" : "Booking Option", "type" : "object", "description" : "Depending on the availability and the reservation status one of several different booking options should be used.\n\nThis API is called to book / confirm product(s) and get a barcode / QR-code in response.\n\nThere are 2 different booking options:\n\n**Direct Booking** \n\n + Direct booking of a product without availability (`product_availability:false`) and no traveldate (`product_traveldate_required:false`) (non-dated, no capacity ticket)\n \n + Direct booking of a product without availability (`product_availability:false`) and required traveldate (`product_traveldate_required:true`) (dated, unlimited capacity ticket)\n \n + Direct booking of a product with availability (`product_availability:true`) and with or without capacity (`product_capacity:true/false`).\n \n**Confirm Reservation / Checkout Cart**\n\n + Booking of product(s) with a `reservation_reference` (Confirmation of an active reservation (Confirm and Order)). This can be any product with any configuration.\n\n> Please note that multiple types of **Direct Booking** can be made at once, but only a single **Confirm Reservation** at a time is supported. Would you wish to confirm multiple reserved products at once, please put multiple bookings in a single reservation (Cart). You can not mix different booking options (**Direct Booking** && **Confirm Reservation**) in the same request.\n Therefore only multiple entries of the **Direct Booking** option is being supported.\n \n> In case multiple products are to be booked, if any of them are unavailable, the whole order will be declined.", "discriminator" : { "propertyName" : "booking_option_type", "mapping" : { "CONFIRM_RESERVATION" : "#/components/schemas/ConfirmReservation", "DIRECT_BOOKING" : "#/components/schemas/DirectBookingOption" } }, "oneOf" : [ { "$ref" : "#/components/schemas/ConfirmReservation" }, { "$ref" : "#/components/schemas/DirectBookingOption" } ] }, "DirectBookingOption" : { "title" : "Direct Booking Option", "type" : "object", "writeOnly" : true, "allOf" : [ { "$ref" : "#/components/schemas/CommonBookingOption" }, { "$ref" : "#/components/schemas/DirectBookingOptionModel" } ] }, "DirectBookingOptionModel" : { "title" : "Direct Booking Option Model", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/ProductBookingModel" }, { "required" : [ "booking_option_type", "product_type_details" ], "type" : "object", "properties" : { "product_type_details" : { "title" : "Product Type Booking Details", "type" : "array", "description" : "A list specifying the booking quantity per product type.", "items" : { "$ref" : "#/components/schemas/RegularBookingItem" } }, "booking_option_type" : { "title" : "Booking Option Type", "type" : "string", "description" : "Used to aid in serialization, deserialization, and validation.\nMust be one of the following values:\n * `CONFIRM_RESERVATION`\n * `DIRECT_BOOKING`\n", "example" : "DIRECT_BOOKING", "default" : "DIRECT_BOOKING" } } } ] }, "ProductServiceType" : { "title" : "Product Service Type", "type" : "string", "description" : "Type of service this product offers.", "readOnly" : true, "example" : "ATTRACTION", "deprecated" : true, "enum" : [ "ATTRACTION", "EVENT", "SEATING", "RIDE", "DINING", "DELIVERY", "MOBILITY", "ITINERARY", "MERCHANDISE", "FLIGHT", "HOTEL", "TOURS", "UNSPECIFIED" ] }, "BookingOptionType" : { "title" : "Booking Option Type", "type" : "string", "description" : "Used to aid in serialization, deserialization, and validation.", "enum" : [ "DIRECT_BOOKING", "CONFIRM_RESERVATION" ] }, "CreateOrderRequest" : { "title" : "Create Order Request", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/CreateOrderRequestData" } }, "description" : "Create order request model." }, "CreateOrderRequestData" : { "title" : "Create Order Request Data", "required" : [ "kind", "order" ], "type" : "object", "properties" : { "kind" : { "$ref" : "#/components/schemas/Kind" }, "order" : { "$ref" : "#/components/schemas/CreateOrderModel" } }, "description" : "Create order request data model." }, "BookingItem" : { "title" : "Booking Item", "required" : [ "product_type", "product_type_count", "product_type_id", "product_type_pax" ], "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.", "example" : "PRODUCT_TYPE_ID_123" }, "product_type_label" : { "title" : "Product Type Label", "type" : "string", "description" : "(Translatable) The product type label.", "readOnly" : true, "example" : "Adult" }, "product_type_age_from" : { "title" : "Product Type Age From", "multipleOf" : 1, "minimum" : 0, "type" : "integer", "description" : "The starting age for age group.", "readOnly" : true, "example" : 18 }, "product_type_age_to" : { "title" : "Product Type Age To", "multipleOf" : 1, "minimum" : 0, "type" : "integer", "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", "readOnly" : true, "example" : 65 }, "product_type_count" : { "title" : "Product Type Count", "multipleOf" : 1, "maximum" : 100, "minimum" : 1, "type" : "integer", "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", "example" : 1 }, "product_type_pax" : { "title" : "Product Type Pax", "minimum" : 0, "type" : "integer", "description" : "Number of persons to be counted in the reporting for the selected product type quantity.", "readOnly" : true, "example" : 1 }, "product_type_capacity" : { "title" : "Product Type Capacity", "minimum" : 0, "type" : "integer", "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", "readOnly" : true, "example" : 1, "deprecated" : true }, "product_type_spots" : { "title" : "Product Type Spots", "minItems" : 1, "type" : "array", "items" : { "$ref" : "#/components/schemas/Spot" } } }, "description" : "Reference to the specific type / configuration of the product." }, "RegularBookingItem" : { "title" : "Regular Booking Item", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/BookingItem" }, { "required" : [ "product_type_pricing" ], "type" : "object", "properties" : { "product_type_pricing" : { "$ref" : "#/components/schemas/Pricing" } } } ] }, "BookingExtraOptions" : { "title" : "Booking Extra Options", "required" : [ "option_id" ], "type" : "object", "properties" : { "option_id" : { "title" : "Option ID", "type" : "string", "example" : "1118" }, "option_value_text" : { "title" : "Option Value Text", "type" : "string", "deprecated" : true }, "option_values" : { "title" : "Option Values", "type" : "array", "items" : { "$ref" : "#/components/schemas/BookingExtraOptionDetails" } } }, "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", "deprecated" : true }, "BookingExtraOptionDetails" : { "title" : "Booking Extra Option Details", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/ExtraOptionValue" }, { "required" : [ "value_count" ], "type" : "object", "properties" : { "value_count" : { "title" : "Value Count", "maximum" : 100, "minimum" : 0, "type" : "integer", "example" : 2 } } } ] }, "BookingStatusTypes" : { "title" : "Booking Status Types", "type" : "string", "description" : "Status of the booking.", "readOnly" : true, "example" : "BOOKING_RESERVED", "enum" : [ "BOOKING_RESERVED", "BOOKING_RESERVATION_CANCELLED", "BOOKING_RESERVATION_EXPIRED", "BOOKING_CONFIRMED", "BOOKING_UPDATED", "BOOKING_CANCELLED", "BOOKING_PENDING_SUPPLIER", "BOOKING_PENDING_GUEST", "BOOKING_PENDING_DISTRIBUTOR" ] }, "OrderStatusTypes" : { "title" : "Order Status Types", "type" : "string", "description" : "(Deprecated) Status of the order.\n\nOrder statuses:\n * `ORDER_CONFIRMED` - Order confirmed.\n * `ORDER_CANCELLED` - Order cancelled.\n * `ORDER_PENDING` - Order is pending, awaiting action, voucher codes will not be provided directly, instead a webhook call will be initiated once the status changes.", "readOnly" : true, "example" : "ORDER_CONFIRMED", "deprecated" : true, "enum" : [ "ORDER_CONFIRMED", "ORDER_UPDATED", "ORDER_CANCELLED", "ORDER_REVIEW", "ORDER_PENDING" ] }, "OrderDetailResponse" : { "title" : "Order Detail Response", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/OrderDetailResponseData" } } }, "OrderDetailResponseData" : { "title" : "Order Detail Response Data", "required" : [ "kind", "order" ], "type" : "object", "properties" : { "kind" : { "$ref" : "#/components/schemas/Kind" }, "order" : { "$ref" : "#/components/schemas/ConfirmedOrderModel" } }, "description" : "Order detail response data model." }, "UpdateOrderRequest" : { "title" : "Update Order Request", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/UpdateOrderRequestData" } }, "description" : "Request for updating / amending an existing order." }, "UpdateOrderRequestData" : { "title" : "Update Order Request Data", "required" : [ "kind", "order" ], "type" : "object", "properties" : { "kind" : { "$ref" : "#/components/schemas/Kind" }, "order" : { "$ref" : "#/components/schemas/UpdateOrderModel" } }, "description" : "Update order request data model." }, "UpdateContactRequest" : { "title" : "Update Contact Request", "required" : [ "api_version", "data" ], "type" : "object", "properties" : { "api_version" : { "$ref" : "#/components/schemas/ApiVersion" }, "data" : { "$ref" : "#/components/schemas/UpdateContactRequestData" } }, "description" : "Request for updating / amending an existing contact." }, "UpdateContactRequestData" : { "title" : "Update Contact Request Data", "required" : [ "contact", "kind" ], "type" : "object", "properties" : { "kind" : { "$ref" : "#/components/schemas/Kind" }, "order" : { "$ref" : "#/components/schemas/ContactDetails" } }, "description" : "Update contact request data model." }, "UpdateOrderResponse" : { "title" : "Update Order Response", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelProperties" }, { "required" : [ "data" ], "type" : "object", "properties" : { "data" : { "$ref" : "#/components/schemas/UpdateOrderResponseData" } } } ] }, "UpdateOrderResponseData" : { "title" : "Update Order Response Data", "allOf" : [ { "$ref" : "#/components/schemas/TopLevelData" }, { "required" : [ "order" ], "type" : "object", "properties" : { "order" : { "$ref" : "#/components/schemas/UpdateOrderModel" } } } ] }, "UpdateOrderModel" : { "title" : "Update Order Model", "required" : [ "order_contact", "order_language" ], "type" : "object", "properties" : { "order_external_reference" : { "title" : "Order External Reference", "type" : "string", "description" : "A unique order identifier within the external system.", "example" : "EXTERNALREF123" }, "order_language" : { "title" : "Language", "type" : "string", "description" : "Language to use for communication, e.g pre-arrival emails. Language is defined in [ISO-639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.", "example" : "en" }, "order_contact" : { "$ref" : "#/components/schemas/ContactDetails" }, "order_contacts" : { "title" : "Order Contacts", "type" : "array", "description" : "Contacts linked to this order.", "items" : { "$ref" : "#/components/schemas/ContactDetails" } }, "order_notes" : { "title" : "Order Notes", "type" : "array", "items" : { "$ref" : "#/components/schemas/Note" } } }, "description" : "Only details included in this model can be updated. All other details such as booking count cannot be amended, instead a new order should be made." }, "PromocodeModel" : { "title" : "Promocode Model", "required" : [ "promo_code", "promo_end_date", "promo_id", "promo_max_usage", "promo_valid" ], "type" : "object", "properties" : { "promo_valid" : { "title" : "Promo Valid", "type" : "boolean", "description" : "If promocode valid for requested reservation.", "example" : true }, "promo_code" : { "title" : "Promo Code", "type" : "string", "description" : "Promocode.", "example" : "promocodeapi" }, "promo_id" : { "title" : "Promo ID", "type" : "string", "description" : "Unique identifier for promocode.", "example" : "509" }, "promo_title" : { "title" : "Promo Title", "type" : "string", "description" : "Title of applied promocode.", "example" : "Promocode Title" }, "promo_start_date" : { "title" : "Promo Start Date", "type" : "string", "description" : "Start Date of promocode.", "format" : "date-time" }, "promo_end_date" : { "title" : "Promo End Date", "type" : "string", "description" : "End Date of promocode.", "format" : "date-time" }, "promo_product_ids" : { "title" : "Promo Product IDs", "type" : "array", "description" : "Product id's for which promocode available.", "items" : { "type" : "string" } }, "promo_discount_amount" : { "title" : "Promo Discount Amount", "type" : "string", "description" : "Promocode Discount amount.", "example" : "5.00" }, "promo_discount_amount_per_tps_id" : { "title" : "Promo Discount Amount Per TPS ID", "type" : "string", "description" : "Promocode Discount amount per ticket type.", "example" : "2:00" }, "promo_used_count" : { "title" : "Promo Used Count", "minimum" : 0, "type" : "integer", "description" : "Count of used promocode.", "readOnly" : true, "example" : 5 }, "promo_exclude_child" : { "title" : "Promo Exclude Child", "type" : "boolean", "description" : "Whether promocode applies on child ticket type.", "example" : false }, "promo_minimal_cart_amount" : { "title" : "Promo Minimal Cart Amount", "type" : "string", "description" : "Cart balance required to get this promocode applied.", "example" : "5.00" }, "promo_distributor_id" : { "title" : "Promo Distributor ID", "type" : "string", "description" : "A unique identifier for distributor.", "example" : "501" }, "promo_discount_type" : { "title" : "Promo Discount Type", "type" : "string", "description" : "Promocode Discount type.", "example" : "5:00" }, "promo_unlimited" : { "title" : "Promo Unlimited", "type" : "boolean", "description" : "Unlimited promocode.", "example" : false }, "promo_max_usage" : { "title" : "Promo Max Usage", "minimum" : 0, "type" : "integer", "description" : "Number of maximum usage for promocode.", "example" : 5 }, "promo_blocked" : { "title" : "Promo Blocked", "type" : "string", "description" : "Count of blocked promocode.", "example" : "1" } }, "description" : "Promocode model.", "deprecated" : true }, "BadRequestTypes" : { "title" : "Bad Request Types", "type" : "string", "description" : "Error types:\n * `INVALID_REQUEST` - The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed. \n\n * `INVALID_DISTRIBUTOR` - The specified distributor does not exist or is not linked to the account.\n\n * `INVALID_LOCATION` - The specified location does not exist or is not linked to the product or account.\n\n * `INVALID_COUNTRY`\n\n * `INVALID_CATEGORY` - The specified category does not exist or is not linked to the account.\n\n * `INVALID_PRODUCT_ID` - The specified product is not in a valid state, does not exist or is not linked to the account.\n \n * `INVALID_PRODUCT_TYPE` - The specified product type does not exist or is not available.\n \n * `INVALID_PRODUCT_CLUSTER` - This is the Main Cluster product and cannot be booked. Select a sub-product instead.\n\n * `INVALID_PRODUCT_CONTENT_LANGUAGE`- - The specified product content language does not exist or is not available.\n\n * `INVALID_RESERVATION_REFERENCE` - The specified reservation does not exist or is not in a valid state.\n \n * `INVALID_RESERVATION_EXPIRED` - The reservation has expired.\n \n * `INVALID_RESERVATION_CANCELLED` - The reservation has been cancelled.\n\n * `INVALID_AVAILABILITY_ID` - This availability entry does not exist or is not linked to this product.\n \n * `INVALID_ORDER_REFERENCE` - The specified order does not exist or is not in a valid state.\n\n * `INVALID_PROMOCODE` - The specified promocode does not exist.\n\n * `INVALID_AVAILABILITY` - The request cannot be fulfilled because there is insufficient availability or the `product_availability_id` parameter has not been set.\n\n * `INVALID_DATE`\n \n * `INVALID_DATE_RANGE` - The requested date range exceeds the maximum allowed.\n\n * `INVALID_BOOKING` - The specified booking does not exist or is not in a valid state.\n \n * `INVALID_BOOKING_CANCELLED` - The specified booking has been cancelled.\n \n * `INVALID_BOOKING_REFERENCE` - The specified booking does not exist or is not in a valid state.\n \n * `INVALID_BOOKING_QUANTITY` - The specified booking is invalid as it does not meet the quantity requirements.\n \n * `INVALID_BOOKING_COMBI_MISSING` - The specified booking is invalid as a combi-product is selected but not all required sub-products are booked.\n \n * `INVALID_PICKUP_POINT` - The specified location does not exist or is not linked to the product.\n \n * `INVALID_LANGUAGE` - The specified language does not exist or is not in a valid state.\n \n * `INVALID_OPTION` - The specified option does not exist or is not in a valid state.\n \n * `INVALID_OPTION_QUANTITY` - The option quanity is insufficient or exceeds the allowed quantity.\n", "example" : "INVALID_REQUEST", "enum" : [ "INVALID_REQUEST", "INVALID_DISTRIBUTOR", "INVALID_LOCATION", "INVALID_COUNTRY", "INVALID_CATEGORY", "INVALID_PRODUCT_ID", "INVALID_PRODUCT_TYPE", "INVALID_PRODUCT_CLUSTER", "INVALID_PRODUCT_CONTENT_LANGUAGES", "INVALID_RESERVATION_REFERENCE", "INVALID_RESERVATION_EXPIRED", "INVALID_RESERVATION_CANCELLED", "INVALID_THIRDPARTY_RESERVATION", "INVALID_AVAILABILITY", "INVALID_AVAILABILITY_ID", "INVALID_BOOKING", "INVALID_BOOKING_CANCELLED", "INVALID_BOOKING_CONTACT_UID", "INVALID_BOOKING_REFERENCE", "INVALID_BOOKING_RESERVATION_REFERENCE", "INVALID_BOOKING_QUANTITY", "INVALID_BOOKING_COMBI_MISSING", "INVALID_ORDER_REFERENCE", "INVALID_PROMOCODE", "INVALID_DATE", "INVALID_DATE_RANGE", "INVALID_PICKUP_POINT", "INVALID_LANGUAGE", "INVALID_OPTION", "INVALID_OPTION_QUANTITY", "INVALID_TRAVEL_DATE" ] }, "ConfirmedBooking" : { "title" : "Confirmed Booking", "description" : "Details on a single confirmed booking which is part of an order.", "allOf" : [ { "$ref" : "#/components/schemas/ProductBookingModel" }, { "required" : [ "booking_code_type", "booking_reference", "product_code_settings" ], "type" : "object", "properties" : { "product_code" : { "title" : "Product Code", "type" : "string", "description" : "The product code. More details can be found on `product_code_settings`", "readOnly" : true, "example" : "1539762088951995" }, "product_code_settings" : { "$ref" : "#/components/schemas/ProductCodeSettings" }, "product_type_details" : { "title" : "Confirmed Booking Product Type Details", "type" : "array", "description" : "A list of details on the confirmed booked product types.", "items" : { "$ref" : "#/components/schemas/ConfirmedBookingDetail" } }, "product_combi_details" : { "title" : "Confirmed Combi Bookings", "type" : "array", "description" : "A list of the confirmed combi-products.", "readOnly" : true, "items" : { "$ref" : "#/components/schemas/ConfirmedCombiBooking" } }, "product_cancellation_policies" : { "title" : "Product Cancellation Policies", "type" : "array", "description" : "Sometimes a product has a cancellation fee. In that case the order amount might not be refunded in full. If no cancellation policies are set and `product_cancellation_allowed:true` then you can always cancel products until they are redeemed.", "readOnly" : true, "deprecated" : true, "items" : { "$ref" : "#/components/schemas/CancellationPolicy" } }, "booking_reference" : { "title" : "Booking Reference", "minLength" : 8, "type" : "string", "description" : "Unique identifier for booking assigned by Prio.", "readOnly" : true, "example" : "BOOKING_REFERENCE_123" }, "booking_supplier_reference" : { "title" : "Booking Supplier Reference", "type" : "string", "description" : "Unique identifier for booking assigned by supplier system. Only applicable if `product_third_party:true`.", "readOnly" : true, "example" : "BOOKING_SUPPLIER_REFERENCE_123" }, "booking_group_code" : { "title" : "Booking Group Code", "type" : "string", "description" : "Group product code. (This is send when the product supports a group code (`product_group_code:true`)).", "readOnly" : true, "example" : "1539762088951995", "deprecated" : true }, "booking_code_type" : { "$ref" : "#/components/schemas/ProductCodeType" } } } ] }, "ConfirmedBookingDetail" : { "title" : "Confirmed Booking Detail", "description" : "Details on the confirmed booked product type.", "allOf" : [ { "$ref" : "#/components/schemas/BookingItemConfirmed" }, { "required" : [ "product_type_pricing" ], "type" : "object", "properties" : { "product_type_pricing" : { "$ref" : "#/components/schemas/Pricing" } } } ] }, "ConfirmedCombiBooking" : { "title" : "Confirmed Combi Booking", "type" : "object", "description" : "Details on the confirmed combi-product.", "allOf" : [ { "$ref" : "#/components/schemas/ProductCombiDetail" }, { "required" : [ "product_code", "product_code_settings", "product_type_details" ], "type" : "object", "properties" : { "booking_code_type" : { "$ref" : "#/components/schemas/ProductCodeType" }, "booking_group_code" : { "title" : "Booking Group Code", "type" : "string", "description" : "Group product code. (This is send when the product supports a group code (`product_group_code:true`)).", "readOnly" : true, "example" : "1539762088951995", "deprecated" : true }, "product_code" : { "title" : "Product Code", "type" : "string", "description" : "The product code. More details can be found on `product_code_settings`.", "readOnly" : true, "example" : "1539762088951995" }, "product_code_settings" : { "$ref" : "#/components/schemas/ProductCodeSettings" }, "product_type_details" : { "title" : "Confirmed Combi Booking Details", "type" : "array", "description" : "A list of the confirmed booked combi-product types.", "readOnly" : true, "items" : { "$ref" : "#/components/schemas/BookingItemConfirmed" } }, "booking_supplier_reference" : { "title" : "Booking Supplier Reference", "type" : "string", "description" : "Unique identifier for booking assigned by supplier system. Only applicable if `product_third_party:true`.", "readOnly" : true, "example" : "BOOKING_SUPPLIER_REFERENCE_123" } } } ] }, "TotalItems" : { "title" : "Total Items", "minimum" : 0, "type" : "integer", "description" : "The total number of items available in this set. For example, if a user has 100 blog posts, the response may only contain 10 items, but the `total_items` would be 100.", "example" : 10 }, "ExtraOptionValue" : { "title" : "Extra Option Value", "required" : [ "value_id" ], "type" : "object", "properties" : { "value_id" : { "title" : "Value ID", "type" : "string", "example" : "4921" }, "value_name" : { "title" : "Value Name", "type" : "string", "description" : "(Translatable) Value name.", "readOnly" : true, "example" : "Wine" }, "value_price" : { "title" : "Value Price", "type" : "string", "description" : "The price of this value. In case `option_price_type:PRODUCT_TYPE` then this field will be undefined on `product_options` level.", "readOnly" : true, "example" : "8.00" }, "value_price_tax_id" : { "title" : "Value Price Tax ID", "type" : "string", "description" : "Tax ID for this product option value. Tax information can be retrieved from the Tax API.", "example" : "TAX_ID_123", "deprecated" : true }, "value_price_tax_amount" : { "title" : "Value Price Tax Amount", "type" : "string", "description" : "Amount of tax applied for this product option value. Tax information can be retrieved from the Tax API.", "readOnly" : true, "example" : "0.65", "deprecated" : true }, "value_product_type_id" : { "title" : "Value Product Type ID", "type" : "string", "description" : "Applicable Product Type ID (`option_price_type:PRODUCT_TYPE`).", "readOnly" : true, "example" : "ADULT_123" }, "value_icon" : { "title" : "Value Icon", "type" : "string", "format" : "uri", "readOnly" : true, "example" : "https://content.prioticket.com/products/145/img_1445586351.jpg", "deprecated" : true } } }, "ExtraOptionValueDetails" : { "title" : "Extra Option Value Detail", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/ExtraOptionValue" }, { "type" : "object", "properties" : { "value_quantity_type" : { "title" : "Value Quantity Type", "type" : "string", "description" : "Whether the quantity limitations apply on the booking or is based on the `product_type_count`.", "deprecated" : true, "enum" : [ "BOOKING", "PIECES" ] }, "value_quantity_min" : { "title" : "Value Quantity Min", "minimum" : 1, "type" : "integer", "description" : "Minimum quantity required for this value.", "readOnly" : true, "example" : 1 }, "value_quantity_max" : { "title" : "Value Quantity Max", "minimum" : 1, "type" : "integer", "description" : "Maximum quantity allowed for this value, can never exceed `option_quantity_max'.", "readOnly" : true, "example" : 5 } } } ] }, "SettlementType" : { "title" : "Settlement Type", "type" : "string", "description" : "Settlement method for the guest payment. \n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).\n\nSettlement Types:\n * `DIRECT` (string) - Payment is settled directly using the Make Payment APIs or a supported Direct Payment method. \n \n Prior to confirming the order, the payment details must be set using the Make Payment APIs, otherwise you are unable to proceed.\n * `VENUE` (string) - Payment is settled at the venue or host. Only applicable for direct sales.\n * `EXTERNAL` (string) - Payment is settled outside the API environment. Applicable to most B2B resellers that handle guest payment using their own payment service provider (Indirect sales).\n * `INVOICE` (string) - Payment is settled by a partner (B2B) after issuing an invoice.", "example" : "EXTERNAL", "default" : "EXTERNAL", "enum" : [ "DIRECT", "VENUE", "EXTERNAL", "INVOICE" ] }, "VoucherReleaseType" : { "title" : "Voucher Release Type", "type" : "string", "description" : "Requirement on when the voucher code will be released.\n> Any additional requirement besides `ORDER_CONFIRMATION` will indicate that you might not receive the voucher codes directly upon \"Create Booking\".\n\nVoucher Release Types:\n * `ORDER_CONFIRMATION` (string) - The order must be confirmed before the vouchers are released.\n \n This is the most common scenario and in case no other requirements are set the voucher codes can be expected directly upon booking confirmation.\n * `PAYMENT_CONFIRMATION` (string) - The order must be paid before the vouchers are released.\n \n In case payment is done prior to confirming the booking, the voucher codes can be expected directly upon booking confirmation.\n \n This requirement could be applicable on:\n \n * `SettlementType:INVOICE`, Upfront payment by invoice.\n \n * `SettlementType:VENUE`, Payment is made at venue (`VENUE_ALLOCATION` will likely be returned as well).\n \n * `SettlementType:DIRECT`, Payment (-Authorization) is made directly at booking. Note that this indicator is redundant as voucher codes can still be expected directly upon booking confirmation.\n \n > Only applicable to Guest Payment. Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).\n * `SUPPLIER_ALLOCATION` (string) - The vouchers must be (manually) allocated by the supplier before the vouchers are released. Vouchers are not returned directly upon booking confirmation.\n \n This value will only be returned in case manual supplier allocation is required or if the third-party sub-system is unable to directly allocate the vouchers.\n \n Additional work is required to receive the vouchers after the supplier has allocated the vouchers.\n In most cases the order status will remain `PENDING`.\n * `DATE_ALLOCATION` (string) - The vouchers will be provided at a set date. The date is provided as `product_code_release_date`.\n * `VENUE_ALLOCATION` (string) - The vouchers will be provided at the venue.\n * `MANUAL_ALLOCATION` (string) - The vouchers will be provided manually, outside of the API environment.\n * `NO_ALLOCATION` (string) - The vouchers are not provided nor generated, entry is managed by the venue itself. For example on booking name.", "example" : "ORDER_CONFIRMATION", "deprecated" : true, "default" : "ORDER_CONFIRMATION", "enum" : [ "ORDER_CONFIRMATION", "PAYMENT_CONFIRMATION", "SUPPLIER_ALLOCATION", "DATE_ALLOCATION", "MANUAL_ALLOCATION", "VENUE_ALLOCATION", "NO_ALLOCATION" ] }, "AccountingType" : { "title" : "Accounting Type", "type" : "string", "deprecated" : true, "enum" : [ "REDEMPTION_DATE", "BOOKING_DATE", "TRAVEL_DATE" ] }, "PaymentScheme" : { "title" : "Payment Scheme", "type" : "string", "description" : "Payment scheme used. Available if returned by payment service provider.", "readOnly" : true, "deprecated" : true, "enum" : [ "VISA", "MASTERCARD", "MAESTRO", "PAYPAL", "SOFORT", "GIROPAY", "SEPA", "BANCONTACT", "IDEAL", "ALIPAY", "AFTERPAY", "BOLETO", "KLARNA", "DISCOVER", "UNIONPAY", "AMERICAN_EXPRESS", "AMAZON_PAY", "SAMSUNG_PAY", "WECHAT_PAY", "APPLE_PAY", "GOOGLE_PAY", "CREDITCARD", "UNSPECIFIED", "OTHER" ] }, "PaymentStatus" : { "title" : "Payment Status", "type" : "string", "description" : "Status of guest payment.\n\n\nPayment Status:\n * `PAID` (string) - Payment is authorized and settled. 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 last attempt. Initiate a new payment via the Make Payment API.\n * `ERROR` (string) - Payment error occurred during last 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.\n * `NOT_REQUIRED` (string) - Payment is not required / applicable. This state serves as an indicator to proceed.\n\n> Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).", "readOnly" : true, "example" : "PAID", "default" : "PENDING", "enum" : [ "PAID", "AUTHORIZED", "PROCESSING", "IN_PROGRESS", "PENDING", "REFUNDED", "REFUSED", "CANCELLED", "ERROR", "PARTIAL_PAID", "PARTIAL_REFUND", "CHARGEBACK", "EXPIRED", "NOT_REQUIRED" ] }, "PaymentMethod" : { "title" : "Payment Method", "type" : "string", "description" : "Payment method / type used.\n\nMore specific details might be available in `PaymentScheme` after payment.\n> Only applicable to Guest Payment. Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).\n\nPayment Methods:\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 * `EXTERNAL` (string) - Payment made outside the 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.", "example" : "EXTERNAL", "default" : "EXTERNAL" }, "PaymentDetails" : { "title" : "Payment Details", "required" : [ "order_payment_currency_amount", "order_payment_currency_code", "order_payment_gateway_type", "order_payment_method", "order_payment_status", "payment_amount", "payment_date", "payment_id" ], "type" : "object", "properties" : { "payment_id" : { "title" : "Payment ID", "type" : "string", "description" : "Unique Payment ID of this payment.", "format" : "uuid", "readOnly" : true, "deprecated" : true }, "order_payment_status" : { "$ref" : "#/components/schemas/PaymentStatus" }, "order_payment_method" : { "$ref" : "#/components/schemas/PaymentMethod" }, "payment_scheme" : { "$ref" : "#/components/schemas/PaymentScheme" }, "order_payment_gateway_type" : { "$ref" : "#/components/schemas/PaymentServiceProvider" }, "order_payment_gateway_details" : { "$ref" : "#/components/schemas/PaymentGatewayDetails" }, "payment_contact" : { "$ref" : "#/components/schemas/PaymentContact" }, "order_payment_currency_code" : { "title" : "Payment Currency Code", "type" : "string", "description" : "The currency code of this payment.", "example" : "EUR" }, "order_payment_currency_amount" : { "title" : "Payment Currency Amount", "type" : "string", "description" : "The total amount / value that needs to be settled. This always equals to the total order price (`price_total`), unless an alternative guest currency is set.", "example" : "10.25" }, "payment_amount" : { "title" : "Payment Amount", "type" : "string", "description" : "The amount authorised / settled / refunded during this transaction. \n\nIn case of refunds, this value will be a negative value and the payment type will be set to `payment_type:REFUND`.", "readOnly" : true, "example" : "10.00", "deprecated" : true }, "payment_total" : { "title" : "Payment Total", "type" : "string", "description" : "The actual total amount authorised / settled. This will be a running sum of all payment transactions linked to this order.", "readOnly" : true, "example" : "100.00", "deprecated" : true }, "payment_type" : { "$ref" : "#/components/schemas/PaymentType" }, "payment_refund_type" : { "$ref" : "#/components/schemas/RefundType" }, "payment_refund_reason" : { "title" : "Payment Refund Reason", "type" : "string", "description" : "Reason of refund.\n\nOnly applicable in case `payment_type:REFUND`.", "example" : "Guest reimbursement", "deprecated" : true }, "order_payment_note" : { "title" : "Payment Note", "type" : "string", "description" : "(Deprecated) Payment note.", "example" : "Payment note", "deprecated" : true }, "payment_notes" : { "title" : "Payment Notes", "type" : "array", "description" : "Payment notes.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/Note" } }, "payment_created" : { "title" : "Payment Create Date", "type" : "string", "description" : "Date and time of payment.", "format" : "date-time", "readOnly" : true, "deprecated" : true }, "payment_created_name" : { "title" : "Payment Created Name", "type" : "string", "description" : "Cashier name / Username who created the payment.", "deprecated" : true }, "payment_created_email" : { "title" : "Payment Created Email", "type" : "string", "description" : "Cashier email / User email who created the payment.", "format" : "email", "deprecated" : true } }, "description" : "Details of guest payment. In case the payment is not made directly at booking, these details might not yet be available.\n> Only applicable to Guest Payment. Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`)." }, "PaymentType" : { "title" : "Payment Type", "type" : "string", "description" : "Whether this is a payment or a refund.", "example" : "PAYMENT", "deprecated" : true, "default" : "PAYMENT", "enum" : [ "PAYMENT", "REFUND" ] }, "RefundType" : { "title" : "Refund Type", "type" : "string", "description" : "Type of refund.\n\nOnly applicable in case `payment_type:REFUND`.", "example" : "SYSTEM", "deprecated" : true, "default" : "SYSTEM", "enum" : [ "SYSTEM", "EXTERNAL", "PSP", "CHARGE_BACK", "OTHER" ] }, "PaymentTermType" : { "title" : "Payment Term Type", "type" : "string", "description" : "The payment term type. The following value indicates when the payment is due or when an authorized card will be charged.\n> Only applicable to Guest Payment. Not applicable to B2B resellers (Indirect sales / `SettlementType:EXTERNAL`).\n\nPayment Term:\n * `DYNAMIC_DATE` (string) - Payment will settled on a dynamic date e.g 30 days after invoice.\n * `TRAVEL_DATE` (string) - Payment will be settled prior to the travel-date. \n * `REDEMPTION_DATE` (string) - Payment will be settled prior to the redemption-date. \n * `ORDER_DATE` (string) - Payment will be settled directly upon booking.", "readOnly" : true, "deprecated" : true, "enum" : [ "DYNAMIC_DATE", "TRAVEL_DATE", "REDEMPTION_DATE", "ORDER_DATE" ] }, "PaymentServiceProvider" : { "title" : "Payment Service Provider", "type" : "string", "description" : "Payment service provider used to process payments.", "example" : "NONE", "default" : "NONE", "enum" : [ "ADYEN", "CYBERSOURCE", "HYPERPAY", "ADDONPAYMENTS", "MEWS", "NGENIUS", "MULTISAFE", "SUMUP", "IZETTLE", "STRIPE", "WORLDPAY", "GOOGLE", "EXTERNAL", "NONE" ] }, "PaymentContact" : { "title" : "Payment Contact", "type" : "object", "properties" : { "contact_name_first" : { "title" : "Contact First Name", "type" : "string", "description" : "First name of the contact.", "example" : "John" }, "contact_name_last" : { "title" : "Contact Last Name", "type" : "string", "description" : "Last name of the contact. If you only have the fullname, we recommend sending it as `contact_name_last` and keeping `contact_name_first` empty.", "example" : "Doe" }, "contact_email" : { "title" : "Contact Email", "type" : "string", "description" : "Email address of the contact.", "format" : "email", "example" : "Johndoe@example.com" } }, "description" : "Contact details for the payment.", "deprecated" : true }, "PaymentGatewayDetails" : { "title" : "Payment Gateway Details", "type" : "object", "description" : "Payment information for each gateway.", "discriminator" : { "propertyName" : "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" } }, "oneOf" : [ { "$ref" : "#/components/schemas/PaymentGatewayAdyen" }, { "$ref" : "#/components/schemas/PaymentGatewayCybersource" }, { "$ref" : "#/components/schemas/PaymentGatewayHyperPay" }, { "$ref" : "#/components/schemas/PaymentGatewayAddonPayments" }, { "$ref" : "#/components/schemas/PaymentGatewayMews" }, { "$ref" : "#/components/schemas/PaymentGatewayNGenius" }, { "$ref" : "#/components/schemas/PaymentGatewayExternal" } ] }, "CommonPaymentGateway" : { "title" : "Common Payment Gateway", "required" : [ "gateway_type" ], "type" : "object", "properties" : { "payment_merchant_account_name" : { "title" : "Payment Merchant Account Name", "type" : "string", "description" : "The name 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.", "example" : "BoatTours" }, "payment_merchant_reference" : { "title" : "Payment Merchant Reference", "type" : "string", "description" : "Unique payment reference of the merchant.", "example" : "1478349849927_771663371" }, "payment_service_provider_reference" : { "title" : "Payment Service Provider Reference", "type" : "string", "description" : "Unique payment reference of payment service provider.", "example" : "4714783500596458" }, "gateway_type" : { "title" : "Gateway Type", "type" : "string", "description" : "Used to aid in serialization, deserialization, and validation.\n\nMust be one of the following values:\n * `ADYEN`\n * `WORLDPAY`\n * `GOOGLE`\n * `CYBERSOURCE`\n * `HOTEL`\n * `HYPERPAY`\n * `ADDONPAYMENTS`\n * `MEWS`\n * `NGENIUS`\n * `SELF`\n * `EXTERNAL`\n * `NONE`\n * `OTHER`\n", "example" : "ADYEN" } } }, "PaymentGatewayExternal" : { "title" : "Payment Gateway External", "type" : "object", "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`).", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentGateway" }, { "required" : [ "payment_service_provider_reference" ], "type" : "object", "properties" : { "payment_shopper_reference" : { "title" : "Payment Shopper Reference", "type" : "string", "example" : "3561645566565654" } } } ] }, "PaymentGatewayAdyen" : { "title" : "Payment Gateway Adyen", "type" : "object", "description" : "Details on the payment when using Adyen to collect a payment.", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentGateway" }, { "required" : [ "payment_service_provider_reference" ], "type" : "object", "properties" : { "payment_shopper_reference" : { "title" : "Payment Shopper Reference", "type" : "string", "example" : "3561645566565654" } } } ] }, "PaymentGatewayMews" : { "title" : "Payment Gateway Mews", "type" : "object", "description" : "Details on the payment when using MEWS to collect a payment.", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentGateway" } ] }, "PaymentGatewayNGenius" : { "title" : "Payment Gateway N-Genius", "type" : "object", "description" : "Details on the payment when using N-Genius to collect a payment.", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentGateway" } ] }, "PaymentGatewayCybersource" : { "title" : "Payment Gateway Cybersource", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentGateway" }, { "required" : [ "payment_auth_code" ], "type" : "object", "properties" : { "payment_auth_code" : { "title" : "Payment Auth Code", "type" : "string", "writeOnly" : true, "example" : "xxxxxx" } } } ] }, "PaymentGatewayHyperPay" : { "title" : "Payment Gateway HyperPay", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentGateway" }, { "type" : "object", "properties" : { "payment_service_provider_reference" : { "title" : "Payment Service Provider Reference", "type" : "string", "example" : "4714783500596458" } } } ] }, "PaymentGatewayAddonPayments" : { "title" : "Payment Gateway Addon Payments", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/CommonPaymentGateway" }, { "type" : "object", "properties" : { "payment_service_provider_reference" : { "title" : "Payment Service Provider Reference", "type" : "string", "example" : "4714783500596458" }, "payment_auth_code" : { "title" : "Payment Auth Code", "type" : "string", "writeOnly" : true, "example" : "xxxxxx" } } } ] }, "ProductPaymentDetails" : { "title" : "Product Payment Details", "required" : [ "product_payment_currency", "product_payment_term", "product_payment_type" ], "type" : "object", "properties" : { "product_payment_type" : { "title" : "Product Payment Type", "type" : "string", "description" : "Indicates how the product will be purchased.\n\nPayment Types:\n * `REQUIRED` (string) - The user has to pay this service at the booking time.\n * `OPTIONAL` (string) - The user can choose to pre-pay this service at the booking time or later, but it is not required in order to book.\n * `NOT_SUPPORTED` (string) - Payment is not supported for this service.", "example" : "REQUIRED", "deprecated" : true, "enum" : [ "REQUIRED", "OPTIONAL", "NOT_SUPPORTED" ], "x-enum-descriptions" : [ "The user has to pay this service at the booking time.", "The user can choose to pre-pay this service at the booking time or later, but it is not required in order to book.", "Payment is not supported for this service." ] }, "product_payment_term" : { "$ref" : "#/components/schemas/PaymentTermType" }, "product_payment_deposit" : { "title" : "Product Payment Deposit", "type" : "string", "description" : "A deposit that the user may be charged or have a hold on their credit card for.", "example" : "800.00", "deprecated" : true }, "product_payment_require_creditcard" : { "title" : "Product Payment Require Creditcard", "type" : "boolean", "example" : false, "deprecated" : true, "default" : false }, "product_payment_currency" : { "$ref" : "#/components/schemas/Currency" } }, "description" : "Details on the payment details for this product." }, "Currency" : { "title" : "Currency Information", "required" : [ "currency_code", "currency_language_code", "currency_region_code", "currency_symbol", "currency_symbol_position" ], "type" : "object", "properties" : { "currency_code" : { "title" : "Currency Code", "type" : "string", "description" : "Currency Code, according to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217).", "example" : "EUR" }, "currency_language_code" : { "title" : "Currency Language Code", "type" : "string", "example" : "en", "deprecated" : true }, "currency_region_code" : { "title" : "Currency Region Code", "type" : "string", "example" : "US", "deprecated" : true }, "currency_symbol" : { "title" : "Currency Symbol", "type" : "string", "deprecated" : true }, "currency_symbol_position" : { "title" : "Currency Symbol Position", "type" : "string", "deprecated" : true, "default" : "LEFT", "enum" : [ "LEFT", "RIGHT" ] }, "currency_decimal_digits" : { "title" : "Currency Decimal Digits", "minimum" : 0, "type" : "integer", "example" : 2, "deprecated" : true }, "currency_decimal_delimiter" : { "title" : "Currency Decimal Delimiter", "type" : "string", "example" : ".", "deprecated" : true }, "currency_thousand_delimiter" : { "title" : "Currency Thousand Delimiter", "type" : "string", "example" : ",", "deprecated" : true }, "currency_space_between_amount_and_symbol" : { "title" : "Currency Space Between Amount and Symbol", "type" : "boolean", "example" : true, "deprecated" : true, "default" : true } }, "additionalProperties" : false, "description" : "The currency information for product prices. According to [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217)." }, "ProductCodeSettings" : { "title" : "Product Code Settings", "required" : [ "product_code_format", "product_code_source", "product_code_type", "product_combi_code", "product_group_code", "product_voucher_release_type", "product_voucher_settings" ], "type" : "object", "properties" : { "product_code_format" : { "title" : "Product Code Format", "type" : "string", "description" : "Indicates how the product code should be rendered on the customer voucher.", "readOnly" : true, "example" : "QR_CODE", "default" : "QR_CODE", "enum" : [ "BAR_CODE", "BAR_CODE_E128", "BAR_CODE_C128", "BAR_CODE_C39", "AZTEC", "PDF", "PDF417", "QR_CODE", "LINK" ] }, "product_code_source" : { "title" : "Product Code Source", "type" : "string", "description" : "Indicates the origin of the code.", "readOnly" : true, "example" : "PRIO", "enum" : [ "PRIO", "EXTERNAL" ] }, "product_group_code" : { "title" : "Product Group Code", "type" : "boolean", "description" : "Whether this product supports a group code. In this case a code (`product_code`) is returned which is valid for all `product_type`s. This code can be used to allow entry to all persons within that booking without using an individual `product_type_code`.", "example" : true, "default" : false }, "product_combi_code" : { "title" : "Product Combi Code", "type" : "boolean", "description" : "Whether this product supports a combi code. In this case a code (`product_code`) is returned which is valid for all products within a package. This code allows admission to all supplier venues. This is only applicable to combi-products (`product_combi:true`).", "example" : true, "default" : false }, "product_voucher_settings" : { "title" : "Product Voucher Settings", "type" : "string", "description" : "Details on how the voucher should be printed / presented.", "example" : "SINGLE", "default" : "SINGLE", "enum" : [ "PER_PERSON", "PER_SUPPLIER", "SINGLE" ] }, "product_code_release_details" : { "title" : "Product Code Release Details", "type" : "array", "description" : "Requirements for the voucher codes to be released. All requirements must be met for the voucher to be released.\n\nBy default the vouchers will be released on Order Confirmation. Be aware that if additional requirements are set, the voucher codes might not immediately be released upon Create Booking.\n\nAdditional requirements are only applicable to a very small subset of products.", "deprecated" : true, "items" : { "$ref" : "#/components/schemas/VoucherReleaseType" } }, "product_code_release_date" : { "title" : "Product Code Release Date", "type" : "string", "description" : "If `product_code_release_details:DATE_ALLOCATION`, this field will indicate the date on which the voucher codes will be available. Note that if there are multiple voucher release requirements, all must be met prior to this date, otherwise the voucher will be released as soon as the last requirement is fullfilled.\n\nIn case you are subscribed to the Order Notification Event, a webhook will be triggered on this date as well.", "format" : "date-time", "deprecated" : true } }, "description" : "Information on how the product codes are being provided.", "readOnly" : true }, "ProductCodeType" : { "title" : "Product Code Type", "type" : "string", "description" : "Indicates how the product code should be rendered on the customer voucher.", "readOnly" : true, "example" : "BAR_CODE", "deprecated" : true, "enum" : [ "BAR_CODE", "QR_CODE" ] }, "ConfirmReservation" : { "title" : "Confirm Reservation Option", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/CommonBookingOption" }, { "required" : [ "reservation_reference" ], "type" : "object", "properties" : { "reservation_reference" : { "title" : "Reservation Reference", "type" : "string", "description" : "A unique identifier created by the reservation API of Prio.", "example" : "RESERVATION_REFERENCE_123" } } } ] }, "OAuthErrorModel" : { "title" : "OAuth Error Model", "required" : [ "error" ], "type" : "object", "properties" : { "error" : { "$ref" : "#/components/schemas/OAuthErrorCodes" }, "error_description" : { "title" : "Error Description", "type" : "string", "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.", "example" : "Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method). The authorization server MAY return an HTTP 401 (Unauthorized) status code to indicate which HTTP authentication schemes are supported. If the client attempted to authenticate via the `Authorization` request header field, the authorization server MUST respond with an HTTP 401 (Unauthorized) status code and include the `WWW-Authenticate` response header field matching the authentication scheme used by the client." }, "error_uri" : { "title" : "Error URI", "type" : "string", "description" : "A URI identifying a human-readable web page with information about the error, used to provide the client developer with additional information about the error.", "example" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } }, "OAuthErrorCodes" : { "title" : "OAuth Error Codes", "type" : "string", "description" : "The authorization server responds with an HTTP 400 (Bad Request) status code (unless specified otherwise) and includes the following parameters with the response.\n\nValues for the parameters MUST NOT include characters outside the set %x20-21 / %x23-5B / %x5D-7E.\n\n Error:\n * `invalid_request` (string) - The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed. \n * `invalid_client` (string) - Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method). The authorization server MAY return an HTTP 401 (Unauthorized) status code to indicate which HTTP authentication schemes are supported. If the client attempted to authenticate via the `Authorization` request header field, the authorization server MUST respond with an HTTP 401 (Unauthorized) status code and include the `WWW-Authenticate` response header field matching the authentication scheme used by the client.\n * `invalid_grant` (string) - The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.\n * `unauthorized_client` (string) - The authenticated client is not authorized to use this authorization grant type.\n * `unsupported_grant_type` (string) - The authorization grant type is not supported by the authorization server.\n * `invalid_scope` (string) - `The requested scope is invalid, unknown, malformed, or exceeds the scope granted by the resource owner.", "example" : "invalid_client", "enum" : [ "invalid_request", "invalid_client", "invalid_grant", "unauthorized_client", "unsupported_grant_type", "invalid_scope" ] }, "ErrorModel" : { "title" : "Error Model", "required" : [ "error" ], "type" : "object", "properties" : { "error" : { "title" : "Error Code", "type" : "string", "description" : "The error code which occured." }, "error_description" : { "title" : "Error Description", "type" : "string", "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." }, "error_uri" : { "title" : "Error URI", "type" : "string", "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.", "example" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" }, "errors" : { "title" : "Error Messages", "type" : "array", "description" : "More specific messages indicating the problem.", "example" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ], "items" : { "title" : "Error Message", "type" : "string", "description" : "Specific message indicating a problem." } } } }, "InvoiceStatus" : { "title" : "Invoice Status", "type" : "string", "description" : "Status of the invoice.", "readOnly" : true, "deprecated" : true, "enum" : [ "INVOICED", "INVOICE_APPROVED", "INVOICE_PAID", "NOT_INVOICED" ] }, "PassDurationDetails" : { "title" : "Pass Duration Details", "required" : [ "pass_duration_end", "pass_duration_remaining", "pass_duration_start", "pass_duration_total" ], "type" : "object", "properties" : { "pass_duration_start" : { "title" : "Pass Duration Start", "type" : "string", "description" : "In case of a redeemed pass, the start time of the countdown. Will be equal to `redeem_date_time_first`.", "format" : "date-time", "example" : "2018-06-26T12:08:47Z" }, "pass_duration_end" : { "title" : "Pass Duration End", "type" : "string", "description" : "In case of a redeemed pass, the end time of the countdown. (`duration_start` + `duration_total`)", "format" : "date-time", "example" : "2018-06-26T12:08:47Z" }, "pass_duration_total" : { "title" : "Pass Duration Total", "type" : "integer", "description" : "The total amount of time in seconds that the pass is supposed to be valid.", "example" : 86400 }, "pass_duration_remaining" : { "title" : "Pass Duration Remaining", "type" : "integer", "description" : "The remaining time for the pass to be valid in seconds. Can be a negative value in case of an expired passcode. (`duration_end` - current time)", "example" : 3600 } }, "additionalProperties" : false, "description" : "Details of the pass validity in case `redemption_has_duration:true`.", "deprecated" : true }, "RedemptionStatus" : { "title" : "Redemption Status", "type" : "string", "description" : "Status of redemption.\n\nRedemption Status:\n * `REDEEMED` (string) - Passcode is valid and has been redeemed. It cannot be redeemed again.\n * `CHARGED` (string) - Passcode is valid and payment has been charged. (Post-paid tickets). It can be redeemed multiple times until the passcode expires.\n * `PENDING` (string) - Passcode is valid and has not been redeemed yet.\n * `NOT_ACTIVE` (string) - Passcode is not yet active, scanned before the `product_valid_from`.\n * `EXPIRED` (string) - Passcode not valid, expired. (scanned after `product_valid_till` or `redeem_duration_remaining <= 0`).\n * `CANCELLED` (string) - Passcode not valid, cancelled.\n * `DISABLED` (string) - Passcode not valid, disabled.\n * `REJECTED` (string) - Passcode rejected, due to administrative reasons.\n * `ACTIVE` (string) - Passcode is valid and optional countdown is active. It can be redeemed multiple times until the passcode expires. This status overrides `redemption_status:REDEEMED`.", "readOnly" : true, "example" : "REDEEMED", "default" : "PENDING", "enum" : [ "REDEEMED", "CHARGED", "PENDING", "NOT_ACTIVE", "EXPIRED", "CANCELLED", "DISABLED", "REJECTED", "ACTIVE" ] }, "Invalid Auth Request" : { "title" : "Invalid Auth Request", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/OAuthErrorModel" }, { "type" : "object", "properties" : { "error" : { "example" : "invalid_request" }, "error_description" : { "example" : "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed." } } } ] }, "Internal Server Error" : { "title" : "Internal Server Error", "type" : "object", "allOf" : [ { "$ref" : "#/components/schemas/ErrorModel" }, { "type" : "object", "properties" : { "error" : { "title" : "Error Code", "type" : "string", "description" : "The error code which occured.", "example" : "INTERNAL_SERVER_ERROR", "enum" : [ "INTERNAL_SERVER_ERROR", "INSUFFICIENT_BARCODES" ] }, "error_description" : { "example" : "A generic error message, given when an unexpected condition was encountered and no more specific message is suitable." } } } ] } }, "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" }, "example" : { "error" : "INVALID_REQUEST", "error_description" : "The request is missing a required parameter, includes an unsupported parameter or parameter value, repeats the same parameter, uses more than one method for including an access token, or is otherwise malformed.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2", "errors" : [ "The data.reservation.reservation_distributor_id must be a string.", "The data.reservation.reservation_details.booking_travel_date must be a [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date time format.", "The data.order.order_bookings.*.reservation_reference field is required when data.order.order_bookings.*.booking_option_type is CONFIRM_RESERVATION." ] } } } }, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "invalid_token", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "PaymentRequired" : { "description" : "Payment Required\n\nThe current payment state is invalid.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "PAYMENT_REQUIRED", "error_description" : "The provided payment details are invalid.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "Bearer realm=\"{scope}\",error=\"invalid_token\",error_description=\"The access token expired\"" } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "insufficient_scope", "error_description" : "The 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.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "NotFound" : { "description" : "Not Found\n\nThe HTTP 404 Not Found client error response code indicates that the server can't find the requested resource.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_FOUND", "error_description" : "The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "METHOD_NOT_ALLOWED", "error_description" : "A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "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" }, "example" : { "error" : "NOT_ACCEPTABLE", "error_description" : "The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "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" }, "example" : { "error" : "CONFLICT", "error_description" : "Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "UnprocessableEntity" : { "description" : "UnprocessableEntity\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" }, "example" : { "error" : "UNPROCESSABLE_ENTITY", "error_description" : "The request was well-formed but was unable to be followed due to semantic errors.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "LimitReached" : { "description" : "Limit Reached\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" }, "example" : { "error" : "LIMIT_REACHED", "error_description" : "The user has sent too many requests in a given amount of time.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-2" } } } }, "InternalServerError" : { "description" : "Internal Server Error\n\nThe HyperText Transfer Protocol (HTTP) 500 Internal Server Error 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/Internal Server Error" } } } }, "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "NOT_IMPLEMENTED", "error_description" : "The 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).", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server was acting as a gateway or proxy and received an invalid response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "SERVICE_UNAVAILABLE", "error_description" : "The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } }, "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.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorModel" }, "example" : { "error" : "GATEWAY_TIMEOUT", "error_description" : "The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", "error_uri" : "https://support.prioticket.com/docs/prioticket-distributor-booking-api-v3-0" } } } } }, "parameters" : { "DistributorID" : { "name" : "distributor_id", "in" : "query", "description" : "Unique identifier for distributor assigned by Prio.", "required" : true, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : 501 }, "ProductID" : { "name" : "product_id", "in" : "query", "description" : "[FILTER] on `product_id`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string" }, "example" : "PRODUCT_ID_123" }, "ItemsPerPage" : { "name" : "items_per_page", "in" : "query", "description" : "[PAGING] Items Per Page - Allows user's to configure the `items_per_page` value. For example, to load 100 items per page, the developer may point the user to a url with the query string ?items_per_page=100. This parameter is mainly usefull to manage response times, higher values result in longer response times and therefore it is recommended to keep this value as low as possible. We do allow to adjust this value so it can be used to batch/cache/update inventory at once.\n> Clients should anticipate that the value of this parameter may not be honored by the API, and should rely exclusively on the contents of the `items_per_page` response element in calculating actual page size.", "required" : false, "style" : "form", "explode" : true, "schema" : { "maximum" : 500, "minimum" : 1, "type" : "integer", "example" : 5, "default" : 10 } }, "StartIndex" : { "name" : "start_index", "in" : "query", "description" : "[PAGING] Index-based paging - Allows user's to jump directly to a specific item position within a list of items. For example, to load 10 items starting at item 200, the developer may point the user to a url with the query string ?start_index=200.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 }, "Page" : { "name" : "page", "in" : "query", "description" : "[PAGING] Page-based paging - Allows user's to jump directly to a specific page within the items. This is similar to index-based paging, but saves the developer the extra step of having to calculate the item index for a new page of items. For example, rather than jump to item number 200, the developer could jump to page 20. The urls during page-based paging could use the query string ?page=1 or ?page=20. The `page_index` and `total_pages` properties are used for this style of paging.", "required" : false, "style" : "form", "explode" : true, "schema" : { "minimum" : 1, "type" : "integer", "default" : 1 }, "example" : 1 } }, "requestBodies" : { "CreateReservationRequest" : { "description" : "Create Reservation Request.", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CreateReservationRequest" } } }, "required" : true } }, "headers" : { "Idempotency-Key" : { "description" : "The Prio API supports [idempotency](https://tools.ietf.org/html/rfc7231#section-4.2.2), allowing you to retry a request multiple times while only performing the action once. This helps avoid unwanted duplication in case of failures and retries. For example, in the case of a timeout error, it is possible to safely retry sending the same API Create Order call multiple times with the guarantee that the order will only be created once.\n", "deprecated" : true, "style" : "simple", "explode" : false, "schema" : { "maxLength" : 64, "minLength" : 16, "type" : "string" } }, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "max-age=3600" } }, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "format" : "date-time" } }, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "en" } }, "Content-Length" : { "description" : "The Content-Length entity header indicates the size of the entity-body, in bytes, sent to the recipient.", "style" : "simple", "explode" : false, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "GET" } }, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "default-src 'self'" } }, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "1; mode=block" } }, "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.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : "nosniff" } }, "X-RateLimit-Limit" : { "description" : "Request limit per hour.", "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "example" : 10000 } }, "X-RateLimit-Remaining" : { "description" : "The number of requests left for the time window.", "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "example" : 9940 } }, "X-RateLimit-Reset" : { "description" : "The UTC date/time at which the current rate limit window resets.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "format" : "date-time" } }, "Origin" : { "description" : "The Origin request header indicates where a fetch originates from.", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "format" : "URI", "example" : "https://api.prioticket.com" } } }, "securitySchemes" : { "ApiKeyAuth" : { "type" : "apiKey", "description" : "API key to identify the application or the project that's making a call to this API.", "name" : "key", "in" : "query" }, "basicAuth" : { "type" : "http", "description" : "Basic Auth used for retrieving a JWT token using the /oauth2/token endpoint (Sample Only). For the other endpoints, the OAuth2 flow should be used instead.", "scheme" : "basic" }, "OAuth2" : { "type" : "oauth2", "description" : "OAuth2 implementation.", "flows" : { "clientCredentials" : { "tokenUrl" : "https://sandbox-distributor-api.prioticket.com/v3.2/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." }, "x-google-issuer" : "https://securetoken.google.com/prioticket-93ef3", "x-google-jwks_uri" : "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com", "x-google-audiences" : "prioticket-93ef3" } }, "x-google-issuer" : "https://securetoken.google.com/prioticket-93ef3", "x-google-jwks_uri" : "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com", "x-google-audiences" : "prioticket-93ef3" } }, "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" } } } }