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¢erPoint=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.