openapi: 3.0.3 info: title: Quandoo Public Partner API description: The Quandoo Public Partner API is a multi-purpose REST API for the Quandoo restaurant reservations platform. It lets partners check merchant availability, search merchants, read merchant reservation and enquiry settings, create and manage reservations and reservation enquiries, manage customers and reviews, handle preorders and reservation tags, and validate phone numbers. Reservation and enquiry creation is idempotent via an agent-specific unique identifier. Derived from the official Quandoo Swagger specification at https://api.quandoo.com/swagger.json. version: 1.0.0 contact: name: Quandoo Developers email: developers@quandoo.com url: https://docs.quandoo.com/ servers: - url: https://public-api.prod.quandoo.com description: Production tags: - name: Status - name: Customers - name: Merchants - name: Reservation Enquiries - name: Availabilities - name: Reservations Tags - name: Reservation Settings - name: Preorder - name: Reservations - name: Reviews - name: Validations security: - API_TOKEN: [] paths: /v1/status: get: tags: - Status summary: Quandoo Provides Information on the Status of the Service operationId: getStatusByGet_1 responses: '200': description: OK '500': description: Internal server error x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/customers/{customerId}: get: tags: - Customers summary: Quandoo Get Customer Data operationId: getCustomer_1 description: "This endpoint allows an agent to get customer information by id. \nCustomer id both in the request and response are agent-specific. The agent needs to be authenticated.\n\nThe endpoint will return `HTTP 404 - Not Found` if the customer with the specified id could not be found.\nIt will return `HTTP 403 - Forbidden` if the agent is not authenticated or the agent doesn't have permissions.\n\n####Request:\n* **customerId**: Agent-specific ID of the customer\n\n####Response:\nThe response contains the following data of the customer as explained below:\n* **id**: The agent-dependent identifier of the customer \n* **email**: The given email of this customer. _Optional_\n* **firstName**: First name of the customer. _Optional_\n* **lastName**: Last name of the customer. _Optional_\n* **gender**: The given gender of the customer (one of MALE, FEMALE, OTHER or UNDEFINED). _Optional_\n* **phoneNumber**: The ID of the merchant at which this reservation was made\n* **mobileNumber**: The ID of the customer to which this reservation belongs\n* **country**: 2-letter ISO country code of the customer, e.g. DE\n* **links**: Related links that can be followed based on this response\n* **subscriptions**: The newsletter subscriptions, e.g. QUANDOO, MERCHANT\n\nExample curl:\n```\ncurl https://{host}/v{X}/customers/9ffb3466-3562-42cc-add1-92a46a2f0902\n```\n\nExample response: \n```\n{\n \"id\": \"9ffb3466-3562-42cc-add1-92a46a2f0902\",\n \"firstName\": \"Gaius\",\n \"lastName\": \"Octavius\",\n \"gender\": \"male\",\n \"email\": \"c2f22117-6148-45b8-ae79-41eda25eae67augustus@spqr.com\",\n \"phoneNumber\": \"+4917312345678\",\n \"country\": \"DE\", \n \"links\": [\n {\n \"href\": \"http://localhost:39250/v1/customers/9ffb3466-3562-42cc-add1-92a46a2f0902/reservations\",\n \"method\": \"GET\",\n \"rel\": \"get-customer-reservations\"\n }\n ],\n \"subscriptions\": [\n {\n \"id\": \"QUANDOO\"\n }\n ]\n}\n```\n" parameters: - name: customerId in: path required: true description: Id of the customer schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CustomerResponse' examples: GetCustomer1200Example: summary: Default getCustomer_1 200 response x-microcks-default: true value: id: '88086' firstName: Jane lastName: Smith gender: male email: jane.smith@example.com phoneNumber: '030120765890' mobileNumber: string country: DE links: - href: {} method: {} rel: {} subscriptions: - id: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetCustomer1400Example: summary: Default getCustomer_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetCustomer1403Example: summary: Default getCustomer_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Customer not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetCustomer1404Example: summary: Default getCustomer_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetCustomer1500Example: summary: Default getCustomer_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/customers/{customerId}/reservations: get: tags: - Customers summary: Quandoo Get Customer Reservations operationId: getReservations_1 description: "This endpoint allows an agent to get reservations of a customer. The results will be filtered by agent id. \nCustomer id in the request and reservation IDs in response are agent-specific. The agent needs to be authenticated.\n\nThe endpoint will return `HTTP 404 - Not Found` if the customer with the specified id could not be found.\nIt will return `HTTP 403 - Forbidden` if the agent is not authenticated or the agent doesn't have permissions.\n\n####Request:\n* **customerId**: Agent-specific ID of the customer\n\n####Response:\nThe response will be a _list_ of reservations. Each reservation has the fields explained below:\n* **id**: The agent-dependent unique id of the reservation\n* **number**: Quandoo internal identifier of the reservation.\n* **quandooId**: The public id of this reservation on quandoo system.\n* **status**: The status of the reservation eg. CREATED, CONFIRMED, CUSTOMER CANCELED etc.\n* **startTime**: The start time of the reservation. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **endTime**: The end time of the reservation. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **capacity**: The capacity (people count) of the reservation\n* **merchantId**: The ID of the merchant at which this reservation was made.\n* **customerId**: The public ID of the customer to which this reservation belongs\n* **promoCode**: The promotion code associated with this reservation. Optional.\n* **extraInfo**: extra information that the customer provided for the reservation. Optional.\n* **links**: Related links that can be followed based on this response.\n* **createdAt**: The date the reservation was created. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **updatedAt**: The date the reservation was last updated. Format: `yyyy-MM-ddTHH:mm:ssZ`\n\nExample curl:\n```\ncurl https://{host}/v{X}/customers/ce0706ff-a95d-4229-a220-d21dcd175342/reservations\n```\n\nExample response: \n```\n{\n \"reservations\": [\n {\n \"id\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"number\": 8734957,\n \"quandooId\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"status\": \"CREATED\",\n \"startTime\": \"2015-06-22T12:00:00+00:00\",\n \"endTime\": \"2015-06-22T13:00:00+00:00\",\n \"capacity\": 4,\n \"merchantId\": 1384,\n \"customerId\": \"ce0706ff-a95d-4229-a220-d21dcd175342\",\n \"promocode\": \"SOME_CAMPAIGN_CODE\",\n \"extraInfo\": \"request for baby chair\",\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/reservations/07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"method\": \"GET\",\n \"rel\": \"self\"\n },\n {\n \"href\": \"https://{host}/v{X}/reservations/07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"method\": \"PATCH\",\n \"rel\": \"update\"\n }\n ],\n \"createdAt\": \"2015-06-01T15:21:54Z\",\n \"updatedAt\": \"2015-06-01T18:45:30Z\"\n },\n {\n \"id\": \"d8f53b36-3f48-11e5-a151-feff819cdc7a\",\n \"number\": 8734958,\n \"quandooId\": \"d8f53b36-3f48-11e5-a151-feff819cdc7a\",\n \"status\": \"CONFIRMED\",\n \"startTime\": \"2015-06-22T12:00:00+00:00\",\n \"endTime\": \"2015-06-22T13:00:00+00:00\",\n \"capacity\": 3,\n \"merchantId\": 1384,\n \"customerId\": \"ce0706ff-a95d-4229-a220-d21dcd175342\",\n \"promocode\": \"SOME_CAMPAIGN_CODE\",\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/reservations/d8f53b36-3f48-11e5-a151-feff819cdc7a\",\n \"method\": \"GET\",\n \"rel\": \"self\"\n },\n {\n \"href\": \"https://{host}/v{X}/reservations/d8f53b36-3f48-11e5-a151-feff819cdc7a\",\n \"method\": \"PATCH\",\n \"rel\": \"update\"\n }\n ],\n \"createdAt\": \"2015-06-01T15:21:54Z\",\n \"updatedAt\": \"2015-06-01T18:45:30Z\"\n }\n ]\n}\n```\n" parameters: - name: customerId in: path required: true description: Id of the customer schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReservationDataList' examples: GetReservations1200Example: summary: Default getReservations_1 200 response x-microcks-default: true value: reservations: - id: {} number: {} reservationNumber: {} quandooId: {} status: {} updatedAt: {} capacity: {} merchantId: {} customerId: {} promocode: {} extraInfo: {} links: {} reservationTags: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservations1400Example: summary: Default getReservations_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservations1403Example: summary: Default getReservations_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Customer not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservations1404Example: summary: Default getReservations_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservations1500Example: summary: Default getReservations_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}/similar: get: tags: - Merchants summary: Quandoo Allows to Get a Merchant by Id and Find Similar Merchants operationId: searchSimilar_1 description: "This endpoint allows to receive detailed information for a particular merchant in the system and for restaurants that are similar to this one.\nA merchant is similar if all the following conditions are met:\n1. Location: the recommended merchants are within 30 km radius from the main merchant\n2. The similar merchants are bookable online\n3. The similar merchants have the main cuisine in common\n\nThis merchant should be specified by their identifier **merchantId**, which is mandatory.\nThe endpoint can take optional request header **Accept-Language**.\nThis header is used to determine correct locale and has an effect on translation of merchant's entity fields, that may be omitted.\n\nThe expected value of the header **Accept-Language** should contain language and can contain country, e.g. \"de_DE\" or \"de\". Locale by default is \"en_GB\".\n\nThe endpoint returns status `HTTP 200` if the request is successful. In a successful requests the specified merchant was found.\n\nIf the merchant has no products allowed for a web search, i.e. is not bookable, response data with `HTTP 200` is returned, but the field `merchant` is not set. Instead, the merchant search message is set.\n\nThe endpoint will return status `HTTP 404` if the merchant, specified by identifier, was not found.\n\nExample curl:\n```\ncurl -H 'X-Quandoo-AuthToken: {INSERT_KEY_HERE}' -H 'Accept-Language: de_DE' 'https://{host}/v{X}/merchants/11/similar'\n```\n\nExample responses:\n`merchant bookable`\n```\n{\n \"merchant\": {\n \"id\":11,\n \"name\":\"Test merchant\",\n \"phoneNumber\":\"+27113901837\",\n \"currency\":\"ZAR\",\n \"locale\":\"en_ZA\",\n \"timezone\":\"Africa/Johannesburg\",\n \"location\":{\n \"coordinates\":{\n \"latitude\":33.9,\n \"longitude\":18.4\n },\n \"address\":{\n \"street\":\"Tamerlan street\",\n \"number\":\"6A\",\n \"zipcode\":\"10787\",\n \"city\":\"Cape Town\",\n \"country\":\"ZAF\"\n }\n },\n \"reviewScore\": \"5.3\",\n \"tagGroups\":[\n {\n \"type\":\"CUISINE\",\n \"tags\":[\n {\n \"id\":25,\n \"name\":\"Testküche Hauptkategorie\"\n },\n {\n \"id\":28,\n \"name\":\"Test cuisine\"\n }\n ]\n }\n ],\n \"images\":[\n {\n \"url\":\"https://dci5ez2ey8tr9.cloudfront.net/8e4d1063-9171-40b1-94b7-5e9337591a90/7_sld.jpg\"\n }\n ],\n \"documents\":[],\n \"links\":[\n {\n \"href\":\"https://{host}/{path}?aid=16\",\n \"method\":\"GET\",\n \"rel\":\"DETAILS\"\n },\n {\n \"href\":\"https://{host}/{path}?aid=16&countryId=NLD\",\n \"method\":\"GET\",\n \"rel\":\"WIDGET\"\n },\n {\n \"href\":\"https://{host}/{path}/details?aid=16&countryId=NLD\",\n \"method\":\"GET\",\n \"rel\":\"WIDGET_DETAILS\"\n }\n ],\n \"bookable\": true,\n \"openingTimes\": {\n \"standardOpeningTimes\": {\n \"SATURDAY\": [\n {\n \"start\": \"09:00:00\",\n \"end\": \"20:00:00\"\n }\n ],\n \"SUNDAY\": [\n {\n \"start\": \"09:00:00\",\n \"end\": \"18:00:00\"\n }\n ]\n }\n },\n \"ccvEnabled\": true,\n \"chain\": {\n \"id\": 1,\n \"name\": \"Test chain\"\n }\n },\n \"recommendedMerchants\": {\n \"merchants\": [\n {\n \"id\":12,\n \"name\":\"similar merchant\"\ ,\n \"phoneNumber\":\"+27113901838\",\n \"currency\":\"ZAR\",\n \"locale\":\"en_ZA\",\n \"timezone\":\"Africa/Johannesburg\",\n \"location\":{\n \"coordinates\":{\n \"latitude\":33.8,\n \"longitude\":18.4\n },\n \"address\":{\n \"street\":\"Tamerlan street\",\n \"number\":\"5A\",\n \"zipcode\":\"10787\",\n \"city\":\"Cape Town\",\n \"country\":\"ZAF\"\n }\n },\n \"reviewScore\": \"5.3\",\n \"tagGroups\":[\n {\n \"type\":\"CUISINE\",\n \"tags\":[\n {\n \"id\":25,\n \"name\":\"Testküche Hauptkategorie\"\n },\n {\n \"id\":28,\n \"name\":\"Test cuisine\"\n }\n ]\n }\n ],\n \"images\":[\n {\n \"url\":\"https://dci5ez2ey8tr9.cloudfront.net/8e4d1063-9171-40b1-94b7-5e9337591a90/7_sld.jpg\"\n }\n ],\n \"documents\":[],\n \"links\":[\n {\n \"href\":\"https://{host}/{path}?aid=16\",\n \"method\":\"GET\",\n \"rel\":\"DETAILS\"\n },\n {\n \"href\":\"https://{host}/{path}?aid=16&countryId=NLD\",\n \"method\":\"GET\",\n \"rel\":\"WIDGET\"\n },\n {\n \"href\":\"https://{host}/{path}/details?aid=16&countryId=NLD\",\n \"method\":\"GET\",\n \"rel\":\"WIDGET_DETAILS\"\n }\n ],\n \"bookable\": true,\n \"openingTimes\": {\n \"standardOpeningTimes\": {\n \"SATURDAY\": [\n {\n \"start\": \"09:00:00\",\n \"end\": \"20:00:00\"\n }\n ],\n \"SUNDAY\": [\n {\n \"start\": \"09:00:00\",\n \"end\": \"18:00:00\"\n }\n ]\n }\n },\n \"ccvEnabled\": true,\n \"chain\": {\n \"id\": 1,\n \"name\": \"Test chain\"\n }\n }\n ],\n \"size\": 1,\n \"offset\": 0,\n \"limit\": 10\n }\n}\n```\n\n`merchant not bookable`\n```\n{\n \"merchantSearchMessage\": \"MERCHANT_NOT_BOOKABLE\",\n \"recommendedMerchants\": {\n \"limit\": 10,\n \"merchants\": [...],\n \"offset\": 0,\n \"size\": 0\n }\n}\n```" parameters: - name: merchantId in: path required: true description: merchantId schema: type: integer format: int32 - name: sort in: query required: false description: Sort order. Default sorting will be by proximity. schema: type: string enum: - CLOSEST default: CLOSEST - name: limit in: query required: false description: Max number of merchant recommendations to return. schema: type: integer format: int32 default: 10 - name: Accept-Language in: header required: false description: Locale.
Format:
<language code>[_<country code>] schema: type: string default: en_GB responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MerchantWithRecommendationsDto' examples: SearchSimilar1200Example: summary: Default searchSimilar_1 200 response x-microcks-default: true value: merchant: id: 1 name: Sample Restaurant phoneNumber: '030120765890' currency: EUR locale: de_DE timezone: 19:30:00 location: {} reviewScore: string tagGroups: - {} images: - {} documents: - {} links: - {} bookable: true openingTimes: {} ccvEnabled: true chain: {} ivrRedirectNumber: string shortDescription: Window table preferred if available. longDescription: Window table preferred if available. merchantSearchMessage: MERCHANT_NOT_BOOKABLE recommendedMerchants: merchants: - {} size: 1 offset: 1 limit: 1 '404': description: Merchant not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: SearchSimilar1404Example: summary: Default searchSimilar_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}: get: tags: - Merchants summary: Quandoo Allows to Get a Merchant by Id operationId: search_2 description: "This endpoint allows to receive detailed information on a particular merchant in the system. This merchant should be specified by their identifier **merchantId**, which is mandatory. The endpoint can take optional request header **Accept-Language**. This header is used to determine correct locale and has an effect on translation of merchant's entity fields, that may be omitted.\n\nThe expected value of the header **Accept-Language** should contain language and can contain country, e.g. \"de_DE\" or \"de\". Locale by default is \"en_GB\".\n\nThe endpoint returns status `HTTP 200` if the request is successful.\nThe endpoint will return status `HTTP 404` if the merchant, specified by identifier, was not found or has no products, allowed for a web search. \n\nExample curl:\n```\ncurl -H 'X-Quandoo-AuthToken: {INSERT_KEY_HERE}' -H 'Accept-Language: de_DE' 'https://{host}/v{X}/merchants/11'\n```\n\nExample response:\n```\n{\n \"id\":11,\n \"name\":\"Test merchant\",\n \"phoneNumber\":\"+27113901837\",\n \"currency\":\"ZAR\",\n \"locale\":\"en_ZA\",\n \"timezone\":\"Africa/Johannesburg\",\n \"location\":{\n \"coordinates\":{\n \"latitude\":33.9,\n \"longitude\":18.4\n },\n \"address\":{\n \"street\":\"Tamerlan street\",\n \"number\":\"6A\",\n \"zipcode\":\"10787\",\n \"city\":\"Cape Town\",\n \"country\":\"ZAF\"\n }\n },\n \"reviewScore\": \"5.3\",\n \"tagGroups\":[\n {\n \"type\":\"CUISINE\",\n \"tags\":[\n {\n \"id\":25,\n \"name\":\"Testküche Hauptkategorie\"\n },\n {\n \"id\":28,\n \"name\":\"Test cuisine\"\n }\n ]\n }\n ],\n \"images\":[\n {\n \"url\":\"https://dci5ez2ey8tr9.cloudfront.net/8e4d1063-9171-40b1-94b7-5e9337591a90/7_sld.jpg\"\n }\n ],\n \"documents\":[],\n \"links\":[\n {\n \"href\":\"https://{host}/{path}?aid=16\",\n \"method\":\"GET\",\n \"rel\":\"DETAILS\"\n },\n {\n \"href\":\"https://{host}/{path}?aid=16&countryId=NLD\",\n \"method\":\"GET\",\n \"rel\":\"WIDGET\"\n },\n {\n \"href\":\"https://{host}/{path}/details?aid=16&countryId=NLD\",\n \"method\":\"GET\",\n \"rel\":\"WIDGET_DETAILS\"\n }\n ],\n \"bookable\": true,\n \"openingTimes\": {\n \"standardOpeningTimes\": {\n \"SATURDAY\": [\n {\n \"start\": \"09:00:00\",\n \"end\": \"20:00:00\"\n }\n ],\n \"SUNDAY\": [\n {\n \"start\": \"09:00:00\",\n \"end\": \"18:00:00\"\n }\n ]\n }\n },\n \"ccvEnabled\": true,\n \"chain\": {\n \"id\": 1,\n \"name\": \"Test chain\"\n }\n}\n```" parameters: - name: merchantId in: path required: true description: merchantId schema: type: integer format: int32 - name: Accept-Language in: header required: false description: Locale.
Format:
<language code>[_<country code>] schema: type: string default: en_GB responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MerchantDetailsDto' examples: Search2200Example: summary: Default search_2 200 response x-microcks-default: true value: id: 1 name: Sample Restaurant phoneNumber: '030120765890' currency: EUR locale: de_DE timezone: 19:30:00 location: coordinates: {} address: {} reviewScore: string tagGroups: - type: {} tags: {} images: - url: {} documents: - name: {} url: {} format: {} description: {} links: - href: {} method: {} rel: {} bookable: true openingTimes: standardOpeningTimes: {} ccvEnabled: true chain: id: 1 name: Sample Restaurant ivrRedirectNumber: string shortDescription: Window table preferred if available. longDescription: Window table preferred if available. '404': description: Merchant not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Search2404Example: summary: Default search_2 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants: get: tags: - Merchants summary: Quandoo Allows to Get Merchant Information by Parameters operationId: search description: "###Description\n\nThis endpoint is used to search merchants by a set of parameters.\nFor each merchant in the result there is information about location, language and tags that describe this merchant's basic characteristics, there is also a set of images selected by the merchant.\n\n####Possible query parameters:\n\n##Mandatory geo parameters (at least one of two options must be provided)\n\n* **place**: Filter for merchant on a country, city or district whose name matches the parameter. (if the parameter does not match any city or district on the system it is ignored)\n* **centerPoint**: Filter merchants within the circle defined by center on centerPoint and radius defined by radius parameter (if not informed defaults to 10). Center point has the format LATITUDE,LONGITUDE with both parameters as numbers with . as decimal separator (e.g `centerPoint=52.547928,13.4085728`)\n\n* **query**: Filter merchants using text similarity on a number of merchant fields like name, description, categories and tags\n* **placeIds**: DEPRECATED. Filter for merchant by id of place. Semicolon separated integer value.\n* **radius**: The radius of the circle to filter merchants in **kilometers**. Defaults to 10 and is only used if *centerPoint* is also informed\n* **bookable**: Boolean value, if informed true means that only merchants that are online bookable will be returned and false means that only merchants that are NOT online bookable will be returned\n* **tags**: Filter out merchants with the selected tags text. Semicolon separated text value. All or nothing field: if a tag is not found, the query will fail. Cannot be used in conjunction with 'tagIds' parameter.\n* **tagIds**: Filter out merchants with the selected tag ids. Semicolon separated text value. All or nothing field: if a tag is not found, the query will fail. Cannot be used in conjunction with 'tags' parameter.\n* **reviewScoreMax**: Filter out merchants with review score higher than the one informed.\n* **onlyWithAttributes**: This field only accepts the value **documents** for now. If informed only merchants with documents will be returned. You need to have required permissions to use this filter\n* **capacity**: Number of people. In order to be effective, \"place\", \"date\" and \"fromTime\" must also be set.\n* **date**: Date of the desired reservation in merchants' time zone. Format: yyyy-MM-dd. Availability search is only activated if \"place\" is specified.\n* **fromTime**: Beginning of the desired reservation time frame in merchants' time zone. Format: HH:mm. Consider a 3h buffer for the time (0.5h before the given time and 2.5h after)\n* **offset**: Number of merchants to skip on the result. Defaults to 0\n* **limit**: Maximum number of merchants to return. Defaults to 100 and cannot be more than 100.\n* **ivrNumber**: Filter out merchants with phone number.\n\n\n####Result fields for Merchant object:\n\n* **id**: Id of the merchant\n* **name**: Name of the merchant\n* **phoneNumber**: The phone number of the merchant\n* **currency**: Currency of the merchant in the ISO 4217 letter format\n* **locale**: Locale used to communicate with this merchant\n* **timezone**: Canonical Timezone name\n* **location**: Location of the merchant, contains both an geo located point and an address if available\n* **reviewScore**: Review score of the merchant\n* **tagGroups**: Tags (grouped) about relevant merchant characteristics\n* **images**: Group of images selected by the merchant\n* **documents**: Group of documents released by this merchant (e.g seasonal menus )\n* **links**: Links for other pages or api operations for this merchant\n* **bookable**: The flag indicates whether the merchant is bookable or not\n* **openingTimes**: Group of opening times: restaurant opening times for this merchant. Time range beginning may be greater than the end time of the range, when this range goes beyond the day when it was started, e.g. 19:00:00 - 02:00:00\n* **ccvEnabled**: If true, credit card information is required when creating a reservation\n* **chain**: Merchant chain information, if any\n* **ivrRedirectNumber**: The IVR forwarding phone number, requires permission\n* **shortDescription**: Merchant short description, requires permission\n* **longDescription**: Merchant long description, requires permission\n\n\n###Authenticated use of the api:\n* Field `documents` is only accessible for authorized callers and will be empty otherwise.\n* Queries with parameter `onlyWithAttributes` are only allowed for authorized callers and will return `HTTP 403` for unauthorized requests\n\n#####How?\nIn order to make an authenticated call the caller must send a header name `X-Quandoo-AuthToken` with the token obtained from contact with Quandoo.\n\n###Pagination of the result:\n\nThe result contains the fields `size` with the number of all merchants that matched the informed parameters, `offset` and `limit` defining which merchants from the complete list are on this response,\nand the caller can use query parameters `offset` and `limit` to get different merchants on the result list\n\n###Examples:\n\nExample curl:\n```\ncurl -H 'X-Quandoo-AuthToken: INSERT_KEY_HERE' 'https://{host}/v{X}/merchants?query=Zim&place=Berlin&centerPoint=52.5479288%2C13.4085728&radius=10&bookable=true&reviewScoreMax=200&onlyWithAttributes=documents&offset=0&limit=100'\n```\n\nExample response:\n```\n{\n \"merchants\": [\n {\n \"id\": 215,\n \"name\": \"a-merchant-Zim\",\n \"phoneNumber\": \"+49153153153\",\n \"currency\": \"EUR\",\n \"locale\": \"de_DE\",\n \"timezone\": \"Europe/Berlin\",\n \"location\": {\n \"coordinates\": {\n \"latitude\": 55,\n \"longitude\": 12\n },\n \"address\": {}\n },\n \"reviewScore\": \"5.3\",\n \"tagGroups\": [\n {\n \"type\": \"CUISINE\",\n \"tags\": [\n {\n \"id\": 63,\n \"name\": \"Testküche Hauptkategorie\"\n },\n {\n \"id\": 66,\n \"name\": \"Test cuisine\"\n }\n ]\n }\n ],\n \"images\": [],\n \"documents\": [\n {\n \"name\": \"Main Menu\",\n \"url\": \"https://d2s6u6f7snurg9.cloudfront.net/partner/uploads/MD-document-3ec1dc15-1b69-463f-bdd2-c060b9bf844d.pdf\",\n \"format\": \"pdf\",\n \"description\": \"Seasonal Main Menu\"\n }\n ],\n \"links\": [\n {\n \"href\": \"https://{host}/{path}?aid=16\",\n \"method\": \"GET\",\n \"rel\": \"DETAILS\"\n },\n {\n \"href\": \"https://{host}/{path}?aid=16&countryId=NLD\",\n \"method\": \"GET\",\n \"rel\": \"WIDGET\"\n },\n {\n \"href\": \"https://{host}/{path}/details?aid=16&countryId=NLD\",\n \"method\": \"GET\",\n \"rel\": \"WIDGET_DETAILS\"\n }\n ],\n \"bookable\": true,\n \"ccvEnabled\": true,\n \"chain\": {\n \"id\": 1,\n \"name\": \"Test chain\"\n },\n \"ivrRedirectNumber\": \"+49153153153\",\n \"shortDescription\": \"Test short description\",\n \"longDescription\": \"Test long description\",\n },\n {\n \"id\": 219,\n \"name\": \"another merchants Zim\",\n \"phoneNumber\": \"+49154154154\",\n \"currency\": \"EUR\",\n \"locale\": \"de_DE\",\n \"timezone\": \"Europe/Berlin\",\n \"location\": {\n \"coordinates\": {\n \"latitude\": 52,\n \"longitude\": 13\n },\n \"address\": {\n \"street\": \"Wintersteinstr.\",\n \"number\": \"15\",\n \"zipcode\": \"10587\",\n \"city\": \"Berlin\",\n \"country\": \"DEU\"\n }\n },\n \"reviewScore\": \"4.7\", \n \"tagGroups\": [\n {\n \"type\": \"CUISINE\",\n \"tags\": [\n {\n \"id\": 79,\n \"name\": \"Testküche Hauptkategorie\"\n },\n {\n \"id\": 82,\n \"name\": \"Test Japanese\"\ \n }\n ]\n },\n {\n \"type\": \"PRICE\",\n \"tags\": [\n {\n \"id\": 84,\n \"name\": \"Test expensive\"\n }\n ]\n }\n ],\n \"images\": [\n {\n \"url\": \"https://dci5ez2ey8tr9.cloudfront.net/1482eec7-e585-4821-b096-8a9941e0d2eb/25_sld.jpg\"\n }\n ],\n \"documents\": [],\n \"links\": [\n {\n \"href\": \"https://{host}/{path}?aid=16\",\n \"method\": \"GET\",\n \"rel\": \"DETAILS\"\n },\n {\n \"href\": \"https://{host}/{path}?aid=16&countryId=NLD\",\n \"method\": \"GET\",\n \"rel\": \"WIDGET\"\n },\n {\n \"href\": \"https://{host}/{path}/details?aid=16&countryId=NLD\",\n \"method\": \"GET\",\n \"rel\": \"WIDGET_DETAILS\"\n }\n ],\n \"bookable\": true,\n \"openingTimes\": {\n \"standardOpeningTimes\": {\n \"SATURDAY\": [\n {\n \"start\": \"09:00:00\",\n \"end\": \"20:00:00\"\n }\n ],\n \"SUNDAY\": [\n {\n \"start\": \"09:00:00\",\n \"end\": \"18:00:00\"\n }\n ]\n }\n },\n \"ccvEnabled\": true,\n \"chain\": {\n \"id\": 1,\n \"name\": \"Test chain\"\n },\n \"ivrRedirectNumber\": \"+49153153153\",\n \"shortDescription\": \"Test short description\",\n \"longDescription\": \"Test long description\",\n }\n ],\n \"size\": 2,\n \"offset\": 0,\n \"limit\": 100\n}\n```" parameters: - name: query in: query required: false description: Search query for a merchant name schema: type: string - name: place in: query required: false description: 'Search query for a place (country, city or district) name: the most relevant places, if any, are taken as a filter' schema: type: string - name: placeIds in: query required: false description: DEPRECATED. Filter by place found by id. Semicolon separated. schema: type: string - name: centerPoint in: query required: false description: Search with coordinates and radius. "radius" argument can be set, otherwise default value of 10 km will be used.
Format:
53.1222,13.0303
where latitude=53.1222, longitude=13.0303 schema: type: string - name: radius in: query required: false description: Radius for coordinate-based search schema: type: integer format: int32 default: 10 - name: bookable in: query required: false description: Filter only bookable merchants schema: type: boolean - name: tags in: query required: false description: "Filter by tags found by text. The value can be either in English or in the specific locale. Semicolon separated. All or nothing behaviour: if one single tag is not found, the whole request fails. Cannot be used in combination with 'groupedTagIds' parameter." schema: type: string - name: tagIds in: query required: false description: "Filter by tags found by id. Semicolon separated. All or nothing behaviour: if one single tag id is not found, the whole request fails. Cannot be used in combination with 'tags' parameter." schema: type: string - name: reviewScoreMax in: query required: false description: Filter by max review score (100 - 600) schema: type: integer format: int32 - name: onlyWithAttributes in: query required: false description: Search with attributes specified only. Attribute "documents" is currently supported, requires permission schema: type: string - name: capacity in: query required: true description: Number of people. In order to be effective, "date" and "fromTime" must also be set. schema: type: integer format: int32 default: 2 - name: date in: query required: false description: "Date of the desired reservation in merchants' time zone. Format: yyyy-MM-dd. Availability search is only activated if \"place\" is specified." schema: type: string format: date - name: fromTime in: query required: false description: "Beginning of the desired reservation time frame in merchants' time zone. Format: HH:mm. Consider a 3h buffer for the time (0.5h before the given time and 2.5h after)" schema: type: string - name: offset in: query required: false description: offset schema: type: integer format: int32 default: 0 - name: limit in: query required: false description: limit schema: type: integer format: int32 default: 100 - name: Accept-Language in: header required: false description: language schema: type: string - name: ivrNumber in: query required: false description: ivrNumber schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MerchantDetailsDtoList' examples: Search200Example: summary: Default search 200 response x-microcks-default: true value: merchants: - id: {} name: {} phoneNumber: {} currency: {} locale: {} timezone: {} location: {} reviewScore: {} tagGroups: {} images: {} documents: {} links: {} bookable: {} openingTimes: {} ccvEnabled: {} chain: {} ivrRedirectNumber: {} shortDescription: {} longDescription: {} size: 1 offset: 1 limit: 1 '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: Search400Example: summary: Default search 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}/customers: get: tags: - Customers summary: Quandoo Get a List of Customers of a Merchant operationId: getCustomersOfMerchant_1 description: "This endpoint allows a third party to get a list of customers of a merchant.\nThe list is filtered, showing only the customers that the third party system has access.\nCustomer id is agent-specific if the customer was created by the agent. The agent needs to be authenticated.\n\nThe endpoint will return `HTTP 404 - Not Found` if the merchant with the specified id could not be found.\nIt will return `HTTP 403 - Forbidden` if the agent is not authenticated or the agent doesn't have permissions.\n\n####Request:\n* **merchantId**: Identifier of the merchant\n* **offset**: sets the starting element to be returned. Defaults to 0 when unset or malformed.\n* **limit**: maximum number of results to be returned. Value must be between 1 and 100. Defaults to 100 when unset, malformed or outside bounds.\n* **modifiedSince**: earliest date time of time window in UTC. Format: yyyy-MM-dd HH:mm:ss\n* **modifiedUntil**: latest date time of time window in UTC. Format: yyyy-MM-dd HH:mm:ss\n\n####Response:\nThe response contains the following data of the customer as explained below:\n* **id**: The agent-dependent identifier of the customer \n* **title**: The title of the customer. _Optional_\n* **firstName**: First name of the customer. _Optional_\n* **lastName**: Last name of the customer. _Optional_\n* **email**: The given email of this customer. _Optional_\n* **gender**: The given gender of the customer (one of MALE, FEMALE, OTHER or UNDEFINED). _Optional_\n* **phoneNumber**: The phone number of the customer. _Optional_\n* **mobileNumber**: The mobile phone number of the customer. _Optional_\n* **locale**: The locale of the customer.\n* **links**: Related links that can be followed based on this response\n* **subscriptions**: The newsletter subscriptions, e.g. QUANDOO, MERCHANT\n* **statistics**: The customer statistics: number of successful, cancelled and no-show reservations\n* **createdAt**: The date the customer was created. Format: yyyy-MM-ddTHH:mm:ssZ\n* **updatedAt**: The date the customer was last updated. Format: yyyy-MM-ddTHH:mm:ssZ\n\nExample curl:\n```\ncurl https://{host}/v{X}/merchants/1234/customers\n```\n\nExample response: \n```\n{\n \"result\": [\n {\n \"id\": \"9ffb3466-3562-42cc-add1-92a46a2f0902\",\n \"customerRef\": \"9ffb3466-3562-42cc-add1-92a46a2f0902\",\n \"marketingFlags\": [\n {\n \"marketingSettingType\": \"NEWSLETTERS\",\n \"marketingSettingStatus\": \"INACTIVE\"\n },\n {\n \"marketingSettingType\": \"PROMO_CODES\",\n \"marketingSettingStatus\": \"ACTIVE\"\n }\n ],\n \"title\": \"Mr.\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"test@quandoo.de\",\n \"phoneNumber\": \"+493012345678\",\n \"mobileNumber\": \"+17712345678\",\n \"locale\": \"de_DE\",\n \"links\": [\n {\n \"href\": \"http://localhost:39250/v1/customers/9ffb3466-3562-42cc-add1-92a46a2f0902/reservations\",\n \"method\": \"GET\",\n \"rel\": \"get-customer-reservations\"\n }\n ],\n \"subscriptions\": [\n {\n \"id\": \"QUANDOO\"\n }\n ],\n \"statistics\": {\n \"reservationSuccessfulCount\": 8,\n \"reservationCancelledCount\": 5,\n \"reservationNoShowCount\": 2\n },\n \"createdAt\": \"2018-11-22T18:42:16Z\",\n \"updatedAt\": \"2018-11-30T18:16:02Z\"\n }\n ],\n \"offset\": 0,\n \"limit\": 100\n}\n```\n" parameters: - name: merchantId in: path required: true description: Id of the merchant schema: type: integer format: int32 - name: offset in: query required: false description: offset schema: type: integer format: int32 default: 0 - name: limit in: query required: false description: limit schema: type: integer format: int32 default: 100 - name: modifiedSince in: query required: false description: 'modifiedSince. Format: yyyy-MM-dd HH:mm:ss' schema: type: string format: date-time - name: modifiedUntil in: query required: false description: 'modifiedUntil. Format: yyyy-MM-dd HH:mm:ss' schema: type: string format: date-time responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CustomerDataList' examples: GetCustomersOfMerchant1200Example: summary: Default getCustomersOfMerchant_1 200 response x-microcks-default: true value: result: - id: {} customerRef: {} marketingFlags: {} title: {} firstName: {} lastName: {} email: {} phoneNumber: {} mobileNumber: {} locale: {} links: {} subscriptions: {} statistics: {} updatedAt: {} offset: 1 limit: 1 '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetCustomersOfMerchant1400Example: summary: Default getCustomersOfMerchant_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetCustomersOfMerchant1403Example: summary: Default getCustomersOfMerchant_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Customer not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetCustomersOfMerchant1404Example: summary: Default getCustomersOfMerchant_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetCustomersOfMerchant1500Example: summary: Default getCustomersOfMerchant_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/reservation-enquiries: put: tags: - Reservation Enquiries summary: Quandoo Create Reservation Enquiries operationId: createReservationEnquiry_1 description: "This endpoint allows to create a reservation enquiry for a certain capacity, start and end time. It also requires certain customer information. All optional fields can be either omitted or set to null. The endpoint is idempotent, which means sending the same request twice will not create another reservation enquiry. For that purpose the client is required to generate an agent-specific unique ID for each request.\n\nThe endpoint will return status `HTTP 400` should any of the required parameters be missing or formatted incorrectly. See schema for details. \n\n####Request:\nThe request needs to have 3 objects: reservation enquiry, customer and tracking information.\n\n* **reservationEnquiry**: Information about the merchant and the enquiry.\n * **id**: The unique identifier of the reservation enquiry for the calling agent (Agent dependent field) or NULL if the agent identifier should be created. Optional.\n * **merchantId**: The ID of the merchant at which this enquiry will be made. **Required**.\n * **capacity**: The capacity (people count) of the reservation enquiry. **Required**.\n * **startDateTime**: The start date and time when the customer wants to make a reservation. Format: yyyy-MM-ddTHH:mm:ssZ. **Required**.\n * **endDateTime**: The expected date and time for the reservation to end accordingly to the customer. Format: yyyy-MM-ddTHH:mm:ssZ. **Required**.\n * **message**: A free-text message to the merchant. Max of 5000 characters. **Required**.\n\n* **customer**: Information on the customer making the reservation.\n * **id**: Identifier of the customer for the calling agent. Agent dependent field. Optional.\n * **firstName**: The first name of the customer. Optional.\n * **lastName**: The last name of the customer. Optional.\n * **emailAddress**: The email address of the customer. **Required**.\n * **phoneNumber**: The phone number of the customer. Without country code, since it will be assumed from the country field. Example: 030120765890. **Required**.\n * **locale**: The locale of the customer. E.g. de_DE. **Required**.\n * **country**: The 2 letter ISO country of the customer. E.g DE. **Required**\n * **subscriptions**: List of requested subscriptions e.g. QUANDOO, MERCHANT. Optional.\n\n* **tracking**: Third party information used to track customer and reservation enquiry.\n * **agent**: The id of the agent creating this reservation enquiry. **Required**.\n * **cookie**: Cookie information to be stored with this reservation. Optional.\n\n####Response:\nThe response returns information on the created reservation enquiry and the customer along with relevant links to follow.\n\n* **reservationEnquiry**: Information on the created reservation enquiry.\n * **id**: Agent-specific id set for the reservation enquiry.\n\n* **customer**: Information on the customer.\n * **id**: Agent-specific id set for the customer.\n\n* **links**: Related links that can be followed based on this response.\n\nExample curl:\n```\ncurl -H \"Content-Type: application/json\" -X POST -d '\n{\n \"reservationEnquiry\": {\n \"id\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"merchantId\": 15,\n \"capacity\": 10,\n \"startDateTime\": \"2015-06-22T12:00:00+00:00\",\n \"endDateTime\": \"2015-06-22T17:00:00+00:00\",\n \"message\": \"Customer specific message\"\n },\n \"customer\": {\n \"id\": \"659b9f4b-cd1a-4dc9-a5c3-8ef6bacbade5\",\n \"firstName\": \"Hans\",\n \"lastName\": \"Wurst\",\n \"emailAddress\": \"hans.wurst@foo.bar\",\n \"phoneNumber\": \"017312345678\",\n \"locale\": \"de_DE\",\n \"country\": \"DE\",\n \"subscriptions\": [\n {\n \"id\": \"QUANDOO\"\n },\n {\n \"id\": \"MERCHANT\"\n }\n ]\n },\n \"tracking\": {\n \"agent\": {\n \"id\": 3\n },\n \"cookie\": {\n \"tracking\": \"ff819cdc9\",\n \"referenceId\": \"07f53b36\"\n }\n }\n}' https://{host}/v{X}/reservation-enquiries\n```\n\nExample response:\n```\n{\n \"reservationEnquiry\": {\n \"id\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\"\n },\n \"customer\": {\n \"id\": \"2cc29cba-1e1f-4af6-8184-386e19c891ec\"\n },\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/merchants/15\",\n \"method\": \"GET\",\n \"rel\": \"get-merchant\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/15/reservation-settings\",\n \"method\": \"GET\",\n \"rel\": \"reservation-settings\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/15/availabilities\",\n \"method\": \"GET\",\n \"rel\": \"availability_days\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/15/availabilities/2015-06-22/times\",\n \"method\": \"GET\",\n \"rel\": \"availability\"\n }\n ]\n}\n```" requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MerchantReservationEnquiryData' examples: CreateReservationEnquiry1RequestExample: summary: Default createReservationEnquiry_1 request x-microcks-default: true value: reservationEnquiry: id: '88086' merchantId: 88086 capacity: 4 startDateTime: '2026-07-15T19:30:00' endDateTime: '2026-07-15T19:30:00' message: Window table preferred if available. customer: id: '88086' firstName: Jane lastName: Smith emailAddress: jane.smith@example.com phoneNumber: '030120765890' locale: de_DE country: DE subscriptions: - {} tracking: agent: {} cookie: {} description: Reservation enquiry data responses: '200': description: Reservation enquiry successfully created content: application/json: schema: $ref: '#/components/schemas/CreatedReservationEnquiryData' examples: CreateReservationEnquiry1200Example: summary: Default createReservationEnquiry_1 200 response x-microcks-default: true value: reservationEnquiry: id: '88086' customer: id: '88086' links: - href: {} method: {} rel: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReservationEnquiry1400Example: summary: Default createReservationEnquiry_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReservationEnquiry1500Example: summary: Default createReservationEnquiry_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/reservation-enquiries/{reservationEnquiryId}: get: tags: - Reservation Enquiries summary: Quandoo Get Reservation Enquiry by Id operationId: getReservationEnquiry_1 description: "This endpoint allows an agent to get an reservation enquiry by id. The id is agent-specific. The agent needs to be authenticated.\n\nThe endpoint will return `HTTP 404 - Not Found` if the reservation enquiry with the specified id could not be found.\n\nIt will return `HTTP 403 - Forbidden` if the agent is not authenticated, if the agent doesn't have permissions or the reservation enquiry doesn't belong to the authenticated agent.\n\n####Request:\n* **reservationEnquiryId**: Agent-specific ID of the requested reservation enquiry\n\n####Response:\n* **id**: The agent-dependent unique id of the reservation enquiry\n* **merchantId**: The ID of the merchant at which this reservation enquiry was made\n* **customerId**: The ID of the customer to which this reservation enquiry belongs\n* **capacity**: The capacity (people count) of the reservation enquiry\n* **startDateTime**: The start date time of the reservation enquiry. Format: yyyy-MM-ddTHH:mm:ssZ\n* **endDateTime**: The end date time of the reservation enquiry. Format: yyyy-MM-ddTHH:mm:ssZ\n* **status**: The status of the reservation enquiry which can be one of: NEW, IN_PROGRESS, ACCEPTED or REJECTED\n\nExample curl:\n```\ncurl https://{host}/v{X}/reservation-enquiries/07f53b36-3f48-11e5-a151-feff819cdc9f\n```\n\nExample response:\n```\n{\n \"id\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"merchantId\": 1384,\n \"customerId\": \"35fff464-142c-48ac-a0c6-ed72a1615664\",\n \"capacity\": 4,\n \"startTime\": \"2015-06-22T12:00:00+00:00\",\n \"endTime\": \"2015-06-22T13:00:00+00:00\",\n \"status\": \"NEW\"\n}\n```" parameters: - name: reservationEnquiryId in: path required: true description: Id of the reservation enquiry schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetReservationEnquiryData' examples: GetReservationEnquiry1200Example: summary: Default getReservationEnquiry_1 200 response x-microcks-default: true value: id: '88086' merchantId: 88086 customerId: '88086' capacity: 4 startDateTime: '2026-07-15T19:30:00' endDateTime: '2026-07-15T19:30:00' status: CONFIRMED '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservationEnquiry1400Example: summary: Default getReservationEnquiry_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservationEnquiry1403Example: summary: Default getReservationEnquiry_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Reservation enquiry not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservationEnquiry1404Example: summary: Default getReservationEnquiry_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservationEnquiry1500Example: summary: Default getReservationEnquiry_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK patch: tags: - Reservation Enquiries summary: Quandoo Update Status of Reservation Enquiry by Id operationId: updateReservationEnquiry_1 description: "This endpoint allows to update the status of a reservation enquiry with the given ID. The allowed status transitions are as following:\n\n* NEW --> IN_PROGRESS --> {ACCEPTED/REJECTED}\n* ACCEPTED <--> REJECTED\n\nThe endpoint will return `HTTP 404 - Not Found` if the reservation enquiry with the specified id could not be found.\n\nThe endpoint will return `HTTP 400 - Bad Request` if the specified status is wrong.\n\nThe endpoint will return `HTTP 409 - Conflict` if the status change is invalid.\n\nThe endpoint will return `HTTP 403 - Forbidden` if the agent is not authenticated, if the agent doesn't have permissions or the reservation enquiry \ndoesn't belong to the authenticated agent.\n\n####Request:\n* **reservationEnquiryId**: Agent-specific ID of the requested reservation enquiry\n* **reservationEnquiryData**: The new enquiry status\n" parameters: - name: reservationEnquiryId in: path required: true description: Id of the reservation enquiry schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateReservationEnquiryData' examples: UpdateReservationEnquiry1RequestExample: summary: Default updateReservationEnquiry_1 request x-microcks-default: true value: status: CONFIRMED description: New reservation enquiry status responses: '200': description: OK '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservationEnquiry1400Example: summary: Default updateReservationEnquiry_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservationEnquiry1403Example: summary: Default updateReservationEnquiry_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Invalid reservation enquiry status transition content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservationEnquiry1404Example: summary: Default updateReservationEnquiry_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservationEnquiry1500Example: summary: Default updateReservationEnquiry_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/reservation-enquiries/{reservationEnquiryId}/messages: get: tags: - Reservation Enquiries summary: Quandoo Get All Messages of a Reservation Enquiry operationId: getMessagesForReservationEnquiry_1 description: "This endpoint allows an agent to get all messages of a reservation enquiry. The id of the reservation enquiry is agent-specific. The agent needs to be authenticated.\n\nThe endpoint will return `HTTP 404 - Not Found` if the reservation enquiry with the specified id could not be found.\n\nIt will return `HTTP 403 - Forbidden` if the agent is not authenticated, if the agent doesn't have permissions or the reservation enquiry doesn't belong to the authenticated agent.\n\n####Request:\n* **reservationEnquiryId**: Agent-specific ID of the requested reservation enquiry\n\n####Response:\nThe response will contain a _list_ of messages. Each one containing the following fields:\n* **senderType**: If this message was sent by the customer or by the merchant \n* **creationDate**: The date time that this message was created. Format: yyyy-MM-ddTHH:mm:ssZ\n* **message**: The text of the message itself.\n\nExample curl:\n```\ncurl https://{host}/v{X}/reservation-enquiries/07f53b36-3f48-11e5-a151-feff819cdc9f/messages\n```\n\nExample response:\n```\n{\n \"messages\": [\n {\n \"senderType\": \"CUSTOMER\",\n \"message\": \"Customer specific message\",\n \"creationDate\": \"2018-05-04T09:26:53Z\"\n }\n ]\n}\n```" parameters: - name: reservationEnquiryId in: path required: true description: Id of the reservation enquiry schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReservationEnquiryMessageList' examples: GetMessagesForReservationEnquiry1200Example: summary: Default getMessagesForReservationEnquiry_1 200 response x-microcks-default: true value: messages: - senderType: {} message: {} creationDate: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetMessagesForReservationEnquiry1400Example: summary: Default getMessagesForReservationEnquiry_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetMessagesForReservationEnquiry1403Example: summary: Default getMessagesForReservationEnquiry_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Reservation enquiry not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetMessagesForReservationEnquiry1404Example: summary: Default getMessagesForReservationEnquiry_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetMessagesForReservationEnquiry1500Example: summary: Default getMessagesForReservationEnquiry_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}/availabilities/{date}/times: get: tags: - Availabilities summary: Quandoo Get Merchant Availability Time Slots operationId: availabilityOptions_1 description: "This endpoint returns availability time slots which can be reserved for a given capacity.\n\n####Request parameters:\n* **merchantId**: Id of the merchant. Path parameter.\n* **date**: Specifies date of the desired reservation. Format: `yyyy-MM-dd`. Path parameter.\n* **fromTime**: Beginning of the desired reservation time frame. Format: `HH:mm`. Optional.\n* **toTime**: End of the desired reservation time frame. Format: `HH:mm`. Optional.\n* **agentId**: Id of the agent making the request\n* **capacity**: Specifies the number of people in reservation. Availabilities will be returned based on this capacity. If not provided, the default value is 2.\n* **areaId**: Restricts availabilities to a certain area. Optional.\n \n####Response:\nThe response returns availability time slots that could be reserved, along with the areas it is associated with and contains information on how much should be paid if the reservation is cancelled by a client. \n\n* **timeSlots**: List of available time slots.\n * **areaIds**: List of areas for which this time slot can be reserved.\n * **dateTime**: Date and time of the available slot. Format: `yyyy-MM-dd'T'HH:mm:ssZ`\n * **occupancy**: Occupancy of the available time slot. This is an integer between `0` and `100`.\n * **vaultSettingsId**: ID of the vault setting, if there is any. See: `vaultSettings`\n* **vaultSettings**: Credit card vault settings representing the fees to be paid in case of cancellation.\n * **id**: ID of the setting as shown in `timeSlots`.\n * **fee**: Fee to be paid in case of cancellation. Currency is defined by merchant. See reservation-settings.\n * **feeType**: Type of fee to be paid. Can be `PER_PERSON` or `PER_RESERVATION`.\n * **feePercentageForTime**: Fee percentage depending of the time of cancellation. Format: `\"{hoursStart}-{hoursEnd}\": {percentage}` , where hours are the number of hours before the visit.\n* **links**: Related links that can be followed based on this response.\n\n####Example curl:\n```\ncurl https://{host}/v{X}/merchants/15/availabilities/2017-11-09/times?capacity=2&areaId=24&agentId=3&fromTime=10:45&toTime=12:45\n```\n\n\n####Example response:\n```\n{ \n \"timeSlots\": [ \n { \n \"areaIds\": [33532, 33533], \n \"dateTime\": \"2017-09-27T10:45:00+01:00\", \n \"occupancy\": 0, \n \"vaultSettingId\": \"284d701f-f79a-4efa-9859-fd09851dfdce\"\n }, \n ... \n ], \n \"vaultSettings\": [ \n { \n \"id\": \"284d701f-f79a-4efa-9859-fd09851dfdce\", \n \"fee\": \"10.00\", \n \"feeType\": \"PER_PERSON\", \n \"feePercentageForTime\": \n { \n \"0-12\":100, \n \"12-24\":50, \n \"24-48\":20 \n } \n } \n ], \n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/merchants/15\",\n \"method\": \"GET\",\n \"rel\": \"parent\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/15/reservation-settings\",\n \"method\": \"GET\",\n \"rel\": \"reservation-settings\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/reservations\",\n \"method\": \"PUT\",\n \"rel\": \"create-reservation\"\n }\n ]\n} \n```" parameters: - name: merchantId in: path required: true description: Id of the merchant schema: type: integer format: int32 - name: agentId in: query required: true description: Id of the agent schema: type: integer format: int32 - name: capacity in: query required: true description: Number of people schema: type: integer format: int32 default: 2 - name: date in: path required: true description: 'Date of the desired reservation. Format: yyyy-MM-dd' schema: type: string format: date - name: fromTime in: query required: false description: 'Beginning of the desired reservation time frame. Format: HH:mm' schema: type: string - name: toTime in: query required: false description: 'End of the desired reservation time frame. Format: HH:mm' schema: type: string - name: areaId in: query required: false description: Id of the area schema: type: integer format: int32 responses: '200': description: Merchant availabilities response content: application/json: schema: $ref: '#/components/schemas/MerchantAvailabilityDtoList' examples: AvailabilityOptions1200Example: summary: Default availabilityOptions_1 200 response x-microcks-default: true value: timeSlots: - dateTime: {} occupancy: {} areaIds: {} vaultSettingsId: {} vaultSettings: - id: {} fee: {} feeType: {} feePercentageForTime: {} links: - href: {} method: {} rel: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: AvailabilityOptions1400Example: summary: Default availabilityOptions_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: AvailabilityOptions1500Example: summary: Default availabilityOptions_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Agent type not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: AvailabilityOptions1404Example: summary: Default availabilityOptions_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}/availabilities: get: tags: - Availabilities summary: Quandoo Get Merchant Availability Days operationId: availabilityDays_1 description: "This endpoint returns days which a customer can select for his reservation. The response is based on when the merchant is known to be open. It is not guaranteed that they have available times for reservation. The days are returned starting from the first available day up to the merchant-defined limit, but never more than 365 days.\n\n####Request parameters:\n* **merchantId**: Id of the merchant. Path parameter.\n* **agentId**: Id of the agent making the request\n* **capacity**: Specifies the number of people in reservation. Availability days will be returned based on this capacity.\n\n####Response:\nThe response returns availability days that could be selected for reservation. \n* **days**: List of availability days that could be reserved. Format: yyyy-MM-dd \n* **links**: Related links that can be followed based on this response.\n\n####Example curl:\n```\ncurl https://{host}/v{X}/merchants/15/availabilities?agentId=3&capacity=4\n```\n\n\n####Example response:\n```\n{\n \"days\": [\n \"2017-01-01\",\n \"2017-01-02\",\n \"2017-01-03\",\n ...\n ],\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/merchants/15\",\n \"method\": \"GET\",\n \"rel\": \"parent\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/15/reservation-settings\",\n \"method\": \"GET\",\n \"rel\": \"settings\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/15/availabilities/2017-01-01/times\",\n \"method\": \"GET\",\n \"rel\": \"availabilities\"\n }\n ]\n}\n```" parameters: - name: merchantId in: path required: true description: Id of the merchant schema: type: integer format: int32 - name: agentId in: query required: true description: Id of the agent schema: type: integer format: int32 - name: capacity in: query required: false description: Number of people schema: type: integer format: int32 responses: '200': description: Merchant availabilities response content: application/json: schema: $ref: '#/components/schemas/MerchantAvailabilityDaysDto' examples: AvailabilityDays1200Example: summary: Default availabilityDays_1 200 response x-microcks-default: true value: days: - '2026-07-15' links: - href: {} method: {} rel: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: AvailabilityDays1400Example: summary: Default availabilityDays_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: AvailabilityDays1500Example: summary: Default availabilityDays_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Agent not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: AvailabilityDays1404Example: summary: Default availabilityDays_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}/reservations: get: tags: - Merchants summary: Quandoo Get Merchant Reservations operationId: getReservations_2 description: "This endpoint allows an agent to get reservations of a merchant. The results will be filtered by agent id. \nReservation IDs in response are agent-specific. The agent needs to be authenticated.\n\nThe endpoint will return `HTTP 404 - Not Found` if the merchant with the specified id could not be found.\nIt will return `HTTP 403 - Forbidden` if the agent is not authenticated or the agent doesn't have permissions.\n\n####Request:\n* **merchantId**: ID of the merchant\n* **offset**: sets the starting element to be returned. Defaults to 0 when unset or malformed.\n* **limit**: maximum number of results to be returned. Value must be between 1 and 100. Defaults to 100 when unset, malformed or outside bounds.\n* **earliest**: earliest date time of time window in UTC. Format: yyyy-MM-dd HH:mm:ss\n* **latest**: latest date time of time window in UTC. Format: yyyy-MM-dd HH:mm:ss\n\n\n####Response:\nThe response will be a _list_ of reservations. Each reservation has the fields explained below:\n* **id**: The public id of the reservation\n* **number**: Quandoo internal identifier of the reservation.\n* **quandooId**: The public id of this reservation on quandoo system.\n* **status**: The status of the reservation eg. CREATED, CONFIRMED, CUSTOMER CANCELED etc.\n* **startTime**: The start time of the reservation. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **endTime**: The end time of the reservation. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **capacity**: The capacity (people count) of the reservation\n* **merchantId**: The ID of the merchant at which this reservation was made.\n* **customerId**: The public ID of the customer to which this reservation belongs\n* **promoCode**: The promotion code associated with this reservation. Optional.\n* **extraInfo**: extra information that the customer provided for the reservation. Optional.\n* **links**: Related links that can be followed based on this response.\n* **createdAt**: The date the reservation was created. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **updatedAt**: The date the reservation was last updated. Format: `yyyy-MM-ddTHH:mm:ssZ`\n\nExample curl:\n```\ncurl https://{host}/v{X}/merchants/32489/reservations\n```\n\nExample response: \n```\n{\n \"reservations\": [\n {\n \"id\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"number\": 8734957,\n \"quandooId\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"status\": \"CREATED\",\n \"startTime\": \"2015-06-22T12:00:00+00:00\",\n \"endTime\": \"2015-06-22T13:00:00+00:00\",\n \"capacity\": 4,\n \"merchantId\": 1384,\n \"customerId\": \"ce0706ff-a95d-4229-a220-d21dcd175342\",\n \"promocode\": \"SOME_CAMPAIGN_CODE\",\n \"extraInfo\": \"request for baby chair\",\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/reservations/07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"method\": \"GET\",\n \"rel\": \"self\"\n },\n {\n \"href\": \"https://{host}/v{X}/reservations/07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"method\": \"PATCH\",\n \"rel\": \"update\"\n }\n ],\n \"createdAt\": \"2015-06-01T15:21:54Z\",\n \"updatedAt\": \"2015-06-01T18:45:30Z\"\n },\n {\n \"id\": \"d8f53b36-3f48-11e5-a151-feff819cdc7a\",\n \"number\": 8734958,\n \"quandooId\": \"d8f53b36-3f48-11e5-a151-feff819cdc7a\",\n \"status\": \"CONFIRMED\",\n \"startTime\": \"2015-06-22T12:00:00+00:00\",\n \"endTime\": \"2015-06-22T13:00:00+00:00\",\n \"capacity\": 3,\n \"merchantId\": 1384,\n \"customerId\": \"ce0706ff-a95d-4229-a220-d21dcd175342\",\n \"promocode\": \"SOME_CAMPAIGN_CODE\",\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/reservations/d8f53b36-3f48-11e5-a151-feff819cdc7a\",\n \"method\": \"GET\",\n \"rel\": \"self\"\n },\n {\n \"href\": \"https://{host}/v{X}/reservations/d8f53b36-3f48-11e5-a151-feff819cdc7a\",\n \"method\": \"PATCH\",\n \"rel\": \"update\"\n }\n ],\n \ \ \"createdAt\": \"2015-06-01T15:21:54Z\",\n \"updatedAt\": \"2015-06-01T18:45:30Z\"\n }\n ],\n offset:0,\n limit:100\n}\n```\n" parameters: - name: merchantId in: path required: true description: Id of the merchant schema: type: integer format: int32 - name: offset in: query required: false description: Skip first n reservations schema: type: integer format: int32 default: 0 - name: limit in: query required: false description: limit schema: type: integer format: int32 default: 100 - name: earliest in: query required: false description: 'earliest date time of time window in UTC. Format: yyyy-MM-dd HH:mm:ss' schema: type: string format: date-time - name: latest in: query required: false description: 'latest date time of time window in UTC. Format: yyyy-MM-dd HH:mm:ss' schema: type: string format: date-time responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MerchantReservationDataList' examples: GetReservations2200Example: summary: Default getReservations_2 200 response x-microcks-default: true value: reservations: - id: {} number: {} reservationNumber: {} quandooId: {} status: {} updatedAt: {} capacity: {} merchantId: {} customerId: {} promocode: {} extraInfo: {} links: {} reservationTags: {} offset: 1 limit: 1 '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservations2400Example: summary: Default getReservations_2 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservations2403Example: summary: Default getReservations_2 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Merchant not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservations2404Example: summary: Default getReservations_2 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservations2500Example: summary: Default getReservations_2 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}/reservation_tags: get: tags: - Reservations Tags summary: Quandoo Get Merchant Reservation Tags operationId: getReservationTags_1 description: "This endpoint returns all active reservation tags for a merchant.\n####Request:\n* **merchantId**: merchant's ID. Taken as a path parameter.\n\n####Response:\n* **id**: reservation tag's ID.\n* **name**: tag's name. Default tag names are usually translated to merchant's locale.\n* **merchantId**: merchant's ID.\n\nIt will return `HTTP 403 - AUTHENTICATION_ERROR` if the user is not authenticated.\n\nExample response:\n```\n{\n \"reservationTags\": [\n {\n \"id\": 5,\n \"name\": \"Birthday\",\n \"merchantId\": 3\n },\n {\n \"id\": 51,\n \"name\": \"With Children\",\n \"merchantId\": 3\n }\n ]\n}\n```\n\n\nExample curl:\n```\ncurl -H \"Content-Type: application/json\" -X GET https://{host}/v{X}/merchants/{merchantId}/reservation_tags\n```\n" parameters: - name: merchantId in: path required: true description: Id of the merchant schema: type: integer format: int32 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReservationTagsDto' examples: GetReservationTags1200Example: summary: Default getReservationTags_1 200 response x-microcks-default: true value: reservationTags: - id: {} name: {} merchantId: {} '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservationTags1403Example: summary: Default getReservationTags_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservationTags1400Example: summary: Default getReservationTags_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservationTags1500Example: summary: Default getReservationTags_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Agent not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservationTags1404Example: summary: Default getReservationTags_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}/reviews: get: tags: - Merchants summary: Quandoo Retrieves Customer Reviews for a Merchant, Specified by ReviewId operationId: getReviews_1 description: "This endpoint retrieves customer reviews for a particular merchant with rating, description, locale, date & the customer's information.This merchant should be specified by their identifier **merchantId**, which is mandatory.\n\nSupports pagination via offset & limit parameters in the request.\n\n`offset` allows skipping the first n reviews.\n`limit` makes sure the response contains a maximum of n reviews.\n\nIf not supplied, offset will be 0 and limit will be 10\n\n####Response:\n\n* **customer**: block contains link to customer's profile image, customer's first name & first letter of customer's last name.\n* **rating**: a value between 1 and 6, where 1 represents the worst rating and 6 represents the best.\n* **description**: the review description entered by the customer.\n* **locale**: represents the language settings of the customer, in the format: _\n* **date**: represents the date of the review, with the format: yyyy-MM-dd\n\nExample curl:\n```\ncurl https://{host}/v{X}/merchants/15/reviews?offset=10&limit=5\n```\n\nExample response:\n```\n{\n reviews: [\n {\n customer: {\n firstName: \"Hans\",\n lastName: \"W\",\n profileImage: {\n url: \"https://www...\"\n },\n },\n rating: 1,\n description: \"Foo bar\", \n locale: \"de_DE\",\n date: \"2017-07-21\"\n }\n ],\n offset: 10,\n limit: 5,\n size: 1\n}\n```" parameters: - name: merchantId in: path required: true schema: type: integer format: int32 - name: offset in: query required: false description: Skip first n reviews schema: type: integer format: int32 default: 0 - name: limit in: query required: false description: Max number of reviews to be retrieved schema: type: integer format: int32 default: 10 responses: '200': description: Review response content: application/json: schema: $ref: '#/components/schemas/ReviewDtoList' examples: GetReviews1200Example: summary: Default getReviews_1 200 response x-microcks-default: true value: reviews: - customer: {} rating: {} description: {} locale: {} date: {} size: 1 offset: 1 limit: 1 '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReviews1400Example: summary: Default getReviews_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReviews1500Example: summary: Default getReviews_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Merchant not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReviews1404Example: summary: Default getReviews_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/merchants/{merchantId}/reservation-settings: get: tags: - Reservation Settings summary: Quandoo Get Merchant Reservation Settings operationId: reservationSettings_1 description: "This endpoint provides all data that is required to initiate the reservation flow and is not part of the search endpoint.\n\nExample curl:\n```\ncurl https://{host}/v{X}/merchants/15/reservation-settings\n```\n\nExample response: \n```\n{\n \"areaIds\": [\n {\n \"id\": 2,\n \"name\": \"Garden\",\n \"priority\": 10\n }\n ],\n \"areaSelectionRequired\": true,\n \"capacities\": [\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n ],\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/merchants/15\",\n \"method\": \"GET\",\n \"rel\": \"parent\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/15/availabilities\",\n \"method\": \"GET\",\n \"rel\": \"availability_days\"\n },\n {\n \"href\": \"https://{host}/v{X}/merchants/15/availabilities/2017-01-01/times\",\n \"method\": \"GET\",\n \"rel\": \"availability\"\n }\n ],\n \"merchantNewsletterSelectionRequired\": true,\n \"minimumCapacityForEnquiries\": 10,\n \"onlineReservationInterval\": 60,\n \"reservationEnquiryEnabled\": true,\n \"specialTerms\": \"This is any custom string for special terms\",\n \"automaticConfirmation\": true,\n \"ccvEnabled\": true\n}\n```\n" parameters: - name: merchantId in: path required: true description: Id of the merchant schema: type: integer format: int32 responses: '200': description: Reservation settings response content: application/json: schema: $ref: '#/components/schemas/MerchantReservationSettingsDto' examples: ReservationSettings1200Example: summary: Default reservationSettings_1 200 response x-microcks-default: true value: areaIds: - id: {} name: {} priority: {} capacities: - 1 merchantNewsletterSelectionRequired: true areaSelectionRequired: true reservationEnquiryEnabled: true minimumCapacityForEnquiries: 4 onlineReservationInterval: 1 specialTerms: string links: - href: {} method: {} rel: {} automaticConfirmation: true ccvEnabled: true '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: ReservationSettings1400Example: summary: Default reservationSettings_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: ReservationSettings1500Example: summary: Default reservationSettings_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Merchant not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: ReservationSettings1404Example: summary: Default reservationSettings_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/reservations/{reservationId}: get: tags: - Reservations summary: Quandoo Get Reservation by Id operationId: getReservation_1 description: "This endpoint allows an agent or a user to get a reservation by id. The id is either agent-specific or a public id. The agent/user needs to be authenticated.\n\nThe endpoint will return `HTTP 404 - Not Found` if the reservation with the specified id could not be found.\n\nIt will return `HTTP 403 - Forbidden` if the agent/user is not authenticated, if the agent/user doesn't have permissions, if the reservation doesn't belong to the authenticated agent or if the user doesn't have permissions to see objects from the merchant owner of the reservation\n\n####Request:\n* **reservationId**: Agent-specific or public ID of the requested reservation\n\n####Response:\n* **id**: Agent-specific or public ID of the requested reservation\n* **number**: Quandoo internal identifier of the reservation\n* **quandooId**: The public id of this reservation on quandoo system.\n* **status**: The status of the reservation eg. CREATED, CONFIRMED, CUSTOMER CANCELED etc.\n* **startTime**: The start time of the reservation. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **endTime**: The end time of the reservation. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **capacity**: The capacity (people count) of the reservation\n* **merchantId**: The ID of the merchant at which this reservation was made.\n* **customerId**: The public ID of the customer to which this reservation belongs\n* **promoCode**: The promotion code associated with this reservation. Optional.\n* **extraInfo**: extra information that the customer provided for the reservation. Optional.\n* **links**: Related links that can be followed based on this response.\n* **reservationTags**: A list of reservation tag IDs.\n* **createdAt**: The date the reservation was created. Format: `yyyy-MM-ddTHH:mm:ssZ`\n* **updatedAt**: The date the reservation was last updated. Format: `yyyy-MM-ddTHH:mm:ssZ`\n\nExample curl:\n```\ncurl https://{host}/v{X}/reservations/07f53b36-3f48-11e5-a151-feff819cdc9f\n```\n\nExample response:\n```\n{\n \"id\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"number\": 1092454812,\n \"quandooId\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"status\": \"CREATED\",\n \"startTime\": \"2015-06-22T12:00:00+00:00\",\n \"endTime\": \"2015-06-22T13:00:00+00:00\",\n \"capacity\": 4,\n \"merchantId\": 1384,\n \"customerId\": \"35fff464-142c-48ac-a0c6-ed72a1615664\",\n \"promocode\": \"SOME_CAMPAIGN_CODE\",\n \"extraInfo\": \"request for baby chair\",\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/reservations/07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"method\": \"PATCH\",\n \"rel\": \"update\"\n }\n ],\n \"createdAt\": \"2015-06-01T15:21:54Z\",\n \"updatedAt\": \"2015-06-01T18:45:30Z\"\n}\n```" parameters: - name: reservationId in: path required: true description: Id of the reservation schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReservationData' examples: GetReservation1200Example: summary: Default getReservation_1 200 response x-microcks-default: true value: id: '88086' number: 1 reservationNumber: string quandooId: '88086' status: CONFIRMED updatedAt: '2026-07-15T19:30:00' capacity: 4 merchantId: 88086 customerId: '88086' promocode: string extraInfo: Window table preferred if available. links: - href: {} method: {} rel: {} reservationTags: - 1 '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservation1400Example: summary: Default getReservation_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservation1403Example: summary: Default getReservation_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Reservation not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservation1404Example: summary: Default getReservation_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReservation1500Example: summary: Default getReservation_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK patch: tags: - Reservations summary: Quandoo Update Reservation by Id operationId: updateReservation_1 description: "This endpoint allows an agent to update a reservation by id. The id is agent-specific. The agent needs to be authenticated.\n####Request:\n* **reservationId**: Agent-specific ID of the requested reservation. Taken as a path parameter.\n* **reservation.status**: New status for the reservation. When is present then all parameters below should be omitted!\n* **reservation.capacity**: The capacity (people count) of the reservation.\n* **reservation.areaId**: The ID of the area this reservation should be in.\n* **reservation.dateTime**: The date and time when the reservation will take place. Format: yyyy-MM-ddTHH:mm:ssZ.\n* **reservation.reservationTags** list of reservation tag IDs. Null value is treated as no value.\n* **reservation.extraInfo** additional text information about the reservation.\n\n The next JSON will be treated as follows:\n - { } - **extraInfo** will not be updated\n - { “extraInfo”:null } - **extraInfo** will not be updated\n - { “extraInfo”:“some text”} - **extraInfo** will be updated with provided text\n - { “extraInfo”:“”} - **extraInfo** will be assigned an empty string\n\nFor updating status request body should contain only reservation.status.\nValid status values depend on the current status of reservation and can be `CUSTOMER_CANCELED` or `RECONFIRMED`.\n* `CUSTOMER_CANCELED` is valid if current status is one of the below:\n * CREATED\n * CONFIRMED\n * AUTOMATIC_CONFIRMED\n * NOTIFICATION_REQUESTED\n * NOTIFIED\n * RECONFIRMED\n* `MERCHANT_CANCELED` is valid if current status is one of the below:\n * CONFIRMED\n * AUTOMATIC_CONFIRMED\n * NOTIFICATION_REQUESTED\n * NOTIFIED\n * RECONFIRMED\n* `RECONFIRMED` is valid if current status is one of the below:\n * CONFIRMED\n * AUTOMATIC_CONFIRMED\n * NOTIFICATION_REQUESTED\n * NOTIFIED\n\nIf reservation.status field is not present then reservation data will be updated and reservation's status will be reset.\nDepending on `Automatic confirmation for online reservations` setting, reservation's status will be set to CREATED or AUTOMATIC_CONFIRMED.\n\n####Response:\nThe endpoint will return `HTTP 200 - OK` if update was successful.\nIt will return `HTTP 404 - Not Found` error if the reservation with the specified id could not be found.\nIt will return `HTTP 403 - Forbidden` error if the agent is not authenticated, if the agent doesn't have permissions or the reservation doesn't belong to the \nauthenticated agent.\nIt will return `HTTP 409 - Conflict` error if reservation has menu, made by IOVOX, has conflict in status, time or other conflicts.\n\nExample curl:\n```\ncurl -H \"Content-Type: application/json\" -X PATCH -d '\n{\n \"reservation\": {\n \"status\": \"CUSTOMER_CANCELED\"\n }\n}\n' https://{host}/v{X}/reservations/07f53b36-3f48-11e5-a151-feff819cdc9f\n```\n" parameters: - name: reservationId in: path required: true description: Id of the reservation schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateReservationData' examples: UpdateReservation1RequestExample: summary: Default updateReservation_1 request x-microcks-default: true value: reservation: status: CONFIRMED capacity: 4 areaId: 1 dateTime: '2026-07-15T19:30:00' reservationTags: - {} extraInfo: Window table preferred if available. description: New reservation data responses: '200': description: OK '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservation1400Example: summary: Default updateReservation_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservation1403Example: summary: Default updateReservation_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Reservation not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservation1404Example: summary: Default updateReservation_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '409': description: No matching table(s) found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservation1409Example: summary: Default updateReservation_1 409 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReservation1500Example: summary: Default updateReservation_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/reservations: put: tags: - Reservations summary: Quandoo Create Reservations operationId: createReservation_1 description: "This endpoint allows to create a reservation for a certain capacity, date and time. It also requires certain customer information. All optional fields can be either omitted or set to null. The endpoint is idempotent, which means sending the same request twice will not create another reservation. For that purpose the client is required to generate an agent-specific unique ID for the reservation.\n\nThe endpoint will return status `HTTP 409` should the reservation option specified by the given parameters not be bookable anymore.\nThe endpoint will return status `HTTP 400` should any of the required parameters be missing or formatted incorrectly. See schema for details. \n\n####Request:\nThe request needs to have 3 objects for reservation, customer and tracking information.\n\n* **reservation**: Information about the reservation.\n * **id**: The identifier of the reservation for the calling agent (Agent-dependent field). Optional.\n * **merchantId**: The ID of the merchant at which this reservation will be made. **Required**.\n * **capacity**: The capacity (people count) of the reservation. **Required**.\n * **areaId**: The ID of the area this reservation should be in. Optional.\n * **dateTime**: The date and time when the reservation will take place (local time). Format: yyyy-MM-ddTHH:mm:ss. **Required**\n * **extraInfo**: Any extra information that the customer likes to provide. Optional.\n * **promoCode**: A promotion code which should be used with this reservation. Optional.\n * **creditCardVaultSettingsId**: A credit card vault settings to be used by this reservation. Optional.\n * **recurringCardDetailId**:A customer credit card reference to be used if credit card vault should be applied. Optional.\n * **reservationTags**: A list of reservation tag IDs. Optional.\n\n* **customer**: Information on the customer making the reservation.\n * **id**: Identifier of the customer for the calling agent. Agent dependent field. Optional.\n * **firstName**: The first name of the customer. Optional.\n * **lastName**: The last name of the customer. **Required**\n * **emailAddress**: The email address of the customer. **Required**.\n * **phoneNumber**: The phone number of the customer. Without country code, since it will be assumed from the country field. Example: 030120765890. **Required**.\n * **locale**: The locale of the customer. E.g. de_DE. **Required**.\n * **country**: The 2 letter ISO country of the customer. E.g DE. **Required**\n * **subscriptions**: List of requested subscriptions e.g. QUANDOO, MERCHANT. Optional.\n\n* **tracking**: Third party information used to track customer and reservations.\n * **agent**: The id of the agent creating this request and partner references if any. **Required**.\n * **cookie**: Cookie information to be stored with this reservation. Optional.\n\n####Response:\nThe response returns information on the created reservation and the customer along with relevant links to follow.\n\n* **reservation**: Information on the created reservation.\n * **id**: Agent-specific id set for the reservation.\n * **number**: Quandoo internal identifier of the reservation.\n * **reservationNumber**: Quandoo long internal identifier of the reservation. Provided when **number** is not provided. \n * **status**: Status for the created reservation. eg. \"CREATED\"\n * **quandooId**: Quandoo public identifier for the reservation. \n\n* **customer**: Information on the customer making the reservation.\n * **id**: Agent-specific id set for the customer.\n\n* **links**: Related links that can be followed based on this response.\n\nExample curl:\n```\ncurl -H \"Content-Type: application/json\" -X POST -d '\n{\n \"reservation\": {\n \"id\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"merchantId\": 15,\n \"capacity\": 2,\n \"areaId\": 1,\n \"dateTime\": \"2015-06-22T12:00:00+00:00\",\n \"extraInfo\": \"Some text\",\n \"promoCode\": \"PROMO123\",\n },\n \"customer\": {\n \"id\": \"659b9f4b-cd1a-4dc9-a5c3-8ef6bacbade5\"\ ,\n \"firstName\": \"Hans\",\n \"lastName\": \"Wurst\",\n \"emailAddress\": \"hans.wurst@foo.bar\",\n \"phoneNumber\": \"017312345678\",\n \"locale\": \"de_DE\",\n \"country\": \"DE\",\n \"subscriptions\": [\n {\n \"id\": \"QUANDOO\"\n },\n {\n \"id\": \"MERCHANT\"\n }\n ]\n },\n \"tracking\": {\n \"agent\": {\n \"id\": 3\n },\n \"cookie\": {\n \"tracking\": \"ff819cdc9\",\n \"referenceId\": \"07f53b36\"\n }\n }\n}' https://{host}/v{X}/reservations\n```\n\nExample response:\n```\n{\n \"reservation\": {\n \"id\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"number\": 708457891,\n \"status\": \"CREATED\",\n \"quandooId\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\"\n },\n \"customer\": {\n \"id\": \"01a53b36-3f48-11e5-a151-feff819cdc9f\"\n },\n \"links\": [\n {\n \"href\": \"https://{host}/v{X}/merchants/15/reservation-settings\",\n \"method\": \"GET\",\n \"rel\": \"parent\"\n },\n {\n \"href\": \"https://{portal}/edit-reservation/overview/b8d3213a-307b-4fa9-86f7-0202ea3311aa\",\n \"method\": \"GET\",\n \"rel\": \"customer-edit-reservation\"\n },\n {\n \"href\": \"https://{portal}/de/checkout/offline-reservation?reservationId=9e1b295b-554e-4c35-bf84-e529fa971919&merchantId=test-merchant-33719&cardId=889c0613-3b42-4fc5-a1cf-bd24c1d26908\",\n \"method\": \"GET\",\n \"rel\": \"credit-card-details-page\"\n }\n ]\n}\n```" requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MerchantReservationData' examples: CreateReservation1RequestExample: summary: Default createReservation_1 request x-microcks-default: true value: reservation: id: '88086' merchantId: 88086 capacity: 4 areaId: 1 dateTime: '2026-07-15T19:30:00' extraInfo: Window table preferred if available. promoCode: string creditCardVaultSettingsId: '88086' recurringCardDetailId: '88086' reservationTags: - {} customer: id: '88086' firstName: Jane lastName: Smith emailAddress: jane.smith@example.com phoneNumber: '030120765890' locale: de_DE country: DE subscriptions: - {} tracking: agent: {} cookie: {} description: Reservation data responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CreatedReservationData' examples: CreateReservation1200Example: summary: Default createReservation_1 200 response x-microcks-default: true value: reservation: id: '88086' number: 1 reservationNumber: string status: CONFIRMED quandooId: '88086' customer: id: '88086' links: - href: {} method: {} rel: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReservation1400Example: summary: Default createReservation_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '409': description: No matching table(s) found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReservation1409Example: summary: Default createReservation_1 409 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReservation1500Example: summary: Default createReservation_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/reviews: get: tags: - Reviews summary: Quandoo Get Information from Reviews in a List operationId: getReviews_2 description: "This resource return a list of reviews. The result obtained depends on the different query parameters provided. It is able to return three different results:\n* **Reviews associated to an agent:** if neither 'merchantId' nor 'reservationId' query parameters are provided, then the available reviews for the current agent are returned.\n* **Reviews associated to a merchant:** if the parameter 'merchantId' is provided, all the reviews for the given merchant and agent are provided. The agent is the one associated with the reservations.\n* **Reviews associated to a reservation:** Reservation could be identified in two ways: either by reservation public id or by agent reservation reference id.\n\n**NOTE:** For the second and third cases, the current agent must be the owner of the reservations used to get the reviews. In the specific case of the search by the merchants, the current agent id is the one realated to the reservations associated to the specified merchant's reviews.\n\n####Request:\nThe request needs 4 optional query parameters. Pagination is controlled by the usage of the 'limit' and 'offset' parameters.\n\n* **limit**: maximum number of results to be returned. Value must be between 1 and 10. Defaults to 10 when unset, malformed or outside bounds. Ignored when 'reservationId' is enabled.\n* **offset**: sets the starting element to be returned. Defaults to 0 when unset or malformed. Ignored when 'reservationId' is enabled.\n* **reservationId**: Either public ID of the reservation or agent reservation reference id from which to get the reviews. Cannot be used in combination with 'merchantId'. Can be null. Does not consider 'limit' and/or 'offset'.\n* **merchantId**: ID of the merchant from which to get the reviews. Cannot be used in combination with 'reservationId'. Can be null.\n\n####Response:\nThe response is a user review object containing a list of user reviews.\n\n* **size**: the number of reviews retrieved in this request. Can be any positive value between 0 and 10 (the maximum value for limit);\n* **offset**: echoes the offset value used in the request. Returns 0 in case 'reservationId' is used.\n* **limit**: echoes the limit value used in the request. Returns 0 in case 'reservationId' is used.\n* **reviews**: list of reviews retrieved, each review containing the following properties:\n\n* **reviewId**: review UUID. Same as the one used in the request.\n* **rating**: rating associated to this review.\n* **description**: description of the review.\n* **status**: current review status. Possible values are 'CREATED', 'DENIED', 'PUBLISHED'.\n* **merchantId**: merchant id associated to this review. **Only in the detailed view**.\n* **customerId**: customer id associated to this review. **DEPPRECATED, NOT USED**.\n* **publicCustomerId**: public customer id associated to this review. **Only in the detailed view**.\n* **customerFirstName**: review associated customer first name. **Only in the detailed view**.\n* **customerLastName**: first character of the customer last name. **Only in the detailed view**.\n* **customerProfileImage**: customer profile image URL. **Only in the detailed view**.\n* **locale**: locale associated to the review. **Only in the detailed view**.\n* **reservationId**: the reservation identifier this review is created for. Either reservation public id or agent specific reservation reference id(if set on creation) is used\n* **createdAt**: the date and time the review created at.\n\nExample curl:\n```\ncurl https://{host}/v{X}/reviews?merchantId=5124\n```\n\nExample response:\n```\n{\n\t\"reviews\": [{\n\t\t\t\"reviewId\": \"e94c5f9b-e61f-486a-bfa7-48abb1e42f93\",\n\t\t\t\"merchantId\": 5124,\n\t\t\t\"publicCustomerId\": \"a10fbb9a-df04-407c-9568-2e79bd620b41\",\n\t\t\t\"customerFirstName\": \"Perico\",\n\t\t\t\"customerLastName\": \"d\",\n\t\t\t\"customerProfileImage\": \"http://test.bla\",\n\t\t\t\"rating\": 6,\n\t\t\t\"description\": \"Description 8\",\n\t\t\t\"status\": \"PUBLISHED\",\n\t\t\t\"locale\": \"de_DE\",\n \"reservationId\":\"1111112\",\n \"createdAt\"\ :\"2020-07-28T09:45:33Z\"\n\t\t}, {\n\t\t\t\"reviewId\": \"65472403-7968-4ccf-b389-fe7e6e70ee27\",\n\t\t\t\"merchantId\": 5124,\n\t\t\t\"publicCustomerId\": \"a10fbb9a-df04-407c-9568-2e79bd620b41\",\n\t\t\t\"customerFirstName\": \"Perico\",\n\t\t\t\"customerLastName\": \"d\",\n\t\t\t\"customerProfileImage\": \"http://test.bla\",\n\t\t\t\"rating\": 6,\n\t\t\t\"description\": \"Description 9\",\n\t\t\t\"status\": \"PUBLISHED\",\n\t\t\t\"locale\": \"de_DE\",\n \"reservationId\":\"7dbe05dc-f566-48be-9872-c77b71aff072\",\n \"createdAt\":\"2020-07-28T09:45:54Z\"\n\t\t}\n\t],\n\t\"size\": 2,\n\t\"offset\": 0,\n\t\"limit\": 10\n}\n```\n" parameters: - name: merchantId in: query required: false description: MerchantId to get the reviews from. Cannot be used in combination with 'reservationId' schema: type: integer format: int32 - name: reservationId in: query required: false description: Reservation id to get the reviews from. Either public id or agent reference id. Cannot be used in combination with 'merchantId'. When set, 'offset' and 'limit' are ignored. All reviews for a reservation are returned. schema: type: string - name: offset in: query required: false description: Skip first n reviews schema: type: integer format: int32 default: 0 - name: limit in: query required: false description: Max number to retrieve schema: type: integer format: int32 default: 10 responses: '200': description: Review response content: application/json: schema: $ref: '#/components/schemas/GetReviewsDto' examples: GetReviews2200Example: summary: Default getReviews_2 200 response x-microcks-default: true value: reviews: - reviewId: {} merchantId: {} customer: {} status: {} locale: {} rating: {} description: {} reservationId: {} createdAt: {} size: 1 offset: 1 limit: 1 '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReviews2400Example: summary: Default getReviews_2 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReviews2500Example: summary: Default getReviews_2 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Review not found error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReviews2404Example: summary: Default getReviews_2 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: GetReviews2403Example: summary: Default getReviews_2 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK put: tags: - Reviews summary: Quandoo Create a Review for a Reservation operationId: createReview_1 description: "This resource manages the creation of reviews for a particular agent and a reservation. Reviews must have a description, rating and a reservation public identifier or agent specific reference identifier with reservation agent identifier. The agent must be the one that created the reservation, otherwise it is forbidden.\n\n####Request:\nThe request needs to have 3 parameters for review reviewId, description and rating.\n\n* **reservationId**: Public ID or agent specific reference id of the reservation where to add a review. **Required**.\n* **description**: Text content of the review to be set. Optional. A review requires a minimum of a rating.\n* **rating**: Integer value from 1 to 6 with the new rating given. **Required**.\n\n\n####Response:\nThe response is a review object containing information about the review.\n\n* **reviewId**: The Id of the created review.\n* **status**: Status of the created review. Can be 'CREATED', 'PUBLISHED' or 'DENIED'. After a successful creation, 'CREATED' is returned.\n* **links**: A series of links where to get details of the created review;\n\nExample curl:\n```\ncurl -H \"Content-Type: application/json\" -X PUT https://{host}/v{X}/reviews/ -d '\n{\n \"reservationId\": \"07f53b36-3f48-11e5-a151-feff819cdc9f\",\n \"description\": \"Some description of the review\",\n \"rating\": 1\n}\n```\n\n```\ncurl -H \"Content-Type: application/json\" -X PUT https://{host}/v{X}/reviews/ -d '\n{\n \"reservationId\": \"1111112\",\n \"description\": \"Some description of the review\",\n \"rating\": 1,\n}\n```\n\nExample response:\n```\n{\n \"reviewId\": \"01a53b36-3f48-11e5-a151-feff819cdc9f\",\n \"status\": \"CREATED\",\n \"links\": [{\n \"href\": \"http://localhost:39250/v1/reviews/01a53b36-3f48-11e5-a151-feff819cdc9f\",\n \"method\": \"GET\",\n \"rel\": \"get-review\"\n }]\n}\n```" requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateReviewDto' examples: CreateReview1RequestExample: summary: Default createReview_1 request x-microcks-default: true value: reservationId: '88086' rating: 1 description: Window table preferred if available. description: Review for this reservation responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ChangedReviewDto' examples: CreateReview1200Example: summary: Default createReview_1 200 response x-microcks-default: true value: reviewId: '88086' status: AVAILABLE_TO_REVIEW links: - href: {} method: {} rel: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReview1400Example: summary: Default createReview_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReview1403Example: summary: Default createReview_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReview1500Example: summary: Default createReview_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Reservation not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: CreateReview1404Example: summary: Default createReview_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK patch: tags: - Reviews summary: Quandoo Updated a Review operationId: updateReview_1 description: "This resource manages the update of reviews for a given review ID. Description and rating can be updated on a review. The agent must be the one that owns the reservation associated to the review to modify, otherwise a forbidden response is returned.\n\n**NOTE**: Reviews in state 'PUBLISHED' or 'DENIED' cannot be updated. Only those in status 'CREATED' are allowed to be updated.\n\n####Request:\nThe request needs to have 3 parameters for reservation reviewId (public reviewId), description and rating.\n\n* **reviewId**: Id of the review. **Required**.\n* **description**: Text content of the review. If not set (null value) it won't be considered for update.\n* **rating**: Integer value from 1 to 6 with the rating given. If not set (null value) it won't be considered for update.\n\nIn case both description and rating are set to null, nothing happens to the review: it is not updated and its state remains.\n\n####Response:\nThe response is a review object containing information about the review.\n\n* **reviewId**: The Id of the updated review.\n* **status**: Status of the updated review. Can be 'CREATED', 'PUBLISHED' or 'DENIED'. Upon a successful update, the status 'CREATED' is returned.\n* **links**: A series of links where to get details of the updated review.\n\nExample curl:\n```\ncurl -H \"Content-Type: application/json\" -X PATCH https://{host}/v{X}/reviews/ -d '\n{\n \"reviewId\": \"01a53b36-3f48-11e5-a151-feff819cdc9f\",\n \"description\": \"Some updated description for the review\",\n \"rating\": 2\n}\n```\n\nExample response:\n```\n{\n \"reviewId\": \"01a53b36-3f48-11e5-a151-feff819cdc9f\",\n \"status\": \"CREATED\",\n \"links\": [{\n \"href\": \"http://localhost:39250/v1/reviews/01a53b36-3f48-11e5-a151-feff819cdc9f\",\n \"method\": \"GET\",\n \"rel\": \"get-review\"\n }]\n}\n```" requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateReviewDto' examples: UpdateReview1RequestExample: summary: Default updateReview_1 request x-microcks-default: true value: reviewId: '88086' rating: 1 description: Window table preferred if available. description: Review for this reservation responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ChangedReviewDto' examples: UpdateReview1200Example: summary: Default updateReview_1 200 response x-microcks-default: true value: reviewId: '88086' status: AVAILABLE_TO_REVIEW links: - href: {} method: {} rel: {} '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReview1400Example: summary: Default updateReview_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '403': description: Access denied content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReview1403Example: summary: Default updateReview_1 403 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReview1500Example: summary: Default updateReview_1 500 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. '404': description: Reservation not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: UpdateReview1404Example: summary: Default updateReview_1 404 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/validations/phone-numbers: get: tags: - Validations summary: Quandoo Validate Phone Number operationId: validatePhoneNumber_1 description: "This endpoint validates a phone number. \nIf optional 2-letter country code `country` is not specified, the `phoneNumber` should be formatted according to E164, which means it is expected to be in the international format with a leading `\"+\"` and no spaces or dashes, e.g. `+4930120765890`. Otherwise it may have leading zero instead of country code, e.g. `030120765890`.\n\nThe endpoint will return a status `HTTP 200` which means the `phoneNumber` is successfully validated.\nThe endpoint will return a status `HTTP 400` which means the `phoneNumber` is missing or invalid.\n\nExample curl:\n```\ncurl https://{host}/v{X}/validations/phone-numbers?phoneNumber=030120765890&country=IT\n```\n\nExample response:\n```\n{\n \"errorMessage\": \"phoneNumber is invalid: 030120765890, country specified is: IT\",\n \"errorType\": \"PHONE_NUMBER_INVALID\"\n}\n```\n" parameters: - name: phoneNumber in: query required: true description: Phone number schema: type: string - name: country in: query required: false description: Country code schema: type: string responses: '200': description: Phone number validated successfully '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: ValidatePhoneNumber1400Example: summary: Default validatePhoneNumber_1 400 response x-microcks-default: true value: errorType: BAD_REQUEST_ERROR errorMessage: Window table preferred if available. x-microcks-operation: delay: 0 dispatcher: FALLBACK components: securitySchemes: API_TOKEN: type: apiKey name: X-Quandoo-AuthToken in: header schemas: CustomerResponse: type: object required: - country - email - firstName - gender - id - lastName - links - mobileNumber - phoneNumber - subscriptions properties: id: type: string description: The id of the customer. example: '88086' firstName: type: string description: First name of the customer. example: Jane lastName: type: string description: Last name of the customer. example: Smith gender: type: string description: Gender of the customer. enum: - male - female - other - undefined example: male email: type: string description: Email of the customer. example: jane.smith@example.com phoneNumber: type: string description: Fixed line phone number of the customer. example: '030120765890' mobileNumber: type: string description: Mobile phone number of the customer. example: string country: type: string description: 2-letter ISO country code of the customer, e.g. DE. example: DE links: type: array description: The links related to this entity. items: $ref: '#/components/schemas/LinkRelationDto' subscriptions: type: array description: The newsletter subscriptions, e.g. QUANDOO, MERCHANT. items: $ref: '#/components/schemas/MerchantSubscription' LinkRelationDto: type: object properties: href: type: string format: url example: https://www.quandoo.com/place/sample-restaurant method: type: string example: string rel: type: string enum: - DETAILS - WIDGET - WIDGET_DETAILS - GET_MERCHANT - PARENT - SELF - SETTINGS - AVAILABILITY_DAYS - AVAILABILITIES - CREATE_RESERVATION - GET_RESERVATION - UPDATE_RESERVATION - GET_CUSTOMER_RESERVATION - GET_REVIEW - PORTAL_PREORDER_FORM - RESERVATION_CHECKOUT_PAGE - CREDIT_CARD_DETAILS_PAGE - CUSTOMER_EDIT_RESERVATION example: DETAILS MerchantSubscription: type: object properties: id: type: string enum: - QUANDOO - MERCHANT example: QUANDOO ErrorResponse: type: object properties: errorType: type: string enum: - BAD_REQUEST_ERROR - FORBIDDEN_ERROR - NOT_FOUND_ERROR - METHOD_NOT_ALLOWED_ERROR - NOT_ACCEPTABLE_ERROR - UNSUPPORTED_MEDIA_TYPE_ERROR - START_TIME_NOT_FOUND_ERROR - MERCHANT_ID_INVALID - RESERVATION_CAPACITY_MISSING - RESERVATION_CAPACITY_INVALID - RESERVATION_DATE_TIME_MISSING - RESERVATION_DATE_TIME_INVALID_FORMAT - RESERVATION_EXTRA_INFO_INVALID - RESERVATION_SHOW_POSTCODE - RESERVATION_DATE_TIME_INVALID_IN_THE_PAST - RESERVATION_NO_TABLES_AVAILABLE - RESERVATION_NOT_FOUND - RESERVATION_IN_NON_EDITABLE_STATUS - RESERVATION_WITH_SMART_OFFER_EDIT - RESERVATION_WITH_CCV_EDIT - RESERVATION_IOVOX_OFFER_EDIT - RESERVATION_WITH_PREPAID_MENU_EDIT - RESERVATION_FOR_MERCHANT_WITH_FEEDBACK_TIME - RESERVATION_WALKIN_NOT_EDITABLE - RESERVATION_CUSTOMER_CANNOT_EDIT - RESERVATION_PROMO_CODE_PARAM_INVALID - RESERVATION_PROMO_CODE_NOT_FOUND - RESERVATION_PROMO_CODE_INVALID_DESTINATION - RESERVATION_PROMO_CODE_ALREADY_USED - RESERVATION_PROMO_CODE_INVALID_CAMPAIGN - RESERVATION_PROMO_CODE_DATE_TIME_IN_PAST_OR_FUTURE - RESERVATION_PROMO_CODE_INVALID_DAY_OF_WEEK - RESERVATION_PROMO_CODE_INVALID_AGENT - RESERVATION_PROMO_CODE_INVALID_MERCHANT - RESERVATION_PROMO_CODE_INVALID_PARTNER_VOUCHER - RESERVATION_PROMO_CODE_ALREADY_OWNED_BY_CUSTOMER - RESERVATION_INVITATION_PROMO_CODE_NOT_FIRST_RESERVATION - CCV_SETTINGS_REQUIRED - CCV_CARD_REQUIRED - CCV_SETTINGS_INVALID - CCV_SETTINGS_OFFLINE - CCV_CARD_INVALID - ENQUIRY_INVALID_MIN_COVERS - CUSTOMER_FIRST_NAME_INVALID - CUSTOMER_LAST_NAME_MISSING - CUSTOMER_LAST_NAME_INVALID - CUSTOMER_EMAIL_MISSING - CUSTOMER_EMAIL_INVALID - CUSTOMER_NEWSLETTER_REQUESTED_MISSING - CUSTOMER_PHONE_NUMBER_MISSING - CUSTOMER_COUNTRY_INVALID - CUSTOMER_ID_EXISTS - CUSTOMER_PHONE_NUMBER_INVALID - UNEXPECTED_SERVER_ERROR - PHONE_NUMBER_MISSING - PHONE_NUMBER_INVALID - UUID_CONFLICT - RESERVATION_STATUS_CONFLICT - INVALID_RESERVATION_GUESTS_QUANTITY - MENU_MAPPING_FAILED example: BAD_REQUEST_ERROR errorMessage: type: string example: Window table preferred if available. ReservationData: type: object required: - capacity - customerId - id - links - merchantId - quandooId - status properties: id: type: string description: The agent-dependent unique id of the reservation. example: '88086' number: type: integer format: int32 description: The id of the reservation on quandoo system. example: 1 reservationNumber: type: string description: The long id of this reservation on quandoo system. example: string quandooId: type: string format: uuid description: The public id of this reservation on quandoo system. example: '88086' status: type: string description: The status of the reservation. example: CONFIRMED updatedAt: type: string format: date-time description: 'The date the review created on. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' capacity: type: integer format: int32 description: The capacity of the reservation. example: 4 merchantId: type: integer format: int32 description: The id of the merchant. example: 88086 customerId: type: string description: The public ID of the customer to which this reservation belongs. example: '88086' promocode: type: string description: The promotion code used in this reservation. Optional. example: string extraInfo: type: string description: Extra information that the customer provided for the reservation. Optional. example: Window table preferred if available. links: type: array description: The links related to this entity. items: $ref: '#/components/schemas/LinkRelationDto' reservationTags: type: array description: A list of reservation tag IDs. items: type: integer format: int32 ReservationDataList: type: object properties: reservations: type: array items: $ref: '#/components/schemas/ReservationData' ChainDto: type: object properties: id: type: integer format: int32 example: 1 name: type: string example: Sample Restaurant CoordinatesDto: type: object properties: latitude: type: number format: double example: 1.0 longitude: type: number format: double example: 1.0 DocumentDto: type: object properties: name: type: string example: Sample Restaurant url: type: string example: https://www.quandoo.com/place/sample-restaurant format: type: string example: string description: type: string example: Window table preferred if available. ImageDto: type: object properties: url: type: string format: url example: https://www.quandoo.com/place/sample-restaurant LocationDto: type: object properties: coordinates: $ref: '#/components/schemas/CoordinatesDto' address: $ref: '#/components/schemas/MerchantAddressDto' MerchantAddressDto: type: object properties: street: type: string example: string number: type: string example: string zipcode: type: string example: string city: type: string example: string country: type: string example: DE district: type: string example: string MerchantDetailsDto: type: object required: - bookable - ccvEnabled - id - links - location - name - openingTimes - phoneNumber - reviewScore - timezone properties: id: type: integer format: int32 description: The id of the merchant. example: 1 name: type: string description: The name of the merchant. example: Sample Restaurant phoneNumber: type: string description: The phone number of the merchant. example: '030120765890' currency: type: string description: The currency of the merchant. example: EUR locale: type: string description: The locale of the merchant. example: de_DE timezone: type: string description: The timezone of the merchant. example: 19:30:00 location: description: The location of the merchant. $ref: '#/components/schemas/LocationDto' reviewScore: type: string description: The review score of the merchant. example: string tagGroups: type: array description: The tag groups this merchant belongs to, requires permission. Without permissions returns only CUISINE and PRICE. items: $ref: '#/components/schemas/TagGroupDto' images: type: array description: The slider images this merchant has. items: $ref: '#/components/schemas/ImageDto' documents: type: array description: The documents this merchant has, requires permission. items: $ref: '#/components/schemas/DocumentDto' links: type: array description: The links related to this entity. items: $ref: '#/components/schemas/LinkRelationDto' bookable: type: boolean description: The flag indicates whether the merchant is bookable or not. example: true openingTimes: description: All opening times of the merchant. $ref: '#/components/schemas/OpeningTimesDto' ccvEnabled: type: boolean description: If true, credit card information is required when creating a reservation. example: true chain: description: The chain of the merchant. $ref: '#/components/schemas/ChainDto' ivrRedirectNumber: type: string description: The IVR forwarding phone number, requires permission. example: string shortDescription: type: string description: Merchant short description, requires permission. example: Window table preferred if available. longDescription: type: string description: Merchant long description, requires permission. example: Window table preferred if available. MerchantDetailsDtoList: type: object required: - merchants properties: merchants: type: array description: Merchant details collection. items: $ref: '#/components/schemas/MerchantDetailsDto' size: type: integer format: int64 example: 1 offset: type: integer format: int32 example: 1 limit: type: integer format: int32 example: 1 MerchantWithRecommendationsDto: type: object required: - merchant - merchantSearchMessage properties: merchant: description: The merchant that was searched for. Only filled if it is bookable. $ref: '#/components/schemas/MerchantDetailsDto' merchantSearchMessage: type: string description: 'Additional information about the search result: MERCHANT_NOT_BOOKABLE if the merchant exists but is not bookable' enum: - MERCHANT_NOT_BOOKABLE example: MERCHANT_NOT_BOOKABLE recommendedMerchants: description: Recommendations for similar merchants. $ref: '#/components/schemas/MerchantDetailsDtoList' OpeningTimesDto: type: object required: - standardOpeningTimes properties: standardOpeningTimes: description: The standard opening times of the merchant. $ref: '#/components/schemas/StandardOpeningTimesDto' StandardOpeningTimesDto: type: object TagGroupDto: type: object properties: type: type: string enum: - CUISINE - MEAL_TYPE - ESTABLISHMENT_TYPE - AREA - INTERNET - FOOD_RELATED - ACCESSIBILITY - PAYMENT - PRICE - ATMOSPHERE - PARKING - EXTRAS - GOOD_FOR - MENU_DETAILS example: CUISINE tags: type: array items: $ref: '#/components/schemas/TranslatedTagDto' TranslatedTagDto: type: object properties: id: type: string format: uuid example: '88086' name: type: string example: Sample Restaurant CustomerDataList: type: object properties: result: type: array items: $ref: '#/components/schemas/MerchantCustomerData' offset: type: integer format: int32 example: 1 limit: type: integer format: int32 example: 1 CustomerStatisticsData: type: object required: - reservationCancelledCount - reservationNoShowCount - reservationSuccessfulCount properties: reservationSuccessfulCount: type: integer format: int32 description: The number of reservations made by the customer that were actually seated example: 4 reservationCancelledCount: type: integer format: int32 description: The number of reservations made by the customer that were cancelled before taking place example: 4 reservationNoShowCount: type: integer format: int32 description: The number of reservations made by the customer that he did not show up example: 4 MarketingSettingDto: type: object properties: marketingSettingType: type: string enum: - SMART_OFFERS_AND_DEALS - PROMO_CODES - RESTAURANT_RECOMMENDATIONS - NEWSLETTERS example: SMART_OFFERS_AND_DEALS marketingSettingStatus: type: string enum: - ACTIVE - INACTIVE example: ACTIVE MerchantCustomerData: type: object required: - customerRef - email - firstName - id - lastName - links - locale - marketingFlags - mobileNumber - phoneNumber - statistics - subscriptions - title properties: id: type: string description: The id of the customer. example: '88086' customerRef: type: string description: 'Customer reference ' example: string marketingFlags: type: array description: Marketing flags for customer. items: $ref: '#/components/schemas/MarketingSettingDto' title: type: string description: Title of the customer. example: string firstName: type: string description: First name of the customer. example: Jane lastName: type: string description: Last name of the customer. example: Smith email: type: string description: Email of the customer. example: jane.smith@example.com phoneNumber: type: string description: Fixed line phone number of the customer. example: '030120765890' mobileNumber: type: string description: Mobile phone number of the customer. example: string locale: type: string description: Locale of the customer. example: de_DE links: type: array description: The links related to this entity. items: $ref: '#/components/schemas/LinkRelationDto' subscriptions: type: array description: The newsletter subscriptions, e.g. QUANDOO, MERCHANT. uniqueItems: true items: $ref: '#/components/schemas/MerchantSubscription' statistics: description: Statistics about the customer $ref: '#/components/schemas/CustomerStatisticsData' updatedAt: type: string format: date-time description: 'The date the review created on. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' CreatedCustomer: type: object required: - id properties: id: type: string description: The id of the customer for the calling agent. (Agent dependent field) example: '88086' CreatedReservationEnquiry: type: object required: - id properties: id: type: string description: The identifier of the reservation enquiry for the calling agent (Agent-dependent field) example: '88086' CreatedReservationEnquiryData: type: object required: - customer - links - reservationEnquiry properties: reservationEnquiry: description: The object holding the reservation enquiry data. $ref: '#/components/schemas/CreatedReservationEnquiry' customer: description: The object holding the customer data. $ref: '#/components/schemas/CreatedCustomer' links: type: array description: Related links to follow items: $ref: '#/components/schemas/LinkRelationDto' AgentTracking: type: object required: - id properties: id: type: integer format: int32 description: An agent id. Required. example: 1 MerchantCustomer: type: object required: - country - locale - phoneNumber properties: id: type: string description: Identifier of the customer for the calling agent. (Agent dependent field) example: '88086' firstName: type: string description: The first name of the customer. Optional. example: Jane lastName: type: string description: The last name of the customer. example: Smith emailAddress: type: string description: The email address of the customer. example: jane.smith@example.com phoneNumber: type: string description: The phone number of the customer. The expected format is E164 e.g. +4930120765890 example: '030120765890' locale: type: string description: The locale of the customer. E.g. de_DE example: de_DE country: type: string description: The 2 letter ISO country of the customer, e.g. DE example: DE subscriptions: type: array description: The requested subscriptions, e.g. QUANDOO, MERCHANT items: $ref: '#/components/schemas/MerchantSubscription' MerchantReservationEnquiry: type: object required: - capacity - endDateTime - id - merchantId - message - startDateTime properties: id: type: string description: The unique identifier of the reservation enquiry for the calling agent (Agent dependent field) or NULL if the agent identifier should be created. Optional. example: '88086' merchantId: type: integer format: int32 description: The ID of the merchant at which this reservation will be made. example: 88086 capacity: type: integer format: int32 description: The capacity (people count) of the reservation enquiry. minimum: 1 example: 4 startDateTime: type: string description: 'The start date and time of the potential reservation. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' endDateTime: type: string description: 'The end date and time of the potential reservation. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' message: type: string description: A message from the customer. minLength: 0 maxLength: 5000 example: Window table preferred if available. MerchantReservationEnquiryData: type: object required: - customer - reservationEnquiry - tracking properties: reservationEnquiry: description: The reservation enquiry data. $ref: '#/components/schemas/MerchantReservationEnquiry' customer: description: The customer data. $ref: '#/components/schemas/MerchantCustomer' tracking: description: The tracking data. $ref: '#/components/schemas/Tracking' RestCookie: type: object properties: tracking: type: string description: A tracking string to be stored with the reservation. Optional. example: string referenceId: type: string description: A reference id to be stored with the reservation. Optional. example: '88086' Tracking: type: object required: - agent properties: agent: description: The id of the agent creating this request and partner references if any. Required. $ref: '#/components/schemas/AgentTracking' cookie: description: Cookie information to be stored with this reservation. Optional. $ref: '#/components/schemas/RestCookie' GetReservationEnquiryData: type: object required: - customerId properties: id: type: string description: The agent-dependent unique id of the reservation enquiry example: '88086' merchantId: type: integer format: int32 description: The ID of the merchant at which this reservation enquiry was made example: 88086 customerId: type: string description: The ID of the customer to which this reservation enquiry belongs example: '88086' capacity: type: integer format: int32 description: The capacity (people count) of the reservation enquiry example: 4 startDateTime: type: string description: 'The start date time of the reservation enquiry. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' endDateTime: type: string description: 'The end date time of the reservation enquiry. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' status: type: string description: 'The status of the reservation enquiry which can be one of: NEW, IN_PROGRESS, ACCEPTED or REJECTED' example: CONFIRMED ReservationEnquiryMessageData: type: object properties: senderType: type: string enum: - MERCHANT - CUSTOMER example: MERCHANT message: type: string example: Window table preferred if available. creationDate: type: string format: date-time description: 'The date the review created on. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' ReservationEnquiryMessageList: type: object properties: messages: type: array items: $ref: '#/components/schemas/ReservationEnquiryMessageData' UpdateReservationEnquiryData: type: object properties: status: type: string description: The status of the reservation enquiry example: CONFIRMED MerchantAvailabilityDto: type: object required: - occupancy properties: dateTime: type: string format: date-time description: 'The date the review created on. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' occupancy: type: integer format: int32 description: The occupancy of this availability option across the restaurant. This is an integer number between 0 and 100. readOnly: true example: 1 areaIds: type: array description: The ids of the areas this availability option can be reserved for. items: type: integer format: int32 vaultSettingsId: type: string format: uuid description: The id of the Vault Settings applicable on this availability option. example: '88086' MerchantAvailabilityDtoList: type: object required: - links properties: timeSlots: type: array description: The availability time slots to reserve. readOnly: true items: $ref: '#/components/schemas/MerchantAvailabilityDto' vaultSettings: type: array description: The credit card vault settings. readOnly: true items: $ref: '#/components/schemas/MerchantVaultSettingsDto' links: type: array description: The links related to this entity. readOnly: true items: $ref: '#/components/schemas/LinkRelationDto' MerchantVaultSettingsDto: type: object required: - fee - feeType - id properties: id: type: string format: uuid description: The id of the vault settings. readOnly: true example: '88086' fee: type: number description: The fee customer should pay in the case of cancellation. readOnly: true example: 1.0 feeType: type: string description: The type of the fee to pay. readOnly: true example: string feePercentageForTime: type: object description: Fee percentage depending of the time of cancellation. additionalProperties: type: integer format: int32 MerchantAvailabilityDaysDto: type: object properties: days: type: array description: The days that are available for a reservation items: type: string format: date description: The date when the review was written. links: type: array description: The links for possible operations related to this entity items: $ref: '#/components/schemas/LinkRelationDto' MerchantReservationDataList: type: object properties: reservations: type: array items: $ref: '#/components/schemas/ReservationData' offset: type: integer format: int32 example: 1 limit: type: integer format: int32 example: 1 ReservationTagDto: type: object properties: id: type: integer format: int32 example: 1 name: type: string example: Sample Restaurant merchantId: type: integer format: int32 example: 88086 ReservationTagsDto: type: object properties: reservationTags: type: array items: $ref: '#/components/schemas/ReservationTagDto' CustomerDto: type: object properties: firstName: type: string example: Jane lastName: type: string example: Smith profileImage: $ref: '#/components/schemas/ImageDto' ReviewDto: type: object required: - customer - date - rating properties: customer: description: The customer who wrote the review. $ref: '#/components/schemas/CustomerDto' rating: type: integer format: int32 description: 'Possible values: 1 to 6.' example: 1 description: type: string description: The description of the review. example: Window table preferred if available. locale: type: string example: de_DE date: type: string format: date description: The date when the review was written. example: '2026-07-15' ReviewDtoList: type: object required: - reviews properties: reviews: type: array description: Merchant customer review collection. items: $ref: '#/components/schemas/ReviewDto' size: type: integer format: int32 example: 1 offset: type: integer format: int32 example: 1 limit: type: integer format: int32 example: 1 AreaDto: type: object properties: id: type: integer format: int32 description: Id of the area example: 1 name: type: string description: Name of the area example: Sample Restaurant priority: type: integer format: int32 description: Priority set for this area example: 1 MerchantReservationSettingsDto: type: object properties: areaIds: type: array description: 'List of all the areas defined for the merchant. Each area will contain:' items: $ref: '#/components/schemas/AreaDto' capacities: type: array description: Number of guests allowed in a reservation items: type: integer format: int32 merchantNewsletterSelectionRequired: type: boolean description: If true, a separate checkbox is displayed in the checkout for newsletter received from the restaurant example: true areaSelectionRequired: type: boolean description: If true, we display available areas in a dropdown when a guest is making an online reservation example: true reservationEnquiryEnabled: type: boolean description: If true, the restaurants allows enquiries example: true minimumCapacityForEnquiries: type: integer format: int32 description: Minimum number of guests for an enquiry example: 4 onlineReservationInterval: type: integer format: int32 description: Time slots displayed for making a reservation example: 1 specialTerms: type: string description: If true, special terms and conditions of the restaurant need to be confirmed upon making an online reservation example: string links: type: array description: Related links that can be followed based on this response items: $ref: '#/components/schemas/LinkRelationDto' automaticConfirmation: type: boolean description: If true, the customer will receive an automatic email confirmation after he makes a reservation example: true ccvEnabled: type: boolean description: If true, credit card information is required when creating a reservation example: true CreatedReservation: type: object required: - id - quandooId properties: id: type: string description: The id of this reservation for the calling agent. (Agent dependent field) example: '88086' number: type: integer format: int32 description: The id of this reservation on quandoo system. example: 1 reservationNumber: type: string description: The long id of this reservation on quandoo system. example: string status: type: string description: The status of the reservation. example: CONFIRMED quandooId: type: string format: uuid description: The public id of this reservation on quandoo system. example: '88086' CreatedReservationData: type: object required: - customer - links - reservation properties: reservation: description: The object holding the reservation data. $ref: '#/components/schemas/CreatedReservation' customer: description: The object holding the customer data. $ref: '#/components/schemas/CreatedCustomer' links: type: array description: Related links to follow items: $ref: '#/components/schemas/LinkRelationDto' MerchantReservation: type: object required: - capacity - merchantId properties: id: type: string description: The identifier of the reservation for the calling agent (Agent-dependent field) example: '88086' merchantId: type: integer format: int32 description: The ID of the merchant at which this reservation will be made. example: 88086 capacity: type: integer format: int32 description: The capacity (people count) of the reservation. example: 4 areaId: type: integer format: int32 description: The id of the area this reservation should be in. Optional. example: 1 dateTime: type: string format: date-time description: 'The date the review created on. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' extraInfo: type: string description: Any extra information that the customer likes to provide. Optional. example: Window table preferred if available. promoCode: type: string description: A promotion code which should be used with this reservation. Optional. example: string creditCardVaultSettingsId: type: string format: uuid description: A credit card vault settings to be used by this reservation. Optional. example: '88086' recurringCardDetailId: type: string format: uuid description: A customer credit card reference to be used if credit card vault should be applied. Optional. example: '88086' reservationTags: type: array description: A list of reservation tag IDs. Optional. items: type: integer format: int32 MerchantReservationData: type: object required: - customer - reservation - tracking properties: reservation: description: The reservation data. $ref: '#/components/schemas/MerchantReservation' customer: description: The customer data. $ref: '#/components/schemas/MerchantCustomer' tracking: description: The tracking data. $ref: '#/components/schemas/Tracking' ReservationDetails: type: object required: - capacity - status properties: status: type: string description: The status of the reservation. example: CONFIRMED capacity: type: integer format: int32 description: The capacity (people count) of the reservation. example: 4 areaId: type: integer format: int32 description: The id of the area this reservation should be in. Optional. example: 1 dateTime: type: string format: date-time description: 'The date the review created on. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' reservationTags: type: array description: Reservation tag IDs. items: type: integer format: int32 extraInfo: type: string description: Additional text information about the reservation. Pass empty string to remove it. example: Window table preferred if available. UpdateReservationData: type: object required: - reservation properties: reservation: description: The reservation status of the reservation. $ref: '#/components/schemas/ReservationDetails' CustomerReviewData: type: object properties: identifier: type: string description: Identifier of the customer associated to this review. Only in detailed view. example: string firstName: type: string description: Customer first name associated to this review. Only in detailed view. example: Jane lastName: type: string description: First letter of customer last name associated to this review. Only in detailed view. example: Smith profileImage: type: string description: Customer profile image URL associated to this review. Only in detailed view. example: string GetReviewDto: type: object required: - rating - reviewId properties: reviewId: type: string format: uuid description: UUID identifying the review. example: '88086' merchantId: type: integer format: int32 description: Merchant Id associated to this review. Only in detailed view. example: 88086 customer: description: Data about the customer that made this review. Only in detailed view. $ref: '#/components/schemas/CustomerReviewData' status: type: string description: Current review status. Possible values are 'AVAILABLE_TO_REVIEW','CREATED', 'DENIED', 'PUBLISHED'. enum: - AVAILABLE_TO_REVIEW - CREATED - DENIED - PUBLISHED example: AVAILABLE_TO_REVIEW locale: type: string description: Locale of the created review. Only in detailed view. example: de_DE rating: type: integer format: int32 description: 'Rating associated to this review. Possible values: 1 to 6.' example: 1 description: type: string description: Description associated to this review. example: Window table preferred if available. reservationId: type: string description: The reservation identifier this review is created for. example: '88086' createdAt: type: string format: date-time description: 'The date the review created on. Format: yyyy-MM-ddTHH:mm:ssZ' example: '2026-07-15T19:30:00' GetReviewsDto: type: object properties: reviews: type: array description: List of returned reviews. items: $ref: '#/components/schemas/GetReviewDto' size: type: integer format: int32 description: Number of reviews returned in this object. example: 1 offset: type: integer format: int32 description: Offset to apply on the next pagination request. Can be higher than the number of available reviews. example: 1 limit: type: integer format: int32 description: Expected number of reviews that could be retrieved in the next pagination request. Can actually be less than the number returned. Its value is 0 when it is sure there are no more reviews available for pagination using the 'offset' as starting point. example: 1 ChangedReviewDto: type: object required: - links - reviewId properties: reviewId: type: string format: uuid description: Id of to the review. example: '88086' status: type: string description: The status of the change. enum: - AVAILABLE_TO_REVIEW - CREATED - DENIED - PUBLISHED example: AVAILABLE_TO_REVIEW links: type: array description: The links related to this entity. items: $ref: '#/components/schemas/LinkRelationDto' CreateReviewDto: type: object required: - rating - reservationId properties: reservationId: type: string description: The reservation identifier this review is being created for.Either public reservation identifier or agent specific identifier could be passed. example: '88086' rating: type: integer format: int32 description: 'Possible values: 1 to 6.' example: 1 description: type: string description: The description of the review. example: Window table preferred if available. UpdateReviewDto: type: object required: - reviewId properties: reviewId: type: string format: uuid description: UUID identifying the review. example: '88086' rating: type: integer format: int32 description: 'Rating associated to this review. Possible values: 1 to 6.' example: 1 description: type: string description: Description associated to this review. example: Window table preferred if available.