Help
RSS
API
Feed
Maltego
Contact
Domain > api.romanbaths-uat.expian.io
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-01-20
52.85.132.104
(
ClassC
)
2025-01-20
52.85.132.64
(
ClassC
)
2025-11-25
3.169.173.72
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Tue, 25 Nov 2025 21:14:57 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://api.romanbaths-uat.expian.io/X-Cache: Redirect from cloudfrontVia: 1.1 5f7d374d92b73172fce43b7879076d1c.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P4X-Amz-Cf-Id: XQUhWJ5_-PFBhvLsbXLC5ud95r9b0oBePSNu2b6akj6D_WoHkjpeag html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 333161Connection: keep-aliveDate: Tue, 25 Nov 2025 21:14:57 GMTX-Amzn-Trace-Id: Root1-69261c51-11cdb29c4b1e009a29db6989x-amzn-RequestId: f5bf7c61-24ad-46c6-855b-007123ffcf8bx-amz-apigw-id: UnlczHj5LPEEEnQX-Cache: Miss from cloudfrontVia: 1.1 11017c4db22106ac70e16ce75190a430.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P4X-Amz-Cf-Id: ezgDgcDk5eqQcr7wz42rh7dQHOQGauOeEQ7_KytKN3W6iPQXwsllYQ !doctype html>html> head> meta charsetUTF-8 /> link hrefassets/favicon.ico relicon typeimage/x-icon /> title>Expian Public API/title> meta nameviewport contentwidthdevice-width,initial-scale1 /> style> body { margin: 0; padding: 0; } /style> /head> body> div idredoc-container>/div> script srchttps://cdn.jsdelivr.net/npm/redoc@2.1.1/bundles/redoc.standalone.js>/script> script> const spec {openapi:3.0.1,info:{title:Expian Public API,description:\n## Getting started\n\nThe Expian API can be used to find products, book tickets, and more.\n\n## Authentication\n\nA client ID and client secret are required to use the Expian API. Please contact Expian for these details. These credentials will have permissions assigned to them, which will determine the actions you can perform via the API.\n\nOnce you have your credentials, there are two ways to authenticate with the Expian API:\n\n1. **OAuth 2.0**: Authenticate with the industry-standard OAuth 2.0 protocol(https://oauth.net/code/).\n\n Send your credentials to the `POST /oauth2/token` endpoint to retrieve an access token to include in subsequent requests headers: `Authorization: Bearer TOKEN>`. Tokens expire after some time, as communicated in the response.\n\n2. **Basic Auth**: Use your client ID and secret as the username and password in a Basic Authorization header: `Authorization: Basic BASE_64(CLIENT_ID:CLIENT_SECRET)>`. They should be concatenated with a colon, and then base64 encoded.\n\n This can be used in use cases where a static API key is appropriate. OAuth 2.0 is recommended for most use cases.\n\n## Placing an order (B2B)\n\nAs a B2B customer, you can place an order by following these steps:\n1. **Check whats available for sale in your market**\n\n Use the getMarketsOverview(#operation/getMarketsOverview) endpoint in order to see what products, ticket types and services are available for sale.\n\n2. **Check what booking options are available for purchase**\n\n Now that you know whats available for sale, you can check what booking options are available for purchase.\n Booking options are combinations of products + service timetable.\n Use listMarketBookingOptions(#operation/listMarketBookingOptions) to search for them.\n This is the most important search endpoint in the Expian API as it returns availability and pricing information.\n\n3. **Create a cart**\n\n Use createCart(#operation/createCart) to reserve the booking options you want to purchase.\n You can use the `?preview1` query parameter if you only want to see the result of adding items to cart without reserving them.\n\n4. **Modify a cart (optional)**\n\n Use updateCart(#operation/updateCart) to modify an existing cart.\n You can use this endpoint to add extras to your cart such as:\n - Add ons retrieved via listCartAddOns(#operation/listCartAddOns)\n - Recommendations retrieved via listRecommendedOptions(#operation/listRecommendedOptions)\n\n5. **Place an order**\n\n Use convertCartToOrder(#operation/convertCartToOrder) to record payment and convert your cart into an order via a single API call.\n Please note the payment amount must match the `cart.pricing.payable` value.\n\n## Cancelling an order\n\n Cancelling an order is done by following these steps:\n\n1. **Set all items in your order to the cancelling state**\n\n This is a temporary state that will prevent the items from being modified.\n The cancellation is only finalised once any cancellation fees have been paid.\n To do this, use the cancelAllCartItems(#operation/cancelAllCartItems) endpoint.\n This will return your order with all items in the cancelling state.\n\n Attention should also be paid to the `order.pricing.payable` field.\n If this is a negative value, the order requires payment of a cancellation fees as per the terms & conditions set for purchased items (see step 2).\n If the payable value is zero, no cancellation fees have been incurred and the cancellation can be finalised immediately (see step 3).\n\n2. **Finalise the cancellation**\n To do this use the convertCartToOrder(#operation/convertCartToOrder) endpoint.\n\n Cancelling a reservation(cart) is done via the abandonCart(#operation/abandonCart) endpoint.\n Using this endpoint will release reserved inventory.\n\n Cancellation fees might apply at this stage, they need to be paid via the addCartPayments(#operation/addCartPayments) endpoint.\n Fees are configured in the Expian Admin Portal. If you do not support cancellation fees, please discuss this with your Partner who is using Expian in order to turn this feature off.\n,version:romanbaths-uat,x-logo:{url:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiEAAAC0CAYAAABCI/xeAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw1AUhU9TpVIqDnao4pChOlmQKuKoVShChVArtOpg8voLTRqSFBdHwbXg4M9i1cHFWVcHV0EQ/AFxdXFSdJES70sKLWJ8cHkf571zuO8+QGhWmWr2TACqZhnpZELM5lbFwCuCiFDFMSQzU5+TpBQ819c9fHy/i/Es73t/rv58wWSATySeZbphEW8QT29aOud94jAry3nic+JxgxokfuS64vIb55LDAs8MG5n0PHGYWCx1sdLFrGyoxFPE0byqUb6QdTnPeYuzWq2zdp/8haGCtrLMdaoRJLGIJUgQoaCOCqqwEKNdI8VEms4THv5hxy+RSyFXBYwcC6hBhez4wf/g92zN4mTcTQolgN4X2/4YBQK7QKth29/Htt06AfzPwJXW8deawMwn6Y2OFj0CBraBi+uOpuwBlztA5EmXDdmR/FRCsQi8n9E35YDBWyC45s6tfY7TByBDs0rdAAeHwFiJstc93t3XPbd/77Tn9wObO3K3yhkx8wAAAAZiS0dEAPEA9QD5+3k5EQAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+cKGAo1EkSX0GMAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAgAElEQVR42u3deXwU5f0H8M93dmaTyBXILiAiouBBUVCCQrILBKsgWG+xLWqtraLVVlHrT6tWRW2rVRGr/qpt1Xrwo6L1wAPPGkk2AQQv6o2VCoiQ3XCT7M7sfH9/YE9N2Nnslc3n/dJ/yM7Mc8zzPN+5ngcgIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiKifxEWARFR51MSrBqaVHMPiOuahm9N6/pFn7JUiEEIERFlx8CqMrNFfiKQH0Ew+L/+uhKid9hNm+8G3k2wsIhBSIFadsQ+vSRhHiWCkRAMgMpuXa0MFLIJgs99LhqsmK92+LvstIgKWWl59V5JUxYAGLGLbn2pDTke0bp1LDViEFJIwce4YbsbPvcaKM4E4Gf1/9NGgdyS3NZtzujly3ewOIgKTHlNuWXaiwHsn+Jlxht2qYaxprGFhUeFzOgqGX1r/AGTDMN9D4pzGIB8RW+F/sLovvXt5eP3HcbiICosls++LvUABABklNkq/8OSo0LXJe6EvDHxgJPg6iMAfKzyXdoINxkeVbfyPRYFUSFcIlT2snyl6wGUeG3LdrS1H7DcZiESg5A8WT5u/xFioBHAbqzuVOlK13JGj375b5uL/gozEPoMQL9O24BVf5iINTzMc7Z4+YPVJ6vKo2m1ZNEJTlPDIpYiFSqz6KMsA7cxAPFcakONhP9yAD/rApktQSd+PKcQ3t0rcq5rDBXRdK8yhwBgEEIFq6jfCXlj4gETABzOak7rEvvCN2sGl7MgiPLdFt2StLd1UcoCJAYh+ZJ0T2YVp60MbsnRLAaiPMcgMNalv62Pn+kSg5D8tV6ZwCpOnwpqWApEee7G1KlLc1M3YSYbWILEICR/BrKKO2QPFgFRfiVii9+HYLHn4AWyEOsbNrAEiUFI/pSxijt0DdaNZUCUfyrGTwE4HjZphS/5M5YcMQjJr/Ws4g75nEVAlH/OhroIVC8A4Kbyc1E9O7G+cQVLjhiE5Bcn3OoAUfcDlgJRYbBjDb81gBMArG7nZ5+oyhTOHUOdRbHPE/I0gCms5nRDVH2KhUBUOOLRyAIMrHrJHzeOVVcmQ9xBIpJUlb+L4b6Q2LD5aa6gSwxCCoQ/4Xsk4U/+AkBvVrVXuviQ2o/fYjn8O9msipcKK0myivXSxaxpbEkAj2Dn/0QMQgrVgY3vNb9Zc8AvVfVmVrW3CMQVXMpi+Eqx/N2JRaaxHIiIMqPoV9E9uPaD2QAWsKo9uWZ07Uf1LAYiImIQ0gECuDscnAbgeVZ3KgWmtx7y2oc3sCCIiIhBSAaEIx9uXdn3w2+J6rUAdrDav9bngEwfVfvRTwVQFgcREeXgRkHX8kZo/wHi07NdMY4T6EHoAisJt6MVQIOKPGH6/fePfPGd7V2tAKxAaD2Avin+/B07GhnJbqP4lfYfO9i1zUMgerAC+yjQS4ByCCwotgHYKJBPVfChGMnXE+sb/4ouGLyX9h872HXMKkCHKTBEBAFVdIPAEFe2qOhmQFdDZQXEWGFH+78NPJosqkIYXFNq7oiPkqSMhMgIVQRF0As7P4jYKsAOFV0FlY/V1SVO8+bl/IKpCwch/04BY/m4Yf1cdbrczKqGKVtG134U7eoNoGiDkAE1ASvh7OVlE5/jRls3Nfw9a2nqPy5oOTrIyyZmEk0tG+s/+9q6C1YfDDV87W1v+9zVqU5d7u9dfSAM4zsqehKAAzx2pF8o8Kwaxv3OhrpINorP37v6QPUZKa2oa0C3xaORD7OSjj6h4WrghwCOATDU44gTA/CMoXg8Hh3wbCoBSVnv8CDHh2C7u9Xk9kSssf15jQLjdregA9rdjy+ZSG2St0rLHyw9URUnYec0EN09lMIWAAsUuM+JRl5lEELEIKT4gpBe4d6WpW8B8DLobzJd34iW5kWrM5+gSssKlDYAGO1hozhEx9pNDW+1UXdbAPTYRQd3fSIaubrdQCcYDhuqP9Odg0nH+0SVFeJzZyU2NDyeybsjViD0sYdBP2JHI+FM1qBZUX24iFwLYFyGdvkJVG+1e/jvx6ra1rbzHZ4H6Hd2sa/X7WjksF3U81Wiev0u9tNiRyPd2qy3AZW7mYmScwUyE8CeGSiD11VwidMUqUMXZYCIis/m+o0K43tIbZrvfyh3fMl7s3Fx4g+WzvIYgEChV7QVgKS+Dwxp84/9qvtagdAjolqnwNSM5Vv0IHXlMSsQWuLvO25EZz+VSvqG97GCoRdF5JUMBiAAMAQi/2ttS7xjVlQf3k4lDsphdssQrOnXRhBzlJUoXSGQWzMUgADAoaJ4zQqE7sbAqi651hmDEKIi5UTrXgP0No+j9pFWRfhHGb2C7lNdpYr/8Rg+vOZEG+ZkZKD7uoE1EDrWcuU9AKdksQoOVdd93awIX4ZOetfZCoRnuK6+DcWR2TuK7CsiL1vB6ruAmq+8o6eie+Uyz2Yysfd//kulZQVCd4vqQgD7ZKMAAJxjtUo9+o7pxyCEiIqGXd7rSgDe7iaI3lwSCO2fkQT0m9RNDDwAwOdhq42ma54Ob3dxUg5CrGD4Qhd4AoqKHFSBX0RvtAKhRzrXlW6lZQVCvwX0Hnh73yH9gVjlPCtgL0Sv8L/NcD3cL8DuOR0UDeNfQUjPqj5WoPRlAOfkoAhGWa6vrqsFIgxCiIrZyoVxcY1TAbR42Go3F5gLVFodvpJObr8FkH09dcWCczP4XkoA5TXl/7zKDVRfA9U5eej7plmtxrOdIxAZ7jcDpX8GcG4eDn6EZelC9JvUDQBK+vYemOu6ckUHAwCCNd0tv/EcgPG5O7rsa7nmUxhcU8oghIiKQqK57j14fhyCSn+g7MqOHNfsEzoyjSvIexNNkfmZzL9lOkO+vAPyA4Fcm8eqmOhvNf4MDPcX7tkyzWdW9J4rO798yZcx/uT2+UCNmXRz+ygGAESxNwDDgv04gDH5yL+1zfkFgxAiKhp2LHKXQJ/xso1Cr7Qqwul1wuU15TDkPnh7F+ITG7go44OK6BArEBoN1bvzXQ8KTLGC5bcW6nniD3z+KxE9uQDKaapZYV8qkvsgBNC9zYrwpdl9D2aXaZhpBcKVXaFv6soTdWHZsmVWv3VmX8ewkoOnfmO9iGRnsqFrrjEqPxnaT1wj7VuxlunESz4btL62dqLDIZXS6dUSpu8Hfsd9R4H+KfcPonMRrDkYTbXbvJ2v9t0ABnrYxIGL09Ac2ZrpjLuqw0SNqyBqFUZN4Mf+QLghEa2fV1ABSLD6ZFX8NNPx75fjjOcXc0VwDVTysO6XjBLRcXmuDgPQXwP4JoOQIrP2hRV7quIciB6LKA6EBbGQxNoXVjhrnl+xGKpPlCT8vw8ed0CHOsOqafP7uGZiBsQ9AR9LJQBfR96zcx0DLQPW6JjpD60A8JRhuvc0PnjGWo6tlLIv6prcYPhMUX3Ow6AwxELiJhs4P/Wr6fB0hX7b07gseq3T3LA4K0MK5BKI9kgtPpA1Iu4CgSyCGO8nXDTB1tYyn9HdhjNQBAerIUeIYiqAtJ/bK/RO9Kt+JdWJ1LKu/7igJt270bGveLYDeFJUn4fKm4k+PVdi5cI4ACAQ6mGpHgCRMKDHATI+hWOVAMjHqtW9U/xdEpDlULdRDTQJjHWAiroSENG9sfNz5m90IB2HW4FwpR2tX17M3VKXmaxMX33VXBsPzAL04hQ6jyYBLtvjqBH3p3OssdMfvEAhswCUZzFLLRC9eVCi9LpHHz0lCUpLV5y23QpW3wWV87w0Hxd6TDLa8OyufrhbIDTABlYA6ONh/xE7OmCC1+m8U5mszIN3ROXaRGz3BSmlo8dhFWaJdb4AP+1AGh62o5HTPeQ3a5OVWYHQwwBOTTMfW1TkZsdpuQMbl29OKVDtM+4brrjXieCkDNVfpiYrSyWCXAXBjXbcfgxbl8bajaKCVUNdlUsBORNAGnfi5Pd2tH5GMffBXeKdkE9eWtZrbbzieUCvSPHqJajAfauff+dOvUZTLqPKGfdYY6Y//KBCbs9yAAIAZVC5+jMr8WzoB/f2AFGK7G7+S6CywsMmYkDuQ7/qXQVr4gB/8BaAyGafmTwtj+uJ2KpyuR0dMCoRq38i5XRsXRpzopHrTHWHAfhLmsc+1QpWH5z/QDxcCWB6mpu/arrOcKep/oZUAxBg58vSTixysqgeD6C5kzSdBICL7VjrfnY0cs+uAhAAiDc1rrSjDedAZRyAz9KIeI4HpvmKuT8q+scxeo0aa5PvPIw0nq0JcP7aqr9uAnBVKr/3bdvtdkBPz3EOJ9tx//xp0+Z/i3dEskywhxUI5fnlRt1mRxs69tx+VW2r9K6erj55Hak/UuhrJnGPA5zQ5mBWET5PoVO8Fame3/rF4lV5qtDNqu6JTiySbhCBlljjWqBmshWwfwvgLK8JUMjVAE7M72mNWZrOXXHV++yY/xwbkbTfU0vEGp7yV1SFVIwXgJzOjOq1jL5wDfckZ0NjQ1qRbqx+SVmf8eGkkVzq4Z0sAAhaFetG2zEsYRDSSa2pWnGpQL7VgU7/ijUL33514JSRr7T3qzGnPnwyVH+UlwaiOGq1Gb8QwGxGCtkc/1GBnExa1F5lSwzo+MuDiY0NfzUDoasF+HXqHbEcb1WET7dj9Q/9999K+lYPcV290WMyHk1EI3PzVJI71JCjnQ0NGVhsrtaxo5hhBapLADndY9s9viRYNTTe1LgyH4Xg7xMartCj09j0/+xYw9nIwIRyiVjjByWB0CQXqAPaX6guT7apuFOdDY1vdmQnLc2LVpvB0CmiWORpQ8MdAxRvEFLUj2PWvPx+hQA/63AQLHKTqrZ5pVA54x4Lqr/M6/goeuXB37+/HEQpcqKRWwF9xWNruKO0vPq/PpusMV2Vh+FhZk2FrLFtyV9Apzgvw6vdqh2N/zCNwUIUxg/y2G+cncZGK+xS9yxkZkZbAEA8GvlQgW9ncp8ZvMg7w27qWADyzzbXFKlTwNsXPy5GoogVdRAijv0dAL0ysKvK1c+/2+biW75tZYcD2DfPue1TalvTQOShezNVz/hyefVUR6BeSVMe+vfn1GbQuRyKsZ66VeB0bK7fmKd8z7djkQcyv9vltrjGD7Dzs1QvAdH389MXV1ow5DSPG9mi8h2saWzJdGq+XNb+dwU1hgheTMQij2d4p7/1+PvBDEI6bxiSsVn/DMM9tu2LQ+OYgsiutp1Goq/TEmtcK654vRoeZwbWzQQAK1h1iKj+3NuVpfzKidbX5inLCdN1Lsnazpvr3oN6G2QU2N2qqBqd64IwA6XhNNbPuTPRXPdettJkx+2rAGwrlPahavws0/t0SpKvAWj10GJ2RxEr6iBEocMytzNpZ18ZPE5HLmshw0DkdeCM1T8BFU+fowv0F1ZF9aFwfQ8A8DIN+fJEbON1+bsuwZ9ampesyWqn6nN/A4+PFUR8U3NfFJ7flWu1xfp1VhO184uThwqkabxnR+veyPhed95F+puHwacbg5DOq2/G9qRu/7av7DJ4nA51Kp7euib61xWoYV4AwMvLkSUQWQTRgzxss80Q33eBdxN5vDK5I9uHiG9o+ESA570ly63JQ2FM9LjBn9FU+0XW+zEXdwHQfLcJEWRztlYvk9SVoYgVexCyI3MnpLQ5g6qK7iiI3Aq2gigdO6dl/y68vc9Q6vH8nBlvWvRxHnP5lh2NLMvN+C5/8Nh4R+W0P965mu+BXjZxBf+Xi6QlmiPvQgrhaxB5I2t7hm7z9HMGIZ1Wxm67usDnbZ4hKoUxfbq2nUaiXbGjkWUK3JCdU1OftJsi9+a3fehruTpUIpFY5PFqvkdJIJSzl9utFt8IeJvBM5lU1OXueip3ddV20JXkshgMQjp690JrM9gq2pnQSF4tkCz/hac0dYQTjdyADA8ACnzuxJ2z8t4fQBbl7GBbl8YA+cBT2UOH5rA49vP4+7cQjeTsTquoEcn3+eJzfVH2CNlX1JOVieIxBS7IQO/V4tp4rs1LBPU9aYgzO+/lKfJnntJZtR3QZflMgKpszvIhXJ/PPDOZTL4FoGdmkoyzUpniOut3JwyrIce11QAg5ZfFDTX2ytWUx2q4g0Q93OVX5LTs4vFEg1WS50WPJVlwc5YwCOlkBhw1sm7N8++8DOCIDjbZOXt9a2Sbcxq8/qfvrh4z/aH7AORzoaGFS+aetpindFZ9Ykcbaoo9k63rF31qVYR/DNEHMzDczU42NSwsgGw5aKpdn9MQRPRTLwO9GDowdxdo4u1YhuZ2RtetS2MoCW2DhwnwqHMq+gXsXNGL0LHvzlfGDfumXfc4vquhyNczxC2G+i7m6UyZsnNqdp3Xwd28a3f3X1UgWYohx19ciIqnuz+auRWBU9HTW16MfDyaaGZLZBDS6Q2aPPKvIjgdQDqLLDUbPjl2yJGjd3kLfMm86etdQ05A7ifasVXk1MZ50z/g6UwZPbGS8R8B+Huam7eKYUzHqtrWAslOzh8HiXgcRF3J2XwQCt3NW9LyEhDE2AoZhBSFPSaPeBKqR3mMrN9XIzl2wJEHvZ/qBq/PPe11qBsCZFWOshYVA5OWzj3tGZ7KlHEbl29W0e+ldQdB5PLEhrp3Cig3Of+M3hXX2/s7krv5IAxIiaekJXVT7qtMt7ARMggpGgOnjHzFFB2mwJ1of8rcmACX6ZZtlXtOOsTznAZL5p3xTpntP0iAWQCy9RJhC4DbHfUNW/zw6bU8jSlrV/NqHIC05ilw9yuwrPTOfecq3T0WdjxnARLgacI4NfIxYZb0YgssfmZXymz/ySM3APjJFy+8fbmtOAqQEQAGCiQO6DqoNuxR2vyaTJzodOQ4tY+esg3AtVOm/OZXm8p7T0wKxohgd1Hpk/Y1gbpbYWCNwngr2W37C8t/d84Onr6UTSXB8fu6mrw1vRNWzvNXVL+YiDU8VSDZ6ZPrA6rr8Ziau7s1At3hJbY0DO2ThzqrYCtkEFKswch2AH/+8v+sWbjwgjh2Tt/8PE816lSGTilxN215BB34OkFF7i/rHT64ZWP9ZwWQo147V/59NFdfwUIVvcXDPSQBtufwLoOnY3kOqDKjNxti8TNYBET036xNW24EcEhHBxHH5z64c/DPf19X2m/9oFweUEQ8reXkQtflLG3wNsuzitEvp7VVXlMOfp7LIISIuh6zb9VkABdmaLibYFasu7QQ8uUm3aqcHlBljKfO2Ej7S6Q0kgZvd6dUD8tl0fksu4otkUEIEXU1/ar7Gq7xR2Rw0SwRvd7qExqb76ypaHXujjbcD9FRntLnGqtyVhaqn3qqQ6AKOVxIzefmsq6IQQgRFQLxJ3GvAv0zvF8TBuaiz5ieec2dIpyrQ1kVPQ+Gt1WGbbu7+W6u0uc41pvw9ul1oCQQytkXTyoSYnNkEEJEXYgVCM1UyLeytPt9LJ95R56zONIKVh2SiwOJGNM8bvJuTid221S7CfA2FXtSZFouklbWZ/yeAMaxRTIIIaIuwt+7+kAAv/R0X0HlDADrPWzxPX8gdGpeM6pG9td3GjqlRIHve9xqSc7LQsTTonSiOiMXLxknxZmBLvrlJoMQIup6BlTupj5jPrw9PvidHat/0PC4aKMCd5cEx++bx9yemu3HQv5NW04GEPA2wBs5/4xfIM963GRPf8UXx2Q3VcP9EDmLjbLr6JLR5rIZT++W7JacDJURCt0dkpdv4L/uysSBuhsExloArx5227HLBZKRRbcm3TypW6tYkw2REa66/UTEhuILUWkI7lVW9+gpuZs/gQqLlSi9HdBhHjb51AYuBYB4NLLACoQeBnBaitt2dzU5F6gMAcvtPGS3h9/nuyIBXJ6d3deYCvsKjxslEuK+kuuCSDgtL1q+0gQAf8pBpCR/Dkx7OlvzrZiBXj/OwjtJxCCkMCz6yfyg3/Rf5SB5NoCyDI3vmaMKQKBfvi+25KKnVjXKE7PG9njrQZk1y01nl9U3T+prGtbP48APBShTKOQfMygJoKLYsHpH0/jZR99kbN5+V+2sgllwjHLAXxE6UQEvV56uwjgT0bqt//gHO9n6Y8tXOgHAninu41B/RcnViRh+np9mJjOtvuF59ob6tzM/iNozAXzDU3oEz6IpsjXnBbFx+WYNhp4RxYkerpRGWcG159tN+E2mk1Paf+zgpCPXsFV2LV3mccySmQsO95v+DwBcAORjHYS0DBaV+5duGfWXZZc8HfC6cc1tRx9hGdYHAvx4F3kOiuIW7dltWfi2o/dhs+gayvqMGagGfudlGwFmO9G6174ymLn4ITx8baEiV5gV1YfnKeslcDEv049lrEC4UoAbvAdFem/+zgL5vfcoTm6ygtUHZzQZQ6eUJG1zLoCebJkMQopO48VPHaviPg8UyGMXr20eOsFxnQYvgUjNLcccry4WwtvUx8N9LpaEb526H5tG8bd9xzAfhHpZn0PeT5S6V3/dX5zmyEsAvAymBsR4AD0Oy9P6IDrMMnyPY2BVRi5ISvqG9xHo0wBKPG76aTK6R96WdXCa6l8E8JHXmxaq8mxpv/F7ZyYVNaa1actDEM4NwiCkCC29aMFwUZ0LwOrcOZF9k6772Pxp83f5dvr42VMPUnEfRnqP2wI+NRaEbjq2B5tH8TIDoSsBTPQyXkHdM7CmsaWtH9i+bjMBfJLyGQ0daJZav89jm/qm1Wq8iP7jgh26A9I3PDLpap0Cu6eRhhtzuZ7N13AFuM5zqoEBTjJZ3+FPngOhHmbAfhzANLbKLtoXFXsGXbhzUCRrECh0wqCB/u8BuL/9DsKYA2i39Ptm3d8yk5cBuIpN5D8M+vIlzMIKT13jl4nmuvdSHjQrqg8FvL2PodAbnFjD6+3+aP2L2zUQOluAV5Di7JqiOMEKVJ9tRxvyFYyETcd9yxcInxuP1j/tbdNpPiu49ny4eqOk84hXscqObfxjvs+fRHTAn6zg55dDcaDXQARqNJiB8FVOtOU3Xl80NgPjJgjcPwAYyq6FQUhRWnzJ42G4OKLIsnW1Qv/Y1lczE2cfM8FVt8PP2hWYecSNR9z88uUvb2Yz+adyAKcWWqJcSd4HILUgpHdlL4g8Am93Bt90ovGU5hBxopFXrYrQnRD8xMNwNsdfMbY+EVv8fl6COGCAC11gBUK1ojonEdu8EHg30eYG/SZ1s9xtp0A/vwQqw9M9riFyQbvHyZlHkyrjzhV1F8H73fFSgd5iBUpnAKHZtuvMQ/OSLe0FbmbFuokQvUDgHsMuhYr7TohrFOMtvsGNFz15KG7D0q8NHlQzledutumfCmAem0nxsHyl/wvAy7P8uCT1e16ucu2S1sutROlkAKm+W7SbGr75GFxzaE5nDf2qGhWpsQLlWwXhRRBdodB1UKMVgjJRHajQQ5DcHgKktCMHUsHj8Savd16yx9lQF7GCod9CcX6au9gPwN2WYd6BQKgRqm9C5O+AbIfCEtF+rmC46Ofj4XEOFWIQ0pnVFGOmRGQi0EYQAq3J4IEmMggpogCkInQGgOmeBkvoFfbGhr96OtDny3don+rviyF1AHwpHuhAa5v9Sxu4OEvZb0Xqk7H1UOjRUBy986mS/uM/ZGgNt9VOqz2j0M4Pu8S91GqVKkBGdeQ0AzAeIuP/UbGQnWWXxowIihwumkf5Uewvpg4s0krbI0d53oNNpDiU9K0eAvE8t0PEie5xe1pX1s0NjQLM9rjZTF8gnJ21awRvQvBAAVRFHC5OwdalsYI7SdY0tvhM9yQATflPjL4BoJ4tl0FIZ7dbMWZKtd0XbTOZ5+5sIsWgxnRVHoa3ORi2G+J+vyNfbiTKe/4cKiu8hAoG9D4Ea7IyY6ZtdDsfwDv5vNkgqt+2myOLC/VMaf1i8SqITgLQnMdkbDVgfBdAnG2XQUhnt74YM6XAunau+DKWZ4GuYxPp/PzBxA1QjPV4ll0Ub2pc2aEDr1wYh5E8A4CXryaCftf5I7JxG379i9ttw5kESD5egI2L4LRErOGpQj9f7KaGtwCZlKf+s0Uhx8aj9R+x5TII6fwEHxRlpQk+bPOPbibzbHzAJtK5mYFxE1Tlpx7bzUt2tOEPmRnQGt8U4Feewh/RyVYgNDMrBbJhyXob8k0Ay3LYD8VUcGSiKTK/s5w3drR+uZmUwwC8ncPDblXDPcGJ1tey5TIIKQ4uni7CXCV94nuu7Q5PM5bnpCEL2EQ6sV7h3gL3IaT6cuhOm8ykz9MU7LuSiFrXpzHo/6rDE2G1JVq3zu5ujQPwhxzUwstm0neI0xSp62ynT8vG+s/sUrcKkNkA3OweTT8W1xjrbGh8gQ2XQUjRENv9E4DimudC8djoW4+Jthl3WToPwJYMHGlZ3cyn32QT6bxMS+9H6ovKfXnRLue1NC9andmU1DriGmdg5xcqqSqBGvMRrMnOe0mralvtaORsdTEJaOfOYtrNFGshOMuORiZlvjxzaE1jix2tvwQuQsjOi6K2QH5t+7of4mXCPWIQ0imMuevEGIAbiyaoAuJJS69s7zd1FyxsUuDXHe1DxZVLIVA2kc7JqgifL8Bx3gZOfTIRrc/KJ9mJ5rr3VD1PDz7UUmd2NsvJaY68ZEc3jYDomcjMo4ePAFzs+Fv3s5si9wLF0Ybs5shiOxoZpyJTBHgOQEenmt8B4B4DcmAiWn8Z1r+4na22ayr6b7DnT5vvGzTQ/xSAozv9TRDF2VVzjt/lLeRp86f5NqzesQDA1DQPdf1rlzx7NZsHFXSgFQhtAZDaGkeCRrspsssF0qyKqsMEvmNVdCqAg7DruZRcACsEeNEVfcZpaqgrlsCjPWV9xgx0fESRWIsAAAKASURBVL4TRXGkQiakWA8bVfEXMfQZO64LsKWxmWcxdYmJYJZdNr+Xk7AeB+TwTpoFF4rLxs45/pZUN6i57fhyVfsJqLcJ2xS4c9GW0Rdi1iyXzYO6WhDyn4b7rb69h0lSh6igj0J7AmIIZIsYbkxV/2ZbiQ/x+fIdXX0cKS2vHuQY2F9EdgekuwLdBdgGYIv6khssx323pXnJGp611CWDEAB49ZpXzbLNm66DyEVIfebEQvCpqp5fNeeEhV43rLyn0uqxrf/1CszErpcYbxLo/9Re8twf2SyIQQgRMQjJgmUXPj3IEedciBwH4BsFmswEgFoVeaxnz/gDw689pUOLXB1+y9S9HMM4V1SPAzDs3/6UVGAxBE/ETff3Sy5YuIVNghiEEBGDkBx47ifPlQSsRF+4jlUoaXLV2j7m9mM3SDorLaRgym+mlGxVs5+2ijNg75L1j57yaJLNgBiEEBGDECIiBiFEXYbBIiAiIiIGIURERMQghIiIiIhBCBERETEIISIiImIQQkRERAxCiIiIiBiEEBEREYMQIiIiIgYhRERExCCEiIiIGIQQERERMQghIiKirsFkERBRZ6RArQBlKf3YlfdYYkRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERF/x/xpfqoGgGU+yAAAAAElFTkSuQmCC,altText:Expian logo}},paths:{/spec:{get:{description:View OpenAPI specification file for this API,responses:{200:{description:Undocumented response,headers:{Content-Type:{schema:{type:string}}},content:{}}},tags:Documentation,security:,parameters:{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}}}},/locations:{get:{summary:List locations,description:Get a list of all configured locations.,operationId:listLocations,tags:Information,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/QueryLocales},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},security:{UserJWTAuth:},responses:{200:{description:Locations,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/LocationPublic}},examples:{Standard listing:{$ref:#/components/examples/Locations}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}}}},/products:{get:{summary:List products,description:Get a list of all configured products.,operationId:listProducts,tags:Information,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/QueryLocales},{in:query,name:expand,schema:{type:string},required:false},{in:query,name:expand-base,schema:{type:string},required:false},{in:query,name:state,schema:{type:string},required:false},{in:query,name:created_at_start,required:false,example:2025-02-01T17:30:00.123456Z,schema:{format:date,type:string}},{in:query,name:created_at_end,required:false,example:2025-02-01T17:30:00.123456Z,schema:{format:date,type:string}},{in:query,name:type,required:false,schema:{type:string,enum:event,route,entitlement,example:event}},{in:query,name:subtype,required:false,schema:{type:string,enum:event,route,membership,patron,voucher,admission,example:event}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Products,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/ProductV2Public}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{UserJWTAuth:}}},/ticket-types:{get:{summary:List ticket types,description:Get a list of all configured ticket types.,operationId:listTicket Types,tags:Information,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/QueryLocales},{in:query,name:created_at_start,required:false,example:2025-02-01T17:30:00.123456Z,schema:{format:date,type:string}},{in:query,name:created_at_end,required:false,example:2025-02-01T17:30:00.123456Z,schema:{format:date,type:string}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},security:{UserJWTAuth:},responses:{200:{description:Ticket Types,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/TicketType}},examples:{Standard listing:{$ref:#/components/examples/TicketTypes}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}}}},/promotions:{get:{summary:List promotions,description:Get a list of all configured promotions.,operationId:listPromotions,tags:Information,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/QueryLocales},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Promotions,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/PromotionPublic}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{UserJWTAuth:}}},/markets:{get:{summary:List markets,description:Get a list of all configured markets.,operationId:listMarkets,tags:Information,security:{UserJWTAuth:},parameters:{$ref:#/components/parameters/HeaderAsUser},{$ref:#/components/parameters/HeaderAcceptLanguage},{in:header,name:Authorization,required:false,schema:{type:string}},responses:{200:{description:Markets,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/Market}},examples:{Standard listing:{$ref:#/components/examples/Markets}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}}}},/markets/{marketId}/booking-options:{get:{summary:List market booking options,operationId:listMarketBookingOptions,description:\nFor the given market, this endpoint returns a list of \options\ that can be purchased.\n\n### Options\n\n\Options\ are a function of products and service timetables, as configured in the Expian Admin portal.\n\nWith Expian, the tickets that a customer can buy are determined by the products available for a given market, and products are available based upon the remaining capacity of the underlying services that they sell access to.\n\nAs an example, imagine a market with 3 products that sell access to the same journey service:\n- **Standard:** Has `booking_unit.type` set to `\time\`.\n- **Day pass:** Has `booking_unit.type` set to `\date\`.\n- **Open pass:** Has `booking_unit.type` set to `\open\`.\n\nIf the journey service was configured to have 50 departures per day in the `gb` market, then calling `GET /markets/gb/booking-options?dates2025-01-01,2025-01-02&fromHER&toHEG&ticket-typesadult:2,child:1` (thats a span of 2 days) might respond with **103** options in total:\n- 100 **Standard** options - one for each departure of the service. A user who orders one of these options will receive tickets valid for the specific departure they chose.\n- 2 **Day pass** options - one for each date where there are departures of the service for the requested dates (`\dates2025-01-01,2025-01-02\`). A user who orders one of these options will receive tickets valid for the entire day chosen.\n- 1 **Open pass** option - it is essentially undated, with its validity period depending upon the purchase date and usage rules defined on the product.\n\n### Timezones\n\nAll times in the request parameters and response are local to where the event is taking place (or for journeys, the departure location).\n\nAs an example, each option has these two properties:\n\n```json\n{\n start_date: 2022-01-18,\n start_time: 17:30:00\n}\n```\n\nThese are the values that you may display to the user. This is the date and time they would expect to see on their watch as they enter the venue / vehicle.\n\nAn exact UTC timestamp can be derived by using the \timezone\ information of the responses `\from\` location object.\n\n```json\n{\n from: {\n id: HEG,\n timezone: Europe/Copenhagen,\n }\n}\n```\n\n### Pricing\n\nThe price of each option is included in the response. Discounts caused by configured promotions may be automatically applied.\nAdditionally, pricing for potential combos is included in the response. In order to have the combo discount apply, the `selection`\nquery parameter must be used to define the other options that the user has already selected to make up the potential combo.\n\nThe prices returned under `response.optionsi.pricing_entire_selection` are what the user can expect to pay, should they add the entire selection to a cart.\n\n### Combos\n\nThe simplest way to call the endpoint is to simply ask it for options to book for an event or a single journey. However, when ordering more than one thing, the user may be eligible for a combo discount. The most common case is a \return combo\.\n\nYoull notice in the API response that each option has a \combos\ array. This shows which combo discounts the option could _potentially_ benefit from, should the user choose to pair this option with another. `response.optionsi.combosii.entire_combo_pricing` is `null` when the combo is only an indication of a potential upsell the user could benefit from. To act upon this, you must make an additional API call using the `selection` query parameter to define the other options that the user has already selected. Below are some such examples.\n\n- One day return:\n\n ```\n ?dates2022-01-13\n &fromHER\n &toHEG\n &ticket-typesC6P9:1,AD:2\n &selection\n {\n \product\:{\id\:\STD\},\n \booked_unit\:{\start_date\:\2022-01-13\,\start_time\:\00:00:00\},\n \location\:{\id\:\HEG\},\n \end_location\:{\id\:\HER\},\n \ticket_types\:{\id\:\C6P9\,\qty\:1},{\id\:\AD\,\qty\:2}\n }\n \n ```\n\n We are travelling today. And we have a previous selection, also for today. A \one day return\ combo might apply if configured.\n\n- Weekend return:\n\n ```\n ?dates2022-01-13 // today, a Thursday\n &fromHER\n &toHEG\n &ticket-typesC6P9:1,AD:2\n &selection\n // Outbound trip, which we are searching for...\n {\n \current_search\:true\n },\n // ...assuming that we will return on sunday (2022-01-16)\n {\n \product\:{\id\:\STD\},\n // Sunday:\n \booked_unit\:{\start_date\:\2022-01-16\,\start_time\:\00:00:00\},\n \location\:{\id\:\HEG\},\n \end_location\:{\id\:\HER\},\n \ticket_types\:{\id\:\C6P9\,\qty\:1},{\id\:\AD\,\qty\:2}\n }\n \n ```\n\n A \Weekend return\ combo would apply if configured (\travel on Thursday or Friday and return on Saturday or Sunday\).\n\n- Open return:\n\n ```\n ?dates2022-01-13 // today, a Thursday\n &fromHER\n &toHEG\n &ticket-typesC6P9:1,AD:2\n &selection\n // Outbound trip, which we are searching for...\n {\n \current_search\:true\n },\n // ...assuming that we will return with an open ticket.\n {\n // This \NEW_OPEN_TICKET\ is a product that must be configured in the admin portal.\n \product\:{\id\:\NEW_OPEN_TICKET\},\n \booked_unit\:{\start_date\:\2022-01-13\,\start_time\:\00:00:00\},\n \location\:{\id\:\HEG\},\n \end_location\:{\id\:\HER\},\n \ticket_types\:{\id\:\C6P9\,\qty\:1},{\id\:\AD\,\qty\:2}\n }\n \n ```\n\n An \Open return\ combo could apply if configured.\n\nThe cheapest relevant combo is automatically applied.\n\n### Purchasing an option\n\nOptions can be added to carts, or converted directly into an order(#operation/submitOrders). See the request bodies of those endpoints to see how options are related.\n\nThe \Return journey example\ API response shows how such selection affect the response - the\n`response.optionsi.pricing_entire_selection.combo_id` will be populated, and information\nabout the discount will be present.\n\nIt can be the case that the promo still does not apply. In that case, the combo is not sellable.\nThis can be caused by criteria not being met, like the combo having date rules, or having reached\nthe configured sales limits for a period.\n ,tags:Information,security:{UserJWTAuth:},responses:{200:{description:Booking options,content:{application/json:{schema:{$ref:#/components/schemas/BookingOption}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},parameters:{$ref:#/components/parameters/PathMarketId},{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/HeaderAsUser},{name:dates,in:query,required:true,description:Comma-separated list of dates to find booking options for.,example:2025-01-01,2025-01-02,schema:{maxItems:42,type:array,items:{format:date,type:string}},explode:false},{name:ticket-types,in:query,required:false,description:Comma-separated list of ticket types to find booking options for. Each item is a pair of ticket type ID and quantity, separated by a colon.,example:adult:2,child:1,schema:{maxItems:10,type:array,items:{type:string}},explode:false},{name:time,in:query,required:false,description:\nA departure time to find booking options near.\n\nThis is optional for services configured entirely in Expian.\n\nThe same is not true for\nservices that use external integrations to fetch their\ntimetable. For such integrations, you may receive options\nwith `provisional: true`, meaning they are indications only.\nTo get the real times that can be purchased with the external\nprovider, pass the \time\ parameter. This will guarantee that\nyou get real results, with `provisional: false`.\n ,example:16:00,schema:{format:time,type:string}},{name:include,in:query,required:false,schema:{enum:all,cheapest-per-day,cheapest-per-product,type:string,default:all},description:\n- **all:** Get all options.\n- **cheapest-per-day:** Get one option per specified date. The option with the lowest potential price (including pricing rules, combos and promos) is the one that is returned.\n- **cheapest-per-product:** Similar to `\cheapest-per-day\`, but it responds with each product available in the specified time period, once per product.\n },{name:from,in:query,required:false,description:The ID of a journey departure location.,example:HEG,schema:{type:string}},{name:to,in:query,required:false,description:The ID of a journey arrival location.,example:HER,schema:{type:string}},{name:products,in:query,required:false,description:The ID of a product to limit the results to. For event searches, this is mandatory as `from` and `to` are not used.,example:HER,schema:{type:string}},{name:include_ticket_donations,in:query,required:false,description:Whether to include donations in ticket price.,example:true,schema:{type:boolean}},{name:include_restricted_sales,in:query,required:false,description:Whether to include time slots with restricted sales. (where the channel allowed tickets is set to 0),example:false,schema:{type:boolean}},{name:selection,in:query,required:false,description:\nA JSON array of other options intended to be paired with the options that the endpoint will respond with.\nThe purpose of this is to receive combo discounts.\n\nThe first example value shows typical usage, where you may specify a journey that the user has already selected,\nand in the current response, you may get a combo discount for the entire selection.\n\nIn the second example, `{current_search:true}` has been used to denote the position of the options we are currently searching for. This is useful if the user has already chosen their return journey option (product and date). More typically, this pattern allows you to pair all potential outbound journeys with an open return.\n ,examples:{Including an outbound:{value:{\product\:{\id\:\STD\},\booked_unit\:{\start_date\:\2022-01-21\,\start_time\:\00:00:00\},\location\:{\id\:\HEG\},\end_location\:{\id\:\HER\},\ticket_types\:{\id\:\C6P9\,\qty\:1},{\id\:\AD\,\qty\:2}}},Including an return:{value:{current_search:true},{\product\:{\id\:\OPEN-TICKET\},\location\:{\id\:\HEG\},\end_location\:{\id\:\HER\},\ticket_types\:{\id\:\C6P9\,\qty\:1},{\id\:\AD\,\qty\:2}}}},schema:{type:string}},{name:promo_code,in:query,required:false,description:An optional promo code to apply. This affect the price of the resulting options.,example:WEEKEND_10_OFF,schema:{type:string}},{name:booking,in:query,required:false,description:ID of an existing booking ID that is being potentially modified with one of the options returned from this endpoint. This takes existing booked capacity into account when calculating availability.,example:AAIDJSLL2F99J,schema:{type:string}},{$ref:#/components/parameters/QueryChannel},{$ref:#/components/parameters/QueryLocales},{name:types,in:query,required:false,deprecated:true,schema:{type:string,example:event}},{in:header,name:Authorization,required:false,schema:{type:string}}}},/markets/{marketId}/overview:{get:{summary:Get market overview,tags:Information,operationId:getMarketsOverview,description:\nReturns the available products, ticket types, locations, route segments and combos for a given market.\n ,responses:{200:{description:Market overview,content:{application/json:{schema:{$ref:#/components/schemas/MarketOverview}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/HeaderAsUser},{name:start-date,in:query,description:Omit products that have no service instances after this date,example:2020-01-01,schema:{type:string,format:date,pattern:^\\\\d{4}-\\\\d{2}-\\\\d{2}$},required:false},{name:end-date,in:query,description:Omit products that have no service instances before this date,example:2020-02-01,schema:{type:string,format:date,pattern:^\\\\d{4}-\\\\d{2}-\\\\d{2}$},required:false},{$ref:#/components/parameters/PathMarketId},{$ref:#/components/parameters/HeaderMarketToken},{in:query,name:skip-checks,required:false,schema:{type:boolean}},{in:header,name:Authorization,required:false,schema:{type:string}},security:{UserJWTAuth:}}},/cart:{post:{operationId:createCart,summary:Create a new cart,tags:Cart,requestBody:{description:Array of cart items,required:true,content:{application/json:{schema:{$ref:#/components/schemas/CartInput}}}},responses:{200:{description:Cart,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedCart}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}},422:{description:Validation error,content:{application/json:{schema:{additionalProperties:false,type:object,properties:{message:{enum:CODE_FAILED_TO_APPLY,NOT_ENOUGH_CAPACITY,INVALID_CAPACITY_ALLOCATION,type:string}},required:message}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{UserJWTAuth:},parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/HeaderAsUser},{name:preview,in:query,required:false,schema:{type:integer,example:1}},{in:header,name:Authorization,required:false,schema:{type:string}}}},/cart/{id}:{get:{operationId:getCart,summary:Get an existing cart,tags:Cart,parameters:{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderCartToken},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Cart,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedCart}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{UserJWTAuth:}},post:{operationId:updateCart,summary:Add, remove or modify items in an existing cart,tags:Cart,parameters:{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderCartToken},{$ref:#/components/parameters/HeaderAsUser},{$ref:#/components/parameters/QueryCartPreview},{in:header,name:Authorization,required:false,schema:{type:string}},requestBody:{description:Array of cart items,required:true,content:{application/json:{schema:{type:object,properties:{id:{anyOf:{type:string,nullable:true},{type:null}},reference:{anyOf:{type:string,nullable:true},{type:null}},delivery_method:{enum:email,pos,type:string,description:\nHow the customer will receive their tickets.\n- `email` - The default value. Tickets will be emailed to the lead customers email address.\n- `pos` - This delivery method is used to denote that the tickets were provided to the customer at the Point of Sale. For example, the tickets were physically printed and handed to the customer. No email is sent to the customer if this option is used.\n ,nullable:true},market:{type:object,properties:{id:{type:string}},required:id},tenant:{type:string,nullable:true},customers:{type:array,items:{$ref:#/components/schemas/CustomerInput},nullable:true},customer:{$ref:#/components/schemas/CustomerInput},extensions:{type:object,nullable:true},promo_code:{anyOf:{type:string,nullable:true},{type:null}},device_id:{anyOf:{description:The device ID that was used to place the order.,type:string,nullable:true},{type:null}},sales_location:{anyOf:{type:object,properties:{id:{description:The location where this order was placed.,type:string}},required:id,nullable:true},{type:null}},sales_sub_location:{anyOf:{type:object,properties:{id:{description:The sub-location where this order was placed.,type:string}},required:id,nullable:true},{type:null}},sales_shift_id:{anyOf:{description:\nGenerated by the POS to start a sales shift.\nIt is expected that any orders placed on the device until the shift is ended will send this property with the same value.\n ,type:string,nullable:true},{type:null}},expiry_timer:{description:Number of milliseconds until the cart expires. Requires the `cart:override_expiry` permission.,type:integer,nullable:true},include_ticket_donations:{type:boolean},include_giftaid:{type:boolean},addons:{type:array,items:{type:object,properties:{id:{type:string},qty:{type:integer},custom_input:{type:string,nullable:true}},required:id,qty},nullable:true},items:{type:array,items:{type:object,properties:{id:{anyOf:{type:string,nullable:true},{type:null}},reference:{anyOf:{type:string,nullable:true},{type:null}},extensions:{type:object,nullable:true},product:{type:object,properties:{id:{type:string}},required:id},include_ticket_donations:{type:boolean},location:{anyOf:{type:object,properties:{id:{type:string}},required:id,nullable:true},{type:null}},end_location:{anyOf:{type:object,properties:{id:{anyOf:{type:string,nullable:true},{type:null}}},required:id,nullable:true},{type:null}},booking_note:{anyOf:{type:string,nullable:true},{type:null}},supplier_note:{anyOf:{type:string,nullable:true},{type:null}},notes:{type:array,items:{$ref:#/components/schemas/BookingNote},nullable:true},booked_unit:{type:object,properties:{start_date:{type:string},start_time:{type:string},instance_id:{type:string},block_id:{type:string}}},ticket_types:{maxItems:20,type:array,items:{type:object,properties:{id:{type:string},qty:{minimum:0,maximum:400,type:integer}},required:id,qty}},capacity_allocation:{type:array,items:{type:object,properties:{id:{type:string},qty:{type:integer},instance_id:{type:string}},required:id,qty,instance_id},nullable:true},addons:{type:array,items:{type:object,properties:{id:{type:string},qty:{type:integer},custom_input:{type:string,nullable:true}},required:id,qty},nullable:true},capacity:{type:object,properties:{override_min_capacity:{type:boolean}},required:override_min_capacity,nullable:true},tickets_upgraded:{$ref:#/components/schemas/BookingTicketsUpgraded}},required:product,booked_unit,ticket_types}}}}}}},responses:{200:{description:Cart,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedCart}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{UserJWTAuth:}},delete:{operationId:abandonCart,summary:Delete an existing cart and release associated inventory,tags:Cart,parameters:{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderCartToken},{$ref:#/components/parameters/QueryCartPreview},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Cart,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedCart}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{UserJWTAuth:}}},/cart/{id}/order:{post:{summary:Convert a cart which has been paid into an order.,operationId:convertCartToOrder,description:\n## **The \PUT\ form of this request is deprecated. Use the \POST\ version.**\n\n## This endpoint is used to convert a cart into an order.\n\nIn the regular B2C flow, we expect the cart to have already been paid via one of the web payment methods(nets_easy, sagepay, etc.)\n\nYou may instead opt to pay for a cart which has not yet been paid and is awaiting external payment via this endpoint by providing payment details.\n ,parameters:{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderCartToken},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Order with payments,content:{application/json:{schema:{type:object,allOf:{$ref:#/components/schemas/DecoratedOrder},{$ref:#/components/schemas/OrderPayments}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Cart,requestBody:{content:{application/json:{schema:{$ref:#/components/schemas/CartIdOrderInput}}}},security:{UserJWTAuth:}}},/cart/{id}/cancel:{put:{operationId:cancelAllCartItems,summary:Set all items in the cart to \cancelling\ state,parameters:{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderCartToken},{name:preview,in:query,required:false,schema:{type:integer,example:1}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Cart,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedCart}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Cart,security:{UserJWTAuth:}}},/cart/{id}/overwrite/amount/{amount}:{put:{summary:Overwrite payable amount of a cart,operationId:overwriteCartAmount,parameters:{$ref:#/components/parameters/HeaderCartToken},{name:amount,in:path,required:true,schema:{type:integer}},{name:id,in:path,required:true,schema:{type:string}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{description:An optional note to include when overriding a price,required:true,content:{application/json:{schema:{type:object}}}},responses:{200:{description:Cart,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedCart}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Cart,security:{UserJWTAuth:}}},/cart/{id}/allowed-payment-methods:{get:{summary:List payment methods compatible with a cart,tags:Cart,parameters:{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderCartToken},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Payment methods,content:{application/json:{schema:{$ref:#/components/schemas/CartAllowedPaymentMethods}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{UserJWTAuth:}}},/cart/{id}/items/{itemId}:{delete:{operationId:deleteCartItem,summary:Delete item from a cart,parameters:{name:itemId,in:path,required:true,schema:{type:string}},{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderCartToken},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{required:false,content:{application/json:{schema:{type:object,properties:{waive_fees:{default:false,description:Bookings already paid for will be set to \cancelling\ status. Setting this boolean to `true` will waive any cancellation fees. This requires a special permission.,type:boolean,nullable:true},email_message:{description:An optional message to include in the email confirmation that is sent to the customer.,type:string,nullable:true},note:{description:An optional supplier note to include in the order history.,type:string,nullable:true}}}}}},responses:{200:{description:Cart,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedCart}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Cart,security:{UserJWTAuth:}}},/cart/{id}/nets-easy/payments:{post:{summary:Create NetsEasy payment,description:\nSet up a payment for a cart with the \Nets Easy\ provider.\n\nThis may be used to initialise the embedded Nets Checkout iframe.\n\nPayments created with this API are provisional and only completed when the form in the iframe\nis completed with card details.\n ,parameters:{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderCartToken},{name:checkout_url,in:query,required:true,schema:{type:string},description:\nSpecifies the URL that the checkout iframe will be loaded\n\nThe value can be retrieved by the `document.location.href` browser property\n },{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Payment,content:{application/json:{schema:{$ref:#/components/schemas/NetsEasyPayment}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Payment,security:{UserJWTAuth:}}},/cart/{id}/payments:{post:{summary:Pay or refund cart,operationId:addCartPayments,description:\nCall this API to complete payments, associate existing payments or issue refunds for a cart.\nAdditionally, calling this API will attempt to convert the current cart to an order.\n\n# Payments\nPayments can be handled for supported providers (currently SagePay and NetsEasy)\nand also be recorded if they have been performed externally. See the request body schema\nfor details on each payment method.\n\n# Refunds\nRefunds can be handled in two ways. Either by explicitly associating the refund to an\nexisting cart payment or by letting the system auto allocate the refund amount to the\nexisting cart payments exhausting them from the newest one to the oldest one until the\nrefund amount is covered.\n ,parameters:{name:id,in:path,required:true,schema:{type:string}},{$ref:#/components/parameters/HeaderXIdempotencyKey},{$ref:#/components/parameters/HeaderCartToken},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/CartPaymentInput}}}},responses:{200:{description:Payment submitted,content:{application/json:{schema:{$ref:#/components/schemas/CartPayment},examples:{Nets easy payment:{$ref:#/components/examples/CartPayment}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Cart,security:{UserJWTAuth:}}},/addon-booking-options:{post:{summary:Get addon options for given cart input,operationId:listAddonBookingOptions,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/HeaderAsUser},{in:header,name:Authorization,required:false,schema:{type:string}},requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/CartInput}}}},responses:{200:{description:Addons available to purchase for cart selection,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/CartAddonOption}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Cart Extras,security:{UserJWTAuth:}}},/recommendation-options:{post:{summary:Get recommendations for a cart,operationId:listCartRecommendations,parameters:{$ref:#/components/parameters/HeaderAsUser},{in:header,name:Authorization,required:false,schema:{type:string}},requestBody:{content:{application/json:{schema:{$ref:#/components/schemas/CartInput}}}},responses:{200:{description:Recommendation options,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/RecommendationOption}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Cart Extras,security:{UserJWTAuth:}}},/orders:{get:{summary:Search orders,operationId:listOrders,parameters:{name:format,in:query,required:false,schema:{type:array,items:{type:string,enum:full,ids}}},{name:ref,in:query,required:false,schema:{type:string}},{name:external-reference,in:query,required:false,schema:{type:string},description:The external booking reference assigned by trade partners. Maps to the booking.reference property},{name:name,in:query,required:false,schema:{type:string}},{name:company-name,in:query,required:false,schema:{type:string}},{name:email,in:query,required:false,schema:{type:string}},{name:address,in:query,required:false,schema:{type:string}},{name:device-id,in:query,required:false,schema:{type:string}},{name:fee_free_period_within,in:query,required:false,schema:{type:string}},{name:state,in:query,required:false,schema:{type:string}},{$ref:#/components/parameters/QueryReportFilterBookingDateStart},{$ref:#/components/parameters/QueryReportFilterBookingDateEnd},{name:booking-time-start,in:query,required:false,schema:{type:string}},{name:booking-time-end,in:query,required:false,schema:{type:string}},{name:location-id,in:query,required:false,schema:{type:string}},{$ref:#/components/parameters/QueryReportFilterServices},{$ref:#/components/parameters/QueryReportFilterProducts},{$ref:#/components/parameters/QueryReportFilterChannels},{$ref:#/components/parameters/QueryReportFilterStatuses},{name:end-location-id,in:query,required:false,schema:{type:string}},{$ref:#/components/parameters/QueryReportFilterMarkets},{name:ordered-date-start,in:query,required:false,schema:{type:string}},{name:ordered-date-end,in:query,required:false,schema:{type:string}},{name:ordered-time-start,in:query,required:false,schema:{type:string}},{name:ordered-time-end,in:query,required:false,schema:{type:string}},{name:has-license-plate,in:query,required:false,schema:{type:string}},{name:inactive-since,in:query,required:false,schema:{type:string}},{name:id-only,in:query,required:false,schema:{type:string}},{$ref:#/components/parameters/QueryPaginationPage},{$ref:#/components/parameters/QueryPaginationPerPage},{in:query,name:sort,required:false,schema:{enum:last_name,last_name:asc,last_name:desc,start-date-time,start-date-time:asc,start-date-time:desc,updated-at,updated-at:asc,updated-at:desc,type:string,default:updated-at:desc},description:The field to sort the results by. The direction can be dictated by appending `:asc` or `:desc` to the field. If neither is provided, it defaults to ascending order.,example:start-date-time:desc},{in:query,name:entity,required:false,schema:{enum:order,booking,type:string,default:order},description:Whether to a return orders or bookings. When searching for bookings, the output will be the same as an order search, have an additional \booking_id\ property highlighting the relevant booking.,example:booking},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{$ref:#/components/responses/OrdersResponse}},tags:Orders,security:{UserJWTAuth:}},post:{summary:Submit order,operationId:submitOrder,description:\nSubmit a new order to Expian, with information about payment.\n\nThis is intended to be used by external systems which sell Expian tickets. It allows such systems to inform Expian of sales _after the fact_ so that the order can be stored in Expian, where it will show up in reports, and can be managed in the Expian Reservations Portal.\n\n### Pricing\n\nSince this endpoint records sales after they occur, the caller defines the prices that were paid, as informed by the `GET /markets/:id/booking-options` endpoint. If there is a mismatch\nbetween what was paid, and the calculated amount due, the API will still respond with a `200` success status, but an issue is raised on the order in the form of an object in the `issues` array, which has details of the problem.\n\n### Payments\n\nSend a payment of type \internal_generic\ to record details of a payment that has already occurred. The `payment.type` property can be any string - keep it consistent per payment method you provide for easy identification in the reservations portal and in reports.\n\nSpecify unique `provider_reference` strings to identify each payment.\n\n### Pay later\n\nFor imported orders, if pay-later options are supplied the order will be imported as a Cart. The Cart will have its expiry time set according to the `time_to_pay` and `time_to_pay_offset_hours` values. Payment requests will be sent to the customer according to the `delivery_method` specified.\n\n### Error responses\n\nSeveral example error responses are detailed for this endpoint. These examples may change during the implementation. This documentation will be updated as the implementation progresses.\n\nThe general philosophy is to be as forgiving as possible. A non-Undocumented response will only be returned as a last resort, if the input is invalid.\n ,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/HeaderXIdempotencyKey},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Imported order,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedOrder},examples:{Imported order with price mismatch:{$ref:#/components/examples/OrderImportedWithPriceMismatch}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Orders,security:{UserJWTAuth:},requestBody:{content:{application/json:{schema:{$ref:#/components/schemas/OrderImportInput}}}}}},/orders/{id}:{get:{operationId:getOrder,summary:Get an existing order,parameters:{name:id,in:path,required:true,schema:{type:string}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Order,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedOrder}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Orders,security:{OrderAuthorizer:}},post:{operationId:updateOrder,summary:Modify items in an existing order,tags:Orders,parameters:{name:id,in:path,description:ID of order to modify (eg DVONPITZ75ZG1),required:true,schema:{type:string}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Order,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedOrder}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{OrderAuthorizer:},requestBody:{required:true,content:{application/json:{schema:{type:object}}}}}},/orders/{id}/recommendations/{recommendationId}:{post:{summary:Action order recommendation,operationId:applyOrderRecommendation,parameters:{$ref:#/components/parameters/HeaderXIdempotencyKey},{name:id,in:path,required:true,schema:{type:string}},{name:recommendationId,in:path,required:true,schema:{type:string}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/ApplyOrderRecommendationInput}}}},responses:{200:{description:Order with recommendation applied,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedOrder}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Order Upgrades,security:{UserJWTAuth:}}},/orders/{id}/check-in-adjustments/{adjustmentId}:{post:{summary:Action check-in adjustment,operationId:applyCheckInAdjustment,parameters:{$ref:#/components/parameters/HeaderXIdempotencyKey},{name:id,in:path,required:true,schema:{type:string}},{name:adjustmentId,in:path,required:true,schema:{type:string}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/ApplyCheckInAdjustmentInput}}}},responses:{200:{description:Order with adjustment applied,content:{application/json:{schema:{$ref:#/components/schemas/DecoratedOrder}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Order Upgrades,security:{UserJWTAuth:}}},/overview:{get:{operationId:getOverview,summary:Get overview for all markets,description:\nReturns the available markets, services, products, ticket types, locations, route segments and\ncombos for all markets.\n ,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/HeaderAsUser},{name:start-date,in:query,description:Omit products that have no service instances after this date,example:2020-01-01,schema:{type:string,format:date,pattern:^\\\\d{4}-\\\\d{2}-\\\\d{2}$},required:false},{name:end-date,in:query,description:Omit products that have no service instances before this date,example:2020-02-01,schema:{type:string,format:date,pattern:^\\\\d{4}-\\\\d{2}-\\\\d{2}$},required:false},{in:header,name:Authorization,required:false,schema:{type:string}},responses:{200:{description:Overview,content:{application/json:{schema:{$ref:#/components/schemas/Overview}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:{UserJWTAuth:},tags:Information}},/check-in-options:{post:{operationId:listCheckInOptions,summary:List check-in options,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{in:query,name:limit,schema:{minimum:1,maximum:5,default:5,type:integer},required:false},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/CheckInOptionsInput}}}},responses:{200:{description:Check-in options,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/CheckInOption}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Check-in,security:{UserJWTAuth:}}},/check-in:{post:{operationId:checkIn,summary:Check-in,parameters:{$ref:#/components/parameters/HeaderAcceptLanguage},{$ref:#/components/parameters/HeaderXIdempotencyKey},{in:query,name:force,required:false,schema:{default:false,type:boolean},description:Force check-in. Useful if the system determines that a ticket is invalid, but you want to admit the customer anyway, and record that check-in.},{in:query,name:include,required:false,schema:{enum:attendees,all,type:string,default:all},description:Choose to redeem only tickets matched for the passed \attendees\ in the request body, or all tickets relevant to the reference.},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/CheckInInput}}}},responses:{200:{description:Check-in successful,content:{application/json:{schema:{$ref:#/components/schemas/CheckInResult}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Check-in,security:{UserJWTAuth:}}},/lane:{get:{tags:Check-in,summary:Get lane,operationId:getLane,description:\nGet lane information for a ticket type.\n\nYou may call this endpoint when you know that a check-in has happened,\nbut you do not have the lane information already. This is the case when using `POST /orders`, which does not return the lane information itself. It is recommended that this endpoint be called in\nparallel to that.\n ,parameters:{in:query,required:true,name:location,example:HEG,schema:{type:string}},{in:query,required:true,name:ticket-type,example:C6P9,schema:{type:string}},{in:query,required:false,name:lane-type,example:COM,schema:{type:string}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Lane information,content:{application/json:{example:{lane:3},schema:{additionalProperties:false,type:object,properties:{lane:{description:Lane number. Will be `-1` if no lane information is available.,type:integer}},required:lane}}}}},security:{UserJWTAuth:}}},/sagepay/sessions:{post:{summary:Get SagePay session key,description:Get a unique session key from SagePay to be used for loading the payment form and authenticating the payment request,parameters:{in:query,name:market,description:Market id,example:int,schema:{type:string}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:SagePay session key,content:{application/json:{schema:{$ref:#/components/schemas/SagePayMerchantSessionKey}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Payment,security:{UserJWTAuth:}}},/timetable:{get:{summary:Get a timetable,description:Get a timetable of departures for the given departure and arrival locations, on a given date.,tags:Information,parameters:{name:date,in:query,required:true,schema:{type:string,example:2021-05-01}},{name:from,in:query,required:true,schema:{type:string,example:hel}},{name:to,in:query,required:true,schema:{type:string,example:heg}},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},security:{UserJWTAuth:},responses:{200:{description:Success,content:{application/json:{schema:{type:array,items:{type:object,properties:{start_date:{type:string},start_time:{type:string},status:{type:string},venue_id:{type:string},service_id:{type:string},stops:{type:array,items:{type:object,properties:{status:{type:string},start_date:{type:string},start_time:{type:string},end_date:{type:string},end_time:{type:string},location_id:{type:string}},required:status,start,end,location_id}}},required:start,status,venue_id,service_id,stops}}}}}}}},/truconnect/notify:{post:{responses:{200:{description:Undocumented Response,content:{application/json:{schema:{type:object}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Payment,security:,parameters:{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}}}},/dnapayment/success:{post:{summary:Save Dna payment response,description:Used by Dna Payments to send the payment response (Webhook),requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/DnaPaymentSuccess},examples:{Example 1:{value:{id:123456789,accountId:ACC123XYZ,amount:1500,authDateTimeUTC:2024-01-04T12:00:00Z,currency:USD,errorCode:0,invoiceId:INV789456123,message:Payment Successful,rrn:RRN123456789,settled:true,signature:SignatureString,success:true,authCode:AuthCode123,avsHouseNumberResult:Match,avsPostcodeResult:Match,cardExpiryDate:12/26,cardholderName:John Doe,cardIssuingCountry:USA,cardPanStarred:**** **** **** 1234,cardSchemeId:Scheme123,cardSchemeName:Visa,cardTokenId:Token123456,charitableDonation:100,cscResult:Match,optomanyTerminalId:Terminal123,payerAuthenticationResult:Authenticated,paymentMethod:Credit Card,responseCode:00,schemeReferenceData:ReferenceData,threeDS:{acsTransactionId:ACS123456789,cardholderAuthenticationStatus:Y,cardholderAuthenticationValue:AuthenticationValue,dsTransactionId:DSTransaction123,eci:05,mpiTransactionId:MPITransaction123,transactionStatusReason:Successful Authentication,type:3DSecure,version:2.1.0,xid:XID123456789}}}}}}},responses:{200:{description:Payment saved successfully,headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Payment,security:,parameters:{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}}}},/interbacs/signup/complete/{id}:{get:{summary:Save Interbacs signup response,description:Interbacs send notification of Direct Debit signup with the following format,parameters:{in:path,name:id,required:true,schema:{type:string},description:Cart ID},{in:query,name:fullname,required:true,schema:{type:string},description:Account Name},{in:query,name:ddamount,required:true,schema:{type:number},description:Amount to be collected every year},{in:query,name:email,required:true,schema:{type:string},description:Email address},{in:query,name:reference,required:true,schema:{type:string},description:a reference that Interbacs generate},{in:query,name:ourn,required:true,schema:{type:string},description:Debit reference},{in:query,name:frequency,required:true,schema:{type:string,enum:Annually},description:Always ‘Annually’},{in:query,name:referersource,required:true,schema:{type:string},description:paymentRef submitted at the start of the journey},{in:query,name:postcode,required:true,schema:{type:string},description:Postcode},{in:query,name:giftaidvalue,required:true,schema:{type:number,minimum:0,maximum:0},description:Always ‘0.00’},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},responses:{200:{description:Signup saved successfully,headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},tags:Payment,security:}},/oauth2/token:{post:{requestBody:{required:true,content:{application/x-www-form-urlencoded:{schema:{type:object,properties:{grant_type:{type:string,enum:client_credentials},client_id:{type:string},client_secret:{type:string},scope:{type:string,description:Scopes for this token. Include \public_api/use\ if you wish to use this token with the API.}},required:grant_type,client_id,client_secret}}}},responses:{200:{description:Access tokens,content:{application/json:{schema:{type:object,properties:{access_token:{type:string},expires_in:{type:integer},token_type:{type:string,enum:bearer}}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},security:,tags:OAuth,parameters:{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}}}},/services/{id}/instances:{get:{summary:List service instances,description:Get a list of all service instances,operationId:listServiceInstances,tags:Information,security:{UserJWTAuth:},responses:{200:{$ref:#/components/responses/ServiceInstancesResponse}},parameters:{in:path,name:id,required:true,example:cairnryan-larne,description:Id of Service,schema:{type:string}},{in:query,name:status,required:false,example:active,schema:{enum:active,suspended,cancelled,locked,type:string}},{in:query,name:start_date,required:false,example:2024-06-04,schema:{format:date,type:string}},{in:query,name:end_date,required:false,example:2024-06-04,schema:{format:date,type:string}},{in:query,name:days_of_week,required:false,example:1,2,3,schema:{type:string},description:Comma separated list of days of the week (0-6)},{in:query,name:dates,required:false,schema:{maxItems:42,type:array,items:{format:date,type:string}},description:Comma separated list of dates to filter by,explode:false,example:2025-01-01,2025-01-02},{name:start_time,in:query,required:false,example:16:00,schema:{format:time,type:string}},{name:end_time,in:query,required:false,example:16:00,schema:{format:time,type:string}},{in:query,name:created_at_start,required:false,example:2025-02-01T17:30:00.123456Z,schema:{format:date,type:string}},{in:query,name:created_at_end,required:false,example:2025-02-01T17:30:00.123456Z,schema:{format:date,type:string}},{name:page,in:query,required:false,example:1,schema:{type:string},description:Request is paginated, this is the page number},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}}}},/services/{id}/instances/bulk-update:{post:{summary:Update / Create service instances,description:Bulk update service instances. Any instance in the payload without an ID will be created, and those that have an ID will cause the existing instance to be updated.,tags:Information,security:{UserJWTAuth:},requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/ServiceInstancePayload}}}},responses:{200:{description:Bulk update successful,content:{application/json:{schema:{$ref:#/components/schemas/ServiceInstanceBulkUpdateResponse}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}},400:{description:Invalid request body},403:{description:Invalid token}},parameters:{name:id,in:path,schema:{type:string},required:true},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}}}},/tickets/{id}/redemptions:{post:{operationId:createTicketRedemption,tags:Tickets,summary:Redeem a ticket,description:Record ticket redemptions by reference. This performs no validation, assuming that the client has validated the ticket.,parameters:{$ref:#/components/parameters/TicketIdAnyLevel},{$ref:#/components/parameters/HeaderXIdempotencyKey},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{required:true,content:{application/json:{schema:{$ref:#/components/schemas/TicketRedemptionInput}}}},security:{UserJWTAuth:},responses:{200:{description:Tickets,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/TicketV3}}}}}}}},/tickets/{id}/unredeem:{post:{operationId:unredeemTicket,tags:Tickets,summary:Un-redeem a ticket,description:Reverse the last redemption on a ticket.,parameters:{$ref:#/components/parameters/TicketIdAnyLevel},{$ref:#/components/parameters/HeaderXIdempotencyKey},{in:header,name:Authorization,required:false,schema:{type:string}},{in:header,name:As-User,required:false,schema:{type:string}},requestBody:{content:{application/json:{schema:{$ref:#/components/schemas/TicketUnredeemInput}}}},security:{UserJWTAuth:},responses:{200:{description:Unredeemed tickets,content:{application/json:{schema:{type:array,items:{$ref:#/components/schemas/TicketV3}}}}}}}}},tags:{name:Information,description:\nEndpoints used to retrieve information about the Expian system such as booking options, entities and more.\n },{name:Cart,description:Endpoints used to create and modify carts.},{name:Cart Extras,description:Endpoints used to check what extras are available for purchase for a given cart input.},{name:Payment,description:Payment provider specific endpoints.},{name:Orders,description:Endpoints used to create, search and modify orders.},{name:Order Upgrades,description:Endpoints used to upgrade orders.},{name:Check-in,description:\nA \check-in\ allows the API consumer to validate a reference and record redemptions against a subset of tickets related to that reference.\n\nExpian also provides separate lower-level endpoints for recording redemptions against a ticket (\POST /tickets/:id/redemptions\). Those differ to the \check-in\ functionality in that they provide no validation logic, being essentially CRUD operations.\n\nThe \check-in\ endpoints feature a few higher-level features compared to the raw \Ticket redemption\ endpoints:\n- References can be non-Expian references, in which case integrations are used to perform the validation.\n- Validation for Expian references is performed. This includes checks for:\n - Location\n - Attendees\n - Date\n - Ticket usage rules\n - Ticket expiry\n- Upgrade information is returned, allowing some invalid tickets to be adjusted to become valid for a fee.\n- Order IDs can be used as the \reference\, and the check-in logic will determine which booking in the order is most relevant, and use the tickets for just that booking to check in.\n- The attendees list optionally provided by the API consumer can be used to redeem a subset of tickets in a booking.\n },{name:Webhooks,description:\nWebhooks can be configured to be called when certain events occur in the Expian system.\n\nThey are currently configured manually by Expians support team, and can be secured via an API key or a bearer token.\n },components:{securitySchemes:{UserJWTAuth:{in:header,name:Authorization,type:apiKey},OrderAuthorizer:{in:header,name:Authorization,type:apiKey}},parameters:{HeaderAcceptLanguage:{name:Accept-Language,in:header,required:false,description:The desired language for the response, as defined in the Admin Portal.,schema:{example:en-GB,type:string}},HeaderAsUser:{in:header,name:As-User,required:false,description:\nA user id that allows supporting APIs to respond with data as if that user was logged in. This\nis useful for example when a reservations staff user wants to place an order on behalf of a\ntrade partner or a customer with a membership.\n ,schema:{format:uuid,type:string},example:18ae5bee-3363-4b60-a057-1b9e3f826f5d},HeaderCartToken:{in:header,name:Cart-Token,required:false,description:Unique token that provides access to a view and modify a cart.,schema:{format:uuid,type:string},example:1f3a36f3-e253-4134-98b9-a76695512144},HeaderMarketToken:{in:header,name:Market-Token,description:Unique token that provides one time access to private markets.,schema:{type:string},example:ef83a5ea-d4ab-4366-8d0f-a9fe0be6dd1a},HeaderXIdempotencyKey:{name:X-Idempotency-Key,in:header,required:false,description:A unique key to identify the request. If a request is made with the same key, the original response is returned, with no repeated side-effects.,schema:{format:uuid,type:string},example:1e7415c5-b670-4b2a-9982-e8743fce0f3c},PathMarketId:{in:path,name:marketId,required:true,example:eu,schema:{type:string}},QueryCartPreview:{name:preview,in:query,required:false,schema:{example:1,type:integer}},QueryChannel:{in:query,name:channel,required:false,description:\nA sales channel identifier. When not authenticated, this may overridden with a different channel based upon what the system determines so that a B2C user cannot spoof a different channel.\n\n### Built-in channels\n- **1:** Point of Sale (POS)\n- **2:** Website\n- **3:** Reservations portal\n- **4:** Online Travel Agent\n- **6:** Trade partner\n- **7:** App\n- **8:** Self-service\n ,example:3,schema:{type:integer}},QueryLocales:{in:query,name:locales,required:false,description:\nPopulates `locales` properties on all objects with localised values, including nested objects.\nThis allows for fetching multiple locales in one request.\n\nThe `Accept-Language` header must still be sent to determine the locale of the base information.\n ,schema:{maxItems:10,type:array,items:{pattern:^a-z{2}(-A-Z{2})?$,type:string}},example:en,fr-FR,explode:false},QueryPaginationPage:{in:query,name:page,required:false,schema:{minimum:1,type:integer},description:The page to get from the paginated results,example:2},QueryPaginationPerPage:{in:query,name:per-page,required:false,schema:{maximum:400,minimum:1,type:integer},description:The maximum number of items to return in each page,example:50},QueryReportFilterBookingDateEnd:{in:query,name:booking-date-end,required:false,schema:{type:string,format:date},description:The maximum booking date to include. This refers to the date that a booking was created - not the service date.,example:2022-01-28},QueryReportFilterBookingDateStart:{in:query,name:booking-date-start,required:false,schema:{type:string,format:date},description:The minimum booking date to include. This refers to the date that a booking was created - not the service date.,example:2022-01-21},QueryReportFilterChannels:{in:query,name:channels,required:false,schema:{type:string},description:A comma-separated list of sales channels. (1: POS, 2: Web, 3: Reservation, 4: OTA, 6: Trade, 7: App, 8: Self-service),example:2,3},QueryReportFilterMarkets:{in:query,name:markets,required:false,schema:{type:string},description:A comma-separated list of markets `id`s or `entity_id`s,example:int,de},QueryReportFilterProducts:{in:query,name:products,required:false,schema:{type:string},description:A comma-separated list of product `id`s or `entity_id`s,example:standard-travel,flexi-travel},QueryReportFilterServices:{in:query,name:services,required:false,schema:{type:string},description:A comma-separated list of service `id`s or `entity_id`s,example:london-manchester,manchester-london},QueryReportFilterStatuses:{in:query,name:statuses,required:false,schema:{type:string},description:A comma-separated list of order statuses,example:ordered,cancelled,amended},TicketIdAnyLevel:{name:id,in:path,description:ID of the ticket. This can also be a booking ID, an order ID, or a custom reference stored on any one of these levels. In those cases, all relevant tickets in the booking or order will be handled.,required:true,schema:{type:string}}},schemas:{BookingOption:{additionalProperties:false,type:object,properties:{currency:{type:string},options:{type:array,items:{additionalProperties:false,type:object,properties:{time_title:{anyOf:{description:The title of the option. This will be present when the \display_type\ is set to \title\, and allows the time slot to be named, like \Morning\ instead of \09:00 - 12:00\.,type:string,nullable:true},{type:null}},important_info:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{time_title:{anyOf:{description:The title of the option. This will be present when the \display_type\ is set to \title\, and allows the time slot to be named, like \Morning\ instead of \09:00 - 12:00\.,type:string,nullable:true},{type:null}},important_info:{anyOf:{type:string,nullable:true},{type:null}}},required:time_title,important_info}},nullable:true},timezone:{type:string},capacities:{anyOf:{additionalProperties:false,type:object,properties:{total:{type:integer},available:{type:integer},availableCapacityUnits:{type:integer},capacity_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},title:{type:string},capacity_units_max:{type:integer},capacity_units_available:{type:integer}},required:id,title,capacity_units_max,capacity_units_available}}},required:total,available,availableCapacityUnits,capacity_types,nullable:true},{type:null}},type:{enum:open,date,time,type:string},time_display:{enum:time,time-range,title,none,type:string,default:time,description:\nHow the options time should be displayed to the user in the UI, such\nas when they are making a selection, or viewing their booking, confirmation\nemail, or tickets.\n\nNote, this is relevant only for the _time_ display. The _date_ may be displayed\nregardless.\n\nThe options are:\n\n- **time** - Display the start time, like \09:00\.\n- **time-range** - Display the start and end time, like \09:00 - 12:00\.\n- **title** - Display a custom title configured on the time slot, like \Morning\.\n- **none** - Do not display anything. Useful if there is only 1 option, and the\n time is not important in the UI. If multiple options are available, this directive\n may be ignored, falling back to \time\ display.\n },is_all_day_event_ota:{type:boolean},start_date:{format:date-time,type:string},start_time:{type:string},duration:{description:Event or journey duration, represented in ISO 8601 format.,example:PT1H,PT2H30M,PT1H30M,type:string},end_date:{format:date-time,type:string},end_time:{type:string},product_id:{type:string},instance_id:{format:uuid,type:string,nullable:true},max_uses:{anyOf:{type:integer,nullable:true},{type:null}},legs:{type:array,items:{additionalProperties:false,type:object,properties:{important_info:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{important_info:{anyOf:{type:string,nullable:true},{type:null}}},required:important_info}},nullable:true},start:{format:date-time,type:string},end:{format:date-time,type:string},start_date:{format:date-time,type:string},start_time:{type:string},end_date:{format:date-time,type:string},end_time:{type:string},operator_type:{type:string},duration:{type:string},provisional:{type:boolean},operator_confirmed:{type:boolean},location:{additionalProperties:false,type:object,properties:{id:{type:string}},required:id},end_location:{additionalProperties:false,type:object,properties:{id:{type:string}},required:id},operator_reference:{anyOf:{type:string,nullable:true},{type:null}},stops:{type:array,items:{additionalProperties:false,type:object,properties:{start_date:{format:date-time,type:string},start_time:{type:string},end_date:{format:date-time,type:string},end_time:{type:string},location:{additionalProperties:false,type:object,properties:{id:{type:string}},required:id}},required:start_date,start_time,end_date,end_time,location}}},required:important_info,start,end,start_date,start_time,end_date,end_time,operator_type,duration,provisional,operator_confirmed,location,end_location,operator_reference,stops}},pricing:{additionalProperties:false,type:object,properties:{combo_id:{anyOf:{type:string,nullable:true},{type:null}},promo_id:{anyOf:{type:string,nullable:true},{type:null}},total:{type:integer},subtotal:{type:integer},discount:{type:integer},donation:{type:integer},ticket_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},qty:{type:integer},total:{type:integer},discount:{type:integer},subtotal:{type:integer},unit_donation:{type:integer},unit_price:{type:integer},pricing_rule_title:{anyOf:{description:The title of the pricing rule currently being applied to the ticket type.,type:string,nullable:true},{type:null}}},required:id,qty,total,discount,subtotal,unit_donation,unit_price,pricing_rule_title}}},required:combo_id,promo_id,total,subtotal,discount,donation,ticket_types},pricing_potential_best:{additionalProperties:false,type:object,properties:{combo_id:{anyOf:{type:string,nullable:true},{type:null}},promo_id:{anyOf:{type:string,nullable:true},{type:null}},total:{type:integer},subtotal:{type:integer},discount:{type:integer},donation:{type:integer}},required:combo_id,promo_id,total,subtotal,discount,donation},pricing_entire_selection:{additionalProperties:false,type:object,properties:{combo_id:{anyOf:{type:string,nullable:true},{type:null}},total:{type:integer},subtotal:{type:integer},discount:{type:integer},donation:{type:integer}},required:combo_id,total,subtotal,discount,donation},promos:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},pricing:{additionalProperties:false,type:object,properties:{combo_id:{anyOf:{type:string,nullable:true},{type:null}},promo_id:{anyOf:{type:string,nullable:true},{type:null}},total:{type:integer},subtotal:{type:integer},discount:{type:integer},donation:{type:integer},ticket_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},qty:{type:integer},total:{type:integer},discount:{type:integer},subtotal:{type:integer},unit_donation:{type:integer},unit_price:{type:integer},pricing_rule_title:{anyOf:{description:The title of the pricing rule currently being applied to the ticket type.,type:string,nullable:true},{type:null}}},required:id,qty,total,discount,subtotal,unit_donation,unit_price,pricing_rule_title}}},required:combo_id,promo_id,total,subtotal,discount,donation,ticket_types}},required:id,pricing}},combos:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},combo_index:{type:integer},entire_combo_pricing:{anyOf:{additionalProperties:false,type:object,properties:{subtotal:{type:integer},total:{type:integer},discount:{type:integer}},required:subtotal,total,discount,nullable:true},{type:null}},pricing:{additionalProperties:false,type:object,properties:{combo_id:{anyOf:{type:string,nullable:true},{type:null}},promo_id:{anyOf:{type:string,nullable:true},{type:null}},total:{type:integer},subtotal:{type:integer},discount:{type:integer},donation:{type:integer},ticket_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},qty:{type:integer},total:{type:integer},discount:{type:integer},subtotal:{type:integer},unit_donation:{type:integer},unit_price:{type:integer},pricing_rule_title:{anyOf:{description:The title of the pricing rule currently being applied to the ticket type.,type:string,nullable:true},{type:null}}},required:id,qty,total,discount,subtotal,unit_donation,unit_price,pricing_rule_title}}},required:combo_id,promo_id,total,subtotal,discount,donation,ticket_types}},required:id,combo_index,entire_combo_pricing,pricing}},status:{type:string}},required:time_title,important_info,timezone,capacities,type,time_display,is_all_day_event_ota,start_date,start_time,product_id,max_uses,legs,pricing,pricing_potential_best,pricing_entire_selection,promos,combos,status}},ticket_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},qty:{type:integer},title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},short_title:{type:string},short_description:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},short_title:{type:string},short_description:{anyOf:{type:string,nullable:true},{type:null}}},required:title,description,short_title,short_description}},nullable:true}},required:id,qty,title,description,short_title,short_description}},products:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},important_information:{type:string},whats_onboard:{type:string},ticket_redemption_instructions:{type:string},short_description:{anyOf:{type:string,nullable:true},{type:null}},category:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},important_information:{type:string},whats_onboard:{type:string},ticket_redemption_instructions:{type:string},short_description:{anyOf:{type:string,nullable:true},{type:null}},category:{anyOf:{type:string,nullable:true},{type:null}}},required:title,short_title,description,important_information,whats_onboard,ticket_redemption_instructions,short_description,category}},nullable:true},multi_usage_rules:{anyOf:{$ref:#/components/schemas/MultiUsageRules},{type:null}},type:{type:string},subtype:{anyOf:{type:string,nullable:true},{type:null}},donations_enabled:{type:boolean},donations_refundable:{type:boolean},donations_on_base_price:{type:boolean},giftaid_enabled:{type:boolean},giftaid_include_ticket_price:{type:boolean},image:{anyOf:{type:string,nullable:true},{type:null}},order:{type:integer},extensions:{$ref:#/components/schemas/EntityExtensions},booking_unit:{additionalProperties:false,type:object,properties:{type:{type:string},first_use_within:{anyOf:{additionalProperties:false,type:object,properties:{period:{anyOf:{type:string,nullable:true},{type:null}},type:{enum:period,end_of_day,period_ceil_month,type:string}},required:period,type,nullable:true},{type:null}}},required:type,first_use_within},capacity:{anyOf:{additionalProperties:false,type:object,properties:{allocation_strategy:{enum:automatic,manual,type:string}},required:allocation_strategy,nullable:true},{type:null}}},required:title,short_title,description,important_information,whats_onboard,ticket_redemption_instructions,short_description,category,multi_usage_rules,type,subtype,donations_enabled,donations_refundable,donations_on_base_price,giftaid_enabled,giftaid_include_ticket_price,image,order,extensions,booking_unit}}},promos:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},terms:{type:string},terms_url:{type:string},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},terms:{type:string},terms_url:{type:string}},required:title,short_title,description,terms,terms_url}},nullable:true},auto_apply:{type:boolean},max_sale_qty:{anyOf:{type:number,nullable:true},{type:null}},max_sale_period:{anyOf:{type:string,nullable:true},{type:null}},promo_code:{anyOf:{type:string,nullable:true},{type:null}},required_ticket_qty:{anyOf:{type:number,nullable:true},{type:null}},searchable:{type:boolean},target:{enum:item,cart,type:string},product_selection:{additionalProperties:false,type:object,properties:{discount_description:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{discount_description:{anyOf:{type:string,nullable:true},{type:null}}},required:discount_description}},nullable:true}},required:discount_description},addon_selection:{additionalProperties:false,type:object,properties:{discount_description:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{discount_description:{anyOf:{type:string,nullable:true},{type:null}}},required:discount_description}},nullable:true}},required:discount_description}},required:title,short_title,description,terms,terms_url,auto_apply,max_sale_qty,max_sale_period,promo_code,required_ticket_qty,searchable,target,product_selection,addon_selection}}},combos:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},terms:{type:string},terms_url:{type:string},short_description:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},terms:{type:string},terms_url:{type:string},short_description:{anyOf:{type:string,nullable:true},{type:null}}},required:title,short_title,description,terms,terms_url,short_description}},nullable:true},extensions:{$ref:#/components/schemas/EntityExtensions},product_selection:{type:array,items:{additionalProperties:false,type:object,properties:{discount_description:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{discount_description:{anyOf:{type:string,nullable:true},{type:null}}},required:discount_description}},nullable:true}},required:discount_description}}},required:title,short_title,description,terms,terms_url,short_description,extensions,product_selection}}},locations:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},travel_instructions:{type:string},country:{anyOf:{type:string,nullable:true},{type:null}},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},travel_instructions:{type:string},country:{anyOf:{type:string,nullable:true},{type:null}}},required:title,description,travel_instructions,country}},nullable:true},address:{anyOf:{type:string,nullable:true},{type:null}},locode:{anyOf:{type:string,nullable:true},{type:null}},geo_position:{additionalProperties:false,type:object,properties:{latitude:{type:number},longitude:{type:number}},required:latitude,longitude},map_image:{anyOf:{type:string,nullable:true},{type:null}},timezone:{type:string},order:{type:integer},extensions:{$ref:#/components/schemas/EntityExtensions}},required:title,description,travel_instructions,country,address,locode,geo_position,map_image,timezone,order,extensions}}},from:{anyOf:{$ref:#/components/schemas/ImmutableEntityPublic},{type:null}},to:{anyOf:{$ref:#/components/schemas/ImmutableEntityPublic},{type:null}}},required:currency,options,ticket_types,products,promos,combos,locations},EntitlementSearch:{additionalProperties:false,type:object,properties:{product_id:{type:string},order_reference:{type:string},membership_id:{type:string},lead_customer_name:{type:string},customers:{anyOf:{type:array,items:{type:object,properties:{firstname:{type:string},lastname:{type:string},extensions:{$ref:#/components/schemas/EntityExtensions}},required:firstname,lastname,extensions},nullable:true},{type:null}},status:{enum:active,cancelled,suspended,expired,active_awaiting_renewal,expired_awaiting_renewal,type:string},order_placed:{format:date-time,type:string},channel:{type:integer},expiry_date:{format:date-time,type:string},last_issued:{format:date-time,type:string},last_printed:{format:date-time,type:string},gift_aid:{type:integer},upgrade_or_downgrade:{enum:upgrade,downgrade,type:string},scheduled_upgrade_or_downgrade:{enum:upgrade,downgrade,type:string},do_not_renew:{type:boolean},media_identifier:{type:string},subtype:{enum:membership,patron,type:string},payment_type:{enum:direct_debit,card,type:string},renewal_date:{anyOf:{format:date-time,type:string,nullable:true},{type:null}},location:{anyOf:{type:string,nullable:true},{type:null}},amended_at:{anyOf:{format:date-time,type:string,nullable:true},{type:null}}},required:product_id,order_reference,membership_id,lead_customer_name,customers,status,order_placed,channel,expiry_date,last_issued,last_printed,gift_aid,upgrade_or_downgrade,scheduled_upgrade_or_downgrade,do_not_renew,media_identifier,subtype,payment_type,renewal_date,location,amended_at},EntitlementTermSearch:{type:object,properties:{adult_count:{type:number},entitlement_id:{type:string},order_id:{type:string},valid_from:{type:string},expiry_date:{type:string},term_status:{type:string},entitlement_status:{type:string},media_identifier:{type:string},order_revision:{type:string},renewal_type:{type:string},term_created_at:{type:string},include_giftaid:{type:boolean},payment_type:{type:string},source:{type:string},sales_location_name:{type:string},sales_location_entity_id:{type:string},scheduled_change:{type:boolean},customer_firstname:{type:string},customer_lastname:{type:string},customer_email:{type:string},address_postcode:{type:string},customers:{type:array,items:{type:object,properties:{firstname:{type:string},lastname:{type:string},extensions:{type:object,properties:{member_type:{enum:adult,child,type:string},member_dob:{type:string},member_index:{type:number}},required:member_type,member_dob,member_index}},required:firstname,lastname,extensions}},last_issued:{anyOf:{format:date-time,type:string,nullable:true},{type:null}},last_printed:{anyOf:{format:date-time,type:string,nullable:true},{type:null}},product_name:{type:string},upgrade_or_downgrade:{anyOf:{enum:upgrade,downgrade,type:string,nullable:true},{type:null}},do_not_renew:{anyOf:{type:string,nullable:true},{type:null}}},required:adult_count,entitlement_id,order_id,valid_from,expiry_date,term_status,media_identifier,order_revision,term_created_at,scheduled_change,customer_firstname,customer_lastname,customer_email,last_issued,last_printed,product_name,upgrade_or_downgrade,do_not_renew},SalesInfoInput:{description:Information about the location and shift of the sale. Used by the POS.,additionalProperties:false,type:object,properties:{device_id:{anyOf:{description:The device ID that was used to place the order.,type:string,nullable:true},{type:null}},sales_location:{anyOf:{type:object,properties:{id:{description:The location where this order was placed.,type:string}},required:id,nullable:true},{type:null}},sales_sub_location:{anyOf:{type:object,properties:{id:{description:The sub-location where this order was placed.,type:string}},required:id,nullable:true},{type:null}},sales_shift_id:{anyOf:{description:\nGenerated by the POS to start a sales shift.\nIt is expected that any orders placed on the device until the shift is ended will send this property with the same value.\n ,type:string,nullable:true},{type:null}}}},CartAllowedPaymentMethods:{type:array,items:{anyOf:{title:Payment methods,type:object,properties:{method:{enum:internal_cash,internal_credit,internal_invoice,internal_pay_on_arrival,internal_deferred_refund,sagepay_card,dna_payments,interbacs_direct_debit,barclaycard_smartpay_fuse,stripe,type:string}},required:method},{title:NetsEasy,type:object,properties:{method:{enum:nets_easy,type:string},checkoutKey:{type:string},embeddedCheckoutUrl:{type:string}},required:method,checkoutKey,embeddedCheckoutUrl},{title:Sagepay,type:object,properties:{method:{enum:sagepay_card,type:string},embeddedCheckoutUrl:{type:string}},required:method,embeddedCheckoutUrl},{title:DnaPayments,type:object,properties:{method:{enum:dna_payments,type:string},embeddedCheckoutUrl:{type:string}},required:method,embeddedCheckoutUrl},{title:External,type:object,properties:{method:{enum:internal_generic,type:string},options:{type:array,items:{type:object,properties:{value:{type:string},label:{type:string},channels:{type:array,items:{type:number}}},required:value,label,channels}},referenceRequired:{type:boolean}},required:method,referenceRequired}}},CartPaymentInput:{type:object,allOf:{type:object,properties:{sales_info:{$ref:#/components/schemas/SalesInfoInput}}},{anyOf:{title:Other payments or refunds,description:\nSubmit payment information for all other cases apart from NetsEasy, SagePay and World Pay\nor handle refunds regardless of the payment method.\n ,additionalProperties:false,type:object,properties:{method:{enum:mixed,type:string},payments:{description:Passing an empty `payments` array will trigger the refund auto-allocation flow,type:array,items:{anyOf:{$ref:#/components/schemas/PaymentInternalInput},{$ref:#/components/schemas/RefundInput}}}},required:method,payments},{title:NetsEasy,additionalProperties:false,type:object,properties:{method:{enum:nets_easy,type:string},paymentId:{description:Payment id received by the Nets Easy checkout process.,type:string}},required:method,paymentId},{title:SagePay,additionalProperties:false,type:object,properties:{method:{enum:sagepay_card,type:string},sessionDetails:{additionalProperties:false,type:object,properties:{cardIdentifier:{type:string},merchantSessionKey:{type:string},billingAddress:{additionalProperties:false,type:object,properties:{line_1:{type:string},line_2:{anyOf:{type:string,nullable:true},{type:null}},city:{type:string},country:{description:Country Alpha-2 code e.g. `GB`, `FR`.,minLength:2,maxLength:2,type:string},post_code:{type:string},state:{anyOf:{type:string,nullable:true},{type:null}}},required:line_1,line_2,city,country,post_code,state},strongCustomerAuthenticationData:{type:object,properties:{browserLanguage:{description:The browser language received by calling `window.navigator.language`,type:string},browserUserAgent:{description:Browser user agent received by calling `window.navigator.userAgent`,type:string},browserTZ:{type:number},browserScreenWidth:{type:number},browserScreenHeight:{type:number},browserColorDepth:{type:number},browserJavaEnabled:{type:boolean}},required:browserLanguage,browserUserAgent,browserTZ,browserScreenWidth,browserScreenHeight,browserColorDepth,browserJavaEnabled}},required:cardIdentifier,merchantSessionKey,billingAddress,strongCustomerAuthenticationData}},required:method,sessionDetails},{title:DnaPayment,additionalProperties:false,type:object,properties:{method:{enum:dna_payments,type:string},cartVersion:{type:number}},required:method,cartVersion},{title:BarclaycardSmartpayFuse,additionalProperties:false,type:object,properties:{method:{enum:barclaycard_smartpay_fuse,type:string},orderId:{description:Order id.,type:string}},required:method,orderId}}},CartPayment:{anyOf:{title:Payment,type:object,properties:{payments:{type:array,items:{title:Transaction,type:object,properties:{payment_id:{type:number},uuid:{type:string},order_id:{type:string},order_revision:{format:uuid,type:string},quote_id:{anyOf:{type:string,nullable:true},{type:null}},user_id:{anyOf:{type:string,nullable:true},{type:null}},user_email:{anyOf:{type:string,nullable:true},{type:null}},first_name:{anyOf:{type:string,nullable:true},{type:null}},last_name:{anyOf:{type:string,nullable:true},{type:null}},country:{anyOf:{type:string,nullable:true},{type:null}},method:{type:string},source:{type:string},provider_reference:{type:string},base_value:{type:number},cleared_value:{type:number},refunded_value:{type:number},refundable_value:{type:number},vat_value:{type:number},currency:{type:string},timestamp:{format:date-time,type:string},card_expiry_date:{type:string},card_last_4_digits:{type:string},card_type:{type:string},details:{description:Payment details returned by the provider when recording the payment,type:object},created_at:{format:date-time,type:string}},required:payment_id,uuid,order_id,order_revision,quote_id,user_id,user_email,first_name,last_name,country,method,source,provider_reference,base_value,cleared_value,refunded_value,refundable_value,vat_value,currency,timestamp,card_expiry_date,card_last_4_digits,card_type,details,created_at}},order:{anyOf:{type:object,allOf:{$ref:#/components/schemas/DecoratedBookingContainer},{additionalProperties:false,type:object,properties:{type:{enum:order,type:string},expiry_date:{type:null}},required:type,expiry_date},nullable:true},{type:null}}},required:payments,order},{title:No payments to process,additionalProperties:false,type:object,properties:{note:{enum:No new payments processed.,type:string},payments:{maxItems:0,default:,type:array,items:{type:object,properties:{}}},order:{anyOf:{type:object,allOf:{$ref:#/components/schemas/DecoratedBookingContainer},{additionalProperties:false,type:object,properties:{type:{enum:order,type:string},expiry_date:{type:null}},required:type,expiry_date},nullable:true},{type:null}}},required:note,payments,order},{description:\nThis response is returned if 3DS checks need to be completed as part of the payment.\n\nIt is currently used for SagePay payments.\n ,title:Payment with 3DS,type:object,properties:{status:{enum:3d-secure-authentication-required,type:string},redirectIframeHTML:{description:Markup that needs to be injected to the browser in order to complete the payment,type:string}},required:status,redirectIframeHTML}},CommonPriceChange:{additionalProperties:false,type:object,properties:{all_capacity_options:{type:boolean},all_ticket_types:{type:boolean},capacity_option_id:{anyOf:{type:string,nullable:true},{type:null}},channel:{anyOf:{type:number,nullable:true},{type:null}},end_location_id:{anyOf:{type:string,nullable:true},{type:null}},location_id:{anyOf:{type:string,nullable:true},{type:null}},market_id:{anyOf:{type:string,nullable:true},{type:null}},ticket_type_id:{anyOf:{type:string,nullable:true},{type:null}},type:{enum:increment_percent,increment_fixed,set_fixed,increment_percent_diff,type:string},value:{type:number},all_addon_options:{type:boolean},addon_option_id:{anyOf:{type:string,nullable:true},{type:null}}},required:value},CommonRule:{additionalProperties:false,type:object,properties:{channels:{type:array,items:{type:number}},date:{$ref:#/components/schemas/CommonRuleDate},markets:{type:array,items:{$ref:#/components/schemas/Market}},requires_entitlement:{default:false,type:boolean}},required:channels,date,markets,requires_entitlement},CommonRuleDate:{additionalProperties:false,type:object,properties:{start_date:{anyOf:{type:string,nullable:true},{type:null}},start_time:{anyOf:{type:string,nullable:true},{type:null}},end_date:{anyOf:{type:string,nullable:true},{type:null}},end_time:{anyOf:{type:string,nullable:true},{type:null}},before_offset_from_now:{anyOf:{description:Duration string in ISO format,type:string,nullable:true},{type:null}},day_of_week:{anyOf:{type:array,items:{description:Day of week starting from 0 (Sunday) leading up to 6 (Saturday),type:number},nullable:true},{type:null}}}},ComboLocale:{additionalProperties:false,type:object,properties:{title:{type:string}},required:title},LocationLocale:{additionalProperties:false,type:object,properties:{title:{type:string},description:{type:string},travel_instructions:{type:string},country:{type:string}},required:title,description,travel_instructions,country},LocationPublic:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string},created_at:{format:date-time,type:string}},required:id,entity_id,entity_revision_id,created_at},{additionalProperties:false,type:object,properties:{address:{anyOf:{type:string,nullable:true},{type:null}},locode:{type:string},geo_position:{additionalProperties:false,type:object,properties:{latitude:{type:number},longitude:{type:number}},required:latitude,longitude},timezone:{type:string},extensions:{$ref:#/components/schemas/EntityExtensions},code:{type:string,nullable:true},order:{type:integer,nullable:true},transfers:{type:array,items:{$ref:#/components/schemas/LocationTransfer},nullable:true},map_image:{type:null},sub_locations:{type:array,items:{$ref:#/components/schemas/SubLocationPublic}},analytics_item_id:{anyOf:{type:string,nullable:true},{type:null}}},required:locode,geo_position,timezone,extensions,map_image,sub_locations,analytics_item_id},{$ref:#/components/schemas/LocationLocale}},LocationTransfer:{additionalProperties:false,type:object,properties:{duration:{type:string},location:{type:object,properties:{entity_id:{type:string}},required:entity_id}},required:duration,location},SubLocationLocale:{additionalProperties:false,type:object,properties:{title:{type:string},description:{type:string}},required:title,description},SubLocationLocation:{additionalProperties:false,type:object,properties:{entity_id:{type:string},entity_revision_id:{type:string,nullable:true}},required:entity_id},SubLocationPublic:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string},created_at:{format:date-time,type:string}},required:id,entity_id,entity_revision_id,created_at},{additionalProperties:false,type:object,properties:{location:{$ref:#/components/schemas/SubLocationLocation},permissions:{type:array,items:{type:string}}},required:location,permissions},{$ref:#/components/schemas/SubLocationLocale}},Market:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string},extensions:{$ref:#/components/schemas/EntityExtensions},currencies:{minItems:1,maxItems:1,type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string}},required:id}},locales:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string}},required:id}},is_private:{type:boolean},gtm_enabled:{type:boolean},gtm_analytic_tag_id:{type:string,nullable:true},gtm_analytic_auth:{type:string,nullable:true},gtm_analytic_preview:{type:string,nullable:true}},required:title,extensions,currencies,locales,is_private,gtm_enabled}},MultiUsageRules:{additionalProperties:false,type:object,properties:{max_uses:{anyOf:{type:number,nullable:true},{type:null}},active_period:{additionalProperties:false,type:object,properties:{period:{anyOf:{description:Duration string in ISO format,type:string,nullable:true},{type:null}},type:{enum:period,end_of_day,period_ceil_month,type:string}},required:period,type}},required:max_uses,active_period},ProductLocale:{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{type:string},short_description:{type:string},terms:{type:string},terms_url:{type:string}},required:title,short_title},ProductPublic:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string},created_at:{format:date-time,type:string}},required:id,entity_id,entity_revision_id,created_at},{additionalProperties:false,type:object,properties:{status:{enum:active,suspended,type:string},type:{$ref:#/components/schemas/ProductType},subtype:{$ref:#/components/schemas/ProductSubtype},entitled:{anyOf:{additionalProperties:false,type:object,properties:{additional_customer_details:{type:array,items:{additionalProperties:false,type:object,properties:{id:{enum:child,adult,senior,type:string},max_amount:{type:number}},required:id,max_amount}},promos:{type:array},limits:{type:array},renewal_window_after:{description:The time after the entitlement expiration date that entitlement can be renewed before becoming permanently expired, in ISO 8601 duration format,example:P0D,type:string},renewal_window_before:{description:The time before the entitlement expiration date that entitlement can be renewed, in ISO 8601 duration format,example:P0D,type:string}},required:additional_customer_details,promos,limits,renewal_window_after,renewal_window_before,nullable:true},{type:null}},booking_unit:{$ref:#/components/schemas/BookingUnit},direction:{enum:fixed,any,type:string},extensions:{$ref:#/components/schemas/EntityExtensions},multi_usage_rules:{anyOf:{$ref:#/components/schemas/MultiUsageRules},{type:null}},pricing_rules:{additionalProperties:false,type:object,properties:{title:{type:string},conditions_date:{type:array,items:{$ref:#/components/schemas/CommonRuleDate}},price_adjustment:{type:array,items:{$ref:#/components/schemas/CommonPriceChange}},donations_values:{type:array,items:{$ref:#/components/schemas/CommonPriceChange}}},required:title,conditions_date,price_adjustment,donations_values},booking_fee_type:{enum:per_booking,per_ticket,type:string},booking_fee_refundable:{type:boolean},booking_fee_enabled:{type:boolean},booking_fee_per_ticket_type:{enum:all,payable_only,type:string},donations_enabled:{type:boolean},donations_refundable:{type:boolean},donations_on_base_price:{type:boolean},giftaid_enabled:{type:boolean},giftaid_include_ticket_price:{type:boolean},postage_fee_type:{enum:per_booking,per_ticket,type:string},postage_fee_enabled:{type:boolean},deposit_enabled:{type:boolean},deposit_type:{enum:per_booking,per_ticket,type:string},minimum_spend_enabled:{type:boolean},qty_limit_per_booking_type:{enum:none,ticket,capacity_unit,type:string},invalid_ticket_adjustment_enabled:{type:boolean},invalid_ticket_adjustment_period_before:{anyOf:{type:string,nullable:true},{type:null}},invalid_ticket_adjustment_period_after:{anyOf:{type:string,nullable:true},{type:null}},invalid_ticket_adjustment_calculate_difference:{type:object},invalid_ticket_adjustment_market_enabled:{type:object},max_sale_qty:{anyOf:{type:number,nullable:true},{type:null}},max_sale_period:{anyOf:{type:string,nullable:true},{type:null}},image:{type:string},reporting_code:{description:Optional code used for reporting purposes.,type:string},reporting_code_2:{description:Optional code used for reporting purposes.,type:string},order:{type:number},valid_from:{description:\nWhen are this products tickets valid from relative to the start or end time\n ,type:string},valid_to:{description:\nWhen are this products tickets valid until relative to the start or end time\n ,type:string},valid_to_reference:{enum:end,start,type:string,description:Reference point for the `valid_to` field}},required:status,type,entitled,booking_unit,direction,extensions,pricing_rules,booking_fee_type,booking_fee_refundable,booking_fee_enabled,booking_fee_per_ticket_type,donations_enabled,donations_refundable,donations_on_base_price,giftaid_enabled,giftaid_include_ticket_price,postage_fee_type,postage_fee_enabled,deposit_enabled,deposit_type,minimum_spend_enabled,qty_limit_per_booking_type,invalid_ticket_adjustment_enabled,invalid_ticket_adjustment_period_before,invalid_ticket_adjustment_period_after,invalid_ticket_adjustment_calculate_difference,invalid_ticket_adjustment_market_enabled,max_sale_qty,max_sale_period,valid_from,valid_to,valid_to_reference},{$ref:#/components/schemas/ProductLocale}},ProductV2Public:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string},created_at:{format:date-time,type:string}},required:id,entity_id,entity_revision_id,created_at},{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string},created_at:{type:string},important_information:{type:string},whats_onboard:{type:string},ticket_redemption_instructions:{type:string},category:{anyOf:{type:string,nullable:true},{type:null}},status:{enum:active,suspended,type:string},type:{$ref:#/components/schemas/ProductType},subtype:{$ref:#/components/schemas/ProductSubtype},extensions:{$ref:#/components/schemas/EntityExtensions},image:{anyOf:{type:string,nullable:true},{type:null}},reporting_code:{anyOf:{type:string,nullable:true},{type:null}},reporting_code_2:{anyOf:{type:string,nullable:true},{type:null}},order:{type:number},services:{type:array,items:{additionalProperties:false,type:object,properties:{entity_id:{type:string},last_revision_id:{type:string}},required:entity_id,last_revision_id}}},required:id,entity_id,entity_revision_id,created_at,important_information,whats_onboard,ticket_redemption_instructions,category,status,type,extensions,image,reporting_code,reporting_code_2,services},{$ref:#/components/schemas/ProductLocale}},ProductSubtype:{anyOf:{enum:event,route,membership,patron,voucher,admission,type:string,nullable:true},{type:null}},ProductType:{enum:event,route,entitlement,type:string},ServiceLocale:{additionalProperties:false,type:object,properties:{title:{type:string}},required:title},TicketType:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{order:{type:number},limit_per_booking:{anyOf:{description:Maximum quantity for ticket type allowed to be purchased for a single booking. Null means unlimited.,type:number,nullable:true},{type:null}},mandatory_companions_match_quantity:{default:false,description:Enforce the quantity of mandatory companions to match the quantity of the ticket type. E.g. a selection of 2 child tickets requires 2 adult tickets to be selected.,type:boolean},extensions:{$ref:#/components/schemas/EntityExtensions},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},short_description:{anyOf:{type:string,nullable:true},{type:null}},description:{type:string}},required:title,short_title,description}},nullable:true},sales_limitations:{anyOf:{$ref:#/components/schemas/CommonRule},{type:null}},ota_type:{anyOf:{enum:ADULT,CHILD,SENIOR,YOUTH,INFANT,type:string,description:Strict OTA types to be used for integration with OTA partners.,nullable:true},{type:null}},min_age:{description:Minimum age for ticket type.,type:number},max_age:{description:Maximum age for ticket type.,type:number}},required:order,limit_per_booking,mandatory_companions_match_quantity,extensions,sales_limitations,ota_type},{$ref:#/components/schemas/TicketTypeLocale}},TicketTypeLocale:{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},short_description:{anyOf:{type:string,nullable:true},{type:null}},description:{type:string}},required:title,short_title,description},CapacityOptionLocale:{additionalProperties:false,type:object,properties:{title:{type:string},description:{type:string}},required:title,description},CapacityPlanLocale:{additionalProperties:false,type:object,properties:{}},PromotionLocale:{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{type:string},terms:{type:string},terms_url:{type:string}},required:title,short_title,terms,terms_url},PromotionPublic:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string},created_at:{format:date-time,type:string}},required:id,entity_id,entity_revision_id,created_at},{additionalProperties:false,type:object,properties:{assets:{type:array,items:{type:string}},auto_apply:{type:boolean},max_sale_qty:{anyOf:{type:number,nullable:true},{type:null}},max_sale_period:{anyOf:{type:string,nullable:true},{type:null}},max_sale_target:{enum:booking,ticket,type:string},promo_code:{anyOf:{type:string,nullable:true},{type:null}},required_ticket_qty:{anyOf:{type:number,nullable:true},{type:null}},searchable:{type:boolean},target:{enum:item,cart,type:string},product_selection:{additionalProperties:false,type:object,properties:{ticket_qty:{additionalProperties:false,type:object,properties:{min:{default:0,type:number},max:{type:number}},required:min},conditions_ticket_types:{type:array,items:{additionalProperties:false,type:object,properties:{excluded:{type:boolean},min:{type:number},max:{type:number},apply_qty:{type:number},ticket_type_ids:{type:array,items:{format:uuid,type:string}},market_id:{format:uuid,type:string}},required:market_id}},repeat_promotion:{default:false,type:boolean},product_options:{type:array,items:{additionalProperties:false,type:object,properties:{entity_id:{format:uuid,type:string},last_revision_id:{format:uuid,type:string}},required:entity_id,last_revision_id}},price_adjustment:{type:array,items:{$ref:#/components/schemas/CommonPriceChange}},conditions:{additionalProperties:false,type:object,properties:{date:{type:array,items:{$ref:#/components/schemas/CommonRuleDate}},repeat_promotion:{default:false,type:boolean},ticket_qty:{additionalProperties:false,type:object,properties:{min:{default:0,type:number},max:{type:number}},required:min},ticket_types:{type:array,items:{additionalProperties:false,type:object,properties:{excluded:{type:boolean},min:{type:number},max:{type:number},apply_qty:{type:number},ticket_type_ids:{type:array,items:{format:uuid,type:string}},market_id:{format:uuid,type:string}},required:market_id}}},required:date,repeat_promotion,ticket_qty,ticket_types}},required:ticket_qty,conditions_ticket_types,repeat_promotion,product_options,price_adjustment,conditions},addon_selection:{additionalProperties:false,type:object,properties:{addon_option_qty:{additionalProperties:false,type:object,properties:{min:{default:0,type:number},max:{type:number}},required:min},conditions_addon_options:{type:array,items:{additionalProperties:false,type:object,properties:{excluded:{type:boolean},min:{type:number},max:{type:number},apply_qty:{type:number},addon_options_ids:{type:array,items:{format:uuid,type:string}},market_id:{format:uuid,type:string}},required:market_id}},repeat_promotion:{default:false,type:boolean},addon_options:{type:array,items:{additionalProperties:false,type:object,properties:{entity_id:{format:uuid,type:string},last_revision_id:{format:uuid,type:string}},required:entity_id,last_revision_id}},price_adjustment:{type:array,items:{$ref:#/components/schemas/CommonPriceChange}},conditions:{additionalProperties:false,type:object,properties:{date:{type:array,items:{$ref:#/components/schemas/CommonRuleDate}},repeat_promotion:{default:false,type:boolean},addon_option_qty:{additionalProperties:false,type:object,properties:{min:{default:0,type:number},max:{type:number}},required:min},addon_options:{type:array,items:{additionalProperties:false,type:object,properties:{excluded:{type:boolean},min:{type:number},max:{type:number},apply_qty:{type:number},addon_options_ids:{type:array,items:{format:uuid,type:string}},market_id:{format:uuid,type:string}},required:market_id}}},required:date,repeat_promotion,addon_option_qty,addon_options}},required:addon_option_qty,conditions_addon_options,repeat_promotion,addon_options,price_adjustment,conditions}},required:assets,auto_apply,max_sale_qty,max_sale_period,max_sale_target,required_ticket_qty,searchable,target},{$ref:#/components/schemas/PromotionLocale}},TermsLocale:{additionalProperties:false,type:object,properties:{title:{type:string}},required:title},TradePartnerCommissionGroup:{additionalProperties:false,type:object,properties:{terms:{description:Terms and conditions of commission group.,additionalProperties:false,type:object,properties:{entity_id:{type:string}},required:entity_id},product_selection:{description:Products eligible for purchase by trade partner.,type:array,items:{additionalProperties:false,type:object,properties:{product:{additionalProperties:false,type:object,properties:{entity_id:{type:string}},required:entity_id}},required:product}},commissions:{description:Commission settings for group.,type:array,items:{additionalProperties:false,type:object,properties:{rate:{description:Commission rate to apply.,type:integer},conditions:{description:Date conditions under which commission rate applies.,additionalProperties:false,type:object,properties:{start_date:{anyOf:{type:string,nullable:true},{type:null}},end_date:{anyOf:{type:string,nullable:true},{type:null}},start_time:{anyOf:{type:string,nullable:true},{type:null}},end_time:{anyOf:{type:string,nullable:true},{type:null}},before_offset_from_now:{anyOf:{type:string,nullable:true},{type:null}},day_of_week:{anyOf:{type:array,items:{type:integer},nullable:true},{type:null}}},nullable:true}},required:rate}},commission_date_type:{enum:transaction_date,service_date,type:string,description:Determines whether commission applies to transaction date or visit/travel date},access_type:{enum:portal,api,both,type:string,description:Type of access allowed for products in Commission Group}},required:terms,product_selection,commissions,commission_date_type,access_type},TradePartnerLocale:{additionalProperties:false,type:object,properties:{}},TradePartnerConfig:{additionalProperties:false,type:object,properties:{allow_donations:{type:boolean},hide_b2b_prices:{type:boolean}},required:allow_donations,hide_b2b_prices},UserEntitlements:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},type:{enum:membership,patron,type:string}},required:id,type}},UserTypes:{enum:customer,staff,api_client,staff_pos_only,type:string},CapacityOptionGroupLocale:{additionalProperties:false,type:object,properties:{title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}}},required:title},CustomFieldLocale:{additionalProperties:false,type:object,properties:{title:{description:Localised field title.,type:string},description:{description:Localised field description.,type:string},error_message:{description:Localised error message.,type:string},placeholder:{description:Localised placeholder text.,type:string}},required:title,description,error_message,placeholder},CustomFieldOption:{additionalProperties:false,type:object,properties:{value:{type:string},order:{type:number},locales:{description:\nAn array of all localisable properties, populated only when using the\n`locales` query parameter.\n ,type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{locale:{type:string}},required:locale},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title}},nullable:true}},required:value,order},CustomFieldGroupLocale:{additionalProperties:false,type:object,properties:{title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}}},required:title},Booking:{additionalProperties:false,type:object,properties:{id:{type:string},version:{type:integer},channel:{type:integer},redeemed:{type:boolean},product:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},type:{$ref:#/components/schemas/ProductType},subtype:{$ref:#/components/schemas/ProductSubtype},image:{anyOf:{format:uri,description:Image URL of the product.,type:string,nullable:true},{type:null}},extensions:{$ref:#/components/schemas/EntityExtensions},booking_fee_refundable:{type:boolean},category:{anyOf:{type:string,nullable:true},{type:null}},booking_unit:{$ref:#/components/schemas/BookingUnit},max_uses:{anyOf:{type:number,nullable:true},{type:null}},valid_from:{anyOf:{description:When are tickets valid from relative to the start of the booking. Formatted as ISO 8601 duration.,type:string,nullable:true},{type:null}},valid_to:{anyOf:{description:When are tickets valid until relative to either the end or start of the booking. Formatted as ISO 8601 duration.,type:string,nullable:true},{type:null}},valid_to_reference:{anyOf:{default:end,description:Whether the `valid_to` duration is relative to the start or end of the booking. Defaults to `end`.,type:string,nullable:true},{type:null}},giftaid_include_ticket_price:{type:boolean,nullable:true}},required:title,short_title,type,image,extensions,booking_fee_refundable,category,valid_from,valid_to,valid_to_reference}},services:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title}}},terms:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}}},required:title,description}},booked_unit:{$ref:#/components/schemas/BookingBookedUnit},pricing:{$ref:#/components/schemas/BookingPricing},title:{type:string},include_ticket_donations:{type:boolean},location:{anyOf:{$ref:#/components/schemas/BookingLocation},{type:null}},end_location:{anyOf:{$ref:#/components/schemas/BookingLocation},{type:null}},booking_note:{anyOf:{type:string,nullable:true},{type:null}},supplier_note:{anyOf:{type:string,nullable:true},{type:null}},notes:{type:array,items:{$ref:#/components/schemas/BookingNote}},reference:{anyOf:{type:string,nullable:true},{type:null}},external_agent_reference:{anyOf:{type:string,nullable:true},{type:null}},external_barcode:{anyOf:{type:string,nullable:true},{type:null}},status:{$ref:#/components/schemas/BookingStatus},commission_rate:{$ref:#/components/schemas/BookingCommission},fee_free_period_end:{anyOf:{type:string,nullable:true},{type:null}},next_time_amendment_free:{description:\nWhether the next amendment to the booking time is free.\n\nThis may be `true` after a booking has been rescheduled. It allows the customer\nto change the booking time without incurring any extra fees, or having their\nbooking recalculated in any way.\n\nChanges to any other aspect of the booking will opt out of this behaviour.\n ,type:boolean},ticket_types:{type:array,items:{$ref:#/components/schemas/BookingTicketType}},addons:{type:array,items:{$ref:#/components/schemas/Addon}},promos:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/BookingPromo},{type:object,properties:{used_entitlement_id:{description:The entitlement ID that was used to apply this promo,type:string},discount_quantities:{description:The quantities of tickets or add-ons ids that were discounted by this promo,type:array,items:{anyOf:{type:object,properties:{ticket_type_id:{type:string},qty:{type:integer}},required:ticket_type_id,qty},{type:object,properties:{qty:{type:integer},addon_option_id:{type:string}},required:qty,addon_option_id}}}}}}},combos:{type:array,items:{$ref:#/components/schemas/BookingCombo}},ancillary:{type:array,minItems:0,maxItems:0},menu:{type:array,minItems:0,maxItems:0},line_items:{type:array,items:{$ref:#/components/schemas/BookingLineItem}},line_items_diff:{description:The difference between the bookings current line items, and the line items before the last change. For example, in the case of cancellations, the quantities will be negative.,type:array,items:{$ref:#/components/schemas/BookingLineItem}},capacity_allocation:{type:array,items:{$ref:#/components/schemas/CartCapacityOption}},created_at:{format:date-time,type:string},updated_at:{format:date-time,type:string},venue:{anyOf:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title},nullable:true},{type:null}},ticket_ids:{type:array,items:{type:string}},tickets:{type:array,items:{$ref:#/components/schemas/BookingTicket}},ignored_unavailability:{type:boolean},unavailability_reason:{type:string,nullable:true},extensions:{$ref:#/components/schemas/EntityExtensions},fees:{type:array,items:{additionalProperties:false,type:object,properties:{type:{enum:booking_fee,cancellation,amendment,discount_lost,check_in_adjustment,postage_fee,type:string},amount:{type:integer},applied:{type:boolean},paid:{type:boolean}},required:type,amount,applied,paid}},legs:{anyOf:{type:array,items:{$ref:#/components/schemas/BookingLeg},nullable:true},{type:null}},deposit_resolution:{anyOf:{$ref:#/components/schemas/DepositResolution},{type:null}},entitlement:{anyOf:{$ref:#/components/schemas/BookingEntitlement},{type:null}},entitlements_applied:{anyOf:{type:array,items:{type:object,properties:{entitlement_id:{type:string},entitlement_type:{enum:membership,patron,voucher,type:string},entitlement_product_entity_id:{anyOf:{type:string,nullable:true},{type:null}},applied_quantities:{type:array,items:{type:object,properties:{entity_id:{type:string},entity_type:{enum:ticket,addon,type:string},id:{type:string},qty:{type:integer},type:{enum:limit,discount,type:string}},required:entity_id,entity_type,id,qty,type}}},required:entitlement_id,entitlement_type,applied_quantities},nullable:true},{type:null}},capacity:{type:object,properties:{override_min_capacity:{type:boolean}},required:override_min_capacity,nullable:true},tickets_upgraded:{$ref:#/components/schemas/BookingTicketsUpgraded}},required:id,version,channel,redeemed,product,services,terms,booked_unit,pricing,title,include_ticket_donations,location,end_location,booking_note,supplier_note,notes,reference,external_agent_reference,external_barcode,status,fee_free_period_end,next_time_amendment_free,ticket_types,addons,promos,combos,ancillary,menu,line_items,line_items_diff,capacity_allocation,created_at,updated_at,venue,ticket_ids,tickets,ignored_unavailability,extensions,fees,legs,deposit_resolution},BookingBookedUnit:{type:object,allOf:{additionalProperties:false,type:object,properties:{time_title:{anyOf:{description:The title of the option. This will be present when the \display_type\ is set to \title\, and allows the time slot to be named, like \Morning\ instead of \09:00 - 12:00\.,type:string,nullable:true},{type:null}},time_display:{enum:time,time-range,title,none,type:string,default:time,description:\nHow the options time should be displayed to the user in the UI, such\nas when they are making a selection, or viewing their booking, confirmation\nemail, or tickets.\n\nNote, this is relevant only for the _time_ display. The _date_ may be displayed\nregardless.\n\nThe options are:\n\n- **time** - Display the start time, like \09:00\.\n- **time-range** - Display the start and end time, like \09:00 - 12:00\.\n- **title** - Display a custom title configured on the time slot, like \Morning\.\n- **none** - Do not display anything. Useful if there is only 1 option, and the\n time is not important in the UI. If multiple options are available, this directive\n may be ignored, falling back to \time\ display.\n },start_date:{format:date,type:string},start_time:{format:time,type:string},max_bookings_allowed:{anyOf:{type:number,nullable:true},{type:null}},booking_end_time:{anyOf:{type:string,nullable:true},{type:null}},skip_product_constraints:{description:When enabled CheckIns will be allowed even if they are scanned outside of the product time constraints,type:boolean}},required:time_title,time_display,start_date,start_time},{additionalProperties:false,type:object,properties:{skip_product_constraints:{type:boolean},end_date:{format:date,type:string},end_time:{format:time,type:string},duration:{description:Duration of the time slot, formatted as ISO 8601 duration.,type:string}}},{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:open,date,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:time,type:string},instance_id:{format:uuid,type:string},instance_root_entity_id:{format:uuid,type:string,nullable:true},segment_entity_id:{format:uuid,type:string,nullable:true},end_segment_entity_id:{format:uuid,type:string,nullable:true}},required:type,instance_id}}},BookingCombo:{type:object,allOf:{$ref:#/components/schemas/BookingPromo},{additionalProperties:false,type:object,properties:{extensions:{$ref:#/components/schemas/EntityExtensions},combo_lost:{type:boolean,nullable:true},discount_description:{type:string}},required:extensions,discount_description}},BookingComponentPricing:{additionalProperties:false,type:object,properties:{subtotal:{type:integer},discount:{type:integer},total:{type:integer},unit_price:{type:integer},vat:{type:integer},vat_rate:{type:number},donation:{type:integer},unit_donation:{type:integer},discount_qty:{type:integer}},required:subtotal,discount,total,unit_price,vat,vat_rate},BookingContainer:{additionalProperties:false,type:object,properties:{id:{type:string},revision:{format:uuid,type:string},reference:{anyOf:{type:string,nullable:true},{type:null}},currency:{minLength:3,maxLength:3,type:string},locale:{type:string},expiry_timer:{type:integer},market:{type:object,allOf:{additionalProperties:false,type:object,properties:{title:{type:string},extensions:{$ref:#/components/schemas/EntityExtensions}},required:title,extensions},{$ref:#/components/schemas/ImmutableEntityReference}},device_id:{anyOf:{description:The device ID that was used to place the order.,type:string,nullable:true},{type:null}},revision_sales_user:{anyOf:{description:\nThe user responsible for this revision of the order.\n- For an amendment performed by a Trade Partner on Trade Partner Portal, this will be a trade partner user\n- For an amendment performed by a customer on Customer Portal, this will be a customer user\n- For an amendment performed by a staff member on Reservations Portal, this will be a staff user\n ,type:object,properties:{id:{format:uuid,type:string}},required:id,nullable:true},{type:null}},revision_source:{description:\nThe source of the revision. For example, if the order was amended by a customer on the customer portal, this will be \b2c\.\n ,anyOf:{$ref:#/components/schemas/RequestSource},{type:null}},sales_user:{anyOf:{description:\nThe user who made this order. For POS orders this will be the logged in user.\nIn Reservations, this will allow orders placed on behalf of users to also record the staff user.\n ,type:object,properties:{id:{format:uuid,type:string}},required:id,nullable:true},{type:null}},customer_user:{anyOf:{description:\nThe B2C customer associated with this order\n\n- For b2c orders placed by a logged-in customer, this will contain the logged-in customer\n- For reservations using the \on-behalf-of\ feature, this will contain the impersonated customer\n- For POS orders, or reservations made by a staff without \on-behalf-of\, this will be null\n\nthis field is guaranteed to represent only the end customer if one is linked to the order\n ,type:object,properties:{id:{format:uuid,type:string}},required:id,nullable:true},{type:null}},sales_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},sales_sub_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},revision_sales_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},revision_sales_sub_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},sales_shift_id:{anyOf:{description:\nGenerated by the POS to start a sales shift.\nIt is expected that any orders placed on the device until the shift is ended will send this property with the same value.\n ,type:string,nullable:true},{type:null}},pricing:{$ref:#/components/schemas/BookingContainerPricing},customer:{$ref:#/components/schemas/Customer},customers:{type:array,items:{$ref:#/components/schemas/Customer}},billing_address:{anyOf:{$ref:#/components/schemas/BookingContainerAddress},{type:null}},shipping_address:{anyOf:{$ref:#/components/schemas/BookingContainerAddress},{type:null}},line_items:{type:array,items:{$ref:#/components/schemas/BookingLineItem}},line_items_diff:{description:The difference between the orders current line items, and the line items before the last change. For example, in the case of cancellations, the quantities will be negative.,type:array,items:{$ref:#/components/schemas/BookingLineItem}},delivery_method:{enum:pos,email,type:string,description:\nTicket delivery method. Options include:\n\n1. `\email\` - The customer will receive an email confirming their order, with tickets attached. For this, you must also provide the customers email under `order.customer.email`.\n2. `\pos` - No tickets are sent to the user - it is assumed that this has been handled already by the device that called the API, which may have immediately redeemed the tickets, or printed its own versions on site.\n },status:{$ref:#/components/schemas/BookingStatus},trade_partner:{anyOf:{additionalProperties:false,type:object,properties:{entity_id:{type:string},title:{type:string},id:{type:string,nullable:true}},required:entity_id,title,nullable:true},{type:null}},token:{format:uuid,type:string},token_expiry_date:{format:date-time,type:string},promo_code:{anyOf:{type:string,nullable:true},{type:null}},include_ticket_donations:{type:boolean},include_giftaid:{type:boolean,nullable:true},source:{$ref:#/components/schemas/RequestSource},tenant:{type:string},items:{type:array,items:{$ref:#/components/schemas/Booking}},promos:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/BookingPromo},{type:object,properties:{price_adjustment:{additionalProperties:false,type:object,properties:{type:{type:string},value:{type:number}},required:type,value},used_entitlement_id:{description:The entitlement ID that was used to apply this promo,type:string},discount_quantities:{description:The quantities of tickets or addon options that were discounted by this promo,type:array,items:{anyOf:{type:object,properties:{ticket_type_id:{type:string},qty:{type:integer}},required:ticket_type_id,qty},{type:object,properties:{qty:{type:integer},addon_option_id:{type:string}},required:qty,addon_option_id}}}},required:price_adjustment}}},addons:{type:array,items:{$ref:#/components/schemas/Addon}},pay_later:{description:\nHas the \pay later\ flow been initiated?\n\nThis is always `false` for orders, since the order has always already been paid for.\n ,type:boolean},awaiting_external_payment:{description:\nThis will be true only if the \external payment\ flow is initialised, which requires the correct user permissions.\nWhen true, Expian will trust an API caller with just the usual cart token (no elevated permissions) to confirm the order\nwith a payment reference that they define, trusting that the payment took place.\n ,type:boolean},payable_on_arrival:{description:\nThis marks that this order has been entered into the system and tickets generated, but still requires payment\nonce the order is scanned at the venue by the POS device, upon which the outstanding payable balance will need\nto be settled.\n ,type:boolean},pending_refund:{description:\nThis marks an order as needing a refund that cannot be automatically processed in the MyBookings page due to\neither missing payment methods or the payment methods not being sufficient to cover the full amount of the refund.\nThe refund will need to be processed manually by the customer support.\n ,type:boolean},deferred_payment_method:{description:\nThis marks the order as having a payment method that is not immediately processed, but is\ndeferred to a later date.\n\nCurrently, the only supported deferred payment method captured within this property is \invoice\.\n ,anyOf:{enum:invoice,type:string,nullable:true},{type:null}},user:{anyOf:{description:\nThe user this order is associated with. This may be different from the sales user who placed the order in cases of impersonation.\n ,type:object,properties:{id:{format:uuid,type:string},impersonated:{type:boolean}},required:id,impersonated,nullable:true},{type:null}},version:{type:integer},extensions:{$ref:#/components/schemas/EntityExtensions},created_at:{format:date-time,description:The time this order was originally paid for and completed. For carts, this is the time the cart was created.,type:string},revision_created_at:{format:date-time,description:The time this order revision was paid for and completed. It is used for financial reporting.,type:string},updated_at:{format:date-time,description:The time any detail in the the cart / order was last updated, which might not create a new revision if the change is only to metadata (such as adding a note).,type:string},has_issue:{type:boolean},issues:{type:array,items:{additionalProperties:false,type:object,properties:{reason:{type:string},raw_details:{nullable:true}},required:reason}},upsell_history:{type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{value:{type:integer},actioned_at:{format:date-time,type:string},id:{type:string}},required:value,actioned_at,id},{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:recommendation,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:check-in-adjustment,type:string},adjustments:{type:array,items:{$ref:#/components/schemas/CheckInAdjustment}}},required:type,adjustments}}}},linked_orders:{anyOf:{type:array,items:{$ref:#/components/schemas/OrderLinkInput},nullable:true},{type:null}},email_message:{anyOf:{description:A message to display at the top of the confirmation email to the customer. This is commonly used to display a reason for a reschedule.,type:string,nullable:true},{type:null}},send_printed_voucher:{description:\nThis marks if tickets should be sent by post mail to the customer.\n ,type:boolean},ticket_ids:{type:array,items:{type:string}},tickets:{type:array,items:{$ref:#/components/schemas/BookingTicket}}},required:id,revision,reference,currency,locale,expiry_timer,market,revision_source,pricing,customer,customers,billing_address,shipping_address,line_items,line_items_diff,delivery_method,status,trade_partner,token,token_expiry_date,promo_code,include_ticket_donations,source,tenant,items,promos,addons,pay_later,awaiting_external_payment,payable_on_arrival,pending_refund,deferred_payment_method,user,version,extensions,created_at,revision_created_at,updated_at,has_issue,issues,upsell_history,linked_orders,email_message,send_printed_voucher,ticket_ids,tickets},DecoratedBookingContainer:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},revision:{format:uuid,type:string},reference:{anyOf:{type:string,nullable:true},{type:null}},currency:{minLength:3,maxLength:3,type:string},locale:{type:string},expiry_timer:{type:integer},market:{type:object,allOf:{additionalProperties:false,type:object,properties:{title:{type:string},extensions:{$ref:#/components/schemas/EntityExtensions}},required:title,extensions},{$ref:#/components/schemas/ImmutableEntityReference}},device_id:{anyOf:{description:The device ID that was used to place the order.,type:string,nullable:true},{type:null}},revision_source:{description:\nThe source of the revision. For example, if the order was amended by a customer on the customer portal, this will be \b2c\.\n ,anyOf:{$ref:#/components/schemas/RequestSource},{type:null}},customer_user:{anyOf:{description:\nThe B2C customer associated with this order\n\n- For b2c orders placed by a logged-in customer, this will contain the logged-in customer\n- For reservations using the \on-behalf-of\ feature, this will contain the impersonated customer\n- For POS orders, or reservations made by a staff without \on-behalf-of\, this will be null\n\nthis field is guaranteed to represent only the end customer if one is linked to the order\n ,type:object,properties:{id:{format:uuid,type:string}},required:id,nullable:true},{type:null}},sales_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},sales_sub_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},revision_sales_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},revision_sales_sub_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},sales_shift_id:{anyOf:{description:\nGenerated by the POS to start a sales shift.\nIt is expected that any orders placed on the device until the shift is ended will send this property with the same value.\n ,type:string,nullable:true},{type:null}},pricing:{$ref:#/components/schemas/BookingContainerPricing},customer:{$ref:#/components/schemas/Customer},customers:{type:array,items:{$ref:#/components/schemas/Customer}},billing_address:{anyOf:{$ref:#/components/schemas/BookingContainerAddress},{type:null}},shipping_address:{anyOf:{$ref:#/components/schemas/BookingContainerAddress},{type:null}},line_items:{type:array,items:{$ref:#/components/schemas/BookingLineItem}},line_items_diff:{description:The difference between the orders current line items, and the line items before the last change. For example, in the case of cancellations, the quantities will be negative.,type:array,items:{$ref:#/components/schemas/BookingLineItem}},delivery_method:{enum:pos,email,type:string,description:\nTicket delivery method. Options include:\n\n1. `\email\` - The customer will receive an email confirming their order, with tickets attached. For this, you must also provide the customers email under `order.customer.email`.\n2. `\pos` - No tickets are sent to the user - it is assumed that this has been handled already by the device that called the API, which may have immediately redeemed the tickets, or printed its own versions on site.\n },status:{$ref:#/components/schemas/BookingStatus},trade_partner:{anyOf:{additionalProperties:false,type:object,properties:{entity_id:{type:string},title:{type:string},id:{type:string,nullable:true}},required:entity_id,title,nullable:true},{type:null}},token:{format:uuid,type:string},token_expiry_date:{format:date-time,type:string},promo_code:{anyOf:{type:string,nullable:true},{type:null}},include_ticket_donations:{type:boolean},include_giftaid:{type:boolean,nullable:true},source:{$ref:#/components/schemas/RequestSource},tenant:{type:string},promos:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/BookingPromo},{type:object,properties:{price_adjustment:{additionalProperties:false,type:object,properties:{type:{type:string},value:{type:number}},required:type,value},used_entitlement_id:{description:The entitlement ID that was used to apply this promo,type:string},discount_quantities:{description:The quantities of tickets or addon options that were discounted by this promo,type:array,items:{anyOf:{type:object,properties:{ticket_type_id:{type:string},qty:{type:integer}},required:ticket_type_id,qty},{type:object,properties:{qty:{type:integer},addon_option_id:{type:string}},required:qty,addon_option_id}}}},required:price_adjustment}}},addons:{type:array,items:{$ref:#/components/schemas/Addon}},pay_later:{description:\nHas the \pay later\ flow been initiated?\n\nThis is always `false` for orders, since the order has always already been paid for.\n ,type:boolean},awaiting_external_payment:{description:\nThis will be true only if the \external payment\ flow is initialised, which requires the correct user permissions.\nWhen true, Expian will trust an API caller with just the usual cart token (no elevated permissions) to confirm the order\nwith a payment reference that they define, trusting that the payment took place.\n ,type:boolean},payable_on_arrival:{description:\nThis marks that this order has been entered into the system and tickets generated, but still requires payment\nonce the order is scanned at the venue by the POS device, upon which the outstanding payable balance will need\nto be settled.\n ,type:boolean},pending_refund:{description:\nThis marks an order as needing a refund that cannot be automatically processed in the MyBookings page due to\neither missing payment methods or the payment methods not being sufficient to cover the full amount of the refund.\nThe refund will need to be processed manually by the customer support.\n ,type:boolean},deferred_payment_method:{description:\nThis marks the order as having a payment method that is not immediately processed, but is\ndeferred to a later date.\n\nCurrently, the only supported deferred payment method captured within this property is \invoice\.\n ,anyOf:{enum:invoice,type:string,nullable:true},{type:null}},version:{type:integer},extensions:{$ref:#/components/schemas/EntityExtensions},created_at:{format:date-time,description:The time this order was originally paid for and completed. For carts, this is the time the cart was created.,type:string},revision_created_at:{format:date-time,description:The time this order revision was paid for and completed. It is used for financial reporting.,type:string},updated_at:{format:date-time,description:The time any detail in the the cart / order was last updated, which might not create a new revision if the change is only to metadata (such as adding a note).,type:string},has_issue:{type:boolean},issues:{type:array,items:{additionalProperties:false,type:object,properties:{reason:{type:string},raw_details:{nullable:true}},required:reason}},upsell_history:{type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{value:{type:integer},actioned_at:{format:date-time,type:string},id:{type:string}},required:value,actioned_at,id},{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:recommendation,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:check-in-adjustment,type:string},adjustments:{type:array,items:{$ref:#/components/schemas/CheckInAdjustment}}},required:type,adjustments}}}},linked_orders:{anyOf:{type:array,items:{$ref:#/components/schemas/OrderLinkInput},nullable:true},{type:null}},email_message:{anyOf:{description:A message to display at the top of the confirmation email to the customer. This is commonly used to display a reason for a reschedule.,type:string,nullable:true},{type:null}},send_printed_voucher:{description:\nThis marks if tickets should be sent by post mail to the customer.\n ,type:boolean},ticket_ids:{type:array,items:{type:string}},tickets:{type:array,items:{$ref:#/components/schemas/BookingTicket}}},required:id,revision,reference,currency,locale,expiry_timer,market,revision_source,pricing,customer,customers,billing_address,shipping_address,line_items,line_items_diff,delivery_method,status,trade_partner,token,token_expiry_date,promo_code,include_ticket_donations,source,tenant,promos,addons,pay_later,awaiting_external_payment,payable_on_arrival,pending_refund,deferred_payment_method,version,extensions,created_at,revision_created_at,updated_at,has_issue,issues,upsell_history,linked_orders,email_message,send_printed_voucher,ticket_ids,tickets},{additionalProperties:false,type:object,properties:{items:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/Booking},{type:object,properties:{editable:{type:boolean},editable_reason:{description:Reason why the item is not editable,type:string}},required:editable,editable_reason}}},editable:{type:boolean},draft_changes_pending:{type:boolean},draft_changes_pay_later:{type:boolean},draft_changes_expiry_date:{anyOf:{format:date,type:string,nullable:true},{type:null}},ordered:{type:boolean},user:{anyOf:{type:object,properties:{id:{format:uuid,type:string},impersonated:{type:boolean},full_name:{type:string}},required:id,impersonated,full_name},{type:null}},sales_user:{anyOf:{type:object,properties:{id:{format:uuid,type:string},full_name:{type:string},department:{type:string}},required:id,full_name},{type:null}},customer_user:{anyOf:{type:object,properties:{id:{format:uuid,type:string},full_name:{type:string},department:{type:string}},required:id,full_name},{type:null}},revision_sales_user:{anyOf:{type:object,properties:{id:{format:uuid,type:string},full_name:{type:string},department:{type:string}},required:id,full_name},{type:null}}},required:items,editable,draft_changes_pending,draft_changes_pay_later,draft_changes_expiry_date,ordered,user,sales_user,customer_user,revision_sales_user}},DecoratedWebhookBookingContainer:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},revision:{format:uuid,type:string},reference:{anyOf:{type:string,nullable:true},{type:null}},currency:{minLength:3,maxLength:3,type:string},locale:{type:string},expiry_timer:{type:integer},market:{type:object,allOf:{additionalProperties:false,type:object,properties:{title:{type:string},extensions:{$ref:#/components/schemas/EntityExtensions}},required:title,extensions},{$ref:#/components/schemas/ImmutableEntityReference}},device_id:{anyOf:{description:The device ID that was used to place the order.,type:string,nullable:true},{type:null}},revision_source:{description:\nThe source of the revision. For example, if the order was amended by a customer on the customer portal, this will be \b2c\.\n ,anyOf:{$ref:#/components/schemas/RequestSource},{type:null}},sales_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},sales_sub_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},revision_sales_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},revision_sales_sub_location:{anyOf:{$ref:#/components/schemas/MinimalPublicEntity},{type:null}},sales_shift_id:{anyOf:{description:\nGenerated by the POS to start a sales shift.\nIt is expected that any orders placed on the device until the shift is ended will send this property with the same value.\n ,type:string,nullable:true},{type:null}},pricing:{$ref:#/components/schemas/BookingContainerPricing},customer:{$ref:#/components/schemas/Customer},customers:{type:array,items:{$ref:#/components/schemas/Customer}},billing_address:{anyOf:{$ref:#/components/schemas/BookingContainerAddress},{type:null}},shipping_address:{anyOf:{$ref:#/components/schemas/BookingContainerAddress},{type:null}},line_items:{type:array,items:{$ref:#/components/schemas/BookingLineItem}},line_items_diff:{description:The difference between the orders current line items, and the line items before the last change. For example, in the case of cancellations, the quantities will be negative.,type:array,items:{$ref:#/components/schemas/BookingLineItem}},delivery_method:{enum:pos,email,type:string,description:\nTicket delivery method. Options include:\n\n1. `\email\` - The customer will receive an email confirming their order, with tickets attached. For this, you must also provide the customers email under `order.customer.email`.\n2. `\pos` - No tickets are sent to the user - it is assumed that this has been handled already by the device that called the API, which may have immediately redeemed the tickets, or printed its own versions on site.\n },status:{$ref:#/components/schemas/BookingStatus},trade_partner:{anyOf:{additionalProperties:false,type:object,properties:{entity_id:{type:string},title:{type:string},id:{type:string,nullable:true}},required:entity_id,title,nullable:true},{type:null}},token:{format:uuid,type:string},token_expiry_date:{format:date-time,type:string},promo_code:{anyOf:{type:string,nullable:true},{type:null}},include_ticket_donations:{type:boolean},include_giftaid:{type:boolean,nullable:true},source:{$ref:#/components/schemas/RequestSource},tenant:{type:string},items:{type:array,items:{$ref:#/components/schemas/Booking}},promos:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/BookingPromo},{type:object,properties:{price_adjustment:{additionalProperties:false,type:object,properties:{type:{type:string},value:{type:number}},required:type,value},used_entitlement_id:{description:The entitlement ID that was used to apply this promo,type:string},discount_quantities:{description:The quantities of tickets or addon options that were discounted by this promo,type:array,items:{anyOf:{type:object,properties:{ticket_type_id:{type:string},qty:{type:integer}},required:ticket_type_id,qty},{type:object,properties:{qty:{type:integer},addon_option_id:{type:string}},required:qty,addon_option_id}}}},required:price_adjustment}}},addons:{type:array,items:{$ref:#/components/schemas/Addon}},pay_later:{description:\nHas the \pay later\ flow been initiated?\n\nThis is always `false` for orders, since the order has always already been paid for.\n ,type:boolean},awaiting_external_payment:{description:\nThis will be true only if the \external payment\ flow is initialised, which requires the correct user permissions.\nWhen true, Expian will trust an API caller with just the usual cart token (no elevated permissions) to confirm the order\nwith a payment reference that they define, trusting that the payment took place.\n ,type:boolean},payable_on_arrival:{description:\nThis marks that this order has been entered into the system and tickets generated, but still requires payment\nonce the order is scanned at the venue by the POS device, upon which the outstanding payable balance will need\nto be settled.\n ,type:boolean},pending_refund:{description:\nThis marks an order as needing a refund that cannot be automatically processed in the MyBookings page due to\neither missing payment methods or the payment methods not being sufficient to cover the full amount of the refund.\nThe refund will need to be processed manually by the customer support.\n ,type:boolean},deferred_payment_method:{description:\nThis marks the order as having a payment method that is not immediately processed, but is\ndeferred to a later date.\n\nCurrently, the only supported deferred payment method captured within this property is \invoice\.\n ,anyOf:{enum:invoice,type:string,nullable:true},{type:null}},version:{type:integer},extensions:{$ref:#/components/schemas/EntityExtensions},created_at:{format:date-time,description:The time this order was originally paid for and completed. For carts, this is the time the cart was created.,type:string},revision_created_at:{format:date-time,description:The time this order revision was paid for and completed. It is used for financial reporting.,type:string},updated_at:{format:date-time,description:The time any detail in the the cart / order was last updated, which might not create a new revision if the change is only to metadata (such as adding a note).,type:string},has_issue:{type:boolean},issues:{type:array,items:{additionalProperties:false,type:object,properties:{reason:{type:string},raw_details:{nullable:true}},required:reason}},upsell_history:{type:array,items:{type:object,allOf:{additionalProperties:false,type:object,properties:{value:{type:integer},actioned_at:{format:date-time,type:string},id:{type:string}},required:value,actioned_at,id},{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:recommendation,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:check-in-adjustment,type:string},adjustments:{type:array,items:{$ref:#/components/schemas/CheckInAdjustment}}},required:type,adjustments}}}},linked_orders:{anyOf:{type:array,items:{$ref:#/components/schemas/OrderLinkInput},nullable:true},{type:null}},email_message:{anyOf:{description:A message to display at the top of the confirmation email to the customer. This is commonly used to display a reason for a reschedule.,type:string,nullable:true},{type:null}},send_printed_voucher:{description:\nThis marks if tickets should be sent by post mail to the customer.\n ,type:boolean},ticket_ids:{type:array,items:{type:string}},tickets:{type:array,items:{$ref:#/components/schemas/BookingTicket}}},required:id,revision,reference,currency,locale,expiry_timer,market,revision_source,pricing,customer,customers,billing_address,shipping_address,line_items,line_items_diff,delivery_method,status,trade_partner,token,token_expiry_date,promo_code,include_ticket_donations,source,tenant,items,promos,addons,pay_later,awaiting_external_payment,payable_on_arrival,pending_refund,deferred_payment_method,version,extensions,created_at,revision_created_at,updated_at,has_issue,issues,upsell_history,linked_orders,email_message,send_printed_voucher,ticket_ids,tickets},{additionalProperties:false,type:object,properties:{user:{anyOf:{type:object,properties:{id:{format:uuid,type:string},impersonated:{type:boolean},full_name:{type:string}},required:id,impersonated,full_name},{type:null}},sales_user:{anyOf:{type:object,properties:{id:{format:uuid,type:string},full_name:{type:string},department:{type:string}},required:id,full_name},{type:null}},customer_user:{anyOf:{type:object,properties:{id:{format:uuid,type:string},full_name:{type:string},department:{type:string}},required:id,full_name},{type:null}},revision_sales_user:{anyOf:{type:object,properties:{id:{format:uuid,type:string},full_name:{type:string},department:{type:string}},required:id,full_name},{type:null}}},required:user,sales_user,customer_user,revision_sales_user}},BookingContainerAddress:{additionalProperties:false,type:object,properties:{title:{anyOf:{type:string,nullable:true},{type:null}},firstname:{type:string},lastname:{type:string},company:{anyOf:{type:string,nullable:true},{type:null}},line_1:{type:string},line_2:{anyOf:{type:string,nullable:true},{type:null}},line_3:{anyOf:{type:string,nullable:true},{type:null}},town:{anyOf:{type:string,nullable:true},{type:null}},county:{anyOf:{type:string,nullable:true},{type:null}},country:{minLength:2,maxLength:2,type:string},post_code:{anyOf:{type:string,nullable:true},{type:null}}},required:title,firstname,lastname,company,line_1,line_2,line_3,town,county,country,post_code},BookingContainerPricing:{additionalProperties:false,type:object,properties:{subtotal:{type:integer},discount:{type:integer},donation:{type:integer},gift_aid:{description:The gift aid amount this order is eligible for.,type:integer},total:{description:\nTotal paid for this booking, taking into account all payments\nand refunds.\n ,type:integer},total_net:{description:Total paid for this booking, excluding VAT.,type:integer},vat:{type:integer},cancellation_amendment_fee:{type:integer},commission:{description:The amount of commission a trade partner earned for this order.,type:integer},commission_diff:{description:The change in the commission a trade partner earned in the current revision of the order.,type:integer},payable:{type:integer},payable_calculated:{type:integer},refundable:{type:integer},payable_adjustment:{type:integer},paid:{type:integer},paid_charges:{type:integer},paid_refunds:{type:integer},last_paid:{type:integer},booking_fee:{type:integer},postage_fee:{type:integer},deposit:{type:integer},payable_overwrite:{anyOf:{type:integer,nullable:true},{type:null}},cart_discount_deltas:{type:array,items:{type:integer}}},required:subtotal,discount,total,total_net,vat,cancellation_amendment_fee,commission,commission_diff,payable,payable_calculated,refundable,payable_adjustment,paid,paid_charges,paid_refunds,last_paid,booking_fee,postage_fee,deposit,payable_overwrite,cart_discount_deltas},BookingEntitlement:{additionalProperties:false,type:object,properties:{valid_from:{format:date-time,type:string},valid_until:{format:date-time,type:string},suspended_at:{anyOf:{format:date-time,type:string,nullable:true},{type:null}},auto_renew_opt_out_at:{anyOf:{format:date-time,type:string,nullable:true},{type:null}},previous_payment_type:{anyOf:{type:string,nullable:true},{type:null}},payment_type:{anyOf:{type:string,nullable:true},{type:null}},terms:{type:array,items:{$ref:#/components/schemas/BookingEntitlementTerm}},media_identifier:{description:Media identifier used to identify the booking in addition to the entitlement ID,type:string},status:{$ref:#/components/schemas/BookingEntitlementStatus},last_transition:{anyOf:{enum:renewed,upgraded,downgraded,upgraded_deferred,downgraded_deferred,renewed_upgraded,renewed_downgraded,cancelled,cancelled_renewal,type:string,nullable:true},{type:null}}},required:valid_from,valid_until,suspended_at,auto_renew_opt_out_at,status},BookingEntitlementStatus:{enum:ACTIVE,CANCELLED,EXPIRED,REDEEMED,SUSPENDED,EXPIRED_AWAITING_RENEWAL,ACTIVE_AWAITING_RENEWAL,type:string},BookingEntitlementTerm:{anyOf:{additionalProperties:false,type:object,properties:{product_entity_id:{format:uuid,type:string},product_title:{type:string},valid_from:{format:date-time,type:string},valid_until:{format:date-time,type:string},current:{type:boolean},unit_price:{type:integer},vat:{type:integer},media_identifier:{type:string},next:{enum:false,type:boolean},ticket_type:{additionalProperties:false,type:object,properties:{entity_id:{format:uuid,type:string},pricing:{$ref:#/components/schemas/BookingComponentPricing},id:{type:string}},required:entity_id,pricing,id},paid:{enum:true,type:boolean}},required:product_entity_id,product_title,valid_from,valid_until,current,unit_price,vat,next,ticket_type,paid},{additionalProperties:false,type:object,properties:{product_entity_id:{format:uuid,type:string},product_title:{type:string},valid_from:{format:date-time,type:string},valid_until:{format:date-time,type:string},current:{enum:false,type:boolean},unit_price:{type:integer},vat:{type:integer},next:{enum:true,type:boolean},paid:{enum:true,type:boolean},pricing:{$ref:#/components/schemas/BookingComponentPricing},ticket_type:{additionalProperties:false,type:object,properties:{entity_id:{format:uuid,type:string},pricing:{$ref:#/components/schemas/BookingComponentPricing},id:{type:string}},required:entity_id,pricing,id},promo_code:{anyOf:{type:string,nullable:true},{type:null}},additional_customers:{anyOf:{description:Additional customer list to be replaced during the upgrade or\n downgrade. This allows for example to capture children details during the scheduling process,\n for a membership that will be upgraded from Single to Family.,type:array,items:{$ref:#/components/schemas/Customer},nullable:true},{type:null}},media_identifier:{type:string},include_giftaid:{type:boolean}},required:product_entity_id,product_title,valid_from,valid_until,current,unit_price,vat,next,paid,pricing,ticket_type,include_giftaid},{additionalProperties:false,type:object,properties:{paid:{enum:false,type:boolean},product_entity_id:{format:uuid,type:string},current:{enum:false,type:boolean},include_giftaid:{type:boolean},next:{enum:true,type:boolean},change_type:{enum:upgrade,downgrade,type:string},additional_customers:{anyOf:{description:Additional customer list to be replaced during the upgrade or\n downgrade. This allows for example to capture children details during the scheduling process,\n for a membership that will be upgraded from Single to Family.,type:array,items:{$ref:#/components/schemas/Customer},nullable:true},{type:null}}},required:paid,product_entity_id,current,include_giftaid,next,change_type}},BookingLeg:{additionalProperties:false,type:object,properties:{operator_type:{enum:transfer,internal,type:string},start:{format:date-time,type:string},end:{format:date-time,type:string},duration:{type:string},start_date:{format:date,type:string},start_time:{format:time,type:string},location:{additionalProperties:false,type:object,properties:{id:{type:string},title:{type:string}},required:id,title},end_location:{additionalProperties:false,type:object,properties:{id:{type:string},title:{type:string}},required:id,title},important_info:{type:string,nullable:true},operator_confirmed:{type:boolean},operator_reference:{anyOf:{type:string,nullable:true},{type:null}},provisional:{type:boolean},service_id:{type:string,nullable:true},instance_root_entity_id:{type:string,nullable:true},stops:{type:array,items:{additionalProperties:false,type:object,properties:{segment_id:{type:string},start_time:{type:string},start_date:{type:string},location:{additionalProperties:false,type:object,properties:{id:{type:string},title:{type:string}},required:id,title}},required:segment_id,start_time,start_date,location}}},required:operator_type,start,end,duration,start_date,start_time,location,end_location,operator_confirmed,operator_reference,provisional,stops},BookingLineItem:{description:A line item. All prices are unit prices, except for VAT, which is the total VAT amount for the number of the item bought, after any discounts.,additionalProperties:false,type:object,properties:{type:{enum:ticket-type,capacity,addon,promo,combo,fee,payable-overwrite,deposit,minimum-spend,deferred-payment,entitlement-term,entitlement-term-deferred,entitlement-term-price-adjustment,ticket-upgraded,type:string,description:The type of the item.},id:{description:The ID of the item, which depends upon the type of item. For example, when `type` is `\ticket-type\`, this is a ticket type entity_id.,type:string},entity_id:{description:The entity ID of the item. This relates to a ticket type, add-on, etc, depending upon the `type` property.,format:uuid,type:string,nullable:true},title:{description:The title of the item, such as \Adult\.,type:string},qty:{description:The quantity of the item.,type:integer},price:{description:Unit price.,type:integer},donation:{description:Unit donation amount.,type:integer},vat:{description:VAT amount.,type:integer},vat_rate:{description:VAT rate.,type:integer},refundable:{description:Whether the items value is refundable. For example, fees are not refundable.,type:boolean},product_entity_id:{anyOf:{description:The entity ID of the bookings product.,format:uuid,type:string,nullable:true},{type:null}},discount_product_entity_id:{anyOf:{description:The discount products entity ID that applies to the booking. For example, when a promo voucher is used in an entitlement booking.,format:uuid,type:string,nullable:true},{type:null}}},required:type,id,title,qty,price,donation,vat,vat_rate,refundable},BookingLocation:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{title:{type:string},timezone:{type:string},extensions:{$ref:#/components/schemas/EntityExtensions}},required:title,timezone,extensions}},BookingPricing:{additionalProperties:false,type:object,properties:{subtotal:{type:integer},discount:{type:integer},donation:{type:integer},gift_aid:{description:The gift aid amount this booking is eligible for.,type:integer},total:{description:\nTotal paid for this booking, taking into account all payments\nand refunds.\n ,type:integer},vat:{type:integer},total_net:{description:Total paid for this booking, excluding VAT.,type:integer},cancellation_amendment_fee:{type:integer},commission:{description:The amount of commission a trade partner earned for this booking.,type:integer},commission_diff:{description:The change in the commission a trade partner earned in the current revision of the booking.,type:integer},payable:{type:integer},refundable:{type:integer},paid:{type:integer},paid_charges:{type:integer},paid_refunds:{type:integer},last_paid:{type:integer},payable_adjustment:{type:integer},booking_fee:{type:integer},postage_fee:{type:integer},deposit:{type:integer},minimum_spend_enforced:{type:boolean},minimum_spend:{type:integer}},required:subtotal,discount,total,vat,total_net,cancellation_amendment_fee,commission,commission_diff,payable,refundable,paid,paid_charges,paid_refunds,last_paid,booking_fee,postage_fee,deposit,minimum_spend_enforced,minimum_spend},BookingPromo:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{applied:{type:boolean},amount:{type:integer},title:{type:string},description:{anyOf:{type:string,nullable:true},{type:null}},promo_code:{anyOf:{type:string,nullable:true},{type:null}},required_ticket_qty:{anyOf:{type:integer,nullable:true},{type:null}},discount_description:{anyOf:{type:string,nullable:true},{type:null},nullable:true},deferred:{type:boolean,nullable:true}},required:applied,amount,title,description,promo_code,required_ticket_qty}},BookingStatus:{enum:draft,ordered,amending,amended,cancelled,cancelling,abandoned,type:string},BookingTicket:{type:object,properties:{ticket_id:{description:Ticket reference. e.g DVT1234,type:string},reference:{type:string},title:{description:Ticket title, e.g. \Adult\, \Guidebook\,type:string},id:{description:ID related to the entity that the ticket is for. E.g \adult\, \guidebook,type:string},type:{description:Type of ticket. Either \ticket\ or \addon\,type:string},upgraded:{description:Returns a boolean if the ticket has been used for an upgrade.,type:boolean},pricing:{$ref:#/components/schemas/BookingComponentPricing}}},BookingTicketType:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{type:string},entity_revision_id:{type:string},title:{type:string},qty:{type:integer},pricing:{$ref:#/components/schemas/BookingComponentPricing},extensions:{$ref:#/components/schemas/EntityExtensions}},required:id,entity_id,entity_revision_id,title,qty,pricing,extensions},{additionalProperties:false,type:object,properties:{requires_collection:{anyOf:{default:false,description:Whether the ticket type requires collection. Controls if a QR code for this ticket is emailed in the order confirmation.,type:boolean,nullable:true},{type:null}},capacity_type_id:{anyOf:{type:string,nullable:true},{type:null}},capacity_units:{anyOf:{type:integer,nullable:true},{type:null}},capacity_divisible:{anyOf:{default:false,type:boolean,nullable:true},{type:null}},passenger_count:{description:Passenger count represents the number of people that the ticket type should be reported as,type:integer}}}},BookingTicketsUpgraded:{type:object},BookingNote:{additionalProperties:false,type:object,properties:{note:{type:string},type:{enum:booking,supplier,type:string},user:{anyOf:{type:string},{type:null}},source:{type:string},timestamp:{format:date-time,type:string}},required:note,type,user,source,timestamp},Cart:{type:object,allOf:{$ref:#/components/schemas/BookingContainer},{additionalProperties:false,type:object,properties:{type:{enum:cart,type:string},expiry_date:{anyOf:{format:date-time,type:string,nullable:true},{type:null}}},required:type,expiry_date}},DecoratedCart:{type:object,allOf:{$ref:#/components/schemas/DecoratedBookingContainer},{additionalProperties:false,type:object,properties:{type:{enum:cart,type:string},expiry_date:{anyOf:{format:date-time,type:string,nullable:true},{type:null}}},required:type,expiry_date}},CartInput:{type:object,properties:{id:{anyOf:{type:string,nullable:true},{type:null}},reference:{anyOf:{type:string,nullable:true},{type:null}},delivery_method:{enum:email,pos,type:string,description:\nHow the customer will receive their tickets.\n- `email` - The default value. Tickets will be emailed to the lead customers email address.\n- `pos` - This delivery method is used to denote that the tickets were provided to the customer at the Point of Sale. For example, the tickets were physically printed and handed to the customer. No email is sent to the customer if this option is used.\n ,nullable:true},market:{type:object,properties:{id:{type:string}},required:id},tenant:{type:string,nullable:true},customers:{type:array,items:{$ref:#/components/schemas/CustomerInput},nullable:true},customer:{$ref:#/components/schemas/CustomerInput},extensions:{type:object,nullable:true},promo_code:{anyOf:{type:string,nullable:true},{type:null}},device_id:{anyOf:{description:The device ID that was used to place the order.,type:string,nullable:true},{type:null}},sales_location:{anyOf:{type:object,properties:{id:{description:The location where this order was placed.,type:string}},required:id,nullable:true},{type:null}},sales_sub_location:{anyOf:{type:object,properties:{id:{description:The sub-location where this order was placed.,type:string}},required:id,nullable:true},{type:null}},sales_shift_id:{anyOf:{description:\nGenerated by the POS to start a sales shift.\nIt is expected that any orders placed on the device until the shift is ended will send this property with the same value.\n ,type:string,nullable:true},{type:null}},expiry_timer:{description:Number of milliseconds until the cart expires. Requires the `cart:override_expiry` permission.,type:integer,nullable:true},include_ticket_donations:{type:boolean},include_giftaid:{type:boolean},addons:{type:array,items:{type:object,properties:{id:{type:string},qty:{type:integer},custom_input:{type:string,nullable:true}},required:id,qty},nullable:true},items:{type:array,items:{type:object,properties:{id:{anyOf:{type:string,nullable:true},{type:null}},reference:{anyOf:{type:string,nullable:true},{type:null}},extensions:{type:object,nullable:true},product:{type:object,properties:{id:{type:string}},required:id},include_ticket_donations:{type:boolean},location:{anyOf:{type:object,properties:{id:{type:string}},required:id,nullable:true},{type:null}},end_location:{anyOf:{type:object,properties:{id:{anyOf:{type:string,nullable:true},{type:null}}},required:id,nullable:true},{type:null}},booking_note:{anyOf:{type:string,nullable:true},{type:null}},supplier_note:{anyOf:{type:string,nullable:true},{type:null}},notes:{type:array,items:{$ref:#/components/schemas/BookingNote},nullable:true},booked_unit:{type:object,properties:{start_date:{type:string},start_time:{type:string},instance_id:{type:string},block_id:{type:string}}},ticket_types:{maxItems:20,type:array,items:{type:object,properties:{id:{type:string},qty:{minimum:0,maximum:400,type:integer}},required:id,qty}},capacity_allocation:{type:array,items:{type:object,properties:{id:{type:string},qty:{type:integer},instance_id:{type:string}},required:id,qty,instance_id},nullable:true},addons:{type:array,items:{type:object,properties:{id:{type:string},qty:{type:integer},custom_input:{type:string,nullable:true}},required:id,qty},nullable:true},capacity:{type:object,properties:{override_min_capacity:{type:boolean}},required:override_min_capacity,nullable:true},tickets_upgraded:{$ref:#/components/schemas/BookingTicketsUpgraded}},required:product,booked_unit,ticket_types}}},required:market,items},CartAddonOption:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{type:string},order:{type:integer},title:{type:string},description:{type:string},image:{anyOf:{format:uri,description:Image URL of add-on.,type:string,nullable:true},{type:null}},is_redeemable:{description:Choose whether to generate a redeemable QR code for this add-on.,default:false,type:boolean},is_standalone:{description:Whether this ancillary item can be added to the cart as a standalone item, not linked to any other product.,default:false,type:boolean},mandatory:{type:boolean},mandatory_per_ticket:{type:boolean},mandatory_per_person:{type:boolean},qty_limit_per_booking_min:{anyOf:{type:integer,nullable:true},{type:null}},qty_limit_per_booking_max:{anyOf:{type:integer,nullable:true},{type:null}},max_sale_qty_overall:{anyOf:{type:integer,nullable:true},{type:null}},max_sale_qty_departure:{anyOf:{type:integer,nullable:true},{type:null}},max_sale_qty_period_value:{anyOf:{type:string,nullable:true},{type:null}},max_sale_qty_period_amount:{anyOf:{type:integer,nullable:true},{type:null}},sale_increments:{type:integer},accept_custom_input:{type:boolean},giftaid_enabled:{type:boolean},donations_enabled:{type:boolean},type:{enum:item,donation,type:string,default:item},status:{enum:available,sold_out,type:string},capacity:{anyOf:{additionalProperties:false,type:object,properties:{available:{type:integer},total:{type:integer}},required:available,total,nullable:true},{type:null}},options:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{description:Deprecated. Use `id` instead.,type:string},pricing:{type:integer},vat_rate:{type:integer},title:{type:string},order:{type:integer}},required:id,entity_id,pricing,vat_rate,title,order}},cart_item_index:{type:integer},extensions:{$ref:#/components/schemas/EntityExtensions},analytics_item_id:{type:string},analytics_item_name:{type:string},location_entity_ids:{type:array,items:{type:string}}},required:id,entity_id,order,title,description,image,is_redeemable,is_standalone,mandatory,mandatory_per_ticket,mandatory_per_person,sale_increments,accept_custom_input,giftaid_enabled,donations_enabled,type,status,capacity,options,cart_item_index,extensions,analytics_item_id,analytics_item_name,location_entity_ids},Addon:{type:object,properties:{id:{type:string},entity_id:{type:string},entity_revision_id:{type:string},qty:{type:integer},sale_increments:{type:integer},pricing:{$ref:#/components/schemas/BookingComponentPricing},title:{type:string},parent:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{type:string},entity_revision_id:{type:string},title:{type:string},description:{type:string}},required:id,entity_id,entity_revision_id,title,description},{additionalProperties:false,type:object,properties:{image:{anyOf:{format:uri,description:Image URL of add-on.,type:string,nullable:true},{type:null}},is_redeemable:{anyOf:{description:Choose whether to generate a redeemable QR code for this add-on.,default:false,type:boolean,nullable:true},{type:null}},is_standalone:{anyOf:{description:Whether the ancillary item can be added to the cart standalone, without linking to any products.,default:false,type:boolean,nullable:true},{type:null}}}}},custom_input:{type:string,nullable:true},giftaid_enabled:{type:boolean,nullable:true},donations_enabled:{type:boolean,nullable:true},show_with_ticket_donations:{description:Whether to surface for selection if donation-enabled products are present in the cart.,type:boolean,nullable:true}},required:id,entity_id,entity_revision_id,qty,sale_increments,pricing,title,parent},DepositResolution:{additionalProperties:false,type:object,properties:{refunded:{type:integer},date:{type:string},reason:{type:string},status:{enum:withheld,refunded,partially-refunded,type:string},method:{enum:cash,card_pos,card_online,type:string}},required:refunded,date,reason,status,method},Entitlement:{type:object,properties:{id:{type:string},order_id:{type:string},valid_from:{type:string},valid_until:{type:string},status:{enum:ACTIVE,EXPIRED,CANCELLED,SUSPENDED,REDEEMED,ACTIVE_AWAITING_RENEWAL,EXPIRED_AWAITING_RENEWAL,type:string},type:{enum:membership,patron,voucher,type:string},suspension_date:{anyOf:{type:string,nullable:true},{type:null}},auto_renew_opt_out_date:{anyOf:{type:string,nullable:true},{type:null}},lead_customer:{$ref:#/components/schemas/Customer},additional_customers:{type:array,items:{$ref:#/components/schemas/Customer}},product_id:{type:string},renewal_count:{type:integer},renewal_enabled:{type:boolean},user_id:{description:The user ID of the entitlement. Can be null for vouchers purchased by guest customers.,anyOf:{type:string,nullable:true},{type:null}},booking_status:{$ref:#/components/schemas/BookingStatus},tier_change_scheduled:{type:boolean},tier_change_type:{anyOf:{enum:upgrade,downgrade,type:string,nullable:true},{type:null}},next_product_id:{type:string},current:{$ref:#/components/schemas/BookingContainer},upcoming:{anyOf:{$ref:#/components/schemas/BookingContainer},{type:null}}},required:id,order_id,valid_from,valid_until,status,type,suspension_date,auto_renew_opt_out_date,lead_customer,additional_customers,product_id,renewal_count,renewal_enabled,user_id,booking_status,tier_change_scheduled,tier_change_type,next_product_id,current,upcoming},EntitlementIdentifier:{type:object,properties:{order_id:{description:The order this identifier belongs to.,type:string},booking_id:{description:The booking/entitlement this identifier belongs to.,type:string},media_identifier:{description:Unique identifier used to distinguish this entitlements media.,type:string},enabled:{description:Whether this identifier is enabled.,type:boolean},valid_from:{description:When this identifier is valid from.,type:string},valid_until:{description:When this identifier expires.,type:string},created_at:{description:When this identifier was created.,type:string},printed_at:{anyOf:{description:When this identifier was last printed. Null if never printed.,type:string,nullable:true},{type:null}},disabled_at:{anyOf:{description:When this identifier was disabled. Null if still enabled.,type:string,nullable:true},{type:null}}},required:order_id,booking_id,media_identifier,enabled,valid_from,valid_until,created_at,printed_at,disabled_at},DecoratedOrder:{type:object,allOf:{$ref:#/components/schemas/DecoratedBookingContainer},{additionalProperties:false,type:object,properties:{type:{enum:order,type:string},expiry_date:{type:null}},required:type,expiry_date}},WebhookOrder:{type:object,allOf:{$ref:#/components/schemas/DecoratedWebhookBookingContainer},{additionalProperties:false,type:object,properties:{type:{enum:order,type:string},expiry_date:{type:null}},required:type,expiry_date}},OrderImportInput:{type:object,properties:{order:{type:object,properties:{reference:{type:string},delivery_method:{enum:email,pos,type:string},locale:{type:string},market:{type:object,properties:{id:{type:string}},required:id},created_at:{format:date-time,type:string},include_ticket_donations:{type:boolean},include_giftaid:{type:boolean},customer:{$ref:#/components/schemas/Customer},customers:{type:array,items:{$ref:#/components/schemas/Customer},nullable:true},extensions:{type:object,nullable:true},source:{$ref:#/components/schemas/RequestSource},items:{type:array,items:{type:object,properties:{reference:{anyOf:{type:string,nullable:true},{type:null}},channel:{type:integer,nullable:true},product:{type:object,properties:{id:{type:string}},required:id},location:{anyOf:{type:object,properties:{id:{type:string}},required:id,nullable:true},{type:null}},end_location:{anyOf:{type:object,properties:{id:{type:string}},required:id,nullable:true},{type:null}},supplier_note:{anyOf:{type:string,nullable:true},{type:null}},booked_unit:{type:object,properties:{start_date:{type:string},start_time:{type:string},instance_id:{type:string},block_id:{type:string}}},tickets:{type:array,items:{type:object,properties:{reference:{anyOf:{description:Optional ticket reference. Can be used to identify the ticket if it was generated externally.,type:string,nullable:true},{type:null}},id:{anyOf:{description:The corresponding ticket type or addon id that should result in generating this ticket.,type:string,nullable:true},{type:null}},type:{description:Type of ticket. Either \ticket\ or \addon\,type:string}}},nullable:true},ticket_types:{type:array,items:{type:object,properties:{id:{type:string},qty:{type:integer},pricing:{type:object,properties:{discount:{type:integer},unit_price:{type:integer},subtotal:{type:integer},total:{type:integer},vat:{type:integer},vat_rate:{type:number,nullable:true},donation:{type:number,nullable:true},unit_donation:{type:number,nullable:true}},required:discount,unit_price,subtotal,total,vat}},required:id,qty,pricing}},addons:{type:array,items:{type:object,properties:{id:{type:string},qty:{type:integer},custom_input:{type:string,nullable:true},pricing:{type:object,properties:{donation:{type:integer},unit_donation:{type:integer},discount:{type:integer},unit_price:{type:integer},subtotal:{type:integer},total:{type:integer},vat:{type:integer},vat_rate:{type:number,nullable:true}},required:discount,unit_price,subtotal,total,vat}},required:id,qty,pricing}},fees:{type:array,items:{additionalProperties:false,type:object,properties:{amount:{type:integer},applied:{type:boolean},paid:{type:boolean},type:{enum:booking_fee,amendment,type:string}},required:amount,applied,paid,type},nullable:true},entitlement:{type:object,properties:{auto_renew_opt_out_at:{anyOf:{format:date-time,type:string,nullable:true},{type:null}},media_identifier:{type:string,nullable:true},valid_from:{format:date-time,type:string,nullable:true},valid_until:{format:date-time,type:string,nullable:true}},nullable:true}},required:product,booked_unit,ticket_types}},user:{type:object,properties:{id:{type:string}},required:id,nullable:true},sales_user:{type:object,properties:{id:{type:string}},required:id,nullable:true},billing_address:{anyOf:{$ref:#/components/schemas/BookingContainerAddress},{type:null}},shipping_address:{anyOf:{$ref:#/components/schemas/BookingContainerAddress},{type:null}},deferred_payment_method:{anyOf:{enum:invoice,type:string,nullable:true},{type:null}}},required:reference,delivery_method,locale,market,created_at,items},payments:{type:array,items:{$ref:#/components/schemas/PaymentInternalInput}},check_in:{type:boolean,nullable:true},media_identifier:{type:object,properties:{created_at:{format:date-time,type:string},printed_at:{format:date-time,type:string}},required:created_at,printed_at,nullable:true},suppress_delivery:{default:false,description:Suppress the delivery of the confirmation email for the initial import. It only prevents\n the initial email from being sent if the delivery method is set to email. If a delivery\n method of pos is explicitly set, any following emails will not be delivered either.,type:boolean,nullable:true},amount_overrides:{description:For imported orders, ability to overwrite the amount paid\n and payable to reflect the amount still due externally.\n Requires additional permissions for the import user.,type:object,properties:{payable:{type:integer},paid:{type:integer},total:{type:integer},commissions:{type:array,items:{type:integer}}},required:payable,paid,total,commissions,nullable:true},pay_later:{description:Configure pay-later options for the imported order.,type:object,properties:{delivery_method:{enum:email,sms,type:string,default:email,description:Pay later message delivery method.},time_to_pay:{enum:PT10M,PT15M,PT2H,PT24H,PT72H,P7D,P14D,P30D,P60D,P90D,P120D,until_booking_starts,until_booking_ends,until_day_before_booking_starts,type:string,default:PT2H,description:Time to pay in ISO 8601 duration format},time_to_pay_offset_hours:{default:0,description:Offset in hours to apply to the time to pay,type:number}},required:time_to_pay,nullable:true}},required:order,payments},OrderSearch:{type:object,allOf:{anyOf:{$ref:#/components/schemas/DecoratedCart},{$ref:#/components/schemas/DecoratedOrder}},{type:object,properties:{booking_id:{description:When searching for bookings, this is the relevant booking ID. The booking itself is in the \items\ array.,type:string,nullable:true}}}},PaymentInternalInput:{anyOf:{type:object,properties:{method:{enum:internal_cash,internal_credit,type:string},uuid:{format:uuid,type:string,nullable:true},details:{type:object,properties:{description:{anyOf:{type:string,nullable:true},{type:null}},reference:{anyOf:{type:string,nullable:true},{type:null}},currency:{minLength:3,maxLength:3,type:string},value:{type:integer},timestamp:{format:date-time,type:string},device_id:{anyOf:{type:string,nullable:true},{type:null}},location_id:{anyOf:{type:number,nullable:true},{type:null}}},required:currency,value,timestamp}},required:method,details},{type:object,properties:{method:{enum:internal_generic,type:string},uuid:{format:uuid,type:string,nullable:true},details:{type:object,allOf:{type:object,properties:{description:{anyOf:{type:string,nullable:true},{type:null}},reference:{anyOf:{type:string,nullable:true},{type:null}},currency:{minLength:3,maxLength:3,type:string},value:{type:integer},timestamp:{format:date-time,type:string},device_id:{anyOf:{type:string,nullable:true},{type:null}},location_id:{anyOf:{type:number,nullable:true},{type:null}}},required:currency,value,timestamp},{type:object,properties:{type:{description:The type of payment, which can be any string. This will surface in the Reservations Portal UI, and in reports.,type:string}},required:type}}},required:method,details},{type:object,properties:{method:{enum:internal_invoice,internal_pay_on_arrival,type:string},uuid:{format:uuid,type:string},details:{type:object,properties:{description:{anyOf:{type:string,nullable:true},{type:null}},reference:{anyOf:{type:string,nullable:true},{type:null}},currency:{minLength:3,maxLength:3,type:string},value:{type:integer},timestamp:{format:date-time,type:string},device_id:{anyOf:{type:string,nullable:true},{type:null}},location_id:{anyOf:{type:number,nullable:true},{type:null}}},required:currency,value,timestamp}},required:method,uuid,details}},BookingUnit:{additionalProperties:false,type:object,properties:{type:{enum:time,date,open,type:string},first_use_within:{anyOf:{additionalProperties:false,type:object,properties:{period:{anyOf:{type:string,nullable:true},{type:null}},type:{enum:period,end_of_day,period_ceil_month,type:string}},required:period,type,nullable:true},{type:null}}},required:type,first_use_within},RecommendationOption:{additionalProperties:false,type:object,properties:{recommendation:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string},type:{enum:add_event,add_return_journey,type:string},behaviour:{enum:automatic,manual,type:string},booking_date_limit:{enum:same_day,any_day,type:string,default:any_day,description:\nLimit recommendation booking date:\n- any_day (default): Recommendation can be booked for any day after the booking that triggers it\n- same_day: Recommendation can only be booked for the same day as the booking that triggers it\n },product_ids:{type:array,items:{type:string}},image:{anyOf:{format:uri,description:Image URL of the recommended product.,type:string,nullable:true},{type:null}}},required:title,type,behaviour,booking_date_limit,product_ids,image}},options:{description:The options available to purchase for this recommendation.,type:array,items:{type:object,properties:{product_id:{type:string},instance_id:{type:string},start_date:{format:date,type:string},start_time:{format:time,type:string},duration:{type:string,nullable:true},type:{type:string},status:{type:string},price:{type:integer},currency:{minLength:3,maxLength:3,type:string},capacities:{type:array,items:{additionalProperties:false,type:object,properties:{capacity_type_id:{type:string},available:{type:integer},total:{type:integer}},required:capacity_type_id,available,total},nullable:true}},required:product_id,instance_id,start_date,start_time,type,status,price,currency}}},required:recommendation,options},ApplyOrderRecommendationInput:{type:object,properties:{payments:{type:array,items:{$ref:#/components/schemas/PaymentInternalInput}},check_in:{type:boolean},customer:{type:object,properties:{license_plate:{anyOf:{type:string,nullable:true},{type:null}}}}},required:payments},ApplyCheckInAdjustmentInput:{type:object,properties:{payments:{type:array,items:{$ref:#/components/schemas/PaymentInternalInput}},check_in:{type:boolean},customer:{type:object,properties:{license_plate:{anyOf:{type:string,nullable:true},{type:null}}}}},required:payments},CartIdOrderInput:{type:object,properties:{payments:{type:array,items:{$ref:#/components/schemas/PaymentInternalInput},nullable:true}},nullable:true},CartCapacityOption:{type:object,allOf:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{description:Capacity allocation ID.,type:string},entity_id:{description:Capacity option entity ID.,type:string},title:{description:Localised capacity option title.,type:string},description:{description:Localised capacity option description.,type:string},area:{description:Localised capacity plan area title.,additionalProperties:false,type:object,properties:{title:{type:string}},required:title},area_option:{description:Localised capacity plan area option title.,additionalProperties:false,type:object,properties:{title:{type:string}},required:title}},required:id,entity_id,title,description,area,area_option},{additionalProperties:false,type:object,properties:{instance_id:{format:uuid,description:Service instance this capacity option belongs to.,type:string},max_bookings_allowed:{anyOf:{description:Maximum number of bookings allowed for related service instance.,type:integer,nullable:true},{type:null}},capacity_type_id:{format:uuid,description:Capacity type this capacity option accommodates.,type:string},capacity_units:{description:Number of capacity units option provides.,type:integer},capacity_min:{description:Minimum number of capacity units required to reserve.,type:integer}},required:instance_id,max_bookings_allowed,capacity_type_id,capacity_units,capacity_min}},{additionalProperties:false,type:object,properties:{qty:{description:Quantity of capacity option selected for purchase.,type:integer},pricing:{$ref:#/components/schemas/BookingComponentPricing}},required:qty,pricing}},RefundInput:{type:object,properties:{method:{type:string},details:{type:object,properties:{value:{description:Refund amount. Only negative values are valid,minimum:-1,type:number},currency:{description:Currency code,type:string},paymentId:{description:The original payment the refund is connected to,type:string}},required:value,currency,paymentId}},required:method,details},BookingCommission:{additionalProperties:false,type:object,properties:{type:{enum:percentage,fixed,type:string,description:Type of commission rate for booking.},rate:{description:Rate of commission for booking.,type:number}},required:type,rate},DataQueryFilterGroup:{description:A group of rules to filter a data query. The rules can be combined with \and\ or \or\ to create complex filters.,type:object,properties:{combinator:{enum:and,or,type:string,description:The combinator to use for the filter.},not:{description:Whether to negate the filter group.,default:false,type:boolean},rules:{type:array,items:{anyOf:{type:object,properties:{combinator:{enum:and,or,type:string,description:The combinator to use for the filter.},not:{description:Whether to negate the filter group.,default:false,type:boolean},rules:{description:The rules can be applied recursively, with nested rule groups. They are typed as \unknown\ here due to limitations in the documentation framework.,type:array,items:{}}},required:combinator,rules},{type:object,properties:{field:{description:The field to filter on.,type:string},value:{description:The value to filter on. Pass an array of values when using operators that deal with multiple values (`in`, `notIn`, `between` and `notBetween`).,anyOf:{type:string},{type:number},{type:boolean},{type:array,items:{type:string}},{type:array,items:{type:number}},{type:array,items:{type:boolean}}},operator:{enum:,!,>,>,,,empty,notEmpty,contains,notContains,between,notBetween,in,notIn,type:string,description:The operator to use for the filter.}},required:field,operator}}}},required:combinator,rules},DataQueryTableField:{description:\nA field that can be queried from a table.\n\nWhen rendering a field in the UI, the `base_type` can be generally be used to determine\nwhich UI component to use. The `type` can be used for more specific behaviour.\n ,additionalProperties:false,type:object,properties:{field:{description:The field identifier.,type:string},title:{description:The display title for the field.,type:string},description:{description:A description of the field.,type:string,nullable:true},table_title:{description:The display title of the parent table.,type:string},relation_title:{description:The display title of the parent table, and its parent relations if applicable. For example, \Order > Booking > Line Item\.,type:string},in_primary_key:{description:Whether the field is in the primary key.,type:boolean},type:{enum:string,uuid,enum,hour,time,date,week,week_first_date,month,month_number,quarter,year,dow,timestampz,timestamp,interval,boolean,integer,decimal,percent,money,json,country,type:string,description:The data type of the field.},base_type:{enum:string,timestamp,interval,boolean,number,json,type:string,description:A non-specific data type for the field. This can be useful for general behaviour. For example, all numbers can be summed, regardless of whether they are integers or decimals.},enum:{description:The list of possible values for the field, if it is an enum.,type:array,items:{type:string},nullable:true}},required:field,title,table_title,relation_title,in_primary_key,type,base_type},Customer:{additionalProperties:false,type:object,properties:{title:{anyOf:{type:string,nullable:true},{type:null}},firstname:{anyOf:{type:string,nullable:true},{type:null}},lastname:{anyOf:{type:string,nullable:true},{type:null}},company_name:{anyOf:{type:string,nullable:true},{type:null}},email:{anyOf:{type:string,nullable:true},{type:null}},telephone:{anyOf:{type:string,nullable:true},{type:null}},telephone_country_code:{anyOf:{type:string,nullable:true},{type:null}},subscribed_to_newsletter:{type:boolean},license_plate:{anyOf:{type:string,nullable:true},{type:null}},lead_customer:{type:boolean},extensions:{$ref:#/components/schemas/EntityExtensions},notes:{anyOf:{type:string,nullable:true},{type:null}},associations:{description:Optional associated bookings and ticket type. A customer may be present on multiple bookings.,type:array,items:{additionalProperties:false,type:object,properties:{booking_id:{type:string},ticket_type_id:{type:string}},required:booking_id,ticket_type_id}}},required:title,firstname,lastname,email,telephone,telephone_country_code,subscribed_to_newsletter,license_plate,lead_customer,extensions,associations},CustomerInput:{description:Object with customer information. The `customers` property is deprecated. Please use the array version, `customers`.,type:object,properties:{telephone_country_code:{anyOf:{type:string,nullable:true},{type:null}},telephone:{anyOf:{type:string,nullable:true},{type:null}},email:{anyOf:{type:string,nullable:true},{type:null}},title:{anyOf:{type:string,nullable:true},{type:null}},firstname:{anyOf:{type:string,nullable:true},{type:null}},lastname:{anyOf:{type:string,nullable:true},{type:null}},company_name:{anyOf:{type:string,nullable:true},{type:null}},subscribed_to_newsletter:{type:boolean},license_plate:{anyOf:{type:string,nullable:true},{type:null}},notes:{anyOf:{type:string,nullable:true},{type:null}},extensions:{$ref:#/components/schemas/EntityExtensions},lead_customer:{type:boolean,nullable:true},associations:{description:\nOptional associated bookings and ticket type. A customer may be present on multiple bookings.\n\nEither `booking_id` or `booking_index` must be provided. `booking_id` takes precedence,\nwhereas `booking_index` is useful in situations where the booking ID is not known ahead of\ntime, such as when importing orders.\n\nAny invalid associations are silently filtered out. Invalid associations include those that\nreference non-existent bookings, or customers associated to ticket types that are either\nnot present in the booking, or that have already been associated with other customers in the\norder.\n ,type:array,items:{additionalProperties:false,type:object,properties:{booking_id:{type:string,nullable:true},booking_index:{type:integer,nullable:true},ticket_type_id:{type:string}},required:ticket_type_id},nullable:true}}},OrderLinkInput:{additionalProperties:false,type:object,properties:{order_id:{type:string}},required:order_id},OrderPayments:{type:object,properties:{payments:{type:array,items:{additionalProperties:false,type:object,properties:{payment_id:{type:integer},method:{type:string},cleared_value:{type:integer},refunded_value:{type:integer},provider_reference:{anyOf:{type:string,nullable:true},{type:null}},currency:{type:string},card_type:{anyOf:{type:string,nullable:true},{type:null}}},required:payment_id,method,cleared_value,refunded_value,currency}}},required:payments},SagePayMerchantSessionKey:{type:object,properties:{merchantSessionKey:{type:string},expiry:{format:date-time,type:string}},required:merchantSessionKey,expiry},NetsEasyPayment:{type:object,properties:{paymentId:{description:\nThe identifier (UUID) of the newly created payment object. Use this identifier in subsequent\nrequest when referring to the new payment.\n ,type:string}},required:paymentId},DnaPaymentSuccess:{type:object,properties:{id:{type:string},accountId:{type:string},amount:{type:number},authDateTimeUTC:{type:string},currency:{type:string},errorCode:{type:string},invoiceId:{type:string},message:{type:string},rrn:{type:string},settled:{type:boolean},signature:{type:string},success:{type:boolean},authCode:{type:string},avsHouseNumberResult:{type:string},avsPostcodeResult:{type:string},cardExpiryDate:{type:string},cardholderName:{type:string},cardIssuingCountry:{type:string},cardPanStarred:{type:string},cardSchemeId:{type:string},cardSchemeName:{type:string},cardTokenId:{type:string},charitableDonation:{type:number},cscResult:{type:string},optomanyTerminalId:{type:string},payerAuthenticationResult:{type:string},paymentMethod:{type:string},responseCode:{type:string},schemeReferenceData:{type:string},threeDS:{type:object,properties:{acsTransactionId:{type:string},cardholderAuthenticationStatus:{type:string},cardholderAuthenticationValue:{type:string},dsTransactionId:{type:string},eci:{type:string},mpiTransactionId:{type:string},transactionStatusReason:{type:string},type:{type:string},version:{type:string},xid:{type:string}},required:acsTransactionId,cardholderAuthenticationStatus,cardholderAuthenticationValue,dsTransactionId,eci,mpiTransactionId,transactionStatusReason,type,version,xid}},required:id,accountId,amount,authDateTimeUTC,currency,errorCode,invoiceId,message,rrn,settled,signature,success,authCode,avsHouseNumberResult,avsPostcodeResult,cardExpiryDate,cardholderName,cardIssuingCountry,cardPanStarred,cardSchemeId,cardSchemeName,cardTokenId,charitableDonation,cscResult,optomanyTerminalId,payerAuthenticationResult,paymentMethod,responseCode,schemeReferenceData,threeDS},EntityExtensions:{default:{},description:A JSON object where arbitrary data can be attached to an entity. This allows you to easily extend Expian entities with metadata.,type:object},ImmutableEntityAdmin:{additionalProperties:false,type:object,properties:{external_id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string},created_at:{format:date-time,type:string}},required:external_id,entity_id,entity_revision_id,created_at},ImmutableEntityPublic:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string}},required:id,entity_id,entity_revision_id},ImmutableEntityReference:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string}},required:id,entity_id,entity_revision_id},RequestSource:{enum:api,b2c,pos,reservations,trade,admin,internal,webhook,ota,self-service,type:string},PriceDefinition:{description:A price, or adjustment to a price, with parameters for what it applies to.,additionalProperties:false,type:object,properties:{type:{enum:increment_percent,increment_fixed,set_fixed,increment_percent_diff,type:string},value:{description:\nValue of adjustment.\nThis will represent a fixed(absolute) price, or a percent based on adjustment type.\n ,type:integer},ticket_type_id:{anyOf:{type:string,nullable:true},{type:null}},all_ticket_types:{anyOf:{type:boolean,nullable:true},{type:null}},market_id:{anyOf:{type:string,nullable:true},{type:null}},location_id:{anyOf:{type:string,nullable:true},{type:null}},end_location_id:{anyOf:{type:string,nullable:true},{type:null}},channel:{anyOf:{type:integer,nullable:true},{type:null}}},required:type,value},MinimalPublicEntity:{additionalProperties:false,type:object,properties:{title:{type:string},id:{type:string},entity_id:{format:uuid,type:string},entity_revision_id:{format:uuid,type:string}},required:title,id,entity_id,entity_revision_id},MarketOverview:{type:object,allOf:{additionalProperties:false,type:object,properties:{locations:{type:array,items:{$ref:#/components/schemas/LocationPublic}},ticket_types:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{extensions:{$ref:#/components/schemas/EntityExtensions},order:{type:integer},ticket_type_group:{additionalProperties:false,type:object,properties:{entity_id:{format:uuid,type:string}},required:entity_id},mandatory_companions:{type:array,items:{type:object,properties:{entity_id:{format:uuid,type:string}},required:entity_id}},mandatory_companions_match_quantity:{default:false,description:Enforce the quantity of mandatory companions to match the quantity of the ticket type. E.g. a selection of 2 child tickets requires 2 adult tickets to be selected.,type:boolean},title:{type:string},description:{type:string},short_title:{anyOf:{type:string,nullable:true},{type:null}},short_description:{anyOf:{type:string,nullable:true},{type:null}},capacity_type:{type:object,properties:{entity_id:{format:uuid,type:string}},required:entity_id},capacity_units:{type:integer},capacity_divisible:{type:boolean},limit_per_booking:{anyOf:{description:The maximum number of tickets that can be added to the cart on this channel.,type:integer,nullable:true},{type:null}},analytics_item_id:{anyOf:{type:string,nullable:true},{type:null}},analytics_item_name:{anyOf:{type:string,nullable:true},{type:null}},ota_type:{anyOf:{enum:ADULT,CHILD,SENIOR,YOUTH,INFANT,type:string,nullable:true},{type:null}},min_age:{description:Minimum age for ticket type.,type:number},max_age:{description:Maximum age for ticket type.,type:number}},required:extensions,order,ticket_type_group,mandatory_companions,mandatory_companions_match_quantity,title,description,short_title,short_description,capacity_type,capacity_units,capacity_divisible,limit_per_booking,analytics_item_id,analytics_item_name,ota_type}}},ticket_type_groups:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{icon:{anyOf:{type:string,nullable:true},{type:null}},title:{type:string},description:{type:string}},required:title,description}}},products:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{type:string},short_description:{type:string},category:{anyOf:{type:string,nullable:true},{type:null}},type:{enum:event,route,entitlement,type:string},subtype:{enum:event,route,membership,patron,voucher,admission,type:string},image:{anyOf:{format:uri,description:Image URL of add-on.,type:string,nullable:true},{type:null}},extensions:{$ref:#/components/schemas/EntityExtensions},booking_unit:{$ref:#/components/schemas/BookingUnit},max_uses:{anyOf:{type:number,nullable:true},{type:null}},multi_usage_rules:{anyOf:{$ref:#/components/schemas/MultiUsageRules},{type:null}},capacity:{additionalProperties:false,type:object,properties:{allocation_strategy:{enum:automatic,manual,type:string}},required:allocation_strategy},booking_fee_type:{enum:per_booking,per_ticket,type:string},booking_fee_refundable:{type:boolean},booking_fee_enabled:{type:boolean},booking_fee_per_ticket_type:{enum:all,payable_only,type:string,default:all},deposit_enabled:{type:boolean},deposit_type:{enum:per_booking,per_ticket,type:string},donations_enabled:{type:boolean},donations_refundable:{type:boolean},donations_on_base_price:{type:boolean},donations_roundable:{type:boolean},giftaid_enabled:{type:boolean},giftaid_include_ticket_price:{type:boolean},minimum_spend_enabled:{type:boolean},qty_limit_per_booking_min:{anyOf:{type:integer,nullable:true},{type:null}},qty_limit_per_booking_max:{anyOf:{type:integer,nullable:true},{type:null}},qty_limit_per_booking_type:{enum:none,ticket,capacity_unit,type:string},invalid_ticket_adjustment_enabled:{type:boolean},invalid_ticket_adjustment_calculate_difference:{type:object},invalid_ticket_adjustment_period_before:{anyOf:{type:string,nullable:true},{type:null}},invalid_ticket_adjustment_period_after:{anyOf:{type:string,nullable:true},{type:null}},max_sale_qty:{anyOf:{type:integer,nullable:true},{type:null}},max_sale_period:{anyOf:{type:string,nullable:true},{type:null}},status:{enum:active,suspended,type:string},assets:{anyOf:{type:array,items:{type:string},nullable:true},{type:null}},direction:{enum:fixed,any,type:string},minimum_spend_values:{type:array,items:{$ref:#/components/schemas/PriceDefinition}},postage_fee_enabled:{default:false,type:boolean},postage_fee_type:{enum:per_booking,per_ticket,type:string,default:per_booking },important_information:{type:string},whats_onboard:{type:string},ticket_redemption_instructions:{type:string},prices:{type:object,properties:{ticket_types:{type:object,nullable:true},ticket_types_lowest_prices:{type:object,nullable:true},capacity_options:{type:object,nullable:true},has_pricing_rule:{type:object,nullable:true}},nullable:true},entitled:{type:object,properties:{type:{enum:membership,patron,voucher,type:string},promos:{type:array,items:{$ref:#/components/schemas/PromotionPublic}},redemption_information:{type:string,nullable:true},require_additional_customer_details:{type:boolean,nullable:true},additional_customer_details:{type:array,items:{type:object,properties:{id:{type:string},max_amount:{type:integer}},required:id,max_amount},nullable:true}},required:type,promos,nullable:true},vat_rate:{type:number},analytics_item_id:{anyOf:{type:string,nullable:true},{type:null}},analytics_item_name:{anyOf:{type:string,nullable:true},{type:null}},analytics_override_item_id:{type:boolean},commission:{type:object,properties:{entity_id:{type:string},rate:{type:number},type:{enum:increment_percent,set_fixed,increment_percent_diff,type:string}},required:entity_id,rate,type},custom_fields:{type:array,items:{type:object,properties:{id:{type:string},required:{description:Whether this field should be required.,type:boolean},required_per_customer:{description:Whether this field should be required per customer.,type:boolean},error_message:{description:Localised validation error message.,type:string},placeholder:{description:Localised placeholder text.,type:string},title:{description:Localised field title.,type:string},description:{description:Localised field description.,type:string},order:{description:Sort order of the field.,type:number},field_type:{enum:text,textarea,checkbox,select,radio,date,type:string,description:Type of the field. },options:{description:Options are only relevant for select and radio-type fields.,type:array,items:{type:object,properties:{value:{type:string},title:{type:string},order:{type:number}},required:value,title,order}},group:{description:Grouping of the field.,type:object,properties:{id:{type:string},title:{description:Localised option title.,type:string},description:{description:Localised option description.,type:string}},required:id,title,description}},required:id,required,required_per_customer,error_message,placeholder,title,description,order,field_type,options,group}}},required:title,short_title,description,short_description,category,type,image,extensions,booking_unit,max_uses,multi_usage_rules,booking_fee_type,booking_fee_refundable,booking_fee_enabled,booking_fee_per_ticket_type,deposit_enabled,deposit_type,donations_enabled,donations_refundable,donations_on_base_price,donations_roundable,giftaid_enabled,giftaid_include_ticket_price,minimum_spend_enabled,qty_limit_per_booking_type,invalid_ticket_adjustment_enabled,invalid_ticket_adjustment_calculate_difference,status,assets,direction,minimum_spend_values,postage_fee_enabled,postage_fee_type,important_information,whats_onboard,ticket_redemption_instructions,vat_rate,analytics_item_id,analytics_item_name,analytics_override_item_id,custom_fields},{additionalProperties:false,type:object,properties:{min_price:{type:integer},min_price_non_zero:{type:integer},next_service_date:{anyOf:{format:date,type:string,nullable:true},{type:null}},start_times:{type:array,items:{type:string}},routes:{type:array,items:{type:object,properties:{arrival_location:{type:string},departure_location:{type:string}},required:arrival_location,departure_location}},locations:{type:array,items:{type:string}},ticket_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},capacity_units:{type:number},limit_per_booking:{anyOf:{type:integer,nullable:true},{type:null}}},required:id,capacity_units,limit_per_booking}},sales_limitations:{anyOf:{type:object,properties:{sales_end_date:{type:object,properties:{start_offset:{type:string}},required:start_offset},requires_entitlement:{default:false,type:boolean}},required:sales_end_date,requires_entitlement,nullable:true},{type:null}}},required:min_price,min_price_non_zero,next_service_date,start_times,routes,locations,ticket_types,sales_limitations}}},route_segments:{type:array,items:{additionalProperties:false,type:object,properties:{location:{type:string},destinations:{type:array,items:{type:string}}},required:location,destinations}},combos:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{assets:{anyOf:{type:array,items:{type:string},nullable:true},{type:null}},auto_apply:{type:boolean},max_sale_qty:{anyOf:{type:integer,nullable:true},{type:null}},max_sale_period:{anyOf:{type:string,nullable:true},{type:null}},promo_code:{anyOf:{type:string,nullable:true},{type:null}},required_ticket_qty:{anyOf:{type:integer,nullable:true},{type:null}},searchable:{type:boolean},extensions:{$ref:#/components/schemas/EntityExtensions},num_items_to_activate:{anyOf:{type:integer,nullable:true},{type:null}},title:{type:string},short_title:{type:string},description:{type:string},terms:{type:string},terms_url:{type:string},short_description:{type:string}},required:auto_apply,searchable,extensions,title,short_title,description,terms,terms_url,short_description}}},addons:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/CartAddonOption},{additionalProperties:false,type:object,properties:{trigger_product_ids:{type:array,items:{type:string}}},required:trigger_product_ids}}},capacity_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{type:string},title:{type:string},description:{type:string}},required:id,entity_id,title,description}}},required:locations,ticket_types,ticket_type_groups,products,route_segments,combos,addons,capacity_types},{type:object,properties:{market:{$ref:#/components/schemas/Market}},required:market}},Overview:{additionalProperties:false,type:object,properties:{markets:{type:array,items:{$ref:#/components/schemas/Market}},locations:{type:array,items:{$ref:#/components/schemas/LocationPublic}},services:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{type:object,properties:{type:{enum:event,route,type:string},operator_type:{enum:transfer,internal,type:string},title:{type:string},description:{type:string}},required:type,operator_type,title,description}}},ticket_types:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{extensions:{$ref:#/components/schemas/EntityExtensions},order:{type:integer},ticket_type_group:{additionalProperties:false,type:object,properties:{entity_id:{format:uuid,type:string}},required:entity_id},mandatory_companions:{type:array,items:{type:object,properties:{entity_id:{format:uuid,type:string}},required:entity_id}},mandatory_companions_match_quantity:{default:false,description:Enforce the quantity of mandatory companions to match the quantity of the ticket type. E.g. a selection of 2 child tickets requires 2 adult tickets to be selected.,type:boolean},title:{type:string},description:{type:string},short_title:{anyOf:{type:string,nullable:true},{type:null}},short_description:{anyOf:{type:string,nullable:true},{type:null}},capacity_type:{type:object,properties:{entity_id:{format:uuid,type:string}},required:entity_id},capacity_units:{type:integer},capacity_divisible:{type:boolean},limit_per_booking:{anyOf:{description:The maximum number of tickets that can be added to the cart on this channel.,type:integer,nullable:true},{type:null}},analytics_item_id:{anyOf:{type:string,nullable:true},{type:null}},analytics_item_name:{anyOf:{type:string,nullable:true},{type:null}},ota_type:{anyOf:{enum:ADULT,CHILD,SENIOR,YOUTH,INFANT,type:string,nullable:true},{type:null}},min_age:{description:Minimum age for ticket type.,type:number},max_age:{description:Maximum age for ticket type.,type:number}},required:extensions,order,ticket_type_group,mandatory_companions,mandatory_companions_match_quantity,title,description,short_title,short_description,capacity_type,capacity_units,capacity_divisible,limit_per_booking,analytics_item_id,analytics_item_name,ota_type}}},ticket_type_groups:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{icon:{anyOf:{type:string,nullable:true},{type:null}},title:{type:string},description:{type:string}},required:title,description}}},products:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{title:{type:string},short_title:{type:string},description:{type:string},short_description:{type:string},category:{anyOf:{type:string,nullable:true},{type:null}},type:{enum:event,route,entitlement,type:string},subtype:{enum:event,route,membership,patron,voucher,admission,type:string},image:{anyOf:{format:uri,description:Image URL of add-on.,type:string,nullable:true},{type:null}},extensions:{$ref:#/components/schemas/EntityExtensions},booking_unit:{$ref:#/components/schemas/BookingUnit},max_uses:{anyOf:{type:number,nullable:true},{type:null}},multi_usage_rules:{anyOf:{$ref:#/components/schemas/MultiUsageRules},{type:null}},capacity:{additionalProperties:false,type:object,properties:{allocation_strategy:{enum:automatic,manual,type:string}},required:allocation_strategy},booking_fee_type:{enum:per_booking,per_ticket,type:string},booking_fee_refundable:{type:boolean},booking_fee_enabled:{type:boolean},booking_fee_per_ticket_type:{enum:all,payable_only,type:string,default:all},deposit_enabled:{type:boolean},deposit_type:{enum:per_booking,per_ticket,type:string},donations_enabled:{type:boolean},donations_refundable:{type:boolean},donations_on_base_price:{type:boolean},donations_roundable:{type:boolean},giftaid_enabled:{type:boolean},giftaid_include_ticket_price:{type:boolean},minimum_spend_enabled:{type:boolean},qty_limit_per_booking_min:{anyOf:{type:integer,nullable:true},{type:null}},qty_limit_per_booking_max:{anyOf:{type:integer,nullable:true},{type:null}},qty_limit_per_booking_type:{enum:none,ticket,capacity_unit,type:string},invalid_ticket_adjustment_enabled:{type:boolean},invalid_ticket_adjustment_calculate_difference:{type:object},invalid_ticket_adjustment_period_before:{anyOf:{type:string,nullable:true},{type:null}},invalid_ticket_adjustment_period_after:{anyOf:{type:string,nullable:true},{type:null}},max_sale_qty:{anyOf:{type:integer,nullable:true},{type:null}},max_sale_period:{anyOf:{type:string,nullable:true},{type:null}},status:{enum:active,suspended,type:string},assets:{anyOf:{type:array,items:{type:string},nullable:true},{type:null}},direction:{enum:fixed,any,type:string},minimum_spend_values:{type:array,items:{$ref:#/components/schemas/PriceDefinition}},postage_fee_enabled:{default:false,type:boolean},postage_fee_type:{enum:per_booking,per_ticket,type:string,default:per_booking },important_information:{type:string},whats_onboard:{type:string},ticket_redemption_instructions:{type:string},prices:{type:object,properties:{ticket_types:{type:object,nullable:true},ticket_types_lowest_prices:{type:object,nullable:true},capacity_options:{type:object,nullable:true},has_pricing_rule:{type:object,nullable:true}},nullable:true},entitled:{type:object,properties:{type:{enum:membership,patron,voucher,type:string},promos:{type:array,items:{$ref:#/components/schemas/PromotionPublic}},redemption_information:{type:string,nullable:true},require_additional_customer_details:{type:boolean,nullable:true},additional_customer_details:{type:array,items:{type:object,properties:{id:{type:string},max_amount:{type:integer}},required:id,max_amount},nullable:true}},required:type,promos,nullable:true},vat_rate:{type:number},analytics_item_id:{anyOf:{type:string,nullable:true},{type:null}},analytics_item_name:{anyOf:{type:string,nullable:true},{type:null}},analytics_override_item_id:{type:boolean},commission:{type:object,properties:{entity_id:{type:string},rate:{type:number},type:{enum:increment_percent,set_fixed,increment_percent_diff,type:string}},required:entity_id,rate,type},custom_fields:{type:array,items:{type:object,properties:{id:{type:string},required:{description:Whether this field should be required.,type:boolean},required_per_customer:{description:Whether this field should be required per customer.,type:boolean},error_message:{description:Localised validation error message.,type:string},placeholder:{description:Localised placeholder text.,type:string},title:{description:Localised field title.,type:string},description:{description:Localised field description.,type:string},order:{description:Sort order of the field.,type:number},field_type:{enum:text,textarea,checkbox,select,radio,date,type:string,description:Type of the field. },options:{description:Options are only relevant for select and radio-type fields.,type:array,items:{type:object,properties:{value:{type:string},title:{type:string},order:{type:number}},required:value,title,order}},group:{description:Grouping of the field.,type:object,properties:{id:{type:string},title:{description:Localised option title.,type:string},description:{description:Localised option description.,type:string}},required:id,title,description}},required:id,required,required_per_customer,error_message,placeholder,title,description,order,field_type,options,group}}},required:title,short_title,description,short_description,category,type,image,extensions,booking_unit,max_uses,multi_usage_rules,booking_fee_type,booking_fee_refundable,booking_fee_enabled,booking_fee_per_ticket_type,deposit_enabled,deposit_type,donations_enabled,donations_refundable,donations_on_base_price,donations_roundable,giftaid_enabled,giftaid_include_ticket_price,minimum_spend_enabled,qty_limit_per_booking_type,invalid_ticket_adjustment_enabled,invalid_ticket_adjustment_calculate_difference,status,assets,direction,minimum_spend_values,postage_fee_enabled,postage_fee_type,important_information,whats_onboard,ticket_redemption_instructions,vat_rate,analytics_item_id,analytics_item_name,analytics_override_item_id,custom_fields},{additionalProperties:false,type:object,properties:{min_price:{type:integer},min_price_non_zero:{type:integer},next_service_date:{anyOf:{format:date,type:string,nullable:true},{type:null}},start_times:{type:array,items:{type:string}},routes:{type:array,items:{type:object,properties:{arrival_location:{type:string},departure_location:{type:string}},required:arrival_location,departure_location}},locations:{type:array,items:{type:string}},ticket_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},capacity_units:{type:number},limit_per_booking:{anyOf:{type:integer,nullable:true},{type:null}}},required:id,capacity_units,limit_per_booking}},sales_limitations:{anyOf:{type:object,properties:{sales_end_date:{type:object,properties:{start_offset:{type:string}},required:start_offset},requires_entitlement:{default:false,type:boolean}},required:sales_end_date,requires_entitlement,nullable:true},{type:null}}},required:min_price,min_price_non_zero,next_service_date,start_times,routes,locations,ticket_types,sales_limitations}}},route_segments:{type:array,items:{additionalProperties:false,type:object,properties:{location:{type:string},destinations:{type:array,items:{type:string}}},required:location,destinations}},combos:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityReference},{additionalProperties:false,type:object,properties:{assets:{anyOf:{type:array,items:{type:string},nullable:true},{type:null}},auto_apply:{type:boolean},max_sale_qty:{anyOf:{type:integer,nullable:true},{type:null}},max_sale_period:{anyOf:{type:string,nullable:true},{type:null}},promo_code:{anyOf:{type:string,nullable:true},{type:null}},required_ticket_qty:{anyOf:{type:integer,nullable:true},{type:null}},searchable:{type:boolean},extensions:{$ref:#/components/schemas/EntityExtensions},num_items_to_activate:{anyOf:{type:integer,nullable:true},{type:null}},title:{type:string},short_title:{type:string},description:{type:string},terms:{type:string},terms_url:{type:string},short_description:{type:string}},required:auto_apply,searchable,extensions,title,short_title,description,terms,terms_url,short_description}}},addons:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/CartAddonOption},{additionalProperties:false,type:object,properties:{trigger_product_ids:{type:array,items:{type:string}}},required:trigger_product_ids}}},capacity_types:{type:array,items:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{type:string},title:{type:string},description:{type:string}},required:id,entity_id,title,description}}},required:markets,locations,services,ticket_types,ticket_type_groups,products,route_segments,combos,addons,capacity_types},CheckInAdjustment:{additionalProperties:false,type:object,properties:{type:{enum:ticket-type,date,datetime,type:string},from:{additionalProperties:false,type:object,properties:{id:{type:string},title:{type:string}},required:id,title},to:{additionalProperties:false,type:object,properties:{id:{type:string},title:{type:string}},required:id,title}},required:type,from,to},CheckInInput:{type:object,allOf:{type:object,properties:{reference:{type:string},referenceSource:{description:An optional source, describing how the reference was obtained. Used by integrations.,type:string},customer:{type:object,properties:{license_plate:{anyOf:{type:string,nullable:true},{type:null}}}}},required:reference},{$ref:#/components/schemas/CheckInParams}},CheckInIssue:{enum:INVALID_TICKET_TYPE,INVALID_TICKET_TYPE_NEEDS_ADJUSTMENT,INVALID_TIME,INVALID_TIME_NEEDS_ADJUSTMENT,INVALID_LOCATION,INVALID_DESTINATION,EXPIRED,UNPAID,REDEEMED,CANCELLED,REPLACED,NOT_FOUND,type:string},CheckInOptionsInput:{type:object,allOf:{type:object,properties:{reference:{type:string,nullable:true},license_plate:{type:string,nullable:true}}},{$ref:#/components/schemas/CheckInParams}},CheckInOption:{type:object,allOf:{$ref:#/components/schemas/CheckInOptionBase},{additionalProperties:false,type:object,properties:{recommendations:{type:array,items:{$ref:#/components/schemas/RecommendationOption}},pricing:{description:\nAn indication of the price that a customer will incur if they check in.\n\nUnlike any prices found in `valid_check_in_adjustment`, this price is\nfor informational purposes only, and is not enforced by Expian. Use\ncases include OBE (On Board Equipment) check-ins provided by integrations,\nwhere customers are recognised by a device on their possession, and are\ncharged automatically some time after the check-in.\n ,anyOf:{additionalProperties:false,type:object,properties:{price:{type:integer},currency:{minLength:3,maxLength:3,type:string}},required:price,currency,nullable:true},{type:null}}},required:recommendations,pricing}},CheckInOptionBase:{additionalProperties:false,type:object,properties:{reference:{type:string},valid:{type:boolean},valid_check_in_adjustment:{anyOf:{description:Details about upgrading the check-in option to be valid for a price.,additionalProperties:false,type:object,properties:{id:{format:uuid,type:string},price:{type:integer},currency:{minLength:3,maxLength:3,type:string},adjustments:{type:array,items:{$ref:#/components/schemas/CheckInAdjustment}}},required:id,price,currency,adjustments,nullable:true},{type:null}},system:{description:`\Expian\`, or the name of an external system if an integration is used.,type:string},descriptionHTML:{anyOf:{description:A description of the check-in option, in HTML format.,type:string,nullable:true},{type:null}},title:{type:string},issues:{type:array,items:{$ref:#/components/schemas/CheckInIssue}},tickets:{type:array,items:{additionalProperties:false,type:object,properties:{id:{description:The ID of the ticket.,type:string},status:{enum:VALID,REDEEMED,CANCELLED,REPLACED,UNPAID,EXPIRED,INVALID,type:string},title:{description:The title of the ticket.,type:string},ticket_type_id:{description:The ID of the ticket type.,type:string},redemptions_count:{description:The number of times this ticket has been redeemed.,type:integer},redemptions_max:{description:The maximum number of times this ticket can be used. `null` means the ticket can be used an unlimited number of times until it expires.,anyOf:{type:integer,nullable:true},{type:null}},redemptions_remaining:{description:The number of times this ticket can be used. `null` means the ticket has an unlimited number of redemptions until it expires.,anyOf:{type:integer,nullable:true},{type:null}},valid_from_time:{description:The iso time representing the starting period,anyOf:{format:date-time,type:string,nullable:true},{type:null}},expiry_time:{description:The iso time representing the expire period,anyOf:{format:date-time,type:string,nullable:true},{type:null}}},required:id,status,title,ticket_type_id,redemptions_count,redemptions_max,redemptions_remaining}},debug:{description:Raw information from external APIs that were invoked by Expian.\n\nThis may not be populated for all integrations and should not be relied upon. It is for debugging purposes only.}},required:reference,valid,valid_check_in_adjustment,system,descriptionHTML,title,issues,tickets},CheckInParams:{type:object,properties:{attendees:{maxItems:10,description:\nA list of ticket types that represent the attendees.\n\nIt is used to determine which tickets to redeem, and to enforce\nvalidation and ticket adjustment logic.\n\nFor example, a booking can have 4 adult tickets. If you check\nin with `attendees` as `{ ticket_type_id: adult, qty: 2 }`,\nthen only 2 of the tickets will be checked and redeemed. This action\ncould be performed twice before receiving a check-in error, assuming\nthe `?includeattendees` query parameter is used.\n\nThis property may be omitted to indicate that all remaining valid\ntickets should be redeemed.\n ,type:array,items:{type:object,properties:{ticket_type_id:{type:string},qty:{minimum:1,maximum:400,type:integer}},required:ticket_type_id,qty}},device:{type:object,properties:{id:{type:string},location:{type:string},destinations:{type:array,items:{type:string}}},required:location,destinations}},required:device},CheckInResult:{type:object,allOf:{$ref:#/components/schemas/CheckInOptionBase},{additionalProperties:false,type:object,properties:{lane:{type:number}}}},Ticket:{type:object,allOf:{additionalProperties:false,type:object,properties:{id:{type:string},reference:{anyOf:{type:string,nullable:true},{type:null}},hash:{type:string},version:{type:number},external_id:{type:string,nullable:true},issuer:{type:string},invalidation_reason:{anyOf:{enum:REPLACED,CANCELLED,REDEEMED,type:string,nullable:true},{type:null}},redemptions:{type:array,items:{additionalProperties:false,type:object,properties:{venue:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{type:string,nullable:true},entity_revision_id:{type:string,nullable:true},title:{type:string,nullable:true}},required:id,nullable:true},location:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{type:string,nullable:true},entity_revision_id:{type:string,nullable:true},title:{type:string,nullable:true}},required:id,nullable:true},sub_location:{additionalProperties:false,type:object,properties:{id:{type:string},entity_id:{type:string,nullable:true},entity_revision_id:{type:string,nullable:true},title:{type:string,nullable:true}},required:id,nullable:true},scanned_at:{type:string},user_id:{type:string,nullable:true},user_email:{type:string,nullable:true},user_fullname:{type:string,nullable:true},source:{type:string,nullable:true},is_continuation:{type:boolean}},required:scanned_at,is_continuation}},order:{additionalProperties:false,type:object,properties:{id:{type:string},revision:{anyOf:{type:string,nullable:true},{type:null}}},required:id,revision,nullable:true},booking:{additionalProperties:false,type:object,properties:{id:{type:string},revision:{anyOf:{type:string,nullable:true},{type:null}}},required:id,revision,nullable:true},product:{anyOf:{type:object,allOf:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title}},{additionalProperties:false,type:object,properties:{type:{$ref:#/components/schemas/ProductType},subtype:{$ref:#/components/schemas/ProductSubtype},operator:{type:string,nullable:true},booking_unit:{$ref:#/components/schemas/BookingUnit}},required:type},nullable:true},{type:null}},title:{description:Title to display for the ticket. Such as \Adult\.,type:string},time:{anyOf:{$ref:#/components/schemas/BookingBookedUnit},{type:null}},locations:{type:array,items:{type:object,allOf:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title}},{additionalProperties:false,type:object,properties:{timezone:{type:string}},required:timezone}}},services:{type:array,items:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title}}},is_proceeded_by:{type:array,items:{type:string}},main_timezone:{type:string},created_at:{type:string},invalidated_date:{anyOf:{type:string,nullable:true},{type:null}},requires_collection:{anyOf:{type:boolean,nullable:true},{type:null}},pricing:{$ref:#/components/schemas/BookingComponentPricing}},required:id,reference,hash,version,issuer,invalidation_reason,redemptions,product,title,time,locations,services,is_proceeded_by,main_timezone,created_at,invalidated_date},{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:EVENT,type:string},usage_rules:{additionalProperties:false,type:object,properties:{max_uses:{anyOf:{type:number,nullable:true},{type:null}},first_use_within:{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:end_of_day,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:period,type:string},period:{type:string}},required:type,period},{additionalProperties:false,type:object,properties:{type:{enum:period_ceil_month,type:string},period:{type:string}},required:type,period}},active_period:{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:end_of_day,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:period,type:string},period:{type:string}},required:type,period},{additionalProperties:false,type:object,properties:{type:{enum:period_ceil_month,type:string},period:{type:string}},required:type,period}}},required:max_uses,first_use_within,active_period},ticket_type:{type:object,allOf:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title}},{additionalProperties:false,type:object,properties:{qualifying_criteria:{example:Age 16+,type:string,nullable:true},qty:{type:number,nullable:true},passenger_count:{description:Number of people the ticket represents. E.g. a \family of 4 ticket\ may represent 4 people.,type:number,nullable:true}}}}},required:type,usage_rules,ticket_type},{additionalProperties:false,type:object,properties:{type:{enum:JOURNEY,type:string},direction:{enum:FIXED,ANY,FIXED_REVERSING,type:string},usage_rules:{additionalProperties:false,type:object,properties:{max_uses:{anyOf:{type:number,nullable:true},{type:null}},first_use_within:{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:end_of_day,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:period,type:string},period:{type:string}},required:type,period},{additionalProperties:false,type:object,properties:{type:{enum:period_ceil_month,type:string},period:{type:string}},required:type,period}},active_period:{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:end_of_day,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:period,type:string},period:{type:string}},required:type,period},{additionalProperties:false,type:object,properties:{type:{enum:period_ceil_month,type:string},period:{type:string}},required:type,period}}},required:max_uses,first_use_within,active_period},ticket_type:{type:object,allOf:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title}},{additionalProperties:false,type:object,properties:{qualifying_criteria:{example:Age 16+,type:string,nullable:true},qty:{type:number,nullable:true},passenger_count:{description:Number of people the ticket represents. E.g. a \family of 4 ticket\ may represent 4 people.,type:number,nullable:true}}}}},required:type,direction,usage_rules,ticket_type},{additionalProperties:false,type:object,properties:{type:{enum:ADDON,type:string},usage_rules:{additionalProperties:false,type:object,properties:{max_uses:{anyOf:{type:number,nullable:true},{type:null}}},required:max_uses},addon:{type:object,allOf:{type:object,allOf:{$ref:#/components/schemas/ImmutableEntityPublic},{additionalProperties:false,type:object,properties:{title:{type:string}},required:title}},{additionalProperties:false,type:object,properties:{parent_entity_id:{type:string}},required:parent_entity_id}}},required:type,usage_rules,addon}}},TicketExpanded:{type:object,allOf:{$ref:#/components/schemas/Ticket},{additionalProperties:false,type:object,properties:{expiry_date:{type:string},usage:{additionalProperties:false,type:object,properties:{uses_count:{type:number},max_uses:{anyOf:{type:number,nullable:true},{type:null}},valid_days:{type:array,items:{type:number},nullable:true},first_use:{additionalProperties:false,type:object,properties:{start:{type:string,nullable:true},end:{type:string}},required:end},subsequent_use:{additionalProperties:false,type:object,properties:{end_rule:{anyOf:{additionalProperties:false,type:object,properties:{type:{enum:SAME_AS_FIRST_USE,type:string}},required:type},{additionalProperties:false,type:object,properties:{type:{enum:OFFSET_FROM_FIRST_USE,type:string},offset:{type:string}},required:type,offset},{additionalProperties:false,type:object,properties:{type:{enum:END_OF_DAY_AFTER_FIRST_USE,type:string},days:{type:number}},required:type,days}}},required:end_rule}},required:uses_count,max_uses,first_use},paid:{description:Whether the ticket has been paid for. `false` for tickets using \pay on arrival\. Tickets are not valid until paid for.,type:boolean},history:{type:array,items:{additionalProperties:false,type:object,properties:{event:{type:string},timestamp:{type:string}},required:event,timestamp}},upgraded:{description:Whether the ticket has been upgraded towards a product.,type:boolean}},required:expiry_date,usage,paid,history,upgraded}},TicketV1:{description:A legacy data shape that should not be used. It exists for compatibility reasons.,additionalProperties:false,type:object,properties:{id:{type:string},valid:{type:boolean},status:{type:string},last_event:{anyOf:{additionalProperties:false,type:object,properties:{venue_id:{type:string,nullable:true},location:{type:string,nullable:true},scanned_at:{type:string},user_id:{anyOf:{type:string,nullable:true},{type:null}}},required:scanned_at,user_id,nullable:true},{type:null}},scanned:{type:number},reference:{type:string},type:{anyOf:{$ref:#/components/schemas/ProductType},{type:null}},product_id:{anyOf:{type:string,nullable:true},{type:null}},location_id:{type:string,nullable:true},end_location_id:{type:string,nullable:true},patrons:{type:array,items:{additionalProperties:false,type:object,properties:{patron_type_id:{type:string},quantity:{type:number}},required:patron_type_id,quantity}},start_time:{type:string}},required:id,valid,status,last_event,scanned,reference,type,product_id,patrons,start_time},TicketV2:{description:A complete representation of a ticket.,type:object,allOf:{$ref:#/components/schemas/TicketExpanded},{additionalProperties:false,type:object,properties:{status:{enum:VALID,EXPIRED,REPLACED,CANCELLED,REDEEMED,UNPAID,type:string},activated_at:{anyOf:{type:string,nullable:true},{type:null}}},required:status,activated_at}},TicketV3:{description:A condensed representation of a ticket, more practical than the V2 alternative.,additionalProperties:false,type:object,properties:{id:{type:string},reference:{anyOf:{type:string,nullable:true},{type:null}},order_id:{type:string},booking_id:{type:string},product_id:{anyOf:{type:string,nullable:true},{type:null}},status:{enum:VALID,EXPIRED,REPLACED,CANCELLED,REDEEMED,UNPAID,type:string},type:{enum:EVENT,JOURNEY,ADDON,type:string},title:{type:string},start_title:{type:string},start_time:{anyOf:{type:string,nullable:true},{type:null}},start_date:{anyOf:{type:string,nullable:true},{type:null}},end_time:{type:string,nullable:true},end_date:{type:string,nullable:true},uses:{type:integer},max_uses:{anyOf:{type:integer},{type:null}},location_id:{type:string,nullable:true},end_location_id:{type:string,nullable:true},ticket_type_id:{type:string,nullable:true},addon_id:{type:string,nullable:true},ticket_type_entity_id:{type:string,nullable:true},addon_option_entity_id:{type:string,nullable:true},last_scanned_at:{anyOf:{format:date-time,description:The last time this ticket was scanned.,type:string,nullable:true},{type:null}},upgraded:{type:boolean}},required:id,reference,order_id,booking_id,product_id,status,type,title,start_title,start_time,start_date,uses,max_uses,upgraded},TicketUnredeemInput:{additionalProperties:false,type:object,properties:{location_id:{type:string}}},TicketRedemptionInput:{additionalProperties:false,type:object,properties:{scanned_at:{format:date-time,type:string},location_id:{type:string},sub_location_id:{type:string},venue_id:{type:string}},required:scanned_at},TicketScanRecord:{additionalProperties:false,type:object,properties:{success:{description:Indicates whether the ticket scan was successful or not,type:boolean},messages:{type:array,items:{description:Provides additional information or feedback about the scan process.,example:REEDEMED_SUCCESS,TICKET_IN_THE_PAST,ALREADY_REDEEMED,ALREADY_VISITED_TODAY,WRONG_LOCATION,OUTSIDE_THE_ALLOWED_TIMEFRAME,MAX_REENTRIES_REACHED,WRONG_SUB_LOCATION,WITHIN_TIME_INTERVAL,REPLACED,CANCELLED,NOT_PAID,EXPIRED,TIME_IN_FUTURE,RE-ENTRY,MEMBERSHIP_EXPIRED,MEMBERSHIP_SUSPENDED,TICKET_NOT_FOUND,OFFLINE_SCAN,OFFLINE_RESCAN,type:string}},overriden:{description:Indicates whether the scan was overriden.,type:boolean},override_reason:{type:array,items:{description:Provides additional information about the reason of the overriden scan.,type:string}},reference:{description:The reference of the ticket/booking/membership scanned,type:string},type:{description:The type of the ticket scan.,example:HRP Ticket,GOCITY,HRP Membership,type:string},booking_id:{description:The booking reference of the scan, if it exists,type:string},order_id:{description:The order identifier associated with the ticket, if it exists,type:string},addon_option_entity_id:{format:uuid,description:The addon option entity UUID associated with the ticket, if it exists,type:string},ticket_type_entity_id:{format:uuid,description:UUID of the ticket type entity id, if it exists,type:string},timestamp:{format:date-time,description:The exact date and time when the scan occurred,type:string},location_entity_id:{format:uuid,description:The location entity UUID where the scan happened,type:string},sub_location_entity_id:{format:uuid,description:The sub-location entity UUID within the main location where the scan happened,type:string},device_id:{description:The identifier of the device used to perform the scan,type:string},operator:{description:The email address of the operator who performed the scan,type:string},attendance_id:{format:uuid,description:The attendance ID associated with the scan, if it exists. It is used for entries without associated tickets.,type:string}},required:success,messages,overriden,reference,type,timestamp,location_entity_id,device_id,operator},UserLoginStepChallenge:{type:object,allOf:{additionalProperties:false,type:object,properties:{step:{enum:CHALLENGE,type:string},username:{type:string},session:{type:string}},required:step,username,session},{anyOf:{additionalProperties:false,type:object,properties:{challenge:{type:string}},required:challenge},{additionalProperties:false,type:object,properties:{challenge:{enum:NEW_PASSWORD_REQUIRED,type:string},passwordPolicy:{$ref:#/components/schemas/UserPoolPasswordPolicy}},required:challenge}}},UserLoginStepForceChange:{additionalProperties:false,type:object,properties:{step:{enum:FORCE_CHANGE_PASSWORD,type:string},passwordPolicy:{$ref:#/components/schemas/UserPoolPasswordPolicy}},required:step,passwordPolicy},UserLoginStepLoggedIn:{additionalProperties:false,type:object,properties:{step:{enum:LOGGED_IN,type:string},accessToken:{type:string},expiry:{type:integer},idToken:{type:string},refreshToken:{description:Refresh token. Only available when calling the API with a password and does not change between access token refreshes.,type:string}},required:step,accessToken,expiry,idToken},CustomerUserProfile:{additionalProperties:false,type:object,properties:{department:{type:string},email:{format:email,type:string},enabled:{type:boolean},id:{format:uuid,type:string},name:{description:The full name of the user. Used for backwards compatibility.,type:string},full_name:{type:string},roles:{type:string},status:{type:string},username:{type:string},primary_phone:{type:string},secondary_phone:{type:string},trade_partner:{additionalProperties:false,type:object,properties:{id:{format:uuid,type:string},status:{enum:active,inactive,suspended,type:string},address:{anyOf:{additionalProperties:false,type:object,properties:{line_1:{type:string},line_2:{type:string},city:{type:string},country:{type:string},main_contact_name:{type:string},post_code:{type:string}},required:line_1,line_2,city,country,main_contact_name,post_code,nullable:true},{type:null}},title:{type:string}},required:id,status,address,title},first_name:{type:string},last_name:{type:string},settings:{$ref:#/components/schemas/TradePartnerConfig},entitlements:{$ref:#/components/schemas/UserEntitlements},type:{$ref:#/components/schemas/UserTypes},title:{type:string},gender:{type:string},date_of_birth:{type:string},address:{additionalProperties:false,type:object,properties:{title:{type:string},firstname:{type:string},lastname:{type:string},company:{type:string},line_1:{type:string},line_2:{type:string},line_3:{type:string},town:{type:string},county:{type:string},country:{type:string},post_code:{type:string}}},vehicle:{additionalProperties:false,type:object,properties:{license_plate:{type:string},nickname:{type:string}},required:license_plate}},required:department,email,enabled,id,name,status,username,primary_phone,secondary_phone,type},UserPoolPasswordPolicy:{anyOf:{additionalProperties:false,type:object,properties:{MinimumLength:{description:The minimum length of the password,minimum:6,type:number},RequireUppercase:{description:Refers to whether you have required users to use at least one uppercase letter in their password,type:boolean},RequireLowercase:{description:Refers to whether you have required users to use at least one lowercase letter in their password,type:boolean},RequireNumbers:{description:Refers to whether you have required users to use at least one number in their password,type:boolean},RequireSymbols:{description:Refers to whether you have required users to use at least one symbol in their password,type:boolean}},required:MinimumLength,RequireUppercase,RequireLowercase,RequireNumbers,RequireSymbols,nullable:true},{type:null}},SalesShift:{type:object,properties:{id:{description:The unique identifier for the shift.,type:string},balance_cash:{description:The current balance within the cash box. A sum of all cash order transactions and manual cash add/lift events.,type:integer},balance_external:{description:The current total of all orders paid for by external payment methods during the shift.,type:integer},balance_card:{description:The current total of all orders paid for by card payment methods during the shift.,type:integer},status:{description:The current status of the shift.,enum:open,closed,type:string},user_id:{description:The user who started this shift.,format:uuid,type:string},device_id:{description:The kiosk device for this shift.,type:string},location_id:{description:Where this shift is taking place.,type:string},deposit_box_id:{anyOf:{description:The cash deposit box used to store earnings at the end of the shift. Null if the shift is still open.,type:string,nullable:true},{type:null}},sub_location_id:{anyOf:{description:The sub-location within this location where the shift is taking place.,type:string,nullable:true},{type:null}},created_at:{description:The date this shift was created.,format:date-time,type:string},updated_at:{description:The date this shift was last updated.,format:date-time,type:string},sales_user_ids:{description:The users who have placed orders during this shift.,type:array,items:{format:uuid,type:string}}},required:id,balance_cash,balance_external,balance_card,status,user_id,device_id,location_id,created_at,updated_at,sales_user_ids},ServiceInstance:{additionalProperties:false,type:object,properties:{entity_revision_id:{format:uuid,description:The unique identifier for the entity_revision.,type:string},entity_id:{description:The unique identifier for the entity.,format:uuid,type:string},id:{description:The unique identifier for the Service Instance, as configured via the Admin Portal or API. If not explicitly set, this defaults to the `entity_id`.,type:string},type:{enum:event,route,type:string,description:Service instance type},status:{enum:active,suspended,cancelled,locked,type:string},max_bookings_allowed:{anyOf:{type:integer,nullable:true},{type:null}},time_display:{enum:time,time-range,title,none,type:string,default:time,description:\nHow the options time should be displayed to the user in the UI, such\nas when they are making a selection, or viewing their booking, confirmation\nemail, or tickets.\n\nNote, this is relevant only for the _time_ display. The _date_ may be displayed\nregardless.\n\nThe options are:\n\n- **time** - Display the start time, like \09:00\.\n- **time-range** - Display the start and end time, like \09:00 - 12:00\.\n- **title** - Display a custom title configured on the time slot, like \Morning\.\n- **none** - Do not display anything. Useful if there is only 1 option, and the\n time is not important in the UI. If multiple options are available, this directive\n may be ignored, falling back to \time\ display.\n },capacity_limits:{type:array,items:{type:object,properties:{capacity_option_id:{type:string},limit:{type:integer},channel:{anyOf:{type:integer,nullable:true},{type:null}},entitlement_type:{anyOf:{enum:membership,patron,voucher,none,type:string,nullable:true},{type:null}}},required:capacity_option_id,limit}},capacity_plan:{type:object,properties:{id:{format:uuid,type:string}},required:id},locales:{type:array,items:{type:object,properties:{locale:{type:string},time_title:{type:string}},required:locale,time_title}},segments:{type:array,items:{type:object,properties:{start:{format:date-time,type:string},end:{anyOf:{type:null},{format:date-time,type:string},nullable:true},status:{enum:active,suspended,cancelled,locked,type:string},location:{type:object,properties:{id:{type:string}},required:id}},required:start,status,location}},service:{type:object,properties:{id:{description:Unique identifier for a service as configured via the Admin Portal,type:string}},required:id},venue:{type:object,properties:{id:{description:Unique identified for a venues configured via the Admin Portal,type:string}},required:id}},required:entity_revision_id,entity_id,id,type,status,max_bookings_allowed,time_display,capacity_limits,capacity_plan,locales,segments,service,venue},ServiceInstancePayload:{type:array,items:{$ref:#/components/schemas/ServiceInstancePayloadItem}},ServiceInstancePayloadItem:{type:object,properties:{id:{type:string},locales:{type:array,items:{type:object,properties:{locale:{type:string},time_title:{type:string}},required:locale,time_title}},type:{enum:event,route,type:string,description:Service instance type},status:{enum:active,suspended,cancelled,locked,type:string},max_bookings_allowed:{anyOf:{type:integer,nullable:true},{type:null}},time_display:{enum:time,time-range,title,none,type:string,default:time,description:\nHow the options time should be displayed to the user in the UI, such\nas when they are making a selection, or viewing their booking, confirmation\nemail, or tickets.\n\nNote, this is relevant only for the _time_ display. The _date_ may be displayed\nregardless.\n\nThe options are:\n\n- **time** - Display the start time, like \09:00\.\n- **time-range** - Display the start and end time, like \09:00 - 12:00\.\n- **title** - Display a custom title configured on the time slot, like \Morning\.\n- **none** - Do not display anything. Useful if there is only 1 option, and the\n time is not important in the UI. If multiple options are available, this directive\n may be ignored, falling back to \time\ display.\n },capacity_limits:{type:array,items:{type:object,properties:{capacity_option_id:{type:string},limit:{type:integer},channel:{anyOf:{type:integer,nullable:true},{type:null}},entitlement_type:{anyOf:{enum:membership,patron,voucher,none,type:string,nullable:true},{type:null}}},required:capacity_option_id,limit},nullable:true},capacity_plan:{type:object,properties:{id:{type:string}},required:id},segments:{type:array,items:{type:object,properties:{start:{format:date-time,type:string},end:{anyOf:{type:null},{format:date-time,type:string},nullable:true},status:{enum:active,suspended,cancelled,locked,type:string},location:{type:object,properties:{id:{type:string}},required:id}},required:start,status,location}},venue:{type:object,properties:{id:{type:string}},required:id}},required:id,locales,type,status,time_display,capacity_plan,segments,venue},ServiceInstanceBulkUpdateResponse:{additionalProperties:false,type:object,properties:{inserted:{description:The number of service instances that were newly created due to no existing instance with the same ID.,type:number},updated:{description:The number of service instances that were updated due to existing instances being found with the same ID.,type:number},skipped:{description:The number of service instances that were skipped due to existing instances being found with the same ID, but with no changes detected.,type:number}},required:inserted,updated,skipped},Price:{additionalProperties:false,type:object,properties:{market_id:{type:string},service_instance_id:{type:string},value:{anyOf:{type:integer,nullable:true},{type:null}},channel:{type:integer,nullable:true},product_id:{type:string,nullable:true},combo_id:{type:string,nullable:true},ticket_type_id:{type:string,nullable:true},capacity_option_id:{type:string,nullable:true},location_id:{type:string,nullable:true},end_location_id:{type:string,nullable:true},currency:{type:string},type:{enum:set_fixed,increment_fixed,increment_percent,type:string},all_ticket_types:{type:boolean,nullable:true},all_capacity_options:{type:boolean,nullable:true},start_date:{format:date-time,type:string},start_time:{type:string},created_at:{format:date-time,type:string,nullable:true},created_by:{type:string,nullable:true},market_title:{type:string,nullable:true},product_title:{type:string,nullable:true},combo_title:{type:string,nullable:true},ticket_type_title:{type:string,nullable:true},capacity_option_title:{type:string,nullable:true},location_title:{type:string,nullable:true},end_location_title:{type:string,nullable:true}},required:market_id,service_instance_id,value,currency,type,start_date,start_time}},responses:{OrdersResponse:{description:A list of orders,content:{application/json:{schema:{anyOf:{title:(Deprecated) List of orders,type:array,items:{$ref:#/components/schemas/OrderSearch}},{title:Paginated orders,type:object,properties:{data:{title:List of orders,type:array,items:{$ref:#/components/schemas/OrderSearch}},pagination:{title:Pagination metadata,additionalProperties:false,type:object,properties:{current_page:{minimum:1,type:integer},per_page:{minimum:0,type:integer},from:{minimum:0,type:integer},to:{type:integer},total:{type:integer},last_page:{anyOf:{type:integer,nullable:true},{type:null}}},required:current_page,per_page,from,to,total,last_page}},required:data,pagination}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}},ServiceInstancesResponse:{description:A list of service instances,content:{application/json:{schema:{title:Paginated service instances,type:object,properties:{data:{title:List of service instances,type:array,items:{$ref:#/components/schemas/ServiceInstance}},pagination:{title:Pagination metadata,additionalProperties:false,type:object,properties:{current_page:{minimum:1,type:integer},per_page:{minimum:0,type:integer},from:{minimum:0,type:integer},to:{type:integer},total:{type:integer},last_page:{anyOf:{type:integer,nullable:true},{type:null}}},required:current_page,per_page,from,to,total,last_page}},required:data,pagination},examples:{Standard listing:{$ref:#/components/examples/ServiceInstances}}}},headers:{Access-Control-Allow-Origin:{schema:{type:string}},Access-Control-Expose-Headers:{schema:{type:string}}}}},examples:{CartPayment:{value:{payments:{payment_id:72,uuid:0087000063d13ceb55115de9d954271e,order_id:DVOERVK4UCF9Q,order_revision:be87fd70-5ed6-4c71-984f-f82bfb43f997,quote_id:DVOERVK4UCF9Q,user_id:d7a2e7c5-f91e-4c40-a92d-7993731e778a,user_email:user@example.com,first_name:null,last_name:null,country:null,method:nets_easy,source:b2c,provider_reference:0087000063d13ceb55115de9d954271e,base_value:4000,cleared_value:4000,refunded_value:0,refundable_value:4000,vat_value:0,currency:GBP,timestamp:2023-01-25T14:30:03.087Z,card_expiry_date:0623,card_last_4_digits:0004,card_type:Visa,details:{charges:{amount:4000,created:2023-01-25T14:30:03.0872+00:00,chargeId:0087000063d13ceb55115de9d954271e,orderItems:{name:Ticket: Park on board - Adult,unit:pcs,taxRate:0,quantity:1,reference:VND:ticket:AD,taxAmount:0,unitPrice:0,netTotalAmount:0,grossTotalAmount:0},{name:Ticket: Park on board - Car under 6 meter,unit:pcs,taxRate:0,quantity:1,reference:VND:ticket:C6P9,taxAmount:0,unitPrice:4000,netTotalAmount:4000,grossTotalAmount:4000}},created:2023-01-25T14:30:00.4728+00:00,summary:{chargedAmount:4000,reservedAmount:4000},checkout:{url:http://b2c-local.ticknovate.com/payment},consumer:{company:{contactDetails:{phoneNumber:{}}},privatePerson:{phoneNumber:{}},billingAddress:{}},paymentId:0282000063d13cd0707811039c82702b,orderDetails:{amount:4000,currency:GBP,reference:DVOERVK4UCF9Q:be87fd70-5ed6-4c71-984f-f82bfb43f997},paymentDetails:{cardDetails:{maskedPan:492500******0004,expiryDate:0623},paymentType:CARD,paymentMethod:Visa,invoiceDetails:{}}},created_at:2023-01-25T14:30:06.145Z}}},Locations:{value:{id:HEG,created_at:2021-06-28T12:39:16.071Z,entity_revision_id:69408593-e31c-46c3-9441-8a28972b4b00,entity_id:225ce2ed-ddb2-43a9-a175-bc07c07d1af7,address:Bredgatan 5, Helsingborg,locode:GBHEG,geo_position:{latitude:56.0406188240563,longitude:12.6962997096067},timezone:Europe/Copenhagen,extensions:{code:HEG,short_code:HG},title:Helsingborg,description:,travel_instructions:,country:Sweden,order:0,map_image:null,sub_locations:,analytics_item_id:null}},Markets:{value:{id:gb,entity_revision_id:0f9d524e-9051-4b24-82f5-c433abb5e3e6,entity_id:ff617e08-fd6e-4c4a-a01c-7626c1a36233,title:Great Britain,extensions:{},currencies:{id:GBP},locales:{id:en-GB},{id:de},is_private:false,gtm_enabled:true,gtm_analytic_tag_id:GTM-XXXXX,gtm_analytic_auth:example,gtm_analytic_preview:env-200}},OrderImportedWithPriceMismatch:{value:{id:DVODVX7E25BNF,reference:null,line_items:,line_items_diff:,tenant:default,token:0d838a13-e148-4dcf-9018-7dbec75a56d0,token_expiry_date:2023-08-10T15:30:35.544+00:00,revision:caf10fd1-0d59-48b3-8bf5-2d1d13d5b07e,type:order,status:ordered,expiry_date:null,expiry_timer:600000,delivery_method:email,promo_code:null,addons:,source:reservations,revision_source:null,version:1,include_ticket_donations:false,ticket_ids:DVTUPHMJAZNYU,DVT3GB34I5YRK,tickets:,customer:{email:dan.levett@expian.io,title:null,lastname:Levett,firstname:Daniel,telephone:020839999288,extensions:{},company_name:null,lead_customer:true,license_plate:null,telephone_country_code:null,subscribed_to_newsletter:false,notes:null,associations:},customers:{email:dan.levett@expian.io,title:null,lastname:Levett,firstname:Daniel,telephone:020839999288,extensions:{},company_name:null,lead_customer:true,license_plate:null,telephone_country_code:null,subscribed_to_newsletter:false,notes:null,associations:},currency:GBP,locale:en,market:{id:lakedistrict_ravenglass,title:Ravenglass,entity_id:8410d6d8-e07e-4ff5-b6fb-9a27978a1433,extensions:{},entity_revision_id:554a0bc2-158e-42eb-a10a-405929f1169e},pricing:{booking_fee:0,total:4800,total_net:4633,subtotal:4800,discount:0,vat:167,commission:0,commission_diff:0,cancellation_amendment_fee:0,deposit:0,last_paid:4800,payable:0,paid_refunds:0,paid_charges:4800,paid:4800,refundable:4800,postage_fee:0,payable_overwrite:null,payable_calculated:0,cart_discount_deltas:,payable_adjustment:0},shipping_address:{town:London,title:null,county:null,line_1:22 Fake St,line_2:null,line_3:null,company:null,country:GB,lastname:,firstname:,post_code:NW1 2KD},billing_address:{company:null,country:GB,county:null,line_1:22 Fake St,line_2:null,line_3:null,post_code:NW1 2KD,title:null,town:London,lastname:Levett,firstname:Daniel},items:{redeemed:false,include_ticket_donations:false,booking_note:null,supplier_note:null,external_agent_reference:null,external_barcode:null,version:1,ancillary:,menu:,status:ordered,line_items_diff:,line_items:{type:ticket-type,id:ravenglass-adult,title:Adult,qty:2,vat:0,vat_rate:0,price:1400,donation:0,refundable:true},{type:capacity,id:Joan_Seat_9,title:Joan Pullman Observation seat,qty:1,vat:0,vat_rate:0,price:500,donation:0,refundable:true},{type:capacity,id:Joan_Seat_10,title:Joan Pullman Observation seat,qty:1,vat:0,vat_rate:0,price:500,donation:0,refundable:true},{type:addon,id:9afa3ffe-bfb3-412a-858c-493e323df5c1,title:Scott Beverage Test - Wine,qty:1,vat:0,vat_rate:0,price:0,donation:0,refundable:true},{type:addon,id:c619a31d-c433-4b30-8ede-7a3fd6c322a6,title:Frankfurter Taye Test - Danish,qty:2,vat:167,vat_rate:0.2,price:500,donation:0,refundable:true},ticket_ids:DVTUPHMJAZNYU,DVT3GB34I5YRK,tickets:,extensions:{},created_at:2023-08-09T15:30:34.200Z,updated_at:2023-08-09T15:30:58.536Z,fees:,legs:{end:2023-08-10T10:40:00Z,start:2023-08-10T10:00:00Z,stops:{location:{id:ravenglass_loc,title:Ravenglass station},segment_id:68f64dae-aeaf-4776-bb2a-cafe10e2b6c3,start_date:2023-08-10,start_time:10:00:00},{location:{id:dalegarth_loc,title:Dalegarth station},segment_id:74c1e549-f44d-4f40-a0f2-c58beb3d14c7,start_date:2023-08-10,start_time:10:40:00},duration:PT40M,location:{id:ravenglass_loc,title:Ravenglass station},service_id:b3fb9b70-caf1-462d-975d-4c5986ef1528,start_date:2023-08-10,start_time:10:00:00,provisional:false,end_location:{id:dalegarth_loc,title:Dalegarth station},operator_type:internal,important_info:,operator_confirmed:true,operator_reference:null,instance_root_entity_id:a1010c07-c8a5-4489-9ccc-92899511d53f},capacity_allocation:{id:Joan_Seat_9,qty:1,area:{title:Joan Comp. 3},title:Joan Pullman Observation seat,pricing:{vat:0,total:500,discount:0,subtotal:500,vat_rate:0,unit_price:500},entity_id:ebc45f92-4928-46a8-a5be-a377d8cc8731,area_option:{title:Seat 9},description:Step onboard Joan Pullman Observation carriage to travel in style. Joan accommodates 14 passengers, with plush seating and panoramic views of the coast and mountains as you travel behind a heritage steam engine. Please note dogs are not permitted in this carriage, except for assistance dogs. ,instance_id:a1010c07-c8a5-4489-9ccc-92899511d53f,capacity_min:1,capacity_units:1,capacity_type_id:6b6c0b40-19dd-47f4-ba4c-2157238b2496,max_bookings_allowed:null},{id:Joan_Seat_10,qty:1,area:{title:Joan Comp. 3},title:Joan Pullman Observation seat,pricing:{vat:0,total:500,discount:0,subtotal:500,vat_rate:0,unit_price:500},entity_id:ebc45f92-4928-46a8-a5be-a377d8cc8731,area_option:{title:Seat 10},description:Step onboard ‘Joan’ Pullman Observation carriage to travel in style. Joan accommodates 14 passengers, with plush seating and panoramic views of the coast and mountains as you travel behind a heritage steam engine. Please note dogs are not permitted in this carriage, except for assistance dogs. ,instance_id:a1010c07-c8a5-4489-9ccc-92899511d53f,capacity_min:1,capacity_units:1,capacity_type_id:6b6c0b40-19dd-47f4-ba4c-2157238b2496,max_bookings_allowed:null},addons:{id:9afa3ffe-bfb3-412a-858c-493e323df5c1,qty:1,title:Wine,parent:{id:scott_beverage_test,title:Scott Beverage Test,entity_id:59ee5152-d7c2-4266-8aa6-c36a7f85129a,description:Please choose a delicious beverage to go with your cruise (Mandatory Selection).,entity_revision_id:a7102ad5-7428-41bf-accd-bdfb236c5e11,image:null,is_redeemable:false},pricing:{vat:0,total:0,discount:0,subtotal:0,vat_rate:0,unit_price:0},entity_id:9afa3ffe-bfb3-412a-858c-493e323df5c1,sale_increments:1,entity_revision_id:0c204b27-ab69-4aa1-a4e9-6b2812aae6d4},{id:c619a31d-c433-4b30-8ede-7a3fd6c322a6,qty:2,title:Danish,parent:{id:Frankfurter_Taye_Test,title:Frankfurter Taye Test,entity_id:99c04c82-66b4-4111-af2d-fa98acc0722e,description:Frankfurter Taye Test,entity_revision_id:88723383-6844-4e69-84f6-bb3a0b66efc4,image:null,is_redeemable:false},pricing:{vat:167,total:1000,discount:0,subtotal:1000,vat_rate:0.2,unit_price:500},entity_id:c619a31d-c433-4b30-8ede-7a3fd6c322a6,sale_increments:1,entity_revision_id:3837168d-93c8-49a5-8ab6-1cf3d950cf7a},deposit_resolution:null,id:DVIBEY9YI1IK5,notes:,terms:{id:lakedistrict_standard_terms,title:Standard terms,entity_id:a8f3c672-0eac-49f5-9a58-5c9565cf9c82,description:Date and timed tickets are non-transferrable and non-refundable unless cruises are not operating. Please note there is a 10% admin charge that may be applied to amend bookings within 48 hours of your sailing. For cancellations a 10% admin fee will apply. Please ensure you check the ticket details in full before you make the purchase.\n,entity_revision_id:fb7362df-503c-49bf-afb5-11c91674b821},title:Single train ride,venue:null,combos:,promos:,channel:3,pricing:{booking_fee:0,total:4800,total_net:4633,subtotal:4800,discount:0,vat:167,commission:0,commission_diff:0,cancellation_amendment_fee:0,deposit:0,last_paid:4800,payable:0,paid_refunds:0,paid_charges:4800,paid:4800,refundable:4800,postage_fee:0,payable_adjustment:0,minimum_spend:0,minimum_spend_enforced:false},product:{id:single_train_ravenglass_dalegarth_ride,type:route,subtype:null,title:Single train ride,category:,max_uses:1,entity_id:65fa0fcc-0bc9-442c-b804-144b06d700e6,extensions:{},short_title:,booking_unit:{type:time,first_use_within:{type:period,period:PT24H}},entity_revision_id:9085972b-3ecb-4036-ace6-3fde9d6ec051,booking_fee_refundable:false,image:null,valid_from:P-5M,valid_to:P0D,valid_to_reference:end,giftaid_include_ticket_price:false},location:{id:ravenglass_loc,title:Ravenglass station,timezone:Europe/London,entity_id:5bd387da-6c55-4f9f-af1d-5cb10ace49cf,extensions:{},entity_revision_id:1d143f3d-f7d8-4be4-afcd-4393cb6e2b71},services:{id:ravenglass-railway-green,title:Ravenglass Green Service,entity_id:b3fb9b70-caf1-462d-975d-4c5986ef1528,entity_revision_id:a9e6c169-3638-4103-bad1-06d102db351a},reference:null,booked_unit:{type:time,time_display:time,time_title:null,start_date:2023-08-10,start_time:10:00:00,instance_id:0894167c-39c5-4ae5-888d-1da345cdc16d,segment_entity_id:68f64dae-aeaf-4776-bb2a-cafe10e2b6c3,max_bookings_allowed:null,instance_root_entity_id:a1010c07-c8a5-4489-9ccc-92899511d53f},end_location:{id:dalegarth_loc,title:Dalegarth station,timezone:Europe/London,entity_id:595d1cca-f9d5-4abb-8c8d-0f9be57eb4ee,extensions:{},entity_revision_id:d9d22c9f-f59f-4c3b-92b3-05b7a8ecee44},ticket_types:{id:ravenglass-adult,qty:2,title:Adult,pricing:{vat:0,total:2800,discount:0,subtotal:2800,vat_rate:0,unit_price:1400},entity_id:0e1b8234-b498-4b41-b3df-709e5930a157,extensions:{},capacity_units:1,capacity_type_id:6b6c0b40-19dd-47f4-ba4c-2157238b2496,capacity_divisible:false,entity_revision_id:b2018749-6ffc-47f3-bf8a-61a0a08e6ace},fee_free_period_end:null,ignored_unavailability:false,next_time_amendment_free:false},user:null,extensions:{},created_at:2023-08-09T15:31:18.567Z,revision_created_at:2023-08-09T15:31:18.567Z,updated_at:2023-08-09T15:31:18.567Z,pay_later:false,has_issue:false,issues:,upsell_history:,awaiting_external_payment:false,payable_on_arrival:false,pending_refund:false,deferred_payment_method:null,promos:,linked_orders:,trade_partner:null,send_printed_voucher:false,email_message:null}},TicketTypes:{value:{id:AD,entity_revision_id:3fcb3aaf-ffab-4130-a1d8-de467517100f,entity_id:8f90eb1e-81ff-4435-82f1-f42b596bc7b3,extensions:{category:AD,accounting_category_type:52},order:0,title:Adult,description:Adult ticket,short_title:Adult,short_description:Over 16 years old,limit_per_booking:null,mandatory_companions_match_quantity:false,sales_limitations:null,ota_type:null,min_age:0,max_age:122}},ServiceInstances:{value:{data:{entity_revision_id:3200bb0e-de32-4c15-83f6-0e829eee08a4,entity_id:dd4290cf-71f7-4444-99d4-ff057c4dde34,id:2025-10-01,10:00,type:event,status:active,max_bookings_allowed:null,time_display:time,capacity_limits:{capacity_option_id:standard,limit:100,channel:null},{capacity_option_id:deluxe,limit:2,channel:4},locales:,segments:{start:2024-05-23T10:00:00.000+00:00,end:2024-05-23T12:00:00.000+00:00,status:active,location:{id:london}},service:{id:london-event},venue:{id:london-venue},capacity_plan:{id:d6e1175a-015e-4eeb-8a27-2cffb7b962df}},pagination:{currentPage:1,perPage:10,from:1,to:10,total:100,lastPage:10}}}}},servers:{url:https://kie9kb7pwd.execute-api.eu-west-2.amazonaws.com/prod},webhooks:{OnOrderUpdated:{post:{summary:OnOrderUpdated,description:Called when an order is created, amended or cancelled.,tags:Webhooks,parameters:{in:header,name:Authorization,schema:{type:string},description:If the webhook has been configured to be secured via a bearer token, it will be passed in this header in the format `Bearer secret>`.},{in:header,name:X-API-Key,schema:{type:string},description:If the webhook has been configured to be secured via an API key, it will be passed in this header.},requestBody:{content:{application/json:{schema:{type:object,properties:{event_type:{const:OnOrderUpdated,type:string},payload:{description:The newly created or modified order.,type:object,properties:{order:{type:object,allOf:{$ref:#/components/schemas/WebhookOrder},{type:object,properties:{payments:{type:array,items:{additionalProperties:false,type:object,properties:{payment_id:{type:integer},method:{type:string},cleared_value:{type:integer},refunded_value:{type:integer},provider_reference:{anyOf:{type:string,nullable:true},{type:null}},currency:{type:string},card_type:{anyOf:{type:string,nullable:true},{type:null}}},required:payment_id,method,cleared_value,refunded_value,currency}}}}}},required:order}},required:event_type,payload}}}},responses:{200:{description:Return a 200 status to indicate that the data was received successfully.}}}},OnServiceInstanceUpdated:{post:{summary:OnServiceInstanceUpdated,description:Called when a service instance is created or updated,tags:Webhooks,parameters:{in:header,name:Authorization,schema:{type:string},description:If the webhook has been configured to be secured via a bearer token, it will be passed in this header in the format `Bearer secret>`.},{in:header,name:X-API-Key,schema:{type:string},description:If the webhook has been configured to be secured via an API key, it will be passed in this header.},requestBody:{content:{application/json:{schema:{type:object,properties:{event_type:{const:OnServiceInstanceUpdated,type:string},payload:{description:The newly created or modified service instance.,type:object,properties:{instances:{type:array,items:{$ref:#/components/schemas/ServiceInstance}}},required:instances}},required:event_type,payload}}}},responses:{200:{description:Return a 200 status to indicate that the data was received successfully.}}}},OnTicketsScanned:{post:{summary:OnTicketsScanned,description:Called when a ticket is redeemed,tags:Webhooks,parameters:{in:header,name:Authorization,schema:{type:string},description:If the webhook has been configured to be secured via a bearer token, it will be passed in this header in the format `Bearer secret>`.},{in:header,name:X-API-Key,schema:{type:string},description:If the webhook has been configured to be secured via an API key, it will be passed in this header.},requestBody:{content:{application/json:{schema:{type:object,properties:{event_type:{const:OnTicketsScanned,type:string},payload:{description:The scanned data of the ticket.,type:object,properties:{tickets:{type:array,items:{$ref:#/components/schemas/TicketV2}}},required:tickets}},required:event_type,payload}}}},responses:{200:{description:Return a 200 status to indicate that the data was received successfully.}}}},OnScansRecorded:{post:{summary:OnScansRecorded,description:Called when a ticket or membership card is scanned.,tags:Webhooks,parameters:{in:header,name:Authorization,schema:{type:string},description:If the webhook has been configured to be secured via a bearer token, it will be passed in this header in the format `Bearer secret>`.},{in:header,name:X-API-Key,schema:{type:string},description:If the webhook has been configured to be secured via an API key, it will be passed in this header.},requestBody:{content:{application/json:{schema:{type:object,properties:{event_type:{const:OnScansRecorded,type:string},payload:{description:The scanned data of the tickets or card.,type:object,properties:{scans:{type:array,items:{$ref:#/components/schemas/TicketScanRecord}}},required:scans}},required:event_type,payload}}}},responses:{200:{description:Return a 200 status to indicate that the data was received successfully.}}}},OnProductUpdated:{post:{summary:OnProductUpdated,description:Called when a new product is created, or an update is published.,tags:Webhooks,parameters:{in:header,name:Authorization,schema:{type:string},description:If the webhook has been configured to be secured via a bearer token, it will be passed in this header in the format `Bearer secret>`.},{in:header,name:X-API-Key,schema:{type:string},description:If the webhook has been configured to be secured via an API key, it will be passed in this header.},requestBody:{content:{application/json:{schema:{type:object,properties:{event_type:{const:OnProductUpdated,type:string},payload:{description:The product data.,type:object,properties:{product:{$ref:#/components/schemas/ProductPublic}},required:product}},required:event_type,payload}}}},responses:{200:{description:Return a 200 status to indicate that the data was received successfully.}}}},OnTicketTypeUpdated:{post:{summary:OnTicketTypeUpdated,description:Called when a new ticket type is created, or an update is published.,tags:Webhooks,parameters:{in:header,name:Authorization,schema:{type:string},description:If the webhook has been configured to be secured via a bearer token, it will be passed in this header in the format `Bearer secret>`.},{in:header,name:X-API-Key,schema:{type:string},description:If the webhook has been configured to be secured via an API key, it will be passed in this header.},requestBody:{content:{application/json:{schema:{type:object,properties:{event_type:{const:OnTicketTypeUpdated,type:string},payload:{description:The ticket type data.,type:object,properties:{ticket_type:{$ref:#/components/schemas/TicketType}},required:ticket_type}},required:event_type,payload}}}},responses:{200:{description:Return a 200 status to indicate that the data was received successfully.}}}},OnCustomerProfileUpdated:{post:{summary:OnCustomerProfileUpdated,description:Called when a customer user profile is updated.,tags:Webhooks,parameters:{in:header,name:Authorization,schema:{type:string},description:If the webhook has been configured to be secured via a bearer token, it will be passed in this header in the format `Bearer secret>`.},{in:header,name:X-API-Key,schema:{type:string},description:If the webhook has been configured to be secured via an API key, it will be passed in this header.},requestBody:{content:{application/json:{schema:{type:object,properties:{event_type:{const:OnCustomerProfileUpdated,type:string},payload:{description:The customer user profile.,type:object,properties:{user:{$ref:#/components/schemas/CustomerUserProfile}},required:user}},required:event_type,payload}}}},responses:{200:{description:Return a 200 status to indicate that the data was received successfully.}}}}}} Redoc.init( spec, // https://redoc.ly/docs/api-reference-docs/configuration/functionality/ { // Should not need to show loading - spec is inlined hideLoading: true, nativeScrollbars: true, theme: { colors: { primary: { main: #2A997E }, }, }, }, document.getElementById(redoc-container), ) /script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]