{"info":{"_postman_id":"c52e3a3c-77cb-404d-a6c0-9cae60079531","name":"OpenTable API Documentation","description":"<html><head></head><body><p>OpenTable's API ecosystem is designed to empower restaurants and their partners to extend and enhance the core functionality of OpenTable. By providing robust tools for booking management, real-time guest and reservation data, our APIs are at the heart of delivering exceptional dining experiences. We offer a suite of capabilities that allow developers to innovate, customize, and create solutions that complement our platform. Whether you’re looking to streamline operations or enhance customer engagement, OpenTable APIs are here to help.</p>\n<p>We value our partnerships with developers and restaurant operators and are committed to fostering successful collaborations. For partnership inquiries, please fill out our application form.</p>\n<p>For information about API availability, outages, maintenance, and other service-related incidents, please subscribe to updates at <strong>status.opentable.com</strong>. This is the best way to stay informed about operational events that may impact our APIs.</p>\n<h1 id=\"platform-policy\">Platform Policy</h1>\n<p><strong>Permitted Use of APIs</strong></p>\n<p>You may use the OpenTable application programming interface (“API”) and any data provided through an API only in accordance with your applicable agreement with OpenTable (“Terms”), this Platform Policy and OpenTable’s applicable API documentation and policies. In this Platform Policy, “you” means the entity which agreed to the Terms with OpenTable. In event of any conflict between this Platform Policy and the Terms, this Platform Policy will control as relates to the API. Otherwise, the Terms continue to apply to the API and any activity under this Platform Policy.</p>\n<p>You will only access (or attempt to access) an API by the means described in the documentation for that API. If OpenTable assigns you credentials (e.g. client IDs), you must use them only with the applicable APIs. You may not share your credentials with third-parties or service providers without OpenTable’s consent (and if such parties require access you must request individual credentials for them). We may also require rotation of credentials, and it is the partners obligation to update accordingly. Your API usage rights are limited, non-exclusive, non-sublicensable and non-transferable.</p>\n<p>OpenTable may set and enforce limits on your use of the APIs (e.g. limiting the number of API requests that you may make or the number of users you may serve), in its sole discretion. You agree to, and will not attempt to circumvent, such limitations documented with each API. If you would like to use any API beyond these limits, you must obtain OpenTable’s express written consent (and OpenTable may decline such request or condition acceptance on your agreement to additional terms and/or charges for that use). In any event, Client may not use the OpenTable APIs in any way which might, in OpenTable’s sole discretion, overburden, impair or disrupt the OpenTable APIs or OpenTable Network.</p>\n<p>You agree not to (and not to authorize any third party): 1. Use the APIs other than as permitted; 2. Modify or create any derivative works of the APIs; 3. Distribute, sell or sublicense the APIs or use them on behalf of third parties (unless expressly permitted in the Terms); 4. Introduce any viruses, worms, Trojan horses, or other harmful code to OpenTable via the APIs; 5. Attempt to interfere with the proper working of the APIs or OpenTable products, services or systems or compromise their integrity or security; 6. Scrape any OpenTable website or system for data, or otherwise seek to access data or OpenTable materials through means not approved by OpenTable in writing; or 7. Use the APIs in a manner or for a purpose that violates laws or third-party rights; 8. Access the APIs for competitive analysis or disseminate performance information (including uptime, response time and/or benchmarks) relating to the APIs or OpenTable products, services or systems.</p>\n<p><strong>Data and Security</strong></p>\n<p>You may use any data made available through the APIs solely as permitted in the Terms or otherwise expressly permitted in writing by OpenTable. OpenTable does not grant you any other rights to data.</p>\n<p>Without limiting any security requirements in the Terms, you agree to provide the level of protection to any such data as required under applicable law and to employ, at your own cost, appropriate physical, technical and organizational security measures designed to protect such data from unauthorized access, destruction, use, modification or disclosure.</p>\n<p><strong>Changes, Suspension and Termination</strong></p>\n<p>From time to time in its discretion, with or without notice, OpenTable may change the APIs (including any API documentation) or related OpenTable products or services, discontinue any or all data available through the APIs or to specific recipients, or place limits on access to the APIs. Future versions of the APIs may not be compatible with systems used with previous versions. OpenTable typically makes these changes as part of its overall API program and is unable to provide individual notices of the changes.</p>\n<p>Please design the APIs backwards compatible. OpenTable periodically updates its APIs to add or remove attributes to the payloads.</p>\n<p>Except as set forth in the Terms, OpenTable may suspend or terminate your access to the APIs (in whole or in part) in its discretion, for any or no reason and with or without notice.</p>\n<p>OpenTable will have no liability resulting from taking any actions described in this Section.</p>\n<p><strong>No Support or Maintenance</strong></p>\n<p>You understand that you are responsible for all development and costs associated with integrating with the APIs.</p>\n<p>OpenTable has no obligation to provide any maintenance or support for the APIs or to fix any errors or defects. If OpenTable in its discretion provides any updates, modifications, enhancements, and other new releases to the APIs, such materials will be deemed included in the “APIs” under this Platform Policy unless OpenTable specifies otherwise.</p>\n<p><strong>OpenTable Rights</strong></p>\n<p>OpenTable owns all rights, title and interest (including intellectual property rights) in and to the API. OpenTable reserves all rights not expressly granted.</p>\n<p><strong>Disclaimer</strong></p>\n<p>EXCEPT AS EXPRESSLY SET OUT IN THE TERMS, OPENTABLE MAKES NO SPECIFIC PROMISES ABOUT THE APIS. FOR EXAMPLE, OPENTABLE DOES NOT MAKE ANY COMMITMENTS ABOUT THE DATA OR CONTENT ACCESSED THROUGH THE APIS, THE SPECIFIC FUNCTIONS OF THE APIS, OR THEIR RELIABILITY, AVAILABILITY, SECURITY OR ABILITY TO MEET YOUR NEEDS. OPENTABLE PROVIDES THE APIS “AS IS” AND “WITH ALL FAULTS”. EXCEPT AS EXPRESSLY PROVIDED FOR IN THE TERMS, TO THE EXTENT PERMITTED BY LAW, OPENTABLE AND ITS THIRD PARTY LICENSORS DISCLAIMS ALL WARRANTIES, GUARANTEES, CONDITIONS, REPRESENTATIONS, AND UNDERTAKINGS, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR ANY PURPOSE.</p>\n<p>Last Updated: Dec 20 2024</p>\n<h2 id=\"terms-of-use-and-privacy-policy\">Terms of Use and Privacy Policy</h2>\n<p><a href=\"https://www.opentable.com/legal/terms-and-conditions\">Terms of Use</a></p>\n<p><a href=\"https://www.opentable.com/legal/privacy-policy\">Privacy Policy</a></p>\n<h2 id=\"brand-assets\">Brand Assets</h2>\n<p>Affiliates must comply with the OpenTable brand guidelines when linking to the OpenTable site.</p>\n<p>OpenTable assets including the OpenTable logo, Reserve Buttons, and Brand Story can be found here: <a href=\"https://www.opentable.design/\">https://www.opentable.design/</a></p>\n<h1 id=\"platform-basics\">Platform Basics</h1>\n<p>OpenTable uses OAuth 2.0 as the primary authorization mechanism. This means that an access token must be obtained and submitted with all requests. See <a href=\"https://dev.opentable.com/partner-portal/documentation#authorization\">Authorization</a> section for more details. OpenTable’s Partner APIs can only be accessed via <strong>HTTPS</strong>. This applies to all environments.</p>\n<h2 id=\"status-page\">Status Page</h2>\n<p>We require all partners to subscribe to the OpenTable API Status Dashboard to be notified of upcoming maintenance or outages.</p>\n<p><a href=\"https://status-api.opentable.com/\">https://status-api.opentable.com/</a><br><a href=\"https://status-api.opentable.com/subscribe\">https://status-api.opentable.com/subscribe</a></p>\n<h3 id=\"content-negotiation\">Content Negotiation</h3>\n<p>Data is sent and received in JSON format unless otherwise specified in this documentation. Clients should specify <strong>application/json</strong> in the <strong>Accept</strong> header for all requests to the server.</p>\n<h3 id=\"compression\">Compression</h3>\n<p>OpenTable’s Partner Network APIs support LZ4 encoding. Client applications should specify <strong>lz4</strong> via the <strong>Accept-Encoding</strong> HTTP header.</p>\n<p>The partner system should be able to send and respond with lz4 compressed content to improve performance and should be implemented by your partner server implementation and client implementation.</p>\n<h3 id=\"unique-request-ids\">Unique Request Ids</h3>\n<p>All POST, PUT, and PATCH HTTP requests should contain a unique X-Request-Id header which is used to ensure idempotent message processing in case of a retry.</p>\n<h2 id=\"ssl-tls-support\">SSL-TLS Support</h2>\n<p>OpenTable uses Akamai as a CDN partner. Akamai’s SSL-TLS profile supports strong ciphers only. We will be keeping our ciphers current and you may be asked to update these as required.</p>\n<p>OpenTable <strong>supports TLS 1.3</strong> for all API communication. Ensure your systems are upgraded to maintain secure connectivity.</p>\n<h1 id=\"getting-started\"><strong>Getting Started</strong></h1>\n<p>To obtain access to OpenTable APIs, it is requisite to register and secure approval as an integration partner. This can be requested via <a href=\"https://www.opentable.com/restaurant-solutions/api-partners/become-a-partner/.\">https://www.opentable.com/restaurant-solutions/api-partners/become-a-partner/.</a></p>\n<p>Upon submission, your application will undergo a comprehensive review by our partnerships team, and you will be notified upon the completion of this review process. Once approved, you will be granted access to a Sandbox environment to try out the integration.</p>\n<h1 id=\"environments\">Environments</h1>\n<p>OpenTable has two primary integration environments; Sandbox (pre-production) and Production. Partners should test their integrations in Sandbox (pre-production) where the changes are transient and do not affect live production customers or restaurants. Once partners have completed their integrations they may deploy them into the production environment.</p>\n<h2 id=\"accessing-apis-in-sandbox-pre-production-environment\"><strong>Accessing APIs in Sandbox (Pre-Production) Environment</strong></h2>\n<p>All approved API partners will be granted access to the OpenTable Sandbox environment, which can be utilized for the discovery and testing of API integrations. The following APIs are currently available in the Sandbox Environment for approved partners:</p>\n<ul>\n<li><p><a href=\"https://docs.opentable.com/#9205636d-5325-4b1c-adfa-5a7600de6fa8\">Authorization</a></p>\n</li>\n<li><p><a href=\"https://docs.opentable.com/#c43e6c99-e40c-415a-b38b-3527753b7ac4\">Directory API</a></p>\n</li>\n<li><p><a href=\"https://docs.opentable.com/#5d2e3a06-fca9-4d01-a17b-e0aa57e4bdf5\">Sync API (All Tiers)</a></p>\n</li>\n</ul>\n<p>Further details regarding the Restaurant IDs pertinent to accessing these APIs within the Sandbox Environment will be provided in the partner welcome email.</p>\n<p>The documentation also contains curated postman collections to implement common business use cases. Developers are advised to leverage the same in order truly explore the capabilities of OpenTable APIs</p>\n<p><strong>Note:</strong> The sandbox environment is specifically designed to facilitate development and testing experiences with OpenTable APIs. It is imperative that these APIs are not employed for any live integrations, as the responses are curated for a sandbox experience and do not impact actual restaurant operations or diner experiences.</p>\n<h2 id=\"accessing-apis-in-production-environment\">Accessing APIs in Production Environment</h2>\n<p>Access to our APIs is subject to approval and requires the execution of a formal agreement outlining the terms of use. Before gaining access, all potential partners must undergo a review process to ensure compatibility with our platform and compliance with our business policies.</p>\n<p>Not all APIs are available for every type of partnership. Eligibility for specific APIs is determined based on the nature of the partnership, use case, and technical feasibility. Additionally, the cost of access may vary depending on the API or the selected API tier. Pricing and availability will be communicated during the approval and contracting process.</p>\n<p>This page is for informational purposes only and does not constitute an offer of access to our APIs. Access to production data will only be granted after the agreement is signed and all necessary approvals are obtained.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Platform Policy","slug":"platform-policy"},{"content":"Platform Basics","slug":"platform-basics"},{"content":"Getting Started","slug":"getting-started"},{"content":"Environments","slug":"environments"}],"owner":"38767429","collectionId":"c52e3a3c-77cb-404d-a6c0-9cae60079531","publishedId":"2sAXxTcWRy","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"DC143C"},"publishDate":"2025-01-02T14:44:11.000Z"},"item":[{"name":"Integrations Marketplace","item":[{"name":"Partner Onboarding requirements","item":[],"id":"9bbcb3b5-038e-4fc0-9664-df57598af64e","description":"<h3 id=\"partner-marketing-requirements\"><strong>Partner Marketing Requirements</strong></h3>\n<p>To facilitate the tile creation, partners are required to send us content, logos, and redirect links.</p>\n<h3 id=\"marketing-content\"><strong>Marketing Content</strong></h3>\n<p>For the Value Proposition page, OpenTable requires comprehensive content that highlights the value of the partner's product and its integration with OpenTable.</p>\n<p>Here's what OpenTable needs from you:</p>\n<ul>\n<li><p><strong>Logos:</strong> They should be without a background or border. The allowed format is SVG.</p>\n<ul>\n<li><p>64×64 pixels - circular.</p>\n</li>\n<li><p>256x256 pixels - circular.</p>\n</li>\n<li><p>200×48 pixels - rectangular.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Login or sign up Screenshot:</strong> Should have dimensions of 400x300 pixels. The allowed formats are PNG and SVG. (only applicable for OAuth onboarding).</p>\n</li>\n<li><p><strong>Product Image:</strong> Should have dimensions of 400x400 pixels. The allowed formats are PNG and SVG.</p>\n</li>\n<li><p><strong>Hero Title</strong></p>\n</li>\n<li><p><strong>Hero description</strong></p>\n</li>\n<li><p><strong>Secondary Title</strong></p>\n</li>\n<li><p><strong>Secondary Description:</strong> Maximum of four statements.</p>\n</li>\n<li><p><strong>Signup URL</strong></p>\n<ul>\n<li><p>Label: e.g Not a member?</p>\n</li>\n<li><p>URL Label: e.g check here</p>\n</li>\n<li><p>URL</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Step Details</strong>: Maximum of six steps outlining the onboarding procress.</p>\n</li>\n</ul>\n<p><strong>Connected Page Details</strong></p>\n<ul>\n<li><p><strong>Description</strong></p>\n</li>\n<li><p><strong>Partner Support Email</strong></p>\n</li>\n<li><p><strong>Learn more / Partner website</strong></p>\n</li>\n</ul>\n<p>Please note, OpenTable may make modifications to the content to align with brand standards and character counts.</p>\n","_postman_id":"9bbcb3b5-038e-4fc0-9664-df57598af64e"},{"name":"Standard Onboarding - OAuth Flow","item":[],"id":"8959c9cb-560d-4058-8686-4a1c47390740","description":"<h1 id=\"oauth-flow\"><strong>OAuth Flow</strong></h1>\n<p>This is our preferred and recommended onboarding flow.</p>\n<p>In this flow, the same information is passed in both the JSON request body and the query parameters.</p>\n<p><strong>Redirect URI</strong></p>\n<ul>\n<li><p>Pre production uri: <a href=\"https://gc-pp-rs.otenv.com/redirect\"><code>https://gc-pp-rs.otenv.com/redirect</code></a></p>\n</li>\n<li><p>Production uri: <a href=\"https://guestcenter.opentable.com/redirect\"><code>https://guestcenter.opentable.com/redirect</code></a></p>\n</li>\n</ul>\n<h2 id=\"authentication--login-url\"><strong>Authentication / Login URL</strong></h2>\n<p>To initiate the login flow, we redirect the user to your <strong>Authorization URL</strong>.</p>\n<p>Once the users authenticates, we expect the user to be redirected back to OT4R and the code as this is used to the get the Access Token and onboard the RID</p>\n<p><strong>Default Request</strong></p>\n<p>By default, the redirect follows this standard structure:</p>\n<ul>\n<li><code>{authUrl}?redirect_uri={redirectUri}&amp;client_id={client_id}&amp;state={state}</code></li>\n</ul>\n<p><strong>State:</strong> this includes the following information</p>\n<ul>\n<li><p>RID (restaurant id)</p>\n</li>\n<li><p>origin (you, the partner)</p>\n</li>\n<li><p>destination: ixmarketplace</p>\n</li>\n<li><p>isStandardPartner: true or false</p>\n</li>\n<li><p>partnerID</p>\n</li>\n</ul>\n<h2 id=\"apis-requiered-from-partner\">APIs requiered from partner</h2>\n<h3 id=\"access-token-api\">Access Token API</h3>\n<p>This will be used to connect restaurants from the integration. Not to be confused with Onbarding API.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST '{{OAUTH_HOST}}/{{TOKEN_PATH}}?code={{AUTH_CODE}}&amp;grant_type=authorization_code&amp;client_id={{CLIENT_ID}}&amp;redirect_uri={{REDIRECT_URI}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic {{BASE64_CREDENTIALS}}' \\\n--data-raw '{\n  \"code\": \"{{AUTH_CODE}}\",\n  \"grant_type\": \"authorization_code\",\n  \"client_id\": \"{{CLIENT_ID}}\",\n  \"client_secret\": \"{{CLIENT_SECRET}}\",\n  \"redirect_uri\": \"{{REDIRECT_URI}}\"\n}'\n\n</code></pre>\n<p><strong>Expected Response:</strong></p>\n<ul>\n<li><p><strong>Location:</strong> this can be anything, as long as it's unique per RID since OpenTable uses it for internal mapping.</p>\n<ul>\n<li><p>location_id</p>\n</li>\n<li><p>location_name</p>\n</li>\n</ul>\n</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"access_token\": \"&lt;access-token&gt;\",\n    \"refresh_token\": \"&lt;refresh-token&gt;\",\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 7200,\n    \"location\": {\n        \"location_id\": \"abc1234\",\n        \"location_name\": \"Standard Test Location\"\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"revoke-token-api\">Revoke Token API</h2>\n<p>This will be used to disconnect restaurants from the integration. Not to be confused with Offboarding API.</p>\n<p>Note: You cannot initiate the deactivation from OpenTable on your end. This endpoint is triggered only when RID decides to disconnect the integration. To avoid charges, please reach out to the RID so they can disconnect it.</p>\n<p><strong>API Endpoint:</strong></p>\n<p><strong>Parameters:</strong></p>\n<ul>\n<li><p><strong>client_id</strong>: Must match the client_id provided in step 1.</p>\n</li>\n<li><p><strong>client_secret:</strong> The secret key for your application.</p>\n</li>\n<li><p><strong>token:</strong> The token to be revoked.</p>\n</li>\n</ul>\n<p><strong>Response:</strong></p>\n<p>The response to this request shall be 200 OK for success.</p>\n<h3 id=\"refresh-token-api-optional\">Refresh Token API (Optional)</h3>\n<p>Only needed if your token expires.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{OAUTH_HOST}}/{{REFRESH_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"client_id\": \"{{CLIENT_ID}}\",\n  \"client_secret\": \"{{CLIENT_SECRET}}\",\n  \"refresh_token\": \"{{REFRESH_TOKEN}}\",\n  \"grant_type\": \"refresh_token\"\n}'\n\n</code></pre>\n<p><strong>Expected Response</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"refresh_token\": \"new_refresh_token_xyz...\"\n}\n\n</code></pre>\n<h3 id=\"onboarding-api-optional\">Onboarding API (Optional)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{API_HOST}}/{{ONBOARD_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \\\n--data-raw '{\n  \"rid\": \"{{RID}}\",\n  \"partner_identifier\": \"{{LOCAION_ID}}\"\n}'\n\n</code></pre>\n<p><strong>Expected Response</strong></p>\n<p>We expect a successful response status 200 from the partner when the activation is done successfully. However message as the below sample will be useful for debugging.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Location linked successfully\"\n}\n\n</code></pre>\n<h3 id=\"offboarding-api-optional\">Offboarding API (Optional)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{API_HOST}}/{{OFFBOARD_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \\\n--data-raw '{\n  \"rid\": \"{{RID}}\",\n  \"partner_identifier\": \"{{LOCATION_ID}}\"\n}'\n\n</code></pre>\n<p><strong>Expected Response</strong></p>\n<p>We expect a successful response status 200 from the partner when the deactivation is done successfully. However message as the below sample will be useful for debugging.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Location unlinked successfully\"\n}\n\n</code></pre>\n<h2 id=\"summary\">Summary</h2>\n<p>For pre production and production, this is what OpenTable needs from you:</p>\n<ul>\n<li><p>Client ID*</p>\n</li>\n<li><p>Client Secret*</p>\n</li>\n<li><p>Access token API*</p>\n</li>\n<li><p>Revoke token API*: Used to disconnect the restaurant from the integration</p>\n</li>\n<li><p>API host*: API domain</p>\n</li>\n<li><p>OAuth host*: Can be the same as or different from, the API domain.</p>\n</li>\n<li><p>Partner's login URL*</p>\n</li>\n<li><p>Refresh token API (Optional): If the access token doesn't expire, this is not needed.</p>\n</li>\n<li><p>Onboard API (Optional): Used to send confirmation when RID is onboarded.</p>\n</li>\n<li><p>Offboard API (Optional): Used to send confirmation when RID is offboarded.</p>\n</li>\n</ul>\n<img src=\"https://content.pstmn.io/ec340ec1-0b73-431c-8da8-e399abd4f2d8/T0F1dGggLSBQYXJ0bmVyIE9uYm9hcmRpbmcucG5n\" width=\"1600\" height=\"640\" />","_postman_id":"8959c9cb-560d-4058-8686-4a1c47390740"},{"name":"Standard Onboarding - Unique Identifier","item":[],"id":"15f4c420-285b-42ec-bb2b-eab6fef63441","description":"<h1 id=\"unique-identifer-flow\">Unique Identifer flow</h1>\n<p>If OAuth is not an option, you may choose to use a Partner Unique Identifier (e.g. unique account number, URL, string) to facilitate the onboarding process immediately.</p>\n<p>In this flow, you, the partner shows the user where to get the Unique Identifer. Then we, OT sends you the unique identifier details through the Validation API as the <code>partner_identifier</code> value.</p>\n<h2 id=\"validation-api\">Validation API</h2>\n<p>OpenTable validates that the ID is not currently provisioned elsewhere in the OpenTable ecosystem.</p>\n<h3 id=\"supported-authentication-headers\">Supported authentication headers</h3>\n<ul>\n<li><p>X-API-Key</p>\n</li>\n<li><p>OAuth</p>\n</li>\n</ul>\n<h4 id=\"x-api-key\">X-API-Key</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request GET '{{APIHost}}/{{PARTNER_VALIDATION_URL}}?partner_identifier={{UNIQUE_IDENTIFIER}}' \\\n--header 'Content-Type: application/json' \\\n--header 'x-api-key: {{YOUR_API_SECRET_VALUE}}'\n\n</code></pre>\n<h3 id=\"oauth\">OAuth</h3>\n<p>To set this up, we need:</p>\n<ul>\n<li><p>Client ID</p>\n</li>\n<li><p>Client Secret</p>\n</li>\n<li><p>API host (API domain)</p>\n</li>\n<li><p>OAuth host (Can be the same as or different from, the API domain.)</p>\n</li>\n<li><p>Token path</p>\n</li>\n</ul>\n<p>Step 1</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST '{{OAUTH_HOST}}/{{TOKEN_PATH}}?' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic {{base64(ot_client_id:ot_client_secret)}}'\n\n</code></pre>\n<p>Step 2</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl curl --location --request GET '{{APIHost}}/{{PARTNER_VALIDATION_URL}}?partner_identifier={{UNIQUE_IDENTIFIER}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic {{TOKEN_FROM_STEP_1}}'\n\n</code></pre>\n<p><strong>200 - Expected reponses from the Validation API and all the supported authentication headers</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"name\": \"Restaurant Name\",\n    \"partner_identifier\": \"1234-5678-9009-1234567890\",\n    \"address\": {\n        \"street1\": \"123 Main St.\",\n        \"street2\": \"Suite 100\",\n        \"city\": \"Any Town\",\n        \"state\": \"CA\",\n        \"country\": \"US\",\n        \"zip\": \"55512\"\n    }\n}\n\n</code></pre>\n<p><strong>Errors - Expected responses</strong></p>\n<ul>\n<li><p><strong>404:</strong> “This identifier is not valid. Please try a different identifier.”</p>\n</li>\n<li><p><strong>409:</strong> “The identifier you entered is already active within OpenTable. Please enter a different identifier.”</p>\n</li>\n<li><p><strong>503:</strong> “We were not able to verify this identifier. Please try again.”</p>\n</li>\n</ul>\n<h2 id=\"onboarding-api\">Onboarding API</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{API_HOST}}/{{ONBOARD_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--header 'x-api-key or oauth or basic or bearer' \\\n--data-raw '{\n  \"rid\": \"{{RID}}\",\n  \"partner_identifier\": \"{{UNIQUE_IDENTIFIER}}\"\n}'\n\n</code></pre>\n<p><strong>Expected response</strong></p>\n<p>We expect a successful response status 200 from the partner when the activation is done successfully. However message as the below sample will be useful for debugging.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Location linked successfully\"\n}\n\n</code></pre>\n<h2 id=\"offboarding-api\">Offboarding API</h2>\n<p>Note: You cannot initiate the offboarding from OpenTable on your end. This endpoint is triggered only when RID decides to disconnect the integration. To avoid charges, please reach out to the RID so they can disconnect it.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{API_HOST}}/{{OFFBOARD_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--header 'x-api-key or oauth or basic or bearer' \\\n--data-raw '{\n  \"rid\": \"{{RID}}\",\n  \"partner_identifier\": \"{{UNIQUE_IDENTIFIER}}\"\n}'\n\n</code></pre>\n<p><strong>Expected response</strong></p>\n<p>We expect a successful response status 200 from the partner when the deactivation is done successfully. However message as the below sample will be useful for debugging.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Location linked successfully\"\n}\n\n</code></pre>\n","_postman_id":"15f4c420-285b-42ec-bb2b-eab6fef63441"},{"name":"POS Onboarding - OAuth Flow","item":[],"id":"0b1bd6e8-4632-4b67-aa22-7acc83fe3605","description":"<h1 id=\"oauth-flow\"><strong>OAuth Flow</strong></h1>\n<p>This is our preferred and recommended onboarding flow.</p>\n<p><strong>Redirect URI</strong></p>\n<ul>\n<li><p>Pre-Production: <code>https://gc-pp-rs.otenv.com/pos/restaurants/onboard/oauth/callbacks</code></p>\n</li>\n<li><p>Production: <code>https://guestcenter.opentable.com/pos/restaurants/onboard/oauth/callbacks</code></p>\n</li>\n</ul>\n<h2 id=\"authentication--login-url\">Authentication / Login URL</h2>\n<p>To initiate the login flow, we redirect the user to your <strong>Authorization URL</strong>. This path carries the session state and any necessary OAuth 2.0 parameters.</p>\n<p>Once the users authenticates, we expect the user to be redirected back to OT4R and the code as this is used to the get the Access Token.</p>\n<p><strong>Default Request</strong></p>\n<p>By default, the redirect follows this standard structure:</p>\n<p><code>{authUrl}?redirect_uri={redirectUri}&amp;state={encodedOTP}</code></p>\n<p><strong>Additional Query Parameters</strong></p>\n<p>Our system is flexible. If your implementation requires additional OAuth 2.0 parameters (such as scope, client_id, or response_type). Please notify us which additional query parameters your application expects. We will ensure these are whitelisted and correctly passed through the handshake.</p>\n<p><code>{authUrl}?redirect_uri={redirectUri}&amp;state={encodedOTP}&amp;{additionalQueryParams}</code></p>\n<h3 id=\"parameter-reference\">Parameter Reference</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>redirect_uri</code></td>\n<td>String</td>\n<td>The callback URL where the user is sent after authentication.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>String</td>\n<td>Used to maintain state between the request and callback (e.g., {encodedOTP}).</td>\n</tr>\n<tr>\n<td><code>scope</code></td>\n<td>String</td>\n<td>(Optional) The specific permissions your application is requesting.</td>\n</tr>\n<tr>\n<td><code>client_id</code></td>\n<td>String</td>\n<td>(Optional) Your application's unique identifier.</td>\n</tr>\n<tr>\n<td><code>...</code></td>\n<td>any</td>\n<td>Any other valid OAuth parameters required by your stack.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"apis-requiered-from-partner\">APIs requiered from partner</h2>\n<h3 id=\"partner-access-token-api\">Partner Access Token API</h3>\n<p><strong>Without PKCE</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST '{{OAUTH_HOST}}/{{TOKEN_PATH}}?code={{AUTH_CODE}}&amp;grant_type=authorization_code&amp;client_id={{CLIENT_ID}}&amp;redirect_uri={{REDIRECT_URI}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic {{BASE64_CREDENTIALS}}' \\\n--data-raw '{\n  \"code\": \"{{AUTH_CODE}}\",\n  \"grant_type\": \"authorization_code\",\n  \"client_id\": \"{{CLIENT_ID}}\",\n  \"client_secret\": \"{{CLIENT_SECRET}}\",\n  \"redirect_uri\": \"{{REDIRECT_URI}}\"\n}'\n\n</code></pre>\n<p><strong>WIth PKCE enabled</strong></p>\n<p>There is no <code>client_id</code> and <code>client_secret</code> in the body. Instead a <code>code_verifier</code> is used</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST '{{OAUTH_HOST}}/{{TOKEN_PATH}}?code={{AUTH_CODE}}&amp;grant_type=authorization_code&amp;client_id={{CLIENT_ID}}&amp;redirect_uri={{REDIRECT_URI}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic {{BASE64_CREDENTIALS}}' \\\n--data-raw '{\n  \"code\": \"{{AUTH_CODE}}\",\n  \"grant_type\": \"authorization_code\",\n  \"code_verifier\": \"{{PKCE_CODE_VERIFIER}}\",\n  \"redirect_uri\": \"{{REDIRECT_URI}}\"\n}'\n\n</code></pre>\n<p><strong>Expected Response</strong></p>\n<p>The <code>expires_in</code> and <code>refresh_token</code> are optional.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600, \n  \"refresh_token\": \"def50200abc...\"\n}\n\n</code></pre>\n<h3 id=\"location-api\">Location API</h3>\n<p>Once the user logs into the Partner using OAuth Creds, the user should be redirected back OT4R, we then show a location Selector Page for POS</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request GET 'https://{{API_HOST}}/{{LOCATION_PATH}}' \\\n--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \\\n--header 'Content-Type: application/json'\n\n</code></pre>\n<p><strong>Expected Response</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n    {\n      \"name\": \"Downtown Burger Co\",\n      \"partner_identifier\": \"LOC-001\",\n      \"street1\": \"123 Main St\",\n      \"street2\": \"Suite 100\",\n      \"city\": \"New York\",\n      \"state\": \"NY\",\n      \"country\": \"US\",\n      \"zip\": \"10001\"\n    },\n    {\n      \"name\": \"Uptown Burger Co\",\n      \"partner_identifier\": \"LOC-002\",\n      \"street1\": \"456 Park Ave\",\n      \"street2\": null,\n      \"city\": \"New York\",\n      \"state\": \"NY\",\n      \"country\": \"US\",\n      \"zip\": \"10022\"\n    },\n    ...\n]\n\n</code></pre>\n<h3 id=\"onboarding-api\">Onboarding API</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{API_HOST}}/{{ONBOARD_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \\\n--data-raw '{\n  \"rid\": \"{{RID}}\",\n  \"partner_identifier\": \"{{PARTNER_IDENTIFIER}}\"\n}'\n\n</code></pre>\n<p><strong>Expected Response</strong></p>\n<p>We expect a successful response status 200 from the partner when the activation is done successfully. However message as the below sample will be useful for debugging.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Location linked successfully\"\n}\n\n</code></pre>\n<h3 id=\"offboarding-api\">Offboarding API</h3>\n<p>This is optional; however, if you don't include it, we may encounter difficulties testing OAuth. Since offboarding can only be handled by us, you might not realize when an RID has been disconnected from your POS on our end. Therefore, we highly recommend that you implement this</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{API_HOST}}/{{OFFBOARD_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer {{ACCESS_TOKEN}}' \\\n--data-raw '{\n  \"rid\": \"{{RID}}\",\n  \"partner_identifier\": \"{{PARTNER_IDENTIFIER}}\"\n}'\n\n</code></pre>\n<p><strong>Expected Response</strong></p>\n<p>We expect a successful response status 200 from the partner when the deactivation is done successfully. However message as the below sample will be useful for debugging.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Location unlinked successfully\"\n}\n\n</code></pre>\n<h3 id=\"refresh-token-api\">Refresh Token API</h3>\n<p>Only needed if your token expires.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{OAUTH_HOST}}/{{REFRESH_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"client_id\": \"{{CLIENT_ID}}\",\n  \"client_secret\": \"{{CLIENT_SECRET}}\",\n  \"refresh_token\": \"{{REFRESH_TOKEN}}\",\n  \"grant_type\": \"refresh_token\"\n}'\n\n</code></pre>\n<p><strong>Expected Response</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"refresh_token\": \"new_refresh_token_xyz...\"\n}\n\n</code></pre>\n","_postman_id":"0b1bd6e8-4632-4b67-aa22-7acc83fe3605"},{"name":"POS Onboarding - Unique Identifier","item":[],"id":"1b29af69-5375-448d-b9e4-a5924997e3ae","description":"<h1 id=\"unique-identifer-flow\">Unique Identifer flow</h1>\n<p>If OAuth is not an option for immediate onboarding, you may choose to use a Partner Unique Identifier.</p>\n<p>In this flow, you, the partner shows the user where to get the Unique Identifer. Then we, OT sends you the unique identifier details through the Validation API as the <code>partner_identifier</code> value</p>\n<h2 id=\"validation-api\">Validation API</h2>\n<p>OpenTable validates that the ID is not currently provisioned elsewhere in the OpenTable ecosystem.</p>\n<h3 id=\"supported-authentication-headers\">Supported authentication headers</h3>\n<ul>\n<li><p>X-API-Key</p>\n</li>\n<li><p>Basic Auth</p>\n</li>\n<li><p>Bearer Auth</p>\n</li>\n<li><p>OAuth</p>\n</li>\n</ul>\n<h4 id=\"x-api-key\">X-API-Key</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request GET '{{APIHost}}/{{PARTNER_VALIDATION_URL}}?partner_identifier={{UNIQUE_IDENTIFIER}}' \\\n--header 'Content-Type: application/json' \\\n--header 'x-api-key: {{YOUR_API_SECRET_VALUE}}'\n\n</code></pre>\n<h4 id=\"basic-auth\">Basic Auth</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl curl --location --request GET '{{APIHost}}/{{PARTNER_VALIDATION_URL}}?partner_identifier={{UNIQUE_IDENTIFIER}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic {{YOUR_AUTH_TOKEN_VALUE}}'\n\n</code></pre>\n<h4 id=\"bearer-auth\">Bearer Auth</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl curl --location --request GET '{{APIHost}}/{{TOKEN_URL}}?partner_identifier={{UNIQUE_IDENTIFIER}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer {{YOUR_AUTH_TOKEN_VALUE}}'\n\n</code></pre>\n<h3 id=\"oauth\">OAuth</h3>\n<p>To set this up, we need:</p>\n<ul>\n<li><p>Client ID</p>\n</li>\n<li><p>Client Secret</p>\n</li>\n<li><p>API host (API domain)</p>\n</li>\n<li><p>OAuth host (Can be the same as or different from, the API domain.)</p>\n</li>\n<li><p>Token path</p>\n</li>\n</ul>\n<p>Step 1: Get token</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST '{{OAUTH_HOST}}/{{TOKEN_PATH}}?' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic {{base64(ot_client_id:ot_client_secret)}}' \n\n</code></pre>\n<p>Step 2</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl curl --location --request GET '{{APIHost}}/{{PARTNER_VALIDATION_URL}}?partner_identifier={{UNIQUE_IDENTIFIER}}' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic {{TOKEN_FROM_STEP_1}}'\n\n</code></pre>\n<p><strong>200 - Expected reponses from the Validation API and all the supported authentication headers</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"name\": \"Downtown Burger Co\",\n  \"status\": 200,\n  \"message\": \"Location found\",\n  \"partner_identifier\": \"{{UNIQUE_IDENTIFIER}}\",\n  \"state\": \"active\",\n  \"address\": {\n    \"street1\": \"123 Main St\",\n    \"street2\": \"Suite 100\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"country\": \"US\",\n    \"zip\": \"10001\",\n    \"postCode\": \"10001\"\n  }\n}\n\n</code></pre>\n<p><strong>Errors - Expected responses</strong></p>\n<ul>\n<li><p><strong>404:</strong> “This identifier is not valid. Please try a different identifier.”</p>\n</li>\n<li><p><strong>409:</strong> “The identifier you entered is already active within OpenTable. Please enter a different identifier.”</p>\n</li>\n<li><p><strong>503:</strong> “We were not able to verify this identifier. Please try again.”</p>\n</li>\n</ul>\n<h2 id=\"onboarding-api\">Onboarding API</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{API_HOST}}/{{ONBOARD_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--header '{{SAME_AUTH_FROM_VALIDATION_API}}' \\\n--data-raw '{\n  \"rid\": \"{{RID}}\",\n  \"partner_identifier\": \"{{UNIQUE_IDENTIFIER}}\"\n}'\n\n</code></pre>\n<p><strong>Expected response</strong></p>\n<p>We expect a successful response status 200 from the partner when the activation is done successfully. However message as the below sample will be useful for debugging.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Location linked successfully\"\n}\n\n</code></pre>\n<h2 id=\"offboarding-api\">Offboarding API</h2>\n<p>This is optional; however, if you don't include it, we may encounter difficulties testing this flow. Since offboarding can only be handled by us, you might not realize when an RID has been disconnected from your POS on our end. Therefore, we highly recommend that you implement this</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location --request POST 'https://{{API_HOST}}/{{OFFBOARD_PATH}}' \\\n--header 'Content-Type: application/json' \\\n--header '{{SAME_AUTH_FROM_VALIDATION_API}}' \\\n--data-raw '{\n  \"rid\": \"{{RID}}\",\n  \"partner_identifier\": \"{{UNIQUE_IDENTIFIER}}\"\n}'\n\n</code></pre>\n<p><strong>Expected response</strong></p>\n<p>We expect a successful response status 200 from the partner when the deactivation is done successfully. However message as the below sample will be useful for debugging.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Location linked successfully\"\n}\n\n</code></pre>\n","_postman_id":"1b29af69-5375-448d-b9e4-a5924997e3ae"},{"name":"POS Delayed Email Onboarding","item":[],"id":"b1b02389-7f7b-46b3-8208-b3d21668140f","description":"<h1 id=\"delayed-email-flow\">Delayed Email flow</h1>\n<p>We need a maxium of four emails addresses. When a RID is interested in connecting your POS, an email notification is sent to these addresses which includes:</p>\n<ul>\n<li><p>Resturant ID</p>\n</li>\n<li><p>Requestor Full Name and email address</p>\n</li>\n<li><p>Restaurant Address</p>\n</li>\n</ul>\n<p>Once you as the partner is ready to onboard the RID, you need to call our POS Status API: <a href=\"https://docs.opentable.com/#688d75fe-5a31-482c-aafc-04999ef3911e\">https://docs.opentable.com/#688d75fe-5a31-482c-aafc-04999ef3911e</a></p>\n","_postman_id":"b1b02389-7f7b-46b3-8208-b3d21668140f"}],"id":"10639f57-e056-46c7-86b7-3ad4810de2e2","description":"<p>OpenTable strives to provide integrations that allow restaurants to maximize their time, revenue and customer loyalty. We offer restaurants a number of integration options and continue to grow that landscape daily.</p>\n<h3 id=\"the-restaurant-experience\"><strong>The Restaurant Experience</strong></h3>\n<p>Partnerships are meant to optimize the restaurant’s experience and available functionality. OpenTable offers a main hub: The Integrations Marketplace. Located within the restaurant’s web portal, restaurants will be able to learn about partnership opportunities, onboard an integration or offboard an integration.</p>\n<p>As part of OpenTable standards, we expect partners to leverage one of the available Onboarding Options. Partners will have a dedicated tile, which will walk the restaurant through the flow.</p>\n<p><em>Detailed below: The Integrations Marketplace</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXfDeWFdsZQy7SzgpkmQRjIzedP3NYE2LLEmtf6xAWVlUC6JNp7lRqMMnmHJMt93jRmYyA66Lp-V-SRoWGT_bIBth0qVthgEu9M4yZNA2xRKFYhl8h9bYpTlnjsaNVFk4lYeIPD82sux3BHv7us5KVM2EaA?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed below: Active Integrations for a Specific Restaurant</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdlBuwi6FcYynAKfOJm201rtI1yw8Yf4SaKNmx21VzNF1oVRnUY1yGjMMYmOCe8rwTh50NlOZwWhl2sM-EqcLV8hqs31AODf81nqT8cs6Gf4DLmi4hTKwGLNuf9hlcWDBFn1XVaxQQ69jTMfP4Blj3xpQ?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed below: Click on the Tile and easily offboard</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXearOz6dqjkgPr9TQNYJG8p4Kuj6ZIRE7IYT3EuGpNV_g52K4WbN0u-46ry4_wzVDx4FVINn4SpNIBMHzmyJMPAW2oyF0fhlSjbm16uLguPzeaA8nTpjY6aqN7bsB17BGsLP4CZoFmwmCGLnwTp_d3vOnE?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<h3 id=\"restaurant-onboarding-scenarios\"><strong>Restaurant Onboarding Scenarios</strong></h3>\n<p>Opentable offers 2 options for the integration onboarding flow: Oauth (preferred) or Unique Identifier. For both implementations the expectation is to expose an easy and immediate opportunity to onboard the partnership functionality.</p>\n<h4 id=\"oauth-flow-scenario\"><strong>Oauth Flow Scenario:</strong></h4>\n<p><em>Detailed</em> <em>example</em> <em>from popmenu below: Page 1, Oauth Flow Scenario, Value Proposition Page.</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXeTD1OU6gavM9PxQKgrK6h960Fs4wSrKN7OhaXJdA9ETDCmGhBiXtI57bczEGb3AGWpscGQNbx8-703OpyAdq5wEzgrTItZswJjmUKfqg_MdwkxNMqu90ai1s0iRVNomlImUsLlgSdyNzuUSFZ-oXzvfPs?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed example below: Page 2, Oauth Flow Scenario, Overview of steps</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdCsqGKVYm0ZnV2a7GuVddFWgtW9uQ2Hq9QGrskKr22mJgFkq83NmJ7M8bT4_tmGRcyXhj7s-ANVvcCQx1TdRNNXUqGyog4Nw1n8FJchx4PAqrodWRydX7qyCvZpO48P7HP7C00l8CekeT4VNZYQwPtHw?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed example below: Page 3, Oauth Flow Scenario, Redirect to partner log-in.</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXf42MSS9pJVLBWGtIbPA0OV6fN_ud2-usINdzBQe-rlWmJmN2TfJB3_BMWnnC5nvUltR_P6bWu1oWqrMcXmtY8qjuMwlHZpzMVr4F2ma4ywCQgTBCRU8X7XGPvwwpIbwVwFZgJqfJP-A76KMrH5uRm88Q?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed example below: Page 4, Oauth Flow Scenario, Partner Authentication. For non-POS onboarding such as Voice AI. The user might only see \"add/choose location\" If a user has multiple locations with you, the partner, the restaurant should be able to choose the correct location.</em></p>\n<img src=\"https://content.pstmn.io/32e16487-3092-4de8-a17f-a81297b99250/aW1nIDIwMjYtMDUtMDcgYXQgMTMuMDMuMzdAMngucG5n\" alt height=\"880\" width=\"808\" />\n\n<p><em>Detailed below: Page 5, Oauth Flow Scenario, Redirect and confirmation</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXe8lgh6joByKGnpfu8p-6GSHAaq_BQsR3SY0QVnh9fe5TuyzLsOEu-HtZEkLR53LnTJiarDPpYM1E-PmEqe-aSODK0-BcAUzKQesP1UFz_L_kOxd__g-IjNP6m31hkteVFlsuq1VDtGiHo5asuevWcsCg?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<h3 id=\"unique-identifier-scenario\"><strong>Unique Identifier Scenario:</strong></h3>\n<p><em>Detailed below: Page 1, Unique Identifier Scenario, Value Proposition Page.</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdzepapvXyDqIQMhvec4BOOFIG0OZqjwP6dOo3P4gw_S-aoxbOkgQMVoeyasY8eVI8mO8gu7IFsRJPgTha6D0m3cMfGxeRehOav0eLSaf6HN5hpNGjxTvuT_HIEPeo8kOocKJJ9VnAN7ZCzM6tAIAeSHw?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed below: Page 2, Unique Identifier Scenario, Overview of Steps, where to find information</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXffy4_QIFlOMHOX2dGCZsjAt7AJW1xXLJsvRHu8RqoicjqSw5Na7RKOMq7tScNOT3mFvqKgQ0ZUnCAfErXT2ZEm6Z9z8TcxRojkmneM-Pts8KH9T6jzehr13LifMXf_Al0kDq0oPOoZJorWlCDCX-flEQ?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed below: Page 2, Unique Identifier Scenario, Once information is verified and details confirmed with the partner. Partner restaurant and OpenTable restaurant details shown side by side for visual confirmation.</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXfKzn8ZcKvAYpbMoZct5b5W6pk0ihJwOZFxFzAoL4LUsC-3ahg1gm9Ws51dsCTfkVUBNdf6UPysDiTG6HI_zIgknmEn4PwamAuFnKDtjn7tF9L-Rl8_UzkYOvM0zYDVjNckKkd6vXpiQerv7o7tA7aoAQ?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed below: Page 3, Unique Identifier Scenario, Redirect and confirmation</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXf9RHMH8pKaVdaKF1cscCDXr17i4mT2CctvMq6KF5uHiVFo_taUqjTzkZQN9dkstwgtLbw1PXtAwQJilVL-Kux3F99ZLiOxcuXXafnxr3cUKaUcDhf63h6c_F8IF_06UE-qbSmbVop2Wqw5dvKPUov0-A?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<h3 id=\"lead-captures-for-partners\"><strong>Lead Captures for Partners</strong></h3>\n<p>Often, restaurants will discover new partner opportunities or discover new integration opportunities in the Integrations Marketplace. For restaurants that are not currently leveraging the partner, there are 2 options that allow for lead tracking and new restaurant acquisition:</p>\n<h3 id=\"option-a-a-redirect-link-for-lead-generation\"><strong>Option A: A redirect link for lead generation</strong></h3>\n<ul>\n<li><p>Requires lead generation tracking to be shared with OpenTable</p>\n</li>\n<li><p>Link is displayed in the value proposition page</p>\n</li>\n<li><p>This option is most optimal when choosing Unique Identifier Onboarding Flow, but can also be used for the Oauth Onboarding Flow.</p>\n</li>\n</ul>\n<p><em>Detailed below: Option A, Redirect link for lead generation, Value Proposition Page.</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdvHvwWnw7wese9OISV8mViPGC9hDEEwuepFk5ba_8jg13VrJn4BE45bKPRIzq3Rf-PU0KAIlgbkN2hMV9mQ1H1cZXBN1Kf-E5JvSxDTZefgIUe5B9X4Iip3rANf7MpFPFvaDekYNWTzM4VK74HBcZVYA0?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<h3 id=\"option-b-sign-up-flow-during-authentication\"><strong>Option B: Sign Up flow during authentication</strong></h3>\n<ul>\n<li><p>The Sign Up flow will also require lead generation tracking</p>\n</li>\n<li><p>This would show as part of the authentication page on the partner experience page</p>\n</li>\n<li><p>This option is most optimal when choosing the Oauth Onboarding Flow</p>\n</li>\n</ul>\n<p><em>Detailed below: Option B, Page 1, Sign Up Flow, Value Proposition Page.</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXeTD1OU6gavM9PxQKgrK6h960Fs4wSrKN7OhaXJdA9ETDCmGhBiXtI57bczEGb3AGWpscGQNbx8-703OpyAdq5wEzgrTItZswJjmUKfqg_MdwkxNMqu90ai1s0iRVNomlImUsLlgSdyNzuUSFZ-oXzvfPs?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em>Detailed below: Option B, Page 2, Sign Up Flow, Overview of Steps</em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdCsqGKVYm0ZnV2a7GuVddFWgtW9uQ2Hq9QGrskKr22mJgFkq83NmJ7M8bT4_tmGRcyXhj7s-ANVvcCQx1TdRNNXUqGyog4Nw1n8FJchx4PAqrodWRydX7qyCvZpO48P7HP7C00l8CekeT4VNZYQwPtHw?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<p><em><strong>Detailed below: Option B, Page 3, Sign Up Flow, Option shown in the redirected window</strong></em></p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdSzp02id-EVgJBCYhCrhoY_vPKziNrpAfN7hcW4dhpTWJ3QkM-IiKFquBr4rzolRiI-n0b_V0KuFvR3Si9-OwUDoQgmN9RpUqGvOpHSyoWuN9fHM5MbP59Vv1mR_nq7c-b88aL_t_8WsGSrWizKQ_1Vg?key=v8hB7lxe1rfGQzKMjVjZBg\" />\n\n<h3 id=\"links\"><strong>Links</strong></h3>\n<p>If Option A for the lead generation flow is selected, the partner is required to send us a URL. The URL is required to be trackable by the partner and reporting should be accessible to OpenTable.</p>\n","_postman_id":"10639f57-e056-46c7-86b7-3ad4810de2e2"},{"name":"Authorization","item":[{"name":"Obtaining an Access Token","id":"ce3a8f78-70b7-480f-8902-51219c6d0ae5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"basic","basic":{"basicConfig":[{"key":"username","value":"<username>"},{"key":"password","value":"<password>"}]},"isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic ","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{oauth-url}}/api/v2/oauth/token?grant_type=client_credentials","urlObject":{"path":["api","v2","oauth","token"],"host":["{{oauth-url}}"],"query":[{"key":"grant_type","value":"client_credentials"}],"variable":[]}},"response":[{"id":"a9df3834-a220-4c06-bb80-a4d622f847fc","name":"Obtaining an Access Token","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Basic","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{oauth-url}}/api/v2/oauth/token?grant_type=client_credentials","host":["{{oauth-url}}"],"path":["api","v2","oauth","token"],"query":[{"key":"grant_type","value":"client_credentials"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"OT-RequestId","value":"4be3bcc0-8798-4c3b-b13f-a5925aec18b6"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"Strict-Transport-Security","value":"max-age=31536000 ; includeSubDomains"},{"key":"x-frame-options","value":"DENY"},{"key":"x-envoy-upstream-service-time","value":"15"},{"key":"Content-Encoding","value":"gzip"},{"key":"Content-Length","value":"133"},{"key":"Date","value":"Tue, 16 Sep 2025 10:29:31 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"}],"cookie":[],"responseTime":null,"body":"{\n    \"access_token\": \"v2-10cec40e-7dce-4049-8a95-5cc90df6bd00\",\n    \"scope\": \"DEFAULT\",\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 1989434\n}"}],"_postman_id":"ce3a8f78-70b7-480f-8902-51219c6d0ae5"}],"id":"9205636d-5325-4b1c-adfa-5a7600de6fa8","description":"<h2 id=\"opentable-oauth-20-authorization-documentation\">OpenTable OAuth 2.0 Authorization Documentation</h2>\n<p>OpenTable utilizes OAuth 2.0 for authorizing access to protected resources. The authorization process involves the following steps:</p>\n<ol>\n<li><p>Request client ID and secret.</p>\n</li>\n<li><p>Obtain an access token using the issued client credentials.</p>\n</li>\n<li><p>Use the access token to access protected resources.</p>\n</li>\n</ol>\n<h3 id=\"obtaining-an-access-token\">Obtaining an Access Token</h3>\n<h4 id=\"environment-and-oauth-base-url\">Environment and OAuth Base URL</h4>\n<ul>\n<li><p><strong>Pre-production:</strong> <a href=\"https://oauth-pp.opentable.com/\"><code>https://oauth-pp.opentable.com</code></a></p>\n</li>\n<li><p><strong>Production:</strong> <a href=\"https://oauth.opentable.com/\"><code>https://oauth.opentable.com</code></a></p>\n</li>\n</ul>\n<p>Clients can obtain an access token using the OAuth 2.0 client credentials flow.</p>\n<h4 id=\"access-token-uri\">Access Token URI</h4>\n<ul>\n<li><strong>URI:</strong> <code>{{base-url}}/api/v2/oauth/token?grant_type=client_credentials</code></li>\n</ul>\n<h4 id=\"request-parameters\">Request Parameters</h4>\n<ul>\n<li><strong>grant_type:</strong> OAuth grant type. Should be <code>client_credentials</code></li>\n</ul>\n<h3 id=\"submitting-client-credentials\">Submitting Client Credentials</h3>\n<p>Client credentials are submitted in the Authorization header as defined in the OAuth specification. Follow these steps:</p>\n<ol>\n<li><p>Concatenate client ID and client secret using a “:” and base64 encode the result.</p>\n</li>\n<li><p>Set the header <code>Authorization: Basic</code></p>\n</li>\n</ol>\n<p><strong>Note:</strong> For OAuth token POST requests, include the Content-Length header even when the request body is empty. Set Content-Length to 0. No update is required for GET requests for OAuth tokens.</p>\n<h2 id=\"authorizing-tokens\">Authorizing Tokens</h2>\n<h4 id=\"obtain-an-access-token\">Obtain an Access Token</h4>\n<ul>\n<li>Set the header <code>Authorization: Basic</code></li>\n</ul>\n<h4 id=\"send-the-request\">Send the Request</h4>\n<ul>\n<li><p>If the token is valid and not expired, the resource server will return an appropriate response.</p>\n</li>\n<li><p>If the token is not valid, the resource server responds with the appropriate HTTP status code (e.g., 400, 401, 403, or 405) and an error code.</p>\n</li>\n</ul>\n<h3 id=\"token-renewal\">Token Renewal</h3>\n<p>Token expiry is included in the response. To get a new token, follow the process of Submitting Client Credentials to obtain a new one.</p>\n<h3 id=\"responses\">Responses</h3>\n<ul>\n<li><p>If the access token is present and valid, the resource server will return an appropriate response.</p>\n</li>\n<li><p>If the access token is missing, HTTP 400 Bad Request is returned.</p>\n</li>\n<li><p>If the access token is invalid or expired, HTTP 401 Unauthorized is returned.</p>\n</li>\n</ul>\n","_postman_id":"9205636d-5325-4b1c-adfa-5a7600de6fa8"},{"name":"Booking APIs","item":[{"name":"Online Booking API (aka Consumer API (v2))","item":[{"name":"APIs","item":[{"name":"Availability APIs","item":[{"name":"GET Single RID Search V2","id":"96764532-9012-4fa4-b2fc-4b1fb9345085","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/v2/availability/{{rid3}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse2}}","urlObject":{"path":["v2","availability","{{rid3}}"],"host":["{{base-url}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse2}}"}],"variable":[]}},"response":[{"id":"b11af179-1df9-4f14-9228-3f90169e1ace","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{base-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"df7a3d8b-433d-491a-a752-371ac1dc740d"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"108"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/availability/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:56:33 GMT"},{"key":"Content-Length","value":"979"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1074796,\n    \"party_size\": 2,\n    \"times\": [\n        \"2025-03-05T07:00\",\n        \"2025-03-05T07:15\",\n        \"2025-03-05T07:30\",\n        \"2025-03-05T07:45\",\n        \"2025-03-05T08:00\",\n        \"2025-03-05T08:15\",\n        \"2025-03-05T08:30\",\n        \"2025-03-05T08:45\",\n        \"2025-03-05T09:00\",\n        \"2025-03-05T09:15\",\n        \"2025-03-05T09:30\",\n        \"2025-03-05T09:45\",\n        \"2025-03-05T10:00\",\n        \"2025-03-05T10:15\",\n        \"2025-03-05T10:30\",\n        \"2025-03-05T10:45\",\n        \"2025-03-05T11:00\",\n        \"2025-03-05T11:15\",\n        \"2025-03-05T11:30\",\n        \"2025-03-05T11:45\",\n        \"2025-03-05T12:00\",\n        \"2025-03-05T12:15\",\n        \"2025-03-05T12:30\",\n        \"2025-03-05T12:45\",\n        \"2025-03-05T13:00\"\n    ],\n    \"times_available\": [\n        {\n            \"time\": \"2025-03-05T07:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A00&sd=2025-03-05T07%3A00&p=2&pt=100&hash=2147862740&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A15&sd=2025-03-05T07%3A15&p=2&pt=100&hash=217371454&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A30&sd=2025-03-05T07%3A30&p=2&pt=100&hash=2147606043&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A45&sd=2025-03-05T07%3A45&p=2&pt=100&hash=2032678253&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A00&sd=2025-03-05T08%3A00&p=2&pt=100&hash=2660307093&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A15&sd=2025-03-05T08%3A15&p=2&pt=100&hash=138347776&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A30&sd=2025-03-05T08%3A30&p=2&pt=100&hash=2773282000&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A45&sd=2025-03-05T08%3A45&p=2&pt=100&hash=2614241140&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A00&sd=2025-03-05T09%3A00&p=2&pt=100&hash=836874191&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A15&sd=2025-03-05T09%3A15&p=2&pt=100&hash=2708338772&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1207480732&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=1793344914&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=3707628001&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1027216335&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=1124764936&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A45&sd=2025-03-05T10%3A45&p=2&pt=100&hash=3082816818&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A00&sd=2025-03-05T11%3A00&p=2&pt=100&hash=2813092328&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A15&sd=2025-03-05T11%3A15&p=2&pt=100&hash=3509409143&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A30&sd=2025-03-05T11%3A30&p=2&pt=100&hash=425483764&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A45&sd=2025-03-05T11%3A45&p=2&pt=100&hash=3263916944&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A00&sd=2025-03-05T12%3A00&p=2&pt=100&hash=2022544807&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A15&sd=2025-03-05T12%3A15&p=2&pt=100&hash=2026935413&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A30&sd=2025-03-05T12%3A30&p=2&pt=100&hash=3752222726&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A45&sd=2025-03-05T12%3A45&p=2&pt=100&hash=2617696080&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T13:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T13%3A00&sd=2025-03-05T13%3A00&p=2&pt=100&hash=4009648945&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T13%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ],\n    \"no_availability_reasons\": [],\n    \"href\": \"https://platform.otqa.com/sync/listings/1074796\"\n}"},{"id":"acf9115c-0a4f-4836-aba4-bac5f9cd3113","name":"200 with experiences","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v2/availability/{{rid3}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse2}}","host":["{{base-url}}"],"path":["v2","availability","{{rid3}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse2}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"c2a11789-41c8-4c48-b9b2-036bf4dabc84"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"126"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/availability/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 03 Jan 2025 20:33:05 GMT"},{"key":"Content-Length","value":"782"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1074796,\n    \"party_size\": 2,\n    \"times\": [\n        \"2025-10-06T09:30\"\n    ],\n    \"times_available\": [\n        {\n            \"time\": \"2025-10-06T09:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellation_policy\": {\n                        \"type\": \"Deposit\",\n                        \"id\": \"67feff530b3b9d7dedb6a918\",\n                        \"amount\": 500,\n                        \"denominator\": 100,\n                        \"currency\": \"USD\",\n                        \"deposit_type\": \"PerGuest\"\n                    },\n                    \"dining_area\": [\n                        {\n                            \"id\": 1,\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1040230&d=2025-10-06T09%3A30&sd=2025-10-06T09%3A30&p=2&pt=100&hash=3845724566&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1040230&dateTime=2025-10-06T09%3A30&partySize=2&restref=1040230\",\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\"\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"cancellation_policy\": {\n                        \"type\": \"Deposit\",\n                        \"id\": \"67feff530b3b9d7dedb6a918\",\n                        \"amount\": 500,\n                        \"denominator\": 100,\n                        \"currency\": \"USD\",\n                        \"deposit_type\": \"PerGuest\"\n                    },\n                    \"dining_area\": [\n                        {\n                            \"id\": 1,\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1040230&d=2025-10-06T09%3A30&sd=2025-10-06T09%3A30&p=2&pt=100&hash=3845724566&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1040230&dateTime=2025-10-06T09%3A30&partySize=2&restref=1040230\",\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                515941,\n                                515491,\n                                515916\n                            ],\n                            \"environment\": \"Indoor\"\n                        }\n                    ],\n                    \"experience_cancellation_policies\": [\n                        {\n                            \"experience_id\": 515916,\n                            \"type\": \"Prepayment\",\n                            \"id\": \"68c2a9021b126798dbbe6a62\"\n                        },\n                        {\n                            \"experience_id\": 515491,\n                            \"type\": \"Prepayment\",\n                            \"id\": \"68937f3e0d1de8c1147bf8f8\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ],\n    \"no_availability_reasons\": [],\n    \"href\": \"https://platform.otqa.com/sync/listings/1074796\"\n}"},{"id":"5416691d-9175-4216-ba52-4bd56619c5be","name":"404","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{oauth-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{oauth-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"OT-RequestId","value":"c2e3f23e-6ef1-4994-9115-c1df7ec7e033"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1EBF9FAD-AA08-4631-874C-42B0A58954FC"},{"key":"Pragma","value":"no-cache"},{"key":"Strict-Transport-Security","value":"max-age=31536000 ; includeSubDomains"},{"key":"x-frame-options","value":"DENY"},{"key":"Cache-Control","value":"must-revalidate,no-cache,no-store"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"18"},{"key":"Content-Length","value":"133"},{"key":"Date","value":"Mon, 23 Dec 2024 16:14:59 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-12-23T16:14:59.531+0000\",\n    \"status\": 404,\n    \"error\": \"Not Found\",\n    \"message\": \"Not Found\",\n    \"path\": \"/v2/availability/1074796\"\n}"},{"id":"0e92ba44-b915-4eb0-8a44-8a7fd5384fcd","name":"403","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{base-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"ff3b1deb-944f-4c34-9634-12dc088fb97e"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"6"},{"key":"Content-Length","value":"95"},{"key":"Date","value":"Mon, 23 Dec 2024 18:49:10 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"message\": \"Permission denied\"\n        }\n    ],\n    \"requestid\": \"ff3b1deb-944f-4c34-9634-12dc088fb97e\"\n}"}],"_postman_id":"96764532-9012-4fa4-b2fc-4b1fb9345085"},{"name":"Availability Metadata","id":"cc623732-2316-454f-873e-0d93e4ea9833","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/v2/availability-metadata/{{rid}}","description":"<h2 id=\"overview\">Overview</h2>\n<p>This documentation outlines the process for using the Availability Search API to retrieve reservation times and metadata for one restaurant.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/v2/availability-metadata/{{rid}}</code></p>\n<p><strong>HTTP Method</strong>: GET</p>\n<h3 id=\"path-parameter\">Path Parameter</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>Integer</td>\n<td>A unique, static identifier for each restaurant. Each restaurant will have its own unique ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters</h3>\n<p>The API does not use query parameters for this endpoint.</p>\n<p><strong>Response Elements</strong></p>\n<p>The API response includes the following elements:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td>Object</td>\n<td>See <code>Data</code> section</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"data\">Data</h3>\n<p>The <code>data</code> object includes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>environments</code></td>\n<td>Array of Strings</td>\n<td>Values will be either <code>Outdoor</code> or <code>Indoor</code>.</td>\n</tr>\n<tr>\n<td><code>attributes</code></td>\n<td>Array of Strings</td>\n<td>Values will be either <code>bar</code>, <code>counter</code>, <code>highTop</code>, <code>outdoor</code>, or <code>default</code>.</td>\n</tr>\n<tr>\n<td><code>dining_areas</code></td>\n<td>Array of Objects</td>\n<td>Detailed information about available dining areas (see <code>Dining Areas</code> section).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"dining-areas\">Dining Areas</h3>\n<p>Each dining area object includes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>Identifier of the dining area.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Name of the dining area.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>String</td>\n<td>Description of the dining area.</td>\n</tr>\n<tr>\n<td><code>environment</code></td>\n<td>String</td>\n<td>Environment type (e.g., <code>Indoor</code>, <code>Outdoor</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","availability-metadata","{{rid}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"7de5f298-04c0-4a31-bc2c-5557100604c3","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"token","type":"text","disabled":true}],"url":"{{base-url}}/v2/availability-metadata/{{rid}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"8f49d723-7db4-4c2d-aa61-a58a84727ed1"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"16"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/availability-metadata/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 05 Feb 2025 19:48:50 GMT"},{"key":"Content-Length","value":"205"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"enviroments\": [\n            \"Outdoor\",\n            \"Indoor\"\n        ],\n        \"attributes\": [\n            \"bar\",\n            \"counter\",\n            \"highTop\",\n            \"default\"\n        ],\n        \"dining_areas\": [\n            {\n                \"id\": 1,\n                \"name\": \"Other\",\n                \"description\": \"Other\"\n            },\n            {\n                \"id\": 2439,\n                \"name\": \"Garden\",\n                \"description\": \"Garden\",\n                \"environment\": \"Outdoor\"\n            },\n            {\n                \"id\": 2632,\n                \"name\": \"VIP Lounge\",\n                \"description\": \"Ultra VIP lounge\",\n                \"environment\": \"Indoor\"\n            }\n        ]\n    }\n}"}],"_postman_id":"cc623732-2316-454f-873e-0d93e4ea9833"}],"id":"f8f4b821-e4d8-4494-9a57-50990e853094","description":"<h2 id=\"search-apis\"><em><strong>Search APIs</strong></em></h2>\n<h2 id=\"introduction\">Introduction</h2>\n<p>The <strong>Single Search API</strong> provides developers with a streamlined way to retrieve restaurant reservation availability using OpenTable's platform. This API enables partners to perform highly customizable searches based on parameters such as date, time, party size, table type, and more. By leveraging this endpoint, developers can enhance user experiences by seamlessly integrating availability searches into their applications.</p>\n<h2 id=\"overview\">Overview</h2>\n<p>The <strong>Single Search API</strong> allows you to:</p>\n<ul>\n<li><p>Search for available reservations at a specific restaurant.</p>\n</li>\n<li><p>Customize searches with parameters like date, time range, party size, and table type.</p>\n</li>\n<li><p>Retrieve detailed availability, including dining area information and cancellation policies.</p>\n</li>\n<li><p>Include special options like experiences and credit-card-secured reservation times.</p>\n</li>\n</ul>\n<h1 id=\"api-documentation-for-availability-search-api\">API Documentation for Availability Search API</h1>\n<h2 id=\"overview-1\">Overview</h2>\n<p>This documentation outlines the process for using the Availability Search API to retrieve reservation times for one restaurant. It includes the endpoint details, parameters, and examples of requests and responses.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>Single Search URL</strong>: <code>{{base-url}}/v2/availability/{{rid}}</code></p>\n<p><strong>Method</strong>: GET</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>Integer</td>\n<td>A unique, static identifier for each restaurant.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters</h3>\n<p>The API supports the following query parameters to customize the search:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>start_date_time</code></td>\n<td>String</td>\n<td>The local date and time to begin the search, formatted in ISO 8601. Must align with 15-minute intervals (e.g., 7:00, 7:15). Example: <code>2020-12-01T19:00</code>.</td>\n</tr>\n<tr>\n<td><code>forward_minutes</code></td>\n<td>Integer</td>\n<td>The number of minutes forward from the start time to search for availability. Acceptable intervals are up to 720 minutes.</td>\n</tr>\n<tr>\n<td><code>backward_minutes</code></td>\n<td>Integer</td>\n<td>The number of minutes backward from the start time to search for availability. Acceptable intervals are up to 720 minutes.</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>Integer</td>\n<td>Specifies the number of diners for the reservation.</td>\n</tr>\n<tr>\n<td><code>require_attributes</code></td>\n<td>String</td>\n<td>Specifies the table type(s) for the search. Possible values: <code>default</code>, <code>hightop</code>, <code>bar</code>, <code>counter</code>, <code>outdoor</code>. Exclude to default to <code>default</code>. Including this parameter ensures specific table types are considered.</td>\n</tr>\n<tr>\n<td><code>include_credit_card_results</code></td>\n<td>Boolean</td>\n<td>When set to <code>true</code>, returns availability requiring credit card confirmation.</td>\n</tr>\n<tr>\n<td><code>include_experiences</code></td>\n<td>Boolean</td>\n<td>Optional (defaults to <code>false</code>). Returns availability for special dining experiences.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response-elements\">Response Elements</h2>\n<p>The API response includes the following elements:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>Integer</td>\n<td>The unique restaurant identifier.</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>Integer</td>\n<td>The number of diners in the reservation request.</td>\n</tr>\n<tr>\n<td><code>times</code></td>\n<td>Array of Strings</td>\n<td>Available reservation times.</td>\n</tr>\n<tr>\n<td><code>times_available</code></td>\n<td>Array of Objects</td>\n<td>Detailed availability for each time.</td>\n</tr>\n<tr>\n<td><code>no_availability_reasons</code></td>\n<td>Array</td>\n<td>Reasons for unavailable times, such as <code>NoTimesExist</code>, <code>BelowMinPartySize</code>, etc.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>String</td>\n<td>URL for further details or actions related to the listing.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"times-available\">Times Available</h3>\n<p>Each time slot includes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>time</code></td>\n<td>String</td>\n<td>Available reservation time.</td>\n</tr>\n<tr>\n<td><code>availability_types</code></td>\n<td>Array of Objects</td>\n<td>Types of availability (e.g., <code>Standard</code>, <code>Experience</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"availability-types\">Availability Types</h3>\n<p>Each availability type provides:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>String</td>\n<td>Type of availability.</td>\n</tr>\n<tr>\n<td><code>cancellation_policy</code></td>\n<td>Object</td>\n<td>Details of the cancellation policy.</td>\n</tr>\n<tr>\n<td><code>dining_area</code></td>\n<td>Array</td>\n<td>Information about available dining areas.</td>\n</tr>\n<tr>\n<td><code>experience_cancellation_policies</code></td>\n<td>Array of Objects</td>\n<td>Information about available dining areas.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"cancellation-policy\">Cancellation Policy</h3>\n<p>Details about reservation cancellation policies include:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>String</td>\n<td>Policy type (<code>Deposit</code>, <code>Hold</code>).</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>ID of the cancellation policy. See Cancel Policy endpoint for details</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>Integer</td>\n<td>Amount of the deposit</td>\n</tr>\n<tr>\n<td><code>denominator</code></td>\n<td>Integer</td>\n<td>Used to specify the unit of the amount, typically set to 100 for currency values.</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>String</td>\n<td>The currency in which the deposit amount is specified, e.g., USD</td>\n</tr>\n<tr>\n<td><code>deposit_type</code></td>\n<td>String</td>\n<td>Type of deposit (PerGuest).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"dining-area-attributes\">Dining Area Attributes</h3>\n<p>Dining area details include:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>Unique identifier for the dining area.</td>\n</tr>\n<tr>\n<td><code>booking_url</code></td>\n<td>String</td>\n<td>Deep-link to OpenTable make reservation URL. The partner will need to add its referral id to the ref query parameter of this URL. (Use of the booking_url to deep-link to OpenTable is for affiliate partner use only and not for use by restaurant partners)</td>\n</tr>\n<tr>\n<td><code>booking_restref_url</code></td>\n<td>String</td>\n<td>Deep-link to OpenTable make reservation URL for the restaurant group. (Use of this link is restricted to restaurant groups and is not to be used by affiliate partners)</td>\n</tr>\n<tr>\n<td><code>attributes</code></td>\n<td>Array of Strings</td>\n<td>The table type or seating option returned for the specific availability. Return types are, <code>default</code>, <code>hightop</code>, <code>bar</code>, <code>counter</code>, <code>outdoor</code>.</td>\n</tr>\n<tr>\n<td><code>experience_ids</code></td>\n<td>Array of Integers</td>\n<td>IDs of associated experiences in the dining area (if applicable).</td>\n</tr>\n<tr>\n<td><code>environment</code></td>\n<td>String</td>\n<td>Environment type. Will be either <code>Indoor</code> or <code>Outdoor</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"experience-cancellation-policies\">Experience Cancellation Policies</h3>\n<p>Details about reservation cancellation policies include:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>experience_id</code></td>\n<td>Integer</td>\n<td>ID of associated experience.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>String</td>\n<td>Type of cancellation policy (e.g., <code>Hold</code>, <code>Prepayment</code>).</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Id of the cancellation policy.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"common-errors\">Common Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>API Endpoint</th>\n<th>Reason for the Error</th>\n<th>Error Message</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>All Endpoints</strong></td>\n<td>Invalid or Expired Token provided</td>\n<td>invalid_token</td>\n<td>401 Unauthorized</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>No Times Exist</td>\n<td>“no_availability_reasons”: [“NoTimesExist”] There simply are no available times for the requested date, time, and time window of interest. There is no indication of blocked inventory.</td>\n<td>200 OK</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>Same Day Cut Off</td>\n<td>“no_availability_reasons”: [“SameDayCutoff”] There is a cutoff time for same-day reservations, and this search request occurs after the cutoff time.</td>\n<td>200 OK</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>Party Size is above max set by restaurant</td>\n<td>“no_availability_reasons”: [“AboveMaxPartySize] The requested party size is above the maximum allowed for online reservations.</td>\n<td>200 OK</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>Party Size is below the minimum set by restaurant</td>\n<td>“no_availability_reasons”: [“BelowMinPartySize] The requested party size is above the maximum allowed for online reservations.</td>\n<td>200 OK</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>No Authorization Token provided</td>\n<td>Authorization token is required to access this resource</td>\n<td>403 Forbidden</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>Illegal Party Size</td>\n<td>Party size must be from 1 to 20</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>No Party Size in request</td>\n<td>Required request parameter 'party_size' for method parameter type Integer is present but converted to null</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>Party Size is not an Integer</td>\n<td>party_size should be of type Integer</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>No Start_Date_Time in request</td>\n<td>Required request parameter 'start_date_time' for method parameter type LocalDateTime is not present\"</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>Invalid Date/Time in the request</td>\n<td>start_date_time should be of type LocalDateTime</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>Invalid Forward Minutes</td>\n<td>forward_minutes should be of type Integer</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Single Search</strong></td>\n<td>Invalid Backward Minutes</td>\n<td>backward_minutes should be of type Integer</td>\n<td>400 Bad Request</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"f8f4b821-e4d8-4494-9a57-50990e853094"},{"name":"Experiences","item":[{"name":"Get Active Experiences V2","id":"790cbb98-1599-4fe6-b427-defe5a697d93","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"accept","value":"application/json;charset=UTF-8"},{"key":"Accept-Language","value":"en-US"}],"url":"{{base-url}}/v2/experiences/{{rid}}/active","description":"<h2 id=\"overview\">Overview</h2>\n<p>This documentation provides details on the Experiences API for retrieving detailed information about various experiences offered by a restaurant.</p>\n<hr />\n<h1 id=\"experiences-api\">Experiences API</h1>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/v2/experiences/{{rid}}/active</code></p>\n<p><strong>HTTP Method</strong>: GET</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>String</td>\n<td>A unique, static identifier for each restaurant. Each restaurant will have its own unique ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"key-features\">Key Features</h3>\n<ul>\n<li><p><strong>Experience Details</strong>: Name, description, type, and ID of the experience.</p>\n</li>\n<li><p><strong>Add-Ons</strong>: Optional items or services, such as wine upgrades or truffle additions.</p>\n</li>\n<li><p><strong>Pricing Information</strong>: Includes price per person and additional charges like gratuity.</p>\n</li>\n<li><p><strong>Service Charges</strong>: Information about mandatory fees associated with the experience.</p>\n</li>\n</ul>\n<h2 id=\"response-schema\">Response Schema</h2>\n<h3 id=\"experience-data\">Experience Data</h3>\n<h3 id=\"root-response-body\">Root Response Body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td>Array</td>\n<td>An array containing one or more experience/reservation objects.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"object-data\">Object: data</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>add_ons</code></td>\n<td>Object</td>\n<td>Details about available add-ons, including groups and limits. See Add-ons Object section.</td>\n</tr>\n<tr>\n<td><code>add_ons_summary</code></td>\n<td>Object</td>\n<td>A high-level summary of the add-ons available for this experience. See Add-ons Summary Object section.</td>\n</tr>\n<tr>\n<td><code>bookable</code></td>\n<td>Boolean</td>\n<td>Indicates if the experience is currently available for booking (e.g., true).</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>String</td>\n<td>The currency code for the experience price (e.g., USD).</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>String</td>\n<td>A detailed description of the experience.</td>\n</tr>\n<tr>\n<td><code>experience_id</code></td>\n<td>Number</td>\n<td>The unique identifier for the experience.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>The public-facing name of the experience.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>Number</td>\n<td>The unique reservation identifier.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>String</td>\n<td>The user-friendly type of the experience (e.g., Special menu).</td>\n</tr>\n<tr>\n<td><code>type_enum</code></td>\n<td>String</td>\n<td>The internal enumeration value for the experience type (e.g., PRIX\\_FIXE).</td>\n</tr>\n<tr>\n<td><code>type_id</code></td>\n<td>Number</td>\n<td>The internal ID for the experience type.</td>\n</tr>\n<tr>\n<td>`version</td>\n<td>Number</td>\n<td>The version number of this experience's data structure.</td>\n</tr>\n<tr>\n<td><code>price_info</code></td>\n<td>Object</td>\n<td>Detailed pricing information, including payment requirements, gratuity, and individual price options. See Price Info Object section. (Optional)</td>\n</tr>\n<tr>\n<td><code>experience_images</code></td>\n<td>Array</td>\n<td>A list of image assets associated with the experience (may be empty).</td>\n</tr>\n<tr>\n<td><code>policyInformation</code></td>\n<td>Object</td>\n<td>Container for references to external policy document IDs. See Policy Information Object section. (Optional)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"add-ons-object-add_ons\"><strong>Add-Ons Object (add_ons)</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>groups</code></td>\n<td>Array</td>\n<td>A list of categorized groups containing individual add-on items. See Add-on Group Object section.</td>\n</tr>\n<tr>\n<td><code>max_per_reservation</code></td>\n<td>Integer</td>\n<td>Maximum number of add-ons per reservation (if <code>0</code>, no limit).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"add-ons-group-object-add_onsgroups\"><strong>Add-Ons Group Object (add_ons.groups[]</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>description</code></td>\n<td>String</td>\n<td>A descriptive label for the add-on group (e.g., Experience Add-ons).</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>Array</td>\n<td>A list of individual add-on options available in this group. See Add-on Item Object section.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>The name of the add-on group.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"add-on-item-object-add_onsgroupsitems\"><strong>Add-on Item Object (add_ons.groups[].items[])</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>description</code></td>\n<td>String</td>\n<td>The detailed description of the add-on item (e.g., test).</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>A unique ID for the add-on item (UUID format)</td>\n</tr>\n<tr>\n<td><code>max_per_reservation</code></td>\n<td>Interger</td>\n<td>The maximum quantity of this specific item that can be added to a reservation.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>The name of the specific add-on item (e.g., Test addon).</td>\n</tr>\n<tr>\n<td><code>price_per_item</code></td>\n<td>Object</td>\n<td>The pricing structure for a single unit of this add-on item. See Price Per Item Object section.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"price-per-item-object-price_per_item\"><strong>Price Per Item Object (price_per_item)</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>currency_code</code></td>\n<td>String</td>\n<td>The currency code for the price (e.g., USD).</td>\n</tr>\n<tr>\n<td><code>min_unit_amount</code></td>\n<td>Integer</td>\n<td>The base price of the item in the smallest unit (e.g., cents).</td>\n</tr>\n<tr>\n<td><code>multiplier</code></td>\n<td>Integer</td>\n<td>The factor to convert the unit amount to the standard price (e.g., 100 for cents).</td>\n</tr>\n<tr>\n<td><code>service_charges</code></td>\n<td>Array</td>\n<td>A list of mandatory or optional fees applied to the base price. See Service Charge Object section. (Optional)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"service-charge-object-service_charges\"><strong>Service Charge Object (service_charges[])</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>serviceChargeId</code></td>\n<td>Integer</td>\n<td>Unique identifier for the service charge.</td>\n</tr>\n<tr>\n<td><code>label</code></td>\n<td>String</td>\n<td>Display name for the service charge (e.g., Additional fees).</td>\n</tr>\n<tr>\n<td><code>numerator</code></td>\n<td>Integer</td>\n<td>The numerator used in calculating the percentage/fractional charge.</td>\n</tr>\n<tr>\n<td><code>denominator</code></td>\n<td>integer</td>\n<td>The denominator used in calculating the percentage/fractional charge (e.g., 10000 for basis points).</td>\n</tr>\n<tr>\n<td><code>mandatory</code></td>\n<td>Boolean</td>\n<td>If true, the charge must be applied.</td>\n</tr>\n<tr>\n<td><code>taxable</code></td>\n<td>Boolean</td>\n<td>If true, the charge is subject to tax.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>String</td>\n<td>A short explanation of the charge (e.g., Cleaning).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"add-ons-summary-object-add_ons_summary\"><strong>Add-ons Summary Object (add_ons_summary)</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>available</code></td>\n<td>String</td>\n<td>Indicates the availability state of add-ons (e.g., OPTIONAL, NONE).</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>Integer</td>\n<td>The total number of unique add-ons available.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"price-info-object-price_info\"><strong>Price Info Object (price_info)</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>priceType</code></td>\n<td>String</td>\n<td>PER_PARTY OR PER_PERSON , indicates whether the price is charged per party, regardless of the number of people in the group, or if the price is calculated on a per-person basis.</td>\n</tr>\n<tr>\n<td><code>prePaymentRequired</code></td>\n<td>Boolean</td>\n<td>True if prepayment is required , false otherwise</td>\n</tr>\n<tr>\n<td><code>currencyCode</code></td>\n<td>String</td>\n<td>The currency code for the pricing (e.g., USD).</td>\n</tr>\n<tr>\n<td><code>multiplier</code></td>\n<td>integer</td>\n<td>Numerical factor used to convert a decimal value into its integer representation. For example, with a multiplier of 100, a decimal amount of $10.22 would be represented as 1022.</td>\n</tr>\n<tr>\n<td><code>gratuity</code></td>\n<td>Object</td>\n<td>Details about mandatory or recommended gratuity. See Gratuity Object section. (Optional)</td>\n</tr>\n<tr>\n<td><code>prices</code></td>\n<td>Array</td>\n<td>A list of different menu or price options available for the experience. See Individual Price Option Object section.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"gratuity-object-price_infogratuity\"><strong>Gratuity Object (price_info.gratuity)</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>label</code></td>\n<td>String</td>\n<td>Locale based laebl</td>\n</tr>\n<tr>\n<td><code>numerator</code></td>\n<td>Integer</td>\n<td>Numerator of gratuity, e.g. 350 for 3.50% if denominator is 10,000</td>\n</tr>\n<tr>\n<td><code>denominator</code></td>\n<td>integer</td>\n<td>The denominator used for percentage calculation (e.g., 10000).</td>\n</tr>\n<tr>\n<td><code>mandatory</code></td>\n<td>Boolean</td>\n<td>If true, the gratuity is required.</td>\n</tr>\n<tr>\n<td><code>taxable</code></td>\n<td>Boolean</td>\n<td>If true, the gratuity is subject to tax.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"policy-information-object-policyinformation\"><strong>Policy Information Object (policyInformation)</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>cancellationPolicy</code></td>\n<td>Object</td>\n<td>Reference to the cancellation policy ID. See Policy ID Object section. (Optional)</td>\n</tr>\n<tr>\n<td><code>bookingPolicy</code></td>\n<td>Object</td>\n<td>Reference to the booking policy ID. See Policy ID Object section. (Optional)</td>\n</tr>\n<tr>\n<td><code>tncPolicy</code></td>\n<td>Object</td>\n<td>Reference to the Terms &amp; Conditions policy ID. See Policy ID Object section. (Optional)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"policy-id-object-policyid\"><strong>Policy ID Object (*Policy.id)</strong></h3>\n<p>Used by <code>cancellationPolicy</code>, <code>bookingPolicy</code>, and <code>tncPolicy</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>The versioned ID referencing the full text of the policy (e.g., 6700aaebd168ff2f0dc1412b:v1)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"path":["v2","experiences","{{rid}}","active"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"8ab5807e-905f-4ea0-a5b9-9a85371ef569","name":"200","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json;charset=UTF-8"},{"key":"Accept-Language","value":"en-US"}],"url":"{{base-url}}/v2/experiences/{{rid}}/active"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"8ca5bd2c-69fc-4dcc-9918-f4b63c0bb96b"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"Accept-Language","value":"en-US"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"50"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/experiences/active/v2/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 19:45:14 GMT"},{"key":"Content-Length","value":"563"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"add_ons\": {\n                \"groups\": [\n                    {\n                        \"description\": \"Experience Add-ons\",\n                        \"items\": [\n                            {\n                                \"description\": \"test\",\n                                \"id\": \"198a5320-78f8-4f52-9f02-dde5c66c7b46\",\n                                \"max_per_reservation\": 20,\n                                \"name\": \"Test addon\",\n                                \"price_per_item\": {\n                                    \"currency_code\": \"USD\",\n                                    \"min_unit_amount\": 100,\n                                    \"multiplier\": 100,\n                                    \"service_charges\": [\n                                        {\n                                            \"serviceChargeId\": 1,\n                                            \"label\": \"Additional fees\",\n                                            \"numerator\": 200,\n                                            \"denominator\": 10000,\n                                            \"mandatory\": true,\n                                            \"taxable\": true,\n                                            \"description\": \"Cleaning\"\n                                        }\n                                    ]\n                                }\n                            }\n                        ],\n                        \"name\": \"Experience Add-ons\"\n                    }\n                ],\n                \"max_per_reservation\": 0\n            },\n            \"add_ons_summary\": {\n                \"available\": \"OPTIONAL\",\n                \"count\": 5\n            },\n            \"bookable\": true,\n            \"currency\": \"USD\",\n            \"description\": \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.\",\n            \"experience_id\": 508501,\n            \"name\": \"Aasma 1 (per person) - add ons service fee\",\n            \"rid\": 152416,\n            \"type\": \"Special menu\",\n            \"type_enum\": \"PRIX_FIXE\",\n            \"type_id\": 2,\n            \"version\": 3,\n            \"price_info\": {\n                \"priceType\": \"PER_PERSON\",\n                \"prePaymentRequired\": true,\n                \"currencyCode\": \"USD\",\n                \"multiplier\": 100,\n                \"gratuity\": {\n                    \"label\": \"Gratuity\",\n                    \"numerator\": 100,\n                    \"denominator\": 10000,\n                    \"mandatory\": true,\n                    \"taxable\": true\n                },\n                \"prices\": [\n                    {\n                        \"priceId\": 117333,\n                        \"priceTitle\": \"Chefs special\",\n                        \"priceDescription\": \"Lorem Ipsum is simply dummy text of the printing and typesetting industry\",\n                        \"priceOrder\": 1,\n                        \"minUnitAmount\": 1000,\n                        \"priceAllInclusive\": false\n                    },\n                    {\n                        \"priceId\": 117334,\n                        \"priceTitle\": \"Everyday menu\",\n                        \"priceDescription\": \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It h\",\n                        \"priceOrder\": 2,\n                        \"minUnitAmount\": 1000,\n                        \"priceAllInclusive\": false\n                    },\n                    {\n                        \"priceId\": 117335,\n                        \"priceTitle\": \"Bakery menu\",\n                        \"priceDescription\": \"Lorem Ipsum is simply dummy text of the printing and typesetting industry\",\n                        \"priceOrder\": 3,\n                        \"minUnitAmount\": 1000,\n                        \"priceAllInclusive\": false\n                    },\n                    {\n                        \"priceId\": 117336,\n                        \"priceTitle\": \"Vegan menu\",\n                        \"priceOrder\": 4,\n                        \"minUnitAmount\": 5000,\n                        \"priceAllInclusive\": true\n                    },\n                    {\n                        \"priceId\": 117337,\n                        \"priceTitle\": \"Salads only\",\n                        \"priceDescription\": \"Lorem Ipsum is simply dummy text of the printing and typesetting industry\",\n                        \"priceOrder\": 5,\n                        \"minUnitAmount\": 200,\n                        \"priceAllInclusive\": true\n                    }\n                ]\n            }\n        }\n    ]\n}"},{"id":"04f4402b-9b98-4cbe-b2da-19ac48ab4417","name":"200 - No available Experiences","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json;charset=UTF-8"},{"key":"Accept-Language","value":"en-US"}],"url":"{{base-url}}/v2/experiences/{{rid}}/active"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"995948c8-4400-484f-b81a-13e049a4fef4"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"Accept-Language","value":"en-US"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"73"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/experiences/active/v2/{rid}"},{"key":"Content-Length","value":"11"},{"key":"Date","value":"Mon, 23 Dec 2024 19:17:10 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": []\n}"},{"id":"d15e153b-4cce-4a6f-9989-31d2467b980e","name":"403","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json;charset=UTF-8"},{"key":"Accept-Language","value":"en-US"}],"url":"{{base-url}}/v2/experiences/{{rid}}/active"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"e478b350-3138-4411-9fb3-c6e2bb314065"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"Accept-Language","value":"en-US"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"14"},{"key":"Content-Length","value":"95"},{"key":"Date","value":"Mon, 23 Dec 2024 19:18:16 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"message\": \"Permission denied\"\n        }\n    ],\n    \"requestid\": \"e478b350-3138-4411-9fb3-c6e2bb314065\"\n}"}],"_postman_id":"790cbb98-1599-4fe6-b427-defe5a697d93"},{"name":"Experience Total Calculation","id":"8674d747-1e77-4c21-9112-7bc478716c90","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"accept","value":"application/json;charset=UTF-8"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"experience_id\": 511659,\r\n    \"version\": 2,\r\n    \"party_size\": 4,\r\n    \"tip_percent_list\": [\r\n        10\r\n    ],\r\n    \"add_ons\": [\r\n        {\r\n            \"item_id\": \"3de22255-8af7-42dd-aade-e6b4cfc767d7\",\r\n            \"quantity\": 2\r\n        }\r\n    ],\r\n    \"party_size_per_price_type\": [\r\n        {\r\n            \"id\": 121058,\r\n            \"count\": 1\r\n        },\r\n        {\r\n            \"id\": 121059,\r\n            \"count\": 1\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v2/booking/{{rid}}/reservations/experiences/total","description":"<h1 id=\"experience-total-api\">Experience Total API</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The Experience Total API allows you to calculate and retrieve detailed cost information for restaurant booking experiences. This includes costs for add-ons, tips, service fees, and taxes. It supports specifying details such as party size, experience version, and price breakdowns for comprehensive booking insights.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/v2/booking/{{RID}}/reservations/experiences/total</code></p>\n<p><strong>Method</strong>: POST</p>\n<hr />\n<h2 id=\"path-parameters\">Path Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>String</td>\n<td>A unique, static identifier for each restaurant. Each restaurant will have its own unique ID.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>experience_id</code></td>\n<td>Integer</td>\n<td>The unique identifier for the experience.</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>Integer</td>\n<td>The version number of the experience.</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>Integer</td>\n<td>The number of people in the party.</td>\n</tr>\n<tr>\n<td><code>tip_percent_list</code></td>\n<td>Array of Integers</td>\n<td>Percentage of tips to be added.</td>\n</tr>\n<tr>\n<td><code>add_ons</code></td>\n<td>Array of Objects</td>\n<td>Details of additional items added to the experience, including item ID and quantity.</td>\n</tr>\n<tr>\n<td><code>party_size_per_price_type</code></td>\n<td>Array of Objects</td>\n<td>Details of party size per price type, including the ID of the price type and the count of people.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"add-ons-array\">Add-Ons Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>item_id</code></td>\n<td>String</td>\n<td>The unique identifier for the add-on item.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>The quantity of the add-on item.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"party-size-per-price-type-array\">Party Size Per Price Type Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The ID of the price type.</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>Integer</td>\n<td>The count of people for the corresponding price type.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"totals-array\">Totals Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tip_amount</code></td>\n<td>Integer</td>\n<td>The total tip amount.</td>\n</tr>\n<tr>\n<td><code>tip_percent</code></td>\n<td>Float</td>\n<td>The percentage of the tip.</td>\n</tr>\n<tr>\n<td><code>tip_amount_with_taxes</code></td>\n<td>Integer</td>\n<td>The tip amount, including taxes (if applicable).</td>\n</tr>\n<tr>\n<td><code>service_fee_amount</code></td>\n<td>Integer</td>\n<td>The total service fee amount.</td>\n</tr>\n<tr>\n<td><code>add_on_subtotal_amount_with_taxes</code></td>\n<td>Integer</td>\n<td>The subtotal amount for add-ons, including taxes.</td>\n</tr>\n<tr>\n<td><code>add_on_subtotal</code></td>\n<td>Integer</td>\n<td>The subtotal amount for add-ons.</td>\n</tr>\n<tr>\n<td><code>item_subtotal_amount</code></td>\n<td>Integer</td>\n<td>The subtotal of item prices.</td>\n</tr>\n<tr>\n<td><code>taxes_on_tip_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on tips.</td>\n</tr>\n<tr>\n<td><code>taxes_on_service_fees_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on service fees.</td>\n</tr>\n<tr>\n<td><code>taxes_amount</code></td>\n<td>Integer</td>\n<td>The total taxes amount.</td>\n</tr>\n<tr>\n<td><code>total_amount</code></td>\n<td>Integer</td>\n<td>The total cost, including taxes, service fees, tips, and add-ons.</td>\n</tr>\n<tr>\n<td><code>taxes_on_item_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on items.</td>\n</tr>\n<tr>\n<td><code>taxes_on_add_ons_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on add-ons.</td>\n</tr>\n<tr>\n<td><code>item_subtotal_amount_without_taxes</code></td>\n<td>Integer</td>\n<td>The subtotal of item amounts, excluding taxes.</td>\n</tr>\n<tr>\n<td><code>is_tip_mandatory</code></td>\n<td>Boolean</td>\n<td>Indicates if a tip is mandatory.</td>\n</tr>\n<tr>\n<td><code>subtotals_per_price_type</code></td>\n<td>Array</td>\n<td>Subtotals for each price type applied to the booking (detailed below).</td>\n</tr>\n<tr>\n<td><code>taxes</code></td>\n<td>Array</td>\n<td>Tax details applied to the booking (detailed below).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"subtotals-per-price-type-array\">Subtotals Per Price Type Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the price type.</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>Integer</td>\n<td>The count of people for the corresponding price type.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>The unit price for this price type.</td>\n</tr>\n<tr>\n<td><code>subtotal</code></td>\n<td>Integer</td>\n<td>The subtotal for this price type.</td>\n</tr>\n<tr>\n<td><code>price_all_inclusive</code></td>\n<td>Boolean</td>\n<td>Indicates whether the price includes all taxes and fees.</td>\n</tr>\n<tr>\n<td><code>subtotal_with_tax_and_fees</code></td>\n<td>Integer</td>\n<td>The subtotal including taxes and fees.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"taxes-array\">Taxes Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tax_id</code></td>\n<td>Integer</td>\n<td>The unique identifier for the tax.</td>\n</tr>\n<tr>\n<td><code>tax_percent</code></td>\n<td>Float</td>\n<td>The percentage of the tax.</td>\n</tr>\n<tr>\n<td><code>tax_on_item_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on item amounts.</td>\n</tr>\n<tr>\n<td><code>tax_on_tip_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on tip amounts.</td>\n</tr>\n<tr>\n<td><code>tax_on_service_fees_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on service fees.</td>\n</tr>\n<tr>\n<td><code>tax_subtotals_per_price_type</code></td>\n<td>Array</td>\n<td>Subtotals of taxes per price type (detailed below).</td>\n</tr>\n<tr>\n<td><code>tax_subtotal</code></td>\n<td>Integer</td>\n<td>The total subtotal of taxes.</td>\n</tr>\n<tr>\n<td><code>tax_total</code></td>\n<td>Integer</td>\n<td>The total taxes.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"tax-subtotals-per-price-type-array\">Tax Subtotals Per Price Type Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the price type.</td>\n</tr>\n<tr>\n<td><code>tax_percent</code></td>\n<td>Float</td>\n<td>The percentage of the tax for this price type.</td>\n</tr>\n<tr>\n<td><code>tax_on_item_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on items for this price type.</td>\n</tr>\n<tr>\n<td><code>tax_on_service_fees_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on service fees for this price type.</td>\n</tr>\n<tr>\n<td><code>tax_subtotal</code></td>\n<td>Integer</td>\n<td>The subtotal of taxes for this price type.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response\">Response</h2>\n<h3 id=\"main-response-fields\">Main Response Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>Unique identifier for the booking.</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>Integer</td>\n<td>Version of the payload format.</td>\n</tr>\n<tr>\n<td><code>add_ons</code></td>\n<td>Array</td>\n<td>List of add-ons associated with the booking (see Add-Ons Array).</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>String</td>\n<td>The currency used for the transaction (e.g., \"USD\").</td>\n</tr>\n<tr>\n<td><code>currency_denominator</code></td>\n<td>Integer</td>\n<td>The denominator used for currency (e.g., 100 for cents).</td>\n</tr>\n<tr>\n<td><code>totals</code></td>\n<td>Array</td>\n<td>Total costs associated with the booking (see Totals Array).</td>\n</tr>\n<tr>\n<td><code>has_mandatory_tip</code></td>\n<td>Boolean</td>\n<td>Indicates whether a tip is mandatory for the booking.</td>\n</tr>\n<tr>\n<td><code>is_tip_taxable</code></td>\n<td>Boolean</td>\n<td>Indicates whether the tip is taxable.</td>\n</tr>\n<tr>\n<td><code>prices</code></td>\n<td>Array</td>\n<td>Pricing details for different price types applied to the booking (see Prices Array).</td>\n</tr>\n<tr>\n<td><code>restaurant_id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the restaurant associated with the booking.</td>\n</tr>\n<tr>\n<td><code>booking_type</code></td>\n<td>String</td>\n<td>Type of booking (e.g., \"Table\").</td>\n</tr>\n<tr>\n<td><code>ticketed</code></td>\n<td>Boolean</td>\n<td>Indicates whether the booking has been ticketed.</td>\n</tr>\n<tr>\n<td><code>service_fees</code></td>\n<td>Array</td>\n<td>List of global service fees applied to the entire booking (see Service Fees Array).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"add-ons-array-1\">Add-Ons Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>item_id</code></td>\n<td>String</td>\n<td>The unique identifier for the add-on item.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>The quantity of the add-on item.</td>\n</tr>\n<tr>\n<td><code>line_total</code></td>\n<td>Integer</td>\n<td>The total cost for the add-on item.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>The price per unit of the add-on item.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>The name of the add-on item.</td>\n</tr>\n<tr>\n<td><code>line_subtotal_with_taxes</code></td>\n<td>Integer</td>\n<td>The subtotal cost for the add-on item including taxes.</td>\n</tr>\n<tr>\n<td><code>line_subtotal_with_taxes_and_fees</code></td>\n<td>Integer</td>\n<td>The subtotal cost for the add-on item including taxes and fees.</td>\n</tr>\n<tr>\n<td><code>service_fees</code></td>\n<td>Array</td>\n<td>List of service fees associated with the add-on (see Service Fees Array).</td>\n</tr>\n<tr>\n<td><code>taxes</code></td>\n<td>Array</td>\n<td>List of taxes applied to the add-on (see Taxes Array).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"service-fees-array\">Service Fees Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>service_fee_percent</code></td>\n<td>Float</td>\n<td>The percentage of the service fee.</td>\n</tr>\n<tr>\n<td><code>service_fee_amount</code></td>\n<td>Integer</td>\n<td>The amount of the service fee.</td>\n</tr>\n<tr>\n<td><code>label</code></td>\n<td>String</td>\n<td>The label for the service fee (e.g., \"Service charge\").</td>\n</tr>\n<tr>\n<td><code>mandatory</code></td>\n<td>Boolean</td>\n<td>Indicates whether the service fee is mandatory.</td>\n</tr>\n<tr>\n<td><code>taxable</code></td>\n<td>Boolean</td>\n<td>Indicates whether the service fee is taxable.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>String</td>\n<td>A description of the service fee.</td>\n</tr>\n<tr>\n<td><code>tax_on_service_fee_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on the service fee.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"taxes-array-1\">Taxes Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tax_id</code></td>\n<td>Integer</td>\n<td>The unique identifier for the tax.</td>\n</tr>\n<tr>\n<td><code>label</code></td>\n<td>String</td>\n<td>The label for the tax.</td>\n</tr>\n<tr>\n<td><code>tax_percent</code></td>\n<td>Float</td>\n<td>The percentage of the tax.</td>\n</tr>\n<tr>\n<td><code>tax_on_item_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on the item.</td>\n</tr>\n<tr>\n<td><code>tax_on_tip_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on the tip.</td>\n</tr>\n<tr>\n<td><code>tax_on_service_fees_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on the service fees.</td>\n</tr>\n<tr>\n<td><code>tax_subtotal</code></td>\n<td>Integer</td>\n<td>The subtotal tax amount.</td>\n</tr>\n<tr>\n<td><code>tax_total</code></td>\n<td>Integer</td>\n<td>The total tax amount.</td>\n</tr>\n<tr>\n<td><code>tax_subtotals_per_price_type</code></td>\n<td>Array</td>\n<td>Subtotals of taxes per price type (see Tax Subtotals Per Price Type Array).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"tax-subtotals-per-price-type-array-1\">Tax Subtotals Per Price Type Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the price type.</td>\n</tr>\n<tr>\n<td><code>tax_percent</code></td>\n<td>Float</td>\n<td>The percentage of the tax for this price type.</td>\n</tr>\n<tr>\n<td><code>tax_on_item_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on items for this price type.</td>\n</tr>\n<tr>\n<td><code>tax_on_service_fees_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on service fees for this price type.</td>\n</tr>\n<tr>\n<td><code>tax_subtotal</code></td>\n<td>Integer</td>\n<td>The subtotal of taxes for this price type.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"totals-array-1\">Totals Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tip_amount</code></td>\n<td>Integer</td>\n<td>The total tip amount.</td>\n</tr>\n<tr>\n<td><code>tip_percent</code></td>\n<td>Float</td>\n<td>The percentage of the tip.</td>\n</tr>\n<tr>\n<td><code>tip_amount_with_taxes</code></td>\n<td>Integer</td>\n<td>The tip amount, including taxes (if applicable).</td>\n</tr>\n<tr>\n<td><code>service_fee_amount</code></td>\n<td>Integer</td>\n<td>The total service fee amount.</td>\n</tr>\n<tr>\n<td><code>add_on_subtotal_amount_with_taxes</code></td>\n<td>Integer</td>\n<td>The subtotal amount for add-ons, including taxes.</td>\n</tr>\n<tr>\n<td><code>add_on_subtotal</code></td>\n<td>Integer</td>\n<td>The subtotal amount for add-ons.</td>\n</tr>\n<tr>\n<td><code>item_subtotal_amount</code></td>\n<td>Integer</td>\n<td>The subtotal of item prices.</td>\n</tr>\n<tr>\n<td><code>taxes_on_tip_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on tips.</td>\n</tr>\n<tr>\n<td><code>taxes_on_service_fees_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on service fees.</td>\n</tr>\n<tr>\n<td><code>taxes_amount</code></td>\n<td>Integer</td>\n<td>The total taxes amount.</td>\n</tr>\n<tr>\n<td><code>total_amount</code></td>\n<td>Integer</td>\n<td>The total cost, including taxes, service fees, tips, and add-ons.</td>\n</tr>\n<tr>\n<td><code>taxes_on_item_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on items.</td>\n</tr>\n<tr>\n<td><code>taxes_on_add_ons_amount</code></td>\n<td>Integer</td>\n<td>The tax amount on add-ons.</td>\n</tr>\n<tr>\n<td><code>item_subtotal_amount_without_taxes</code></td>\n<td>Integer</td>\n<td>The subtotal of item amounts, excluding taxes.</td>\n</tr>\n<tr>\n<td><code>is_tip_mandatory</code></td>\n<td>Boolean</td>\n<td>Indicates if a tip is mandatory.</td>\n</tr>\n<tr>\n<td><code>subtotals_per_price_type</code></td>\n<td>Array</td>\n<td>Subtotals for each price type applied to the booking (see Subtotals Per Price Type Array).</td>\n</tr>\n<tr>\n<td><code>taxes</code></td>\n<td>Array</td>\n<td>Tax details applied to the booking (see Taxes Array).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"subtotals-per-price-type-array-1\">Subtotals Per Price Type Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the price type.</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>Integer</td>\n<td>The count of people for the corresponding price type.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>The unit price for this price type.</td>\n</tr>\n<tr>\n<td><code>subtotal</code></td>\n<td>Integer</td>\n<td>The subtotal for this price type.</td>\n</tr>\n<tr>\n<td><code>price_all_inclusive</code></td>\n<td>Boolean</td>\n<td>Indicates whether the price includes all taxes and fees.</td>\n</tr>\n<tr>\n<td><code>subtotal_with_tax_and_fees</code></td>\n<td>Integer</td>\n<td>The subtotal including taxes and fees.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","booking","{{rid}}","reservations","experiences","total"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"5f8bb0d2-b9cd-4337-a531-8801b07cf50c","name":"200","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json;charset=UTF-8"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"experience_id\": 512011,\r\n    \"version\": 2,\r\n    \"party_size\": 4,\r\n    \"tip_percent_list\": [],\r\n    \"party_size_per_price_type\": [\r\n        {\r\n            \"id\": 121439,\r\n            \"count\": 2\r\n        },\r\n        {\r\n            \"id\": 121440,\r\n            \"count\": 2\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v2/booking/{{rid}}/reservations/experiences/total"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"9e0fcc10-e813-4454-bd84-6738a9d67c96"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"119"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/reservations/{rid}/experiences/v3/total"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 19:54:40 GMT"},{"key":"Content-Length","value":"614"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 512011,\n    \"version\": 2,\n    \"add_ons\": [],\n    \"currency\": \"USD\",\n    \"currency_denominator\": 100,\n    \"totals\": [\n        {\n            \"tip_amount\": 2500,\n            \"tip_percent\": 10,\n            \"tip_amount_with_taxes\": 2500,\n            \"service_fee_amount\": 2500,\n            \"add_on_subtotal_amount_with_taxes\": 0,\n            \"add_on_subtotal\": 0,\n            \"item_subtotal_amount\": 25000,\n            \"taxes_on_tip_amount\": 0,\n            \"taxes_on_service_fees_amount\": 250,\n            \"taxes_amount\": 2750,\n            \"total_amount\": 32750,\n            \"taxes_on_item_amount\": 2500,\n            \"taxes_on_add_ons_amount\": 0,\n            \"item_subtotal_amount_without_taxes\": 25000,\n            \"is_tip_mandatory\": true,\n            \"subtotals_per_price_type\": [\n                {\n                    \"id\": 121439,\n                    \"count\": 2,\n                    \"price\": 10000,\n                    \"subtotal\": 20000,\n                    \"price_all_inclusive\": false,\n                    \"subtotal_with_tax_and_fees\": 24200\n                },\n                {\n                    \"id\": 121440,\n                    \"count\": 2,\n                    \"price\": 2500,\n                    \"subtotal\": 5000,\n                    \"price_all_inclusive\": false,\n                    \"subtotal_with_tax_and_fees\": 6050\n                }\n            ],\n            \"taxes\": [\n                {\n                    \"tax_id\": 0,\n                    \"tax_percent\": 0,\n                    \"tax_on_item_amount\": 2500,\n                    \"tax_on_tip_amount\": 0,\n                    \"tax_on_service_fees_amount\": 250,\n                    \"tax_subtotals_per_price_type\": [\n                        {\n                            \"id\": 121439,\n                            \"tax_percent\": 10,\n                            \"tax_on_item_amount\": 2000,\n                            \"tax_on_service_fees_amount\": 200,\n                            \"tax_on_service_fees\": [\n                                {\n                                    \"service_fee_id\": 1,\n                                    \"tax_amount\": 200\n                                }\n                            ],\n                            \"tax_subtotal\": 2200,\n                            \"tax_id\": 1,\n                            \"label\": \"Tax\"\n                        },\n                        {\n                            \"id\": 121440,\n                            \"tax_percent\": 10,\n                            \"tax_on_item_amount\": 500,\n                            \"tax_on_service_fees_amount\": 50,\n                            \"tax_on_service_fees\": [\n                                {\n                                    \"service_fee_id\": 1,\n                                    \"tax_amount\": 50\n                                }\n                            ],\n                            \"tax_subtotal\": 550,\n                            \"tax_id\": 1,\n                            \"label\": \"Tax\"\n                        }\n                    ],\n                    \"tax_subtotal\": 2750,\n                    \"tax_total\": 3000\n                }\n            ]\n        }\n    ],\n    \"has_mandatory_tip\": true,\n    \"is_tip_taxable\": false,\n    \"prices\": [\n        {\n            \"id\": 121439,\n            \"title\": \"Adult price\",\n            \"description\": \"Adult price\",\n            \"price\": 10000,\n            \"price_all_inclusive\": false,\n            \"price_order\": 1\n        },\n        {\n            \"id\": 121440,\n            \"title\": \"Child price\",\n            \"description\": \"Child price\",\n            \"price\": 2500,\n            \"price_all_inclusive\": false,\n            \"price_order\": 2\n        }\n    ],\n    \"restaurant_id\": 188878,\n    \"booking_type\": \"Table\",\n    \"ticketed\": false,\n    \"service_fees\": [\n        {\n            \"label\": \"Service charge\",\n            \"fee_percent\": 0,\n            \"fee_amount\": 2500,\n            \"taxable\": true,\n            \"service_fee_subtotals_per_price_type\": [\n                {\n                    \"fee_percent\": 10,\n                    \"fee_amount\": 2000,\n                    \"label\": \"Service charge\",\n                    \"description\": \"Event fee\",\n                    \"mandatory\": true,\n                    \"taxable\": true\n                },\n                {\n                    \"fee_percent\": 10,\n                    \"fee_amount\": 500,\n                    \"label\": \"Service charge\",\n                    \"description\": \"Event fee\",\n                    \"mandatory\": true,\n                    \"taxable\": true\n                }\n            ],\n            \"fee_amount_for_add_ons\": 0,\n            \"fee_amount_without_add_ons\": 2500\n        }\n    ]\n}"}],"_postman_id":"8674d747-1e77-4c21-9112-7bc478716c90"}],"id":"ae4b2e47-6c90-48c4-8f0e-136049b1886d","description":"<h1 id=\"description\"><strong>Description</strong></h1>\n<p><strong>OVERVIEW</strong></p>\n<p>Experiences allow restaurants to use their availability for special events. From happy hour to winery tours, $1 oysters to exquisite 12-course tasting menus and more. When restaurants offer Experiences on OpenTable, the Consumer API v2 will allow you to book, confirm and even collect deposits.</p>\n<p>Availability for the experiences are real-time and reservations are confirmed in the system once the reservation is completed. You can choose to show only standard availability or also include experiences by using the <code>include_experiences</code> quey parameter.</p>\n<p><strong>HOW WILL THIS IMPACT RESTAURANTS?</strong></p>\n<p>While these APIs are optional, restaurants that offer experiences will have inventory dedicated to the experiences. Here is how it looks on OpenTable.com for a restaurant with an experience and standard availability.</p>\n<img src=\"https://content.pstmn.io/806cb51d-5d10-4074-bff9-a18d1e459169/aW1hZ2UucG5n\" width=\"415\" height=\"286\" />","_postman_id":"ae4b2e47-6c90-48c4-8f0e-136049b1886d"},{"name":"Slot Locks","item":[{"name":"Slot Locks","id":"24d0dfcc-80c6-4cf8-9e8d-65f29635d4a2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"party_size\": 2,\n    \"date_time\": \"2025-10-13T16:00\",\n    \"reservation_attribute\": \"default\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    },\n    \"dining_area_id\": 2632,\n    \"environment\": \"Indoor\"\n}\n"},"url":"{{base-url}}/v2/booking/{{rid}}/slot_locks","description":"<h2 id=\"overview\">Overview</h2>\n<p>The Slot Lock API provides the ability to create, manage, and retrieve reservations for a restaurant. This documentation outlines the payload structure, attributes, and their descriptions, along with sample requests and responses for seamless integration.</p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>URL:</strong> <code>{{base-url}}/v2/booking/{{rid}}/slot_locks</code></p>\n<p><strong>Method: POST</strong></p>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<h3 id=\"attributes\">Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>Number of people in the reservation party. <em>Required</em></td>\n</tr>\n<tr>\n<td><code>date_time</code></td>\n<td>string</td>\n<td>Date and time of the reservation in ISO 8601 format. <em>Required</em></td>\n</tr>\n<tr>\n<td><code>reservation_attribute</code></td>\n<td>string</td>\n<td>Type or attribute of the reservation (e.g., <code>default</code>).</td>\n</tr>\n<tr>\n<td><code>experience</code></td>\n<td>object</td>\n<td>Details about the dining experience. <em>Optional, only required if experience will be booked.</em></td>\n</tr>\n<tr>\n<td><code>dining_area_id</code></td>\n<td>integer</td>\n<td>Identifier for the dining area. <em>Optional, only required if specific dining area will be booked.</em></td>\n</tr>\n<tr>\n<td><code>environment</code></td>\n<td>string</td>\n<td>Type of environment (e.g., <code>Indoor</code>, <code>Outdoor</code>). <em>Optional, only required if specific environment will be booked.</em></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"experience-object-attributes\">Experience Object Attributes</h3>\n<p><em>Note: This Data will be gathered from the GET Experiences API response. All attributes are required when booking an experience.</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Unique identifier for the experience.</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>Version of the experience.</td>\n</tr>\n<tr>\n<td><code>party_size_per_price_type</code></td>\n<td>array</td>\n<td>Array detailing the party size per price type. <em>Optional, applicable only if returned in GET Experiences API</em></td>\n</tr>\n<tr>\n<td><code>add_ons</code></td>\n<td>array</td>\n<td>Array of add-on items for the experience. <em>Optional, applicable only if returned in GET Experiences API</em></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"party_size_per_price_type-array-object-attributes\">Party_Size_Per_Price_Type Array Object Attributes</h3>\n<p><em>Note: This Data will be gathered from the GET Experiences API response. Optional, applicable only if returned in GET Experiences API</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Unique identifier for the price type.</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>integer</td>\n<td>Count of items for the price type.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"add_ons-array-object-attributes\">Add_Ons Array Object Attributes</h3>\n<p><em>Note: This Data will be gathered from the GET Experiences API response. Optional, applicable only if returned in GET Experiences API</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>item_id</code></td>\n<td>string</td>\n<td>Unique identifier for the add-on item.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Quantity of the add-on item.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li>Ensure the <code>restaurant_id</code>, <code>party_size</code>, <code>date_time</code>, and <code>experience</code> attributes are accurate for successful reservation creation.</li>\n</ul>\n<h2 id=\"response\">Response</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>expires_at</td>\n<td>string</td>\n<td>The expiration date and time of the slot lock in ISO 8601 format. The slot lock expires within 5 minutes.</td>\n</tr>\n<tr>\n<td>reservation_token</td>\n<td>string</td>\n<td>A unique token required for the subsequent reservation creation request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes-1\">Notes</h3>\n<ul>\n<li><p>The <code>expires_at</code> timestamp indicates when the slot lock expires. Ensure the reservation is completed before this time.</p>\n</li>\n<li><p>The <code>reservation_token</code> is required for the reservation creation request and ensures the slot remains locked during the reservation process.</p>\n</li>\n<li><p>If the <code>expires_at</code> time is reached without completing the reservation, the slot will be released.</p>\n</li>\n<li><p>Tokens should be treated securely and not exposed to unauthorized users.</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","booking","{{rid}}","slot_locks"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"0c1308d0-07f1-46f1-aa7f-f153a35d4aa4","name":"200","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"party_size\": 2,\n    \"date_time\": \"2025-10-13T16:00\",\n    \"reservation_attribute\": \"default\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    },\n    \"dining_area_id\": 2632,\n    \"environment\": \"Indoor\"\n}\n"},"url":"{{base-url}}/v2/booking/{{rid}}/slot_locks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"c57221ea-b815-4ba9-9568-9f2ccf2dab66"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"218"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/slot_locks"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 06 Jan 2025 21:19:51 GMT"},{"key":"Content-Length","value":"229"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"expires_at\": \"2025-01-06T21:24:50\",\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI2MTc3MzgxNDJ8MnwyMDI1LTEwLTEzVDE2OjAwfDEwMzgwMDcifQ.6uVQiE9gzI8nRxIP0qUjP2o__5pwV7DwYeW_0-VPq8oJUvltg-HIj8iel3acYzWeKZuQqLHNiBQ3VlSVeONYGQ\"\n}"}],"_postman_id":"24d0dfcc-80c6-4cf8-9e8d-65f29635d4a2"},{"name":"Slot Locks","id":"03bfbdef-9fee-47a9-87b3-ffa235345d05","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"url":"{{base-url}}/v2/booking/{{rid}}/slot_locks/{{reservation_token}}","description":"<h1 id=\"delete-slot-lock-api-documentation\">Delete Slot Lock API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The Delete Slot Lock API allows external partners to remove a reservation lock (slot lock) for a specific availability at a restaurant. By unlocking the slot, it becomes available for other customers to book.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL:</strong> <code>{{base-url}}/v2/booking/{{rid}}/slot_locks/{{reservation_token}}</code></p>\n<p><strong>Method:</strong> DELETE</p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h2 id=\"path-parameters\">Path Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>Unique identifier for the restaurant.</td>\n</tr>\n<tr>\n<td><code>reservation_token</code></td>\n<td>string</td>\n<td>The reservation token provided by the booking API when a slot is locked.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters</h3>\n<p>The API does not use query parameters for this endpoint.</p>\n<hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"error-responses\">Error Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Response Body</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td><code>{ \"errors\": [ { \"message\": \"reservation_token or restaurant id is invalid\" } ], \"requestid\": \"\" }</code></td>\n<td>The <code>reservation_token</code> or <code>rid</code> is invalid.</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td><code>{ \"errors\": [ { \"message\": \"Unexpected http status code received: GatewayTimeOut\" } ] }</code></td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure the <code>reservation_token</code> and <code>rid</code> are accurate to avoid errors.</p>\n</li>\n<li><p>The reservation token is provided by the booking API when a slot is locked.</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","booking","{{rid}}","slot_locks","{{reservation_token}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"5b167084-041e-47b6-ad9e-2793ec1f0bda","name":"200","originalRequest":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer ff6c42ab-d31c-4afe-84db-fc66bc9925ec"}],"url":"{{base-url}}/v2/booking/{{rid}}/slot_locks/{{reservation_token}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"OT-RequestId","value":"0223796e-4c6b-4ceb-8caa-d65ee91b0eb3"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"Content-Disposition","value":"inline;filename=f.txt"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"194"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/slot_locks/{reservationtoken}?{rid}"},{"key":"Content-Length","value":"20"},{"key":"Date","value":"Mon, 23 Dec 2024 20:14:05 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"Success\"\n}"}],"_postman_id":"03bfbdef-9fee-47a9-87b3-ffa235345d05"}],"id":"b45394b3-9da5-4008-9e1f-638178fa6510","description":"<h1 id=\"description\"><strong>Description</strong></h1>\n<p><strong>OVERVIEW</strong></p>\n<p>Slot Locks allow for the inventory that has been chosen by the booker to be locked for a total of 5 minutes. This allows that no other user can book the reservation while the initial booker completes their transaction. If a booking is attempted after the slot lock expiry, the booking can be re-tried, but availability is not guareenteed.</p>\n<p>Availability has already been verifies via the APIs, this step will block the availability for the diner and allow for booking.</p>\n<p>It is important to delete unused slot locks as it may block other bookers from accessing availability during the slot lock window.</p>\n<p>The five minute window is hard coded and cannot be edited.</p>\n<p><strong>HOW WILL THIS IMPACT RESTAURANTS?</strong></p>\n<p>Restaurant availability will be blocked for that specific user for the allotment of the slot lock window.</p>\n<img src=\"https://content.pstmn.io/4a041506-ea89-4068-ad98-3c0a4c4ca709/aW1hZ2UucG5n\" width=\"1276\" height=\"654\" />","_postman_id":"b45394b3-9da5-4008-9e1f-638178fa6510"},{"name":"Make Reservation","item":[{"name":"Make Res","id":"2b0d2fc2-9732-44f4-adea-7d8b902a23df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI2MTc3MzgxNDJ8MnwyMDI1LTEwLTEzVDE2OjAwfDEwMzgwMDcifQ.6uVQiE9gzI8nRxIP0qUjP2o__5pwV7DwYeW_0-VPq8oJUvltg-HIj8iel3acYzWeKZuQqLHNiBQ3VlSVeONYGQ\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"email_address\": \"JaneDoe@mailanator.com\",\n    \"phone\": {\n        \"number\": \"4155555555\",\n        \"country_code\": \"US\",\n        \"phone_type\": \"mobile\"\n    },\n    \"reservation_attribute\": \"default\",\n    \"special_request\": \"This is my special request\",\n    \"restaurant_email_marketing_opt_in\": \"true\",\n    \"dining_area_id\": \"2632\",\n    \"environment\": \"Indoor\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},"url":"{{base-url}}/v2/booking/{{rid}}/reservations","description":"<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL:</strong> {{base-url}}<code>/v2/booking/{{rid}}/reservations</code></p>\n<p><strong>Method:</strong> POST</p>\n<p>This endpoint creates a new reservation for a restaurant. It expects a JSON payload containing all the required information for the reservation.</p>\n<hr />\n<h2 id=\"request-body\">Request Body</h2>\n<p>The request payload consists of the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>reservation_token</code></td>\n<td>String</td>\n<td>A unique token identifying the temporary hold on a table from a previous call.</td>\n</tr>\n<tr>\n<td><code>first_name</code></td>\n<td>String</td>\n<td>The first name of the guest making the reservation.</td>\n</tr>\n<tr>\n<td><code>last_name</code></td>\n<td>String</td>\n<td>The last name of the guest making the reservation.</td>\n</tr>\n<tr>\n<td><code>email_address</code></td>\n<td>String</td>\n<td>The email address of the guest.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>Object</td>\n<td>The guest's phone number (see <strong>Phone Object</strong>).</td>\n</tr>\n<tr>\n<td><code>reservation_attribute</code></td>\n<td>String</td>\n<td>The seating option (default, hightop, bar, counter, outdoor).</td>\n</tr>\n<tr>\n<td><code>special_request</code></td>\n<td>String</td>\n<td>Any special requests for the reservation. (75 character max)</td>\n</tr>\n<tr>\n<td><code>credit_card</code></td>\n<td>Object (optional)</td>\n<td>Credit card details for the reservation (see <strong>Credit Card Object</strong>).</td>\n</tr>\n<tr>\n<td><code>login_name</code></td>\n<td>String (optional)</td>\n<td>Used for concierge/referral details.</td>\n</tr>\n<tr>\n<td><code>restaurant_email_marketing_opt_in</code></td>\n<td>Boolean or null (optional)</td>\n<td>If true, opts the guest into email marketing by the restaurant.</td>\n</tr>\n<tr>\n<td><code>opentable_marketing_opt_in</code></td>\n<td>Boolean or null (optional)</td>\n<td>If true, opts the guest into email marketing from OpenTable. Setting as null doesn't change opt-in / opt-out status</td>\n</tr>\n<tr>\n<td><code>sms_notifications_opt_in</code></td>\n<td>Boolean (optional)</td>\n<td>If true, the guest opts in to receive SMS notifications.</td>\n</tr>\n<tr>\n<td><code>dining_area_id</code></td>\n<td>Integer (optional)</td>\n<td>The unique identifier for the dining area. <em>Optional, only required if specific dining area will be booked.</em></td>\n</tr>\n<tr>\n<td><code>environment</code></td>\n<td>String (optional)</td>\n<td>The environment for the dining experience (e.g., Indoor, Outdoor). <em>Optional, only required if specific environment will be booked.</em></td>\n</tr>\n<tr>\n<td><code>experience</code></td>\n<td>Object (optional)</td>\n<td>Details about the dining experience. <em>Optional, only required if experience will be booked.</em> (see <strong>Experience Object</strong>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"phone-object\">Phone Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>number</code></td>\n<td>String</td>\n<td>The phone number of the guest.</td>\n</tr>\n<tr>\n<td><code>country_code</code></td>\n<td>String</td>\n<td>The country code for the number.</td>\n</tr>\n<tr>\n<td><code>phone_type</code></td>\n<td>String</td>\n<td>The type of phone (e.g., Mobile).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"credit-card-object\">Credit Card Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>token</code></td>\n<td>String</td>\n<td>A token representing the credit card.</td>\n</tr>\n<tr>\n<td><code>last4</code></td>\n<td>String</td>\n<td>The last four digits of the credit card.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"experience-object\">Experience Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the experience.</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>Integer</td>\n<td>The version of the experience.</td>\n</tr>\n<tr>\n<td><code>party_size_per_price_type</code></td>\n<td>Array of Objects</td>\n<td>Party sizes for each price type (see <strong>Party Size Object</strong>).</td>\n</tr>\n<tr>\n<td><code>add_ons</code></td>\n<td>Array of Objects</td>\n<td>List of add-ons selected for the reservation (see <strong>Add-Ons Object</strong>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"party-size-per-price-type-object\">Party Size Per Price Type Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the party size.</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>Integer</td>\n<td>The number of guests for this price type.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"add-ons-object\">Add-Ons Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>item_id</code></td>\n<td>String</td>\n<td>The unique identifier for the add-on item.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>The quantity of the add-on item selected.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response\">Response</h2>\n<p>Upon successful creation of a reservation, the API returns the reservation details along with a unique reservation ID and confirmation details.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Booking policy details for the reservation. Same as the booking policy message for the reservation.</td>\n</tr>\n<tr>\n<td><code>confirmation_number</code></td>\n<td>integer</td>\n<td>Unique identifier for the confirmed reservation.</td>\n</tr>\n<tr>\n<td><code>offer_confirmation_number</code></td>\n<td>integer</td>\n<td>Unique identifier for any special offer linked to the reservation.</td>\n</tr>\n<tr>\n<td><code>date_time</code></td>\n<td>string</td>\n<td>Date and time of the reservation in ISO 8601 format.</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>Number of guests included in the reservation.</td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string</td>\n<td>Special requests or notes provided during the reservation.</td>\n</tr>\n<tr>\n<td><code>manage_reservation_url</code></td>\n<td>string</td>\n<td>URL to manage the confirmed reservation online.</td>\n</tr>\n<tr>\n<td><code>cancel_cutoff_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of last possible time when the record can be cancelled (UTC time).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>The <code>message</code> provides important booking policy information such as grace periods and contact instructions.</p>\n</li>\n<li><p>The <code>manage_reservation_url</code> can be shared with guests to modify or cancel the reservation if needed.</p>\n</li>\n<li><p>The <code>confirmation_number</code> and <code>offer_confirmation_number</code> serve as unique identifiers for tracking purposes.</p>\n</li>\n<li><p>Ensure the provided <code>date_time</code> and <code>party_size</code> align with the guest’s booking details.</p>\n</li>\n</ul>\n<h3 id=\"common-errors\">Common Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>API Endpoint</th>\n<th>Reason for the Error</th>\n<th>Error Message</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>All Endpoints</strong></td>\n<td>Invalid or Expired Token provided</td>\n<td>invalid_token</td>\n<td>401 Unauthorized</td>\n</tr>\n<tr>\n<td><strong>Slot Lock</strong></td>\n<td>No available partysize for the time submitted</td>\n<td>SlotNotAvailableError - Failed to obtain a valid slot lock ID</td>\n<td>404 Not Found</td>\n</tr>\n<tr>\n<td><strong>Slot Lock</strong></td>\n<td>Party Size missing</td>\n<td>party_size should not be null</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Slot Lock</strong></td>\n<td>Date_Time missing</td>\n<td>date_time should not be null</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Slot Lock</strong></td>\n<td>Restaurant ID missing</td>\n<td>restaurant_id should not be null</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Slot Lock</strong></td>\n<td>Unsupported partysize entered (1-20 is required)</td>\n<td>SlotNotAvailableError - Failed to obtain a valid slot lock ID</td>\n<td>404 Not Found</td>\n</tr>\n<tr>\n<td><strong>Slot Lock</strong></td>\n<td>Invalid Restaurant ID</td>\n<td>MissingResource - Resource not found Restaurant, ID = 140608123</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Slot Lock</strong></td>\n<td>Failed to obtain a valid Slot Lock</td>\n<td>SlotNotAvailableError - Failed to obtain a valid slot lock ID</td>\n<td>404 Not Found</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Restaurant ID missing</td>\n<td>restaurant_id should not be null</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Reservation Token missing</td>\n<td>reservation_token is required if slotlock flow is used. date_time and party_size is required if slotlock flow is <em>not</em> used.</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>First Name missing</td>\n<td>first_name should not be empty</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Last Name missing</td>\n<td>last_name should not be empty</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Email address missing</td>\n<td>email_address should not be empty</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Phone Number missing</td>\n<td>ValidationError - PhoneRequired: phone Not Provided, country US, type Mobile</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Phone Number Country Code missing</td>\n<td>ValidationError - NoCountryID: phone 1113332222, country Not Provided, type Mobile</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Invalid/Expired Reservation Token or reservation slot was consumed by restaurant directly</td>\n<td>reservation_token is invalid</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Invalid/Inapplicable Reservation Token</td>\n<td>SlotStatusError - NoTimesReasons: NotFarEnoughInAdvance</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Invalid Restaurant ID</td>\n<td>reservation_token is invalid</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Already a reservation for that diner within a 2 +/- hour window</td>\n<td>DinerHasOverlappingReservations - Request violated business rule: DinerHasOverlappingReservations</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Email address invalid</td>\n<td>[Email] Email address is not from a known domain ‘opentable.con’</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Phone number too long</td>\n<td>ValidationError - IllegalPhoneNumberLength: phone 11122233333333333, country US, type Mobile</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Credit Card required for reservation</td>\n<td>SlotStatusError - CreditCardRequired</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Inactive Restaurant</td>\n<td>MissingResource - Resource not found Restaurant, ID = 214390</td>\n<td>404 Not Found</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Restaurant is having connectivity issues</td>\n<td>ReservationTransactionError - Restaurant not in Active state</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Restaurant does not accept online reservations</td>\n<td>SlotStatusError - NoTimesReasons: NotActive</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>Error with the OpenTable Partner service and Admin Cache needs to be refreshed</td>\n<td>GeneralError - Failed to calculate points: OTAPI: Partner.Load() - Partner ID not found: 5342</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Make Reservation</strong></td>\n<td>The email address and person associated to the diner making the reservation has been deactivated by OpenTable.</td>\n<td>UserFraudStatusError - User with GPID=XXXXXXXXXX is not Active</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Cancel Reservation</strong></td>\n<td>Reservation has already passed and no longer can be canceled</td>\n<td>MissingResource - Reservation details [RID = 214390, CONF_NUM = 53]</td>\n<td>404 Not Found</td>\n</tr>\n<tr>\n<td><strong>Cancel Reservation</strong></td>\n<td>Reservation has a credit card on file and the deadline to cancel online has already passed.</td>\n<td>CreditCardCutoff - CreditCardCutoff</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Cancel Reservation</strong></td>\n<td>Reservation time has passed and you can not cancel the reservation.</td>\n<td>SlotStatusError - InThePast</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Modify Reservation</strong></td>\n<td>Attempt to modify a reservation to a party size higher that the restaurant allows</td>\n<td>SlotStatusError - NoTimesReasons: AboveMaxPartySize”</td>\n<td>409 Conflict</td>\n</tr>\n<tr>\n<td><strong>Experiences</strong></td>\n<td>CreditCardTokenSCARequired</td>\n<td>SCA Required</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Experiences</strong></td>\n<td>Required Long parameter 'rid' is not present</td>\n<td>If the RID Parameter is not provided or invalid</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td><strong>Experiences</strong></td>\n<td>Invalid restaurant ID: -1</td>\n<td>If the RID Parameter is not provided or invalid</td>\n<td>400 Bad Request</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","booking","{{rid}}","reservations"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"9d2414cf-fd2e-457f-b322-7d1e9a0a5424","name":"200","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI2MTc3MzgxNDJ8MnwyMDI1LTEwLTEzVDE2OjAwfDEwMzgwMDcifQ.6uVQiE9gzI8nRxIP0qUjP2o__5pwV7DwYeW_0-VPq8oJUvltg-HIj8iel3acYzWeKZuQqLHNiBQ3VlSVeONYGQ\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"email_address\": \"JaneDoe@mailanator.com\",\n    \"phone\": {\n        \"number\": \"4155555555\",\n        \"country_code\": \"US\",\n        \"phone_type\": \"mobile\"\n    },\n    \"reservation_attribute\": \"default\",\n    \"special_request\": \"This is my special request\",\n    \"credit_card\": {\n        \"token\": \"tok_0SDBnhjrulGLaJAMRTatEB0N\",\n        \"last4\": \"4242\"\n    },\n    \"restaurant_email_marketing_opt_in\": \"true\",\n    \"dining_area_id\": \"2632\",\n    \"environment\": \"Indoor\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},"url":"{{base-url}}/v2/booking/{{rid}}/reservations"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"1a84a330-5edd-4d4f-b47d-306f93d7c23a"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Location","value":"/booking/reservations/1038007-1751"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"1364"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/reservations"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 06 Jan 2025 21:21:08 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"We have a 5 minute grace period. Please call us if you are running later than 5 minutes after your reservation time.<br /><br />We may contact you about this reservation, so please ensure your email and phone number are up to date.<br /><br />Your table will be reserved for 1 hour 30 minutes for parties of up to 2; 2 hours for parties of up to 4; 2 hours 30 minutes for parties of up to 6; and 3 hours for parties of 7+.\",\n    \"confirmation_number\": 1751,\n    \"offer_confirmation_number\": 0,\n    \"date_time\": \"2025-10-13T16:00\",\n    \"party_size\": 2,\n    \"notes\": \"This is my special request\",\n    \"manage_reservation_url\": \"https://www.opentable.com/book/view?rid=1038007&confnumber=1751&token=01EMM9tRYsZ5LWf59HhG_iCHIzHSs1Spu-9JvrwKx0nzI1\"\n}"}],"_postman_id":"2b0d2fc2-9732-44f4-adea-7d8b902a23df"}],"id":"b1c1ac75-7821-4263-b3d3-e1c5c2ff4fca","description":"<h1 id=\"description\"><strong>Description</strong></h1>\n<p><strong>OVERVIEW</strong></p>\n<p>This will book and confirm the reservation. It confirms the slot lock and must be made within 5 minutes of slot lock (expires_at slot lock parameter).</p>\n<p><strong>Requirements</strong></p>\n<ol>\n<li><p>Request body must be encoded in UTF-8 format. StringEntity encodes as ISO-8859-1 as default if you do not specify the encoding format. ISO-8859-1 is not the supported format for JSON.</p>\n</li>\n<li><p>Responses are compressed using gzip and added a “Content-Encoding: gzip” header in the response to indicate that the response body has been compressed. Supporting “Content-Encoding” allows servers to compress responses, saving bandwidth. This will improve performance, especially on slower networks. Modern web browsers and HTTP clients all support common compression formats like gzip and deflate.</p>\n</li>\n<li><p>Optional request header \"Accept-Language: [Locale]\" (default is en-US) for email communications sent in alternate language &amp; locale.</p>\n</li>\n</ol>\n<p><strong>References:</strong></p>\n<ul>\n<li><p>RFC | <a href=\"https://www.ietf.org/rfc/rfc4627.txt\">https://www.ietf.org/rfc/rfc4627.txt</a></p>\n</li>\n<li><p>Wikipedia | <a href=\"https://en.wikipedia.org/wiki/JSON\">https://en.wikipedia.org/wiki/JSON</a> “JSON exchange in an open ecosystem must be encoded in UTF-8”</p>\n</li>\n</ul>\n<p><strong>Supported Accept Language values:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Locale Code</strong></th>\n<th><strong>Language - Region</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>en-US</code></td>\n<td>English - United States</td>\n</tr>\n<tr>\n<td><code>ja-JP</code></td>\n<td>Japanese - Japan</td>\n</tr>\n<tr>\n<td><code>de-DE</code></td>\n<td>German - Germany</td>\n</tr>\n<tr>\n<td><code>fr-FR</code></td>\n<td>French - France</td>\n</tr>\n<tr>\n<td><code>es-ES</code></td>\n<td>Spanish - Spain</td>\n</tr>\n<tr>\n<td><code>es-MX</code></td>\n<td>Spanish - Mexico</td>\n</tr>\n<tr>\n<td><code>zh-TW</code></td>\n<td>Chinese - Taiwan</td>\n</tr>\n<tr>\n<td><code>nl-NL</code></td>\n<td>Dutch - The Netherlands</td>\n</tr>\n<tr>\n<td><code>en-AU</code></td>\n<td>English - Australia</td>\n</tr>\n<tr>\n<td><code>en-CA</code></td>\n<td>English - Canada</td>\n</tr>\n<tr>\n<td><code>en-IE</code></td>\n<td>English - Ireland</td>\n</tr>\n<tr>\n<td><code>en-GB</code></td>\n<td>English - United Kingdom</td>\n</tr>\n<tr>\n<td><code>fr-CA</code></td>\n<td>French - Canada</td>\n</tr>\n<tr>\n<td><code>it-IT</code></td>\n<td>Italian - Italy</td>\n</tr>\n<tr>\n<td><code>pt-BR</code></td>\n<td>Portuguese - Brazil</td>\n</tr>\n<tr>\n<td><code>pt-PT</code></td>\n<td>Portuguese - Portugal</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>HOW WILL THIS IMPACT RESTAURANTS?</strong></p>\n<p>With this API, restaurants can receive online reservations via the API. Reservations will automatically show in the reservation list and any applicable deposit, experience or booking policy can also be referenced.</p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdNDcfuwJFiKhVKNa-L2qMQ2Nw2YamVAn-sL6VXqZZMXzRwNgjehY2vnaQImY-GG9jHR05qKX7bpdeF55wZYI1REP9nwPUiCq02we2WDM_7cxUnpf8NJSbbgUuG5j10IM5IiWp8?key=1sc8NXY0brb4x8F-_CIwjKFb\" />\n\n<h2 id=\"credit-card-processing\">Credit Card Processing</h2>\n<p>As part of the <strong>Make Reservation</strong> request, the below process can be followed to vault a credit card with Stripe, our partner used for all credit card related transactions.</p>\n<p>Additional Credit_Card Request Body Fields (added to the <strong>make reservation</strong> request)</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>credit_card:token</code></td>\n<td>string</td>\n<td>The “id” returned from vaulting the credit card using the Stripe API “create a card token” POST, <a href=\"https://stripe.com/docs/api/tokens/create_card\">Stripe API Documentation</a>.</td>\n</tr>\n<tr>\n<td><code>credit_card:last4</code></td>\n<td>string</td>\n<td>The “last4” returned from vaulting the credit card using the Stripe API “create a card token” POST, <a href=\"https://stripe.com/docs/api/tokens/create_card\">Stripe API Documentation</a>.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Stripe API details and tokenization</strong></p>\n<p>In order to generate the required <strong>credit_card</strong> parameters for the <strong>make reservation</strong> request, you will need to use the process detailed by Stripe in their API documentation, <a href=\"https://stripe.com/docs/api/tokens/create_card\">https://stripe.com/docs/api/tokens/create_card</a>, to generate the Stripe token “id” and “last4”. We have included the basic requirements, however these are subject to change, are not inclusive of what is supported, and are not supported directly by OpenTable. Please review the Stripe documentation for further details and information.</p>\n<p>As part of the Stripe API call, you will set the content-type as x-www-form-urlencoded and the authorization is the bearer token provided by OpenTable. For this you will need the OpenTable Stripe Publishable Key. Please contact the API team at OpenTable and they will securely supply the pre-production and production Stripe keys.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>card\\[number\\]</code></td>\n<td>string</td>\n<td>The credit card number this token will represent, without any separators.</td>\n</tr>\n<tr>\n<td><code>card\\[exp_month\\]</code></td>\n<td>number</td>\n<td>Two-digit number representing the card’s expiration month.</td>\n</tr>\n<tr>\n<td><code>card\\[exp_year\\]</code></td>\n<td>number</td>\n<td>Two- or four-digit number representing the card’s expiration year.</td>\n</tr>\n<tr>\n<td><code>card\\[cvc\\]</code></td>\n<td>number</td>\n<td>Card security code.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">Sample Request Body  \ncurl -X POST  \n'[https://platform.otqa.com/booking/reservations'](https://platform.otqa.com/booking/reservations')  \n\\-H 'authorization: Bearer \\[Access Token\\]'  \n\\-H 'cache-control: no-cache'  \n\\-H 'content-type: application/json'  \n\\-d '  \nSample Response: 200 OK  \n{  \n\"restaurant_id\": 334879,  \n\"reservation_token\": \"\\[Reservation Token from Lock\\]\",  \n\"first_name\": \"John\",  \n\"last_name\": \"Smith\",  \n\"email_address\": \"[john.smith@sample-email.com](https://mailto:john.smith@sample-email.com)\",  \n\"phone\": {  \n\"number\": \"4153444200\",  \n\"country_code\": \"US\",  \n\"phone_type\": \"Mobile\"  \n},  \n\"reservation_attribute\": \"outdoor\",  \n\"special_request\": \"Please seat us at a round table.\",  \n\"credit_card\": {  \n\"token\": \"tok_XXXXXXXXX\",  \n\"last4\": \"4242\"  \n},  \n\"restaurant_email_marketing_opt_in\": false,  \n\"is_third_party\": false  \n}\n\n</code></pre>\n<p>The Stripe Request will generate a response with many details, however for OpenTable booking purposes, only “<strong>id</strong>” and “<strong>last4</strong>” are required for the basic make reservation request. Refer to the Stripe documentation with any other questions around the full response payload.</p>\n<p><strong>Stripe and SCA (Strong Customer Authentication)</strong><br />In some instances, when a credit card is tokenized and vaulted with Stripe, there is an additional authentication step required from the diner, known as Strong Customer Authentication, or <strong>SCA</strong>. To read more about Stripe and SCA, you can view their documentation here, <a href=\"https://stripe.com/docs/strong-customer-authentication\">https://stripe.com/docs/strong-customer-authentication</a>.</p>\n<p>In instances of required SCA, when the partner submits the <strong>make reservation</strong> request, if Stripe responds to the OpenTable credit card vaulting that SCA is needed, OpenTable will return a 424 Failed Dependency error message (example provided). When SCA is required, the partner must present a UI element to the diner to approve the credit card transaction (see below Stripe APIs).</p>\n<p><strong>OpenTable Requirements for SCA verification for credit card holds</strong><br />In the 424 Failed Dependency error response, OpenTable will return the following pieces of information. You will need to store this for your follow-up API calls to Stripe and your new <strong>make reservation</strong> request to OpenTable.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>stripeToken</code></td>\n<td>string</td>\n<td>The original token from the Stripe credit card tokenization that was submitted in the make reservation request.</td>\n</tr>\n<tr>\n<td><code>clientSecret</code></td>\n<td>string</td>\n<td>Used to call the Stripe SCA API endpoints to retrieve the <code>setup_intent</code> for the follow-up make reservation request to OpenTable.</td>\n</tr>\n<tr>\n<td><code>paymentMethod</code></td>\n<td>string</td>\n<td>Used when making the follow-up make reservation request to OpenTable.</td>\n</tr>\n<tr>\n<td><code>connectedAccountPk</code></td>\n<td>string</td>\n<td>This will be used at the authorization header bearer token for the Stripe APIs (below) in lieu of the OpenTable Stripe authorization bearer token (and the previously used OpenTable Stripe authorization header bearer will not be used).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Once you present the UI element for the diner to approve the transaction, call the Stripe APIs (below), Stripe will return the <strong>setup_intent</strong>. You will use this in the follow-up modified <strong>make reservation</strong> request to OpenTable.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">OpenTable response for SCA Required 424 error for credit card holds:\n{\n    \"errors\": [\n    {\n        \"message\": \"CreditCardTokenSCARequired\",\n        \"details\": {\n        \"stripeToken\": \"tok_Fp8cLrD3NSkDRz\",\n        \"clientSecret\": \"seti_1FJULqCpqyzgzbXS1NOKWBib_secret_Fp8dlPMpxYWak99cjjth3UM0GKvFPWU\",\n        \"paymentMethod\": \"pm_1FJULqCpqyzgzbXSWawUCC4n\",\n        \"connectedAccountPk\": \"pk_test_GvfiPXSbQ3eo6R4eKo8NL5Pk00qeYMWQuz\"\n        }\n    }\n    ],\n    \"requestid\": \"3c2e3a10-38a6-40d8-bffe-71ede613b3a9\"\n    }\n\n</code></pre>\n<p><strong>OpenTable Make Reservation SCA parameters for credit card holds</strong></p>\n<p>After allowing the diner to accept the credit card transaction and completing the Stripe SCA APIs, using the original stripe <strong>token</strong>, with the <strong>last4</strong>, and the <strong>paymentMethod</strong> returned from the 424 Failed Dependency error message, you will use the <strong>setupIntent</strong> from the SCA response and add those to the <strong>make reservation</strong> body (in the same method as you added the original <strong>credit_card</strong> body).</p>\n<p><strong>Stripe APIs to use for SCA verification</strong></p>\n<p>The below are Stripe resources used to call Stripe and get back the requirements to submit back to OpenTable for the <strong>make reservation</strong> request.</p>\n<ul>\n<li><p>Stripe JavaScript API | <a href=\"https://stripe.com/docs/js/setup_intents/confirm_card_setup\">https://stripe.com/docs/js/setup_intents/confirm_card_setup</a></p>\n</li>\n<li><p>Stripe iOS SDK | <a href=\"https://stripe.dev/stripe-ios/docs/index.html\">https://stripe.dev/stripe-ios/docs/index.html</a></p>\n</li>\n</ul>\n<p><strong>OpenTable Requirements for SCA verification for prepaid experiences</strong></p>\n<p>In the 424 Failed Dependency error response, OpenTable will return the following pieces of information. You will need to store this for your follow-up API calls to Stripe and your new <strong>make reservation</strong> request to OpenTable.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>stripeToken</code></td>\n<td>string</td>\n<td>The original token from the Stripe credit card tokenization that was submitted in the make reservation request.</td>\n</tr>\n<tr>\n<td><code>clientSecret</code></td>\n<td>string</td>\n<td>Used to call the Stripe SCA API endpoints to retrieve the <code>payment_intent</code> for the follow-up make reservation request to OpenTable.</td>\n</tr>\n<tr>\n<td><code>paymentMethod</code></td>\n<td>string</td>\n<td>Used when making the follow-up make reservation request to OpenTable.</td>\n</tr>\n<tr>\n<td><code>connectedAccountPk</code></td>\n<td>string</td>\n<td>This will be used as the authorization header bearer token for the Stripe APIs instead of the OpenTable Stripe authorization bearer token.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Once you present the UI element for the diner to approve the transacation, call the Stripe APIs (below), Stripe will return the <strong>payment_intent</strong>. You will use this in the follow-up modified <strong>make reservation</strong> request to OpenTable.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">OpenTable response for SCA Required 424 error for prepaid experiences:\n{\n    \"errors\": [\n    {\n        \"message\": \"CreditCardTokenSCARequired - SCAForPayment\",\n        \"details\": {\n        \"stripeToken\": \"tok_0Mf90jjrulGLaJAMMKERcecp\",\n        \"clientSecret\": \"pi_3Mf94PBf02EU9tgq0MEhjyCw_secret_LYhAPaXbcCphUGOQKgzjiMalN\",\n        \"paymentMethod\": \"pm_1Mf94PBf02EU9tgqSbtMncPh\",\n        \"connectedAccountPk\": \"pk_test_51HHB6EBf02EU9tgqyXTYwje0cm3NrKU1JaahO4DKBLoHt4jix8X80b57UfFzToCBjc4GRXWiKjdFsYTrQNgLC3oS007wF7q7GZ\"\n        }\n    }\n    ],\n    \"requestid\": \"ec416096-cf30-42ce-a517-9d67fb526a23\"\n    }\n\n</code></pre>\n<p><strong>OpenTable Make Reservation SCA parameters for prepaid experiences</strong></p>\n<p>After allowing the diner to accept the credit card transaction and completing the Stripe SCA APIs, using the original stripe <strong>token</strong>, with the <strong>last4</strong>, and the <strong>paymentMethod</strong> returned from the 424 Failed Dependency error message, you will use the <strong>paymentIntent</strong> from the SCA response and add those to the <strong>make reservation</strong> body (in the same method as you added the original <strong>credit_card</strong> body).</p>\n<p><strong>Stripe APIs to use for SCA verification for prepaid experiences</strong></p>\n<p>The below are Stripe resources used to call Stripe and get back the requirements to submit back to OpenTable for the <strong>make reservation</strong> request.</p>\n<ul>\n<li><p>Stripe JavaScript API | <a href=\"https://docs.stripe.com/js/payment_intents/confirm_card_payment\">https://docs.stripe.com/js/payment_intents/confirm_card_payment</a></p>\n</li>\n<li><p>Stripe iOS SDK | <a href=\"https://stripe.dev/stripe-ios/docs/index.html\">https://stripe.dev/stripe-ios/docs/index.html</a></p>\n</li>\n</ul>\n","_postman_id":"b1c1ac75-7821-4263-b3d3-e1c5c2ff4fca"},{"name":"Policies","item":[{"name":"Booking Policies","id":"0290fb98-be7b-4789-8458-00bd2b8c8d0c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/booking-policies/{{rid}}/{{date}}/{{time}}/{{partysize}}?dinerContext=details","description":"<h2 id=\"booking-policies-api-documentation\">Booking Policies API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><code>{{base-url}}/v2/booking-policies/{{rid}}/{YEAR-MONTH-DAY}/{TIME}/{PartySize}</code></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<ul>\n<li><p><strong>rid (restaurant id)</strong>: A static identifier for each restaurant.</p>\n</li>\n<li><p><strong>date (YEAR-MONTH-DAY)</strong>: Specifies the booking date. Example: <code>2024-12-01</code>.</p>\n</li>\n<li><p><strong>time (TIME)</strong>: Specifies the time of the reservation. Must be in 15-minute intervals (<code>7:00</code>, <code>7:15</code>, <code>7:30</code>, <code>7:45</code>).</p>\n</li>\n<li><p><strong>PartySize</strong>: Specifies the number of guests for the booking policy query.</p>\n</li>\n</ul>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>dinerContext</code></td>\n<td>string</td>\n<td>Must be set to <code>details</code> only.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-elements\">Response Elements</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Policies</code></td>\n<td>array</td>\n<td>Contains available policies</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"policies-attributes\">Policies Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Message</code></td>\n<td>string</td>\n<td>Describes any available messages.</td>\n</tr>\n<tr>\n<td>Type</td>\n<td>string</td>\n<td>Usually <code>General</code>. Represents the policy type.</td>\n</tr>\n<tr>\n<td><code>Language</code></td>\n<td>array</td>\n<td>Specifies the language details of the policy.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"language-attributes\">Language Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Code</td>\n<td>string</td>\n<td>Language code.</td>\n</tr>\n<tr>\n<td>Region</td>\n<td>string</td>\n<td>Region associated with language.</td>\n</tr>\n<tr>\n<td>IETF</td>\n<td>string</td>\n<td>IETF language code format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","booking-policies","{{rid}}","{{date}}","{{time}}","{{partysize}}"],"host":["{{base-url}}"],"query":[{"key":"dinerContext","value":"details"}],"variable":[]}},"response":[{"id":"d86d3038-d571-4b54-814e-490422279a2d","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":{"raw":"{{base-url}}/v2/booking-policies/{{rid}}/{{date}}/{{time}}/{{partysize}}?dinerContext=details","host":["{{base-url}}"],"path":["v2","booking-policies","{{rid}}","{{date}}","{{time}}","{{partysize}}"],"query":[{"key":"dinerContext","value":"details"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"72ea2a04-bb79-4f41-8eed-4d9669ded136"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"73"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v1/booking-policies/{rid}/{date}/{time}/{partySize}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 20:21:52 GMT"},{"key":"Content-Length","value":"266"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"Policies\": [\n        {\n            \"Message\": \"We have a 15 minute grace period. Please call us if you are running later than 15 minutes after your reservation time.<br /><br />Your table will be reserved for 1 hour 30 minutes for parties of up to 2; 2 hours for parties of up to 4; 2 hours 30 minutes for parties of up to 6; and 3 hours for parties of 7+.\",\n            \"Type\": \"General\",\n            \"Language\": {\n                \"Code\": \"en\",\n                \"Region\": \"US\",\n                \"IETF\": \"en-US\"\n            }\n        }\n    ]\n}"}],"_postman_id":"0290fb98-be7b-4789-8458-00bd2b8c8d0c"},{"name":"Cancellation Policies","id":"a2b91ea7-e2b8-4de1-b677-fe25f144a15c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/cancellation-policies/{{rid}}/{{cancelationid}}","description":"<h2 id=\"cancellation-policies-api-documentation\">Cancellation Policies API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>URL:</strong> <code>{{base-url}}/v2/cancellation-policies/{rid}/{cancelationid}</code></p>\n<p><strong>Method:</strong> GET</p>\n<h3 id=\"description\">Description</h3>\n<p>The cancellation policy endpoint allows you to retrieve the cancellation policy for a reservation based on the restaurant ID and cancellation ID. The <code>cancelationid</code> is obtained from the response of the GET Availability call.</p>\n<h3 id=\"sample-request\">Sample Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location '{{base-url}}/v2/cancellation-policies/{rid}/{cancelationid}' \\\n--header 'Authorization: bearer '\n\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"partySize\": 5,\n    \"policyType\": \"Deposit\",\n    \"depositDetails\": {\n        \"amount\": 1500,\n        \"currency\": \"USD\",\n        \"denominator\": 100,\n        \"type\": \"PerGuest\"\n    },\n    \"cutOff\": {\n        \"cutoffType\": \"DaysBefore\",\n        \"daysBeforeCutoff\": 2\n    }\n}\n\n</code></pre>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partySize</code></td>\n<td>integer</td>\n<td>The number of guests for the reservation.</td>\n</tr>\n<tr>\n<td>`policyType`</td>\n<td>string</td>\n<td>Type of cancellation policy.</td>\n</tr>\n<tr>\n<td><code>depositDetails</code></td>\n<td>object</td>\n<td>Details of the deposit policy.</td>\n</tr>\n<tr>\n<td><code>depositDetails.amount</code></td>\n<td>integer</td>\n<td>Deposit amount in minor currency units.</td>\n</tr>\n<tr>\n<td><code>depositDetails.currency</code></td>\n<td>string</td>\n<td>Currency of the deposit amount.</td>\n</tr>\n<tr>\n<td><code>depositDetails.denominator</code></td>\n<td>integer</td>\n<td>Conversion factor for minor units.</td>\n</tr>\n<tr>\n<td><code>depositDetails.type</code></td>\n<td>string</td>\n<td>Specifies if the deposit is per guest.</td>\n</tr>\n<tr>\n<td><code>cutOff</code></td>\n<td>object</td>\n<td>Cutoff policy details.</td>\n</tr>\n<tr>\n<td><code>cutOff.cutoffType</code></td>\n<td>string</td>\n<td>Type of cutoff applied.</td>\n</tr>\n<tr>\n<td><code>cutOff.daysBeforeCutoff</code></td>\n<td>integer</td>\n<td>Number of days before cutoff.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure you use a valid <code>cancelationid</code> retrieved from the Make Reservation call.</p>\n</li>\n<li><p>The cutoff policy specifies the period within which cancellations are allowed.</p>\n</li>\n<li><p>The deposit amount is specified in minor currency units (e.g., cents for USD).</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","cancellation-policies","{{rid}}","{{cancelationid}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"910156f8-403f-4b3f-abb4-135339eb2f6b","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/cancellation-policies/{{rid}}/{{cancelationid}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"d3f3ee25-870a-4848-a089-50fe89822b19"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"78"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v1/cancellation-policies/{rid}/{policyId}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Tue, 07 Jan 2025 03:05:44 GMT"},{"key":"Content-Length","value":"158"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"partySize\": 5,\n    \"policyType\": \"Deposit\",\n    \"depositDetails\": {\n        \"amount\": 1500,\n        \"currency\": \"USD\",\n        \"denominator\": 100,\n        \"type\": \"PerGuest\"\n    },\n    \"cutOff\": {\n        \"cutoffType\": \"DaysBefore\",\n        \"daysBeforeCutoff\": 2\n    }\n}"},{"id":"a357aecc-e6a7-4055-8781-2caaf727734d","name":"Cancellation Policies","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/cancellation-policies/{{rid}}/{{cancelationid}}"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"a2b91ea7-e2b8-4de1-b677-fe25f144a15c"}],"id":"fa7e08ca-c23d-42cd-ae9f-51206a012ecc","description":"<p><strong>OVERVIEW</strong></p>\n<p>Booking Policies allow the restaurants to expose any specific details they would like the diner to know when they book the reservation.</p>\n<p>These details should be exposed when the diner is confirming the reservation so that they understand the terms of the reservations. These can be as simple as \"We offer valet parking...\" to \"Deposit of $50.00 will be collected if there is a no show\".</p>\n<p>A few notes:</p>\n<ul>\n<li><p>The custom details added by restaurants will have a maximum of 500 characters.</p>\n</li>\n<li><p>Booking and Cancellation Policies can vary by date and party size.</p>\n</li>\n<li><p>If no policies are available, the APIs will return an empty response.</p>\n</li>\n</ul>\n<p>Below is an example of how these details are exposed in OpenTable.com during the booking path.</p>\n<img src=\"https://content.pstmn.io/d0fd4df5-8287-41a6-a112-090d0c6fc613/aW1hZ2UucG5n\" width=\"811\" height=\"800\" />","_postman_id":"fa7e08ca-c23d-42cd-ae9f-51206a012ecc"},{"name":"Modify or Cancel Reservations","item":[{"name":"Modify Res","id":"0fc6793e-5f32-4b5e-a9d8-c598d53c326b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"party_size\": 2,\n    \"date_time\": \"2025-11-13T16:00\",\n    \"reservation_attribute\": \"default\",\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI5OTgyNjg2Mzd8MnwyMDI1LTExLTEzVDE2OjAwfDEwMzgwMDcifQ.SEmbFYjVeGjmFzh987EzHCjg6Gwg0sK8lDPlHbj7Ca0zYlfJAJyZGNLWmHgVkLXvVAYVTPNiejZ6znJ2jG5WUQ\",\n    \"special_request\": \"Window Table\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},"url":"{{base-url}}/v2/booking/{{rid}}/reservations/{{rid}}-{{confirmation-id}}","description":"<h2 id=\"modify-reservation-api-documentation\">Modify Reservation API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>URL:</strong><code>{{base-url}}/v2/booking/{{rid}}reservations/{id}</code><br /><strong>Method:</strong> PUT</p>\n<ul>\n<li><p>The <code>id</code> parameter is a unique combination of the <code>Restaurant_ID</code> and <code>Confirmation_Number</code> provided in the request URL, formatted as <code>{rid}-{confirmation_number}</code>.</p>\n</li>\n<li><p><strong>Prior Actions:</strong></p>\n<ul>\n<li><p>Perform a search request to verify availability for new time/date (Availability API)</p>\n</li>\n<li><p>Provision/lock request to lock the new desired time. (Slot Lock API)</p>\n</li>\n<li><p>If a credit card is required for the new reservation, please refer to the Make Reservation Credit Card details (Credit Card Processing Details)</p>\n</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"request-body\">Request Body</h2>\n<p>The request payload consists of the following fields:</p>\n<h2 id=\"reservation-details-table\">Reservation Details Table</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>Number of people in the reservation party. Required</td>\n</tr>\n<tr>\n<td><code>date_time</code></td>\n<td>string</td>\n<td>Date and time of the reservation in ISO 8601 format. Required</td>\n</tr>\n<tr>\n<td><code>reservation_token</code></td>\n<td>string</td>\n<td>A unique token identifying the temporary hold on a table from a previous call. Required</td>\n</tr>\n<tr>\n<td><code>reservation_attribute</code></td>\n<td>string</td>\n<td>The seating option (default, hightop, bar, counter, outdoor). Required if using</td>\n</tr>\n<tr>\n<td><code>special_request</code></td>\n<td>string</td>\n<td>Any special requests for the reservation. <em>Optional</em></td>\n</tr>\n<tr>\n<td><code>credit_card</code></td>\n<td>object</td>\n<td>Credit card details for the reservation (see Credit Card Object). <em>Optional</em></td>\n</tr>\n<tr>\n<td><code>login_name</code></td>\n<td>string</td>\n<td>Used for concierge/referral details. <em>Optional</em></td>\n</tr>\n<tr>\n<td><code>restaurant_email_marketing_opt_in</code></td>\n<td>boolean</td>\n<td>If true, opts the guest into email marketing by the restaurant. <em>Optional</em></td>\n</tr>\n<tr>\n<td><code>sms_notifications_opt_in</code></td>\n<td>boolean</td>\n<td>If true, the guest opts in to receive SMS notifications. <em>Optional</em></td>\n</tr>\n<tr>\n<td><code>dining_area_id</code></td>\n<td>integer</td>\n<td>The unique identifier for the dining area. <em>Optional</em></td>\n</tr>\n<tr>\n<td><code>environment</code></td>\n<td>string</td>\n<td>The environment for the dining experience (e.g., Indoor, Outdoor). <em>Optional</em></td>\n</tr>\n<tr>\n<td><code>experience</code></td>\n<td>object</td>\n<td>Experience details for the reservation (see Experience Object). <em>Optional</em></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"credit-card-object\">Credit Card Object</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>token</code></td>\n<td>String</td>\n<td>A token representing the credit card.</td>\n</tr>\n<tr>\n<td><code>last4</code></td>\n<td>String</td>\n<td>The last four digits of the credit card.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"experience-object\">Experience Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the experience.</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>Integer</td>\n<td>The version of the experience.</td>\n</tr>\n<tr>\n<td><code>party_size_per_price_type</code></td>\n<td>Array of Objects</td>\n<td>Party sizes for each price type (see <strong>Party Size Object</strong>).</td>\n</tr>\n<tr>\n<td><code>add_ons</code></td>\n<td>Array of Objects</td>\n<td>List of add-ons selected for the reservation (see <strong>Add-Ons Object</strong>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"party-size-per-price-type-object\">Party Size Per Price Type Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>The unique identifier of the party size.</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>Integer</td>\n<td>The number of guests for this price type.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"add-ons-object\">Add-Ons Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>item_id</code></td>\n<td>String</td>\n<td>The unique identifier for the add-on item.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>The quantity of the add-on item selected.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response\">Response</h2>\n<p>Upon successful creation of a reservation, the API returns the reservation details along with a unique reservation ID and confirmation details.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Booking policy details for the reservation. Same as the booking policy message for the reservation.</td>\n</tr>\n<tr>\n<td><code>confirmation_number</code></td>\n<td>integer</td>\n<td>Unique identifier for the confirmed reservation.</td>\n</tr>\n<tr>\n<td><code>offer_confirmation_number</code></td>\n<td>integer</td>\n<td>Unique identifier for any special offer linked to the reservation.</td>\n</tr>\n<tr>\n<td><code>date_time</code></td>\n<td>string</td>\n<td>Date and time of the reservation in ISO 8601 format.</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>Number of guests included in the reservation.</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td>string</td>\n<td>Special requests or notes provided during the reservation.</td>\n</tr>\n<tr>\n<td><code>manage_reservation_url</code></td>\n<td>string</td>\n<td>URL to manage the confirmed reservation online.</td>\n</tr>\n<tr>\n<td><code>cancel_cutoff_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of last possible time when the record can be cancelled (UTC time).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p><strong>Default Behavior:</strong> If the <code>reservation_attribute</code> is not provided, the default seating will be used.</p>\n</li>\n<li><p><strong>Experience:</strong> The <code>experience</code> object supports modifying experiences and add-ons for enhanced booking flexibility.</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","booking","{{rid}}","reservations","{{rid}}-{{confirmation-id}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"81edea76-5608-4bf6-b400-8c34b3dd2ab4","name":"200","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"party_size\": 2,\n    \"date_time\": \"2025-11-13T16:00\",\n    \"reservation_attribute\": \"default\",\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI5OTgyNjg2Mzd8MnwyMDI1LTExLTEzVDE2OjAwfDEwMzgwMDcifQ.SEmbFYjVeGjmFzh987EzHCjg6Gwg0sK8lDPlHbj7Ca0zYlfJAJyZGNLWmHgVkLXvVAYVTPNiejZ6znJ2jG5WUQ\",\n    \"special_request\": \"Window Table\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},"url":"{{base-url}}/v2/booking/{{rid}}/reservations/{{rid}}-{{confirmation-id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"45b3f4c5-da7f-4dca-83fb-617dec979e25"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"2656"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/reservations/{reservationId}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 06 Jan 2025 21:30:23 GMT"},{"key":"Content-Length","value":"318"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"We have a 5 minute grace period. Please call us if you are running later than 5 minutes after your reservation time.<br /><br />We may contact you about this reservation, so please ensure your email and phone number are up to date.<br /><br />Your table will be reserved for 1 hour 30 minutes for parties of up to 2; 2 hours for parties of up to 4; 2 hours 30 minutes for parties of up to 6; and 3 hours for parties of 7+.\",\n    \"confirmation_number\": 1751,\n    \"date_time\": \"2025-11-13T16:00\",\n    \"party_size\": 2,\n    \"notes\": \"Window Table\"\n}"},{"id":"0877d1c7-87c3-42cf-af93-cc01fd5b264a","name":"400","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"party_size\": 4,\n    \"date_time\": \"2025-12-13T14:30\",\n    \"reservation_attribute\": \"default\",\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI4MDkzMDU5NDV8NHwyMDIzLTA1LTEyVDE0OjMwfDEwMzgwMDcifQ.pb5zRsChKSDOk52Q3IX4hIsRxgi7uIweacsZpJObA6M5jzicMNKp2rIIlWAENce6i98336tPzVciv-anlAx_Ag\",\n    \"special_request\": \"Window Table\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},"url":"{{base-url}}/v2/booking/{{rid}}/reservations/{{rid}}-{{confirmation-id}}"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"beac4f6e-fa1b-4a29-af7c-bb6ba6a8e6ca"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"127"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/reservations/{reservationId}"},{"key":"Content-Length","value":"123"},{"key":"Date","value":"Mon, 06 Jan 2025 21:28:46 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"message\": \"reservation_token or restaurant id is invalid\"\n        }\n    ],\n    \"requestid\": \"beac4f6e-fa1b-4a29-af7c-bb6ba6a8e6ca\"\n}"}],"_postman_id":"0fc6793e-5f32-4b5e-a9d8-c598d53c326b"},{"name":"Cancel Web Reservation","id":"454b5367-6a17-46d6-ae4c-456f55ae688b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"CancelledWeb\"\n}"},"url":"{{base-url}}/v2/booking/{{rid}}/reservations/{{rid}}-{{confirmation-id}}","description":"<h2 id=\"cancel-reservation-api-documentation\">Cancel Reservation API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>URL:</strong> <code>{{base-url}}/v2/booking/{{rid}}reservations/{id}</code></p>\n<p><strong>Method:</strong> PUT</p>\n<h3 id=\"description\">Description</h3>\n<p>The Cancel Reservation API allows users to cancel an existing reservation by providing the unique identifier for the reservation. No other status changes are supported.</p>\n<h3 id=\"request\">Request</h3>\n<p>The <code>id</code> parameter is a unique combination of the <code>Restaurant_ID</code> and <code>Confirmation_Number</code> provided in the request URL, formatted as <code>{rid}-{confirmation_number}</code>.</p>\n<h3 id=\"request-body-fields\">Request Body Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>Unique combination of <code>Restaurant_ID</code> and <code>Confirmation_Number</code> provided as a part of the URL.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Must be set to <code>CancelledWeb</code> to cancel the reservation. No other status values are supported.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p><strong>Request Requirements:</strong> The <code>id</code> must be obtained from the original reservation creation process and stored in your system of record.</p>\n</li>\n<li><p><strong>Cancel Response:</strong> A successful cancellation request will return a <code>200 OK</code> status with an empty body.</p>\n</li>\n<li><p><strong>No Other Status Changes:</strong> Only the status <code>CancelledWeb</code> is supported for this API call.</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","booking","{{rid}}","reservations","{{rid}}-{{confirmation-id}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"3183ae3a-6343-4884-92d1-bc3aa519bfb6","name":"200","originalRequest":{"method":"PUT","header":[{"key":"Authorization","value":"Bearer ","disabled":true},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"CancelledWeb\"\n}"},"url":"{{base-url}}/v2/booking/{{rid}}/reservations/{{rid}}-{{confirmation-id}}"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"8f41fcbf-acb1-412f-be2e-642eae6e8997"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"x-envoy-upstream-service-time","value":"664"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/reservations/{reservationId}"},{"key":"Content-Type","value":"text/plain;charset=utf-8"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Mon, 06 Jan 2025 21:33:57 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"454b5367-6a17-46d6-ae4c-456f55ae688b"}],"id":"42f17619-485f-419f-ada0-47955764942a","description":"<p><strong>OVERVIEW</strong></p>\n<p>This API allows you to Modify or Cancel reservations that have been previously booked via this API. Please note that if the reservation is booked outside of this API, you may not be able to modify or cancel.</p>\n<p>To perform these queries, you will need the reservation ID. This can be found in the original Make Reservation response or via the Get Reservations query.</p>\n<p>You may also choose to update or cancel reservations, via linking to the reservation details view. The reservation details view URL is returned in <strong>manage_reservation_url</strong> response field of <strong>make</strong> and <strong>get</strong> reservation endpoints. The same link works for web, mobile web, and the OpenTable Android and iOS apps.</p>\n","_postman_id":"42f17619-485f-419f-ada0-47955764942a"},{"name":"Find Reservations","item":[{"name":"Get Reservation","id":"82bcee3c-bcb6-48ca-90e8-b6dbe1688720","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"bearer "}],"url":"{{base-url}}/v2/booking/{{rid}}/reservations/{{rid}}-{{confirmation-id}}","description":"<h2 id=\"get-reservation-api-documentation\">Get Reservation API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>URL:</strong> <code>{{base-url}}v2/booking/{rid}/reservations/{rid}-{confirmationId}</code></p>\n<p><strong>Method:</strong> GET</p>\n<h3 id=\"description\">Description</h3>\n<p>The Get Reservation API allows you to retrieve detailed information about a specific reservation for a restaurant. This information includes reservation status, party size, reservation attributes, pricing details, experiences, and additional add-ons.</p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant, provided by OpenTable.</td>\n</tr>\n<tr>\n<td><code>confirmationId</code></td>\n<td>string</td>\n<td>The confirmation number of the reservation, unique per booking.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"api-overview\">API Overview</h3>\n<p>This API returns a structured payload containing the following key sections:</p>\n<ul>\n<li><p><strong>General Reservation Details:</strong> Status, environment, confirmation number, restaurant ID, date/time, party size, and a URL to manage the reservation.</p>\n</li>\n<li><p><strong>Experience Object:</strong> Provides a detailed breakdown of the experience including pricing, taxes, service fees, and add-ons.</p>\n</li>\n<li><p><strong>Add-Ons:</strong> A list of additional items purchased during the reservation with individual pricing, taxes, and service fees.</p>\n</li>\n</ul>\n<h2 id=\"general-reservation-details\">General Reservation Details</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>confirmation_number</code></td>\n<td>integer</td>\n<td>The confirmation number associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>restaurant_id</code></td>\n<td>integer</td>\n<td>The unique identifier of the restaurant.</td>\n</tr>\n<tr>\n<td><code>date_time</code></td>\n<td>string</td>\n<td>The date and time of the reservation in ISO 8601 format.</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>The number of people in the reservation party.</td>\n</tr>\n<tr>\n<td><code>manage_reservation_url</code></td>\n<td>string</td>\n<td>A URL to the reservation management page on the OpenTable platform.</td>\n</tr>\n<tr>\n<td><code>reservation_attribute</code></td>\n<td>string</td>\n<td>The type or attribute of the reservation (e.g., Default).</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>Status of the reservation. Possible values: “Pending”, “Seated”, “AssumedSeated”, “CancelledWeb”, “CancelledRestaurant”, “Cancelled”, “NoShow”.</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td>string</td>\n<td>Any special notes or requests added to the reservation (e.g., Window Table).</td>\n</tr>\n<tr>\n<td><code>dining_area_id</code></td>\n<td>string</td>\n<td>The ID for the dining area booked.</td>\n</tr>\n<tr>\n<td><code>environment</code></td>\n<td>string</td>\n<td>The type of environment for the reservation (e.g., Indoor, Outdoor).</td>\n</tr>\n<tr>\n<td><code>experience</code></td>\n<td>object</td>\n<td>Contains all of the experience details.</td>\n</tr>\n<tr>\n<td><code>credit_card_last_four</code></td>\n<td>string</td>\n<td>The last four digits of the credit card used for payment (if applicable).</td>\n</tr>\n<tr>\n<td><code>cancel_cutoff_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of last possible time when the record can be cancelled (UTC time).</td>\n</tr>\n<tr>\n<td><code>language</code></td>\n<td>string</td>\n<td>The language locale used for the reservation (e.g., en-US).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"experience-object\">Experience Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>The unique identifier for the experience.</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>The version number of the experience object.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>The name of the experience.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>string</td>\n<td>A description of the experience.</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>string</td>\n<td>The currency used for the reservation (e.g., USD).</td>\n</tr>\n<tr>\n<td><code>currencyDenominator</code></td>\n<td>integer</td>\n<td>A factor to convert the amount to the appropriate currency units.</td>\n</tr>\n<tr>\n<td><code>prepaid</code></td>\n<td>boolean</td>\n<td>Indicates if the experience required pre-payment.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>integer</td>\n<td>The base price of the experience, excluding fees/taxes.</td>\n</tr>\n<tr>\n<td><code>experienceSubtotalAmount</code></td>\n<td>integer</td>\n<td>The subtotal amount for the experience before taxes and fees.</td>\n</tr>\n<tr>\n<td><code>itemSubtotalAmount</code></td>\n<td>integer</td>\n<td>Subtotal of the selected price items (Adult, Child, etc.).</td>\n</tr>\n<tr>\n<td><code>addOnSubtotalAmount</code></td>\n<td>integer</td>\n<td>Subtotal of all added add-ons.</td>\n</tr>\n<tr>\n<td><code>subtotalAmount</code></td>\n<td>integer</td>\n<td>Sum of all experience and item subtotals (pre-tax/fee).</td>\n</tr>\n<tr>\n<td><code>taxesAmount</code></td>\n<td>integer</td>\n<td>The total amount of all collected taxes.</td>\n</tr>\n<tr>\n<td><code>totalAmount</code></td>\n<td>integer</td>\n<td>The grand total amount charged, including all fees and taxes.</td>\n</tr>\n<tr>\n<td><code>tipAmount</code></td>\n<td>integer</td>\n<td>The calculated tip amount (if applicable).</td>\n</tr>\n<tr>\n<td><code>tipPercent</code></td>\n<td>integer</td>\n<td>The applied tip percentage (e.g., 0.0 for 0%).</td>\n</tr>\n<tr>\n<td><code>serviceFeeAmount</code></td>\n<td>integer</td>\n<td>The total amount of all service fees applied.</td>\n</tr>\n<tr>\n<td><code>taxesOnServiceFeesAmount</code></td>\n<td>integer</td>\n<td>The portion of total taxes applied specifically to service fees.</td>\n</tr>\n<tr>\n<td><code>taxesOnTipAmount</code></td>\n<td>integer</td>\n<td>The portion of total taxes applied specifically to the tip.</td>\n</tr>\n<tr>\n<td><code>addOnSubtotalWithoutTaxesAmount</code></td>\n<td>integer</td>\n<td>The subtotal of add-ons, before taxes are applied.</td>\n</tr>\n<tr>\n<td><code>taxesOnItemAmount</code></td>\n<td>integer</td>\n<td>The portion of total taxes applied specifically to item subtotals.</td>\n</tr>\n<tr>\n<td><code>taxesOnAddOnsAmount</code></td>\n<td>integer</td>\n<td>The portion of total taxes applied specifically to add-on subtotals.</td>\n</tr>\n<tr>\n<td><code>hasMandatoryTip</code></td>\n<td>boolean</td>\n<td>Indicates if a tip/gratuity was mandatory.</td>\n</tr>\n<tr>\n<td><code>isTipTaxable</code></td>\n<td>boolean</td>\n<td>Indicates if the calculated tip is subject to tax.</td>\n</tr>\n<tr>\n<td><code>prices</code></td>\n<td>Array</td>\n<td>List of all price options defined for the experience. See Price Item Object section.</td>\n</tr>\n<tr>\n<td><code>subtotalsPerPriceType</code></td>\n<td>Array</td>\n<td>Itemized breakdown of the total count and subtotal for each selected price type. See Subtotals Per Price Type Object section.</td>\n</tr>\n<tr>\n<td><code>addOns</code></td>\n<td>Array</td>\n<td>List of actual add-on items added to this specific reservation. See Add-On Reservation Item Object section.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"price-item-object-experienceprices\">Price Item Object (experience.prices[])</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Unique ID for the price option.</td>\n</tr>\n<tr>\n<td><code>title</code></td>\n<td>string</td>\n<td>Title of the price option (e.g., Adult, Child).</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>string</td>\n<td>Description of the price item (e.g., Adult price).</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>integer</td>\n<td>The unit price of this item, in the smallest currency unit.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"subtotals-per-price-type-object-experiencesubtotalsperpricetype\">Subtotals Per Price Type Object (experience.subtotalsPerPriceType[])</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Unique ID for the price option (references prices[].id).</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>integer</td>\n<td>The number of guests or parties charged this price type.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>integer</td>\n<td>The unit price of this item, in the smallest currency unit.</td>\n</tr>\n<tr>\n<td><code>subtotal</code></td>\n<td>integer</td>\n<td>The extended price for this item type (count * price).</td>\n</tr>\n<tr>\n<td><code>prce_all_inclusive</code></td>\n<td>boolean</td>\n<td>Indicates if this price already included taxes and fees.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"add-on-reservation-item-object-experienceaddons\">Add-On Reservation Item Object (experience.addOns[])</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>itemId</code></td>\n<td>string</td>\n<td>The unique ID of the selected add-on item (UUID format).</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>The quantity of this add-on item reserved.</td>\n</tr>\n<tr>\n<td><code>lineTotal</code></td>\n<td>integer</td>\n<td>The total cost of this line item (quantity * price), before fees/taxes.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>integer</td>\n<td>The unit price of the add-on item.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>The display name of the add-on.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>string</td>\n<td>The description of the add-on.</td>\n</tr>\n<tr>\n<td><code>lineSubtotalWithTaxes</code></td>\n<td>integer</td>\n<td>The final price of the line item including all taxes and service fees.</td>\n</tr>\n<tr>\n<td><code>taxes</code></td>\n<td>Array</td>\n<td>Itemized list of taxes applied to this add-on. See Tax Detail Object section.</td>\n</tr>\n<tr>\n<td><code>serviceFees</code></td>\n<td>Array</td>\n<td>Itemized list of service fees applied to this add-on. See Service Fee Detail Object section.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"tax-detail-object-experienceaddonstaxes\">Tax Detail Object (experience.addOns[].taxes[])</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>Unique identifier for the tax type.</td>\n</tr>\n<tr>\n<td><code>label</code></td>\n<td>string</td>\n<td>Display name of the tax (e.g., Tax).</td>\n</tr>\n<tr>\n<td><code>tax_percent</code></td>\n<td>integer</td>\n<td>The tax rate applied (e.g., 10.0).</td>\n</tr>\n<tr>\n<td><code>tax_subtotal_amount</code></td>\n<td>integer</td>\n<td>Tax calculated on the pre-tax subtotal (if applicable).</td>\n</tr>\n<tr>\n<td><code>tax_on_item_amount</code></td>\n<td>integer</td>\n<td>Tax calculated on the item price component.</td>\n</tr>\n<tr>\n<td><code>tax_on_tip_amount</code></td>\n<td>integer</td>\n<td>Tax calculated on the tip component.</td>\n</tr>\n<tr>\n<td><code>tax_on_service_fees_amount</code></td>\n<td>integer</td>\n<td>Tax calculated on the service fee component.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"service-fee-detail-object-experienceaddonsservicefees\">Service Fee Detail Object (experience.addOns[].serviceFees[])</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>service_fee_percent</code></td>\n<td>integer</td>\n<td>The service fee rate applied (e.g., 15.0).</td>\n</tr>\n<tr>\n<td><code>service_fee_amount</code></td>\n<td>integer</td>\n<td>The total monetary amount of the service fee applied to this item.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure you use a valid <code>rid</code> and <code>confirmationId</code> when making the request.</p>\n</li>\n<li><p>The API provides a comprehensive breakdown of pricing, taxes, and additional fees for accurate reservation management.</p>\n</li>\n<li><p>All amounts are presented in minor currency units (e.g., cents).</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","booking","{{rid}}","reservations","{{rid}}-{{confirmation-id}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"4390fcab-9aef-4b98-ad88-3a412785d834","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"bearer "}],"url":"{{base-url}}/v2/booking/{{rid}}/reservations/{{rid}}-{{confirmation-id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"2e76da78-70c4-4107-b028-7403e04cba14"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"78"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/reservations/{reservationId}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 06 Jan 2025 21:34:31 GMT"},{"key":"Content-Length","value":"730"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"confirmation_number\": 2110032820,\n    \"restaurant_id\": 152416,\n    \"date_time\": \"2025-10-03T10:00\",\n    \"party_size\": 2,\n    \"manage_reservation_url\": \"https://www.opentable.com/book/view?rid=152416&confnumber=2110032820&token=01G8kNJXGIj85IjBwI375kpub5mfvnJHNcVIZH5t_MeY41\",\n    \"reservation_attribute\": \"Default\",\n    \"status\": \"Pending\",\n    \"notes\": \"Window Table\",\n    \"dining_area_id\": 1,\n    \"environment\": \"Indoor\",\n    \"experience\": {\n        \"id\": 511956,\n        \"version\": 3,\n        \"name\": \"emely testing bugs\",\n        \"description\": \"emely testing bugs\",\n        \"currency\": \"USD\",\n        \"currencyDenominator\": 100,\n        \"prepaid\": true,\n        \"price\": 0,\n        \"experienceSubtotalAmount\": 0,\n        \"itemSubtotalAmount\": 1500,\n        \"addOnSubtotalAmount\": 0,\n        \"subtotalAmount\": 1500,\n        \"taxesAmount\": 165,\n        \"totalAmount\": 1815,\n        \"tipAmount\": 0,\n        \"tipPercent\": 0,\n        \"serviceFeeAmount\": 150,\n        \"taxesOnServiceFeesAmount\": 15,\n        \"taxesOnTipAmount\": 0,\n        \"addOnSubtotalWithoutTaxesAmount\": 0,\n        \"taxesOnItemAmount\": 150,\n        \"taxesOnAddOnsAmount\": 0,\n        \"hasMandatoryTip\": false,\n        \"isTipTaxable\": false,\n        \"prices\": [\n            {\n                \"id\": 121376,\n                \"title\": \"Adult\",\n                \"description\": \"Adult price\",\n                \"price\": 1000\n            },\n            {\n                \"id\": 125651,\n                \"title\": \"Child\",\n                \"description\": \"Child price\",\n                \"price\": 500\n            }\n        ],\n        \"subtotalsPerPriceType\": [\n            {\n                \"id\": 121376,\n                \"count\": 1,\n                \"price\": 1000,\n                \"subtotal\": 1000,\n                \"price_all_inclusive\": false\n            },\n            {\n                \"id\": 125651,\n                \"count\": 1,\n                \"price\": 500,\n                \"subtotal\": 500,\n                \"price_all_inclusive\": false\n            }\n        ],\n        \"addOns\": [\n            {\n                \"itemId\": \"e2126988-59a1-44b9-a5b0-03d2ce66f2a1\",\n                \"quantity\": 1,\n                \"lineTotal\": 200,\n                \"price\": 200,\n                \"name\": \"Soft Drink\",\n                \"description\": \"Soft Drink\",\n                \"lineSubtotalWithTaxes\": 220,\n                \"taxes\": [\n                    {\n                        \"id\": \"1\",\n                        \"label\": \"Tax\",\n                        \"tax_percent\": 10,\n                        \"tax_subtotal_amount\": 0,\n                        \"tax_on_item_amount\": 20,\n                        \"tax_on_tip_amount\": 0,\n                        \"tax_on_service_fees_amount\": 3\n                    }\n                ],\n                \"serviceFees\": [\n                    {\n                        \"service_fee_percent\": 15,\n                        \"service_fee_amount\": 30\n                    }\n                ]\n            },\n            {\n                \"itemId\": \"70ad5b0b-f7b9-4c10-b04e-75b120dff991\",\n                \"quantity\": 1,\n                \"lineTotal\": 1000,\n                \"price\": 1000,\n                \"name\": \"Hot drink\",\n                \"description\": \"Hot tea latte \",\n                \"lineSubtotalWithTaxes\": 1230,\n                \"taxes\": [\n                    {\n                        \"id\": \"1\",\n                        \"label\": \"Tax\",\n                        \"tax_percent\": 23,\n                        \"tax_subtotal_amount\": 0,\n                        \"tax_on_item_amount\": 230,\n                        \"tax_on_tip_amount\": 0,\n                        \"tax_on_service_fees_amount\": 35\n                    }\n                ],\n                \"serviceFees\": [\n                    {\n                        \"service_fee_percent\": 15,\n                        \"service_fee_amount\": 150\n                    }\n                ]\n            }\n        ]\n    },\n    \"credit_card_last_four\": \"4242\",\n    \"cancel_cutoff_date_utc\": \"2025-10-03T16:55:00\",\n    \"language\": \"en-US\"\n}"}],"_postman_id":"82bcee3c-bcb6-48ca-90e8-b6dbe1688720"}],"id":"5649cea0-a343-4a62-a7cc-d23b5f82b8c6","_postman_id":"5649cea0-a343-4a62-a7cc-d23b5f82b8c6","description":""},{"name":"Private Dining Lead API","item":[{"name":"POST Lead","id":"990fadac-b956-4328-959a-bad00a9c128a","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{}},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"user@example.com\",\n  \"phoneNumber\": \"1 123 123 1234\",\n  \"eventDate\": \"2027-01-01\",\n  \"eventTime\": \"18:30\",\n  \"partySize\": 100, \n  \"eventType\": \"Anniversary\",\n  \"flexibleDate\": true\n}","options":{"raw":{"language":"json"}}},"url":"((base-url}}/v1/privatedining/restaurant/{{RID}}/leads","description":"<h1 id=\"api-path\">API Path</h1>\n<p>/v1/privatedining/restaurant/{{RID}}/leads</p>\n<p>Method: POST</p>\n<h2 id=\"eligibility-rules\">Eligibility Rules</h2>\n<ul>\n<li><p>Access is <strong>restricted to restaurant IDs (RIDs) with an active Private Dining subscription</strong></p>\n</li>\n<li><p>Requests for ineligible RIDs will be rejected</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>OpenTable restaurant ID used to route the lead to the correct venue</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<h4 id=\"required-fields\">Required Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>firstName</code></td>\n<td>string</td>\n<td>Guest first name</td>\n</tr>\n<tr>\n<td><code>lastName</code></td>\n<td>string</td>\n<td>Guest last name</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Guest email address. Must be a valid email format (business rule validation enforced)</td>\n</tr>\n<tr>\n<td><code>phoneNumber</code></td>\n<td>string</td>\n<td>Guest phone number</td>\n</tr>\n<tr>\n<td><code>eventDate</code></td>\n<td>string (<code>yyyy-mm-dd</code>)</td>\n<td>Event date. <strong>Must be a future date</strong></td>\n</tr>\n<tr>\n<td><code>eventTime</code></td>\n<td>string (<code>HH:mm</code>, 24-hour)</td>\n<td>Event time</td>\n</tr>\n<tr>\n<td><code>partySize</code></td>\n<td>number</td>\n<td>Number of guests. Minimum value is <code>1</code></td>\n</tr>\n<tr>\n<td><code>eventType</code></td>\n<td>string (enum)</td>\n<td>Type of event</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h4 id=\"eventtype-enum-values\"><code>eventType</code> Enum Values</h4>\n<ul>\n<li><p><code>Anniversary</code></p>\n</li>\n<li><p><code>BabyShower</code></p>\n</li>\n<li><p><code>BarMitzvah</code></p>\n</li>\n<li><p><code>Birthday</code></p>\n</li>\n<li><p><code>BridalWeddingShower</code></p>\n</li>\n<li><p><code>CharityEvent</code></p>\n</li>\n<li><p><code>Class</code></p>\n</li>\n<li><p><code>CocktailParty</code></p>\n</li>\n<li><p><code>Conference</code></p>\n</li>\n<li><p><code>CorporateEvent</code></p>\n</li>\n<li><p><code>DinnerParty</code></p>\n</li>\n<li><p><code>Engagement</code></p>\n</li>\n<li><p><code>FilmingLocation</code></p>\n</li>\n<li><p><code>Fundraiser</code></p>\n</li>\n<li><p><code>Graduation</code></p>\n</li>\n<li><p><code>HolidayEvent</code></p>\n</li>\n<li><p><code>LaunchParty</code></p>\n</li>\n<li><p><code>Meeting</code></p>\n</li>\n<li><p><code>Other</code></p>\n</li>\n<li><p><code>PrivateDining</code></p>\n</li>\n<li><p><code>RehearsalDinner</code></p>\n</li>\n<li><p><code>SocialEvent</code></p>\n</li>\n<li><p><code>SpecialOccasion</code></p>\n</li>\n<li><p><code>WeddingReception</code></p>\n</li>\n</ul>\n<hr />\n<h4 id=\"optional-fields\">Optional Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>flexibleDate</code></td>\n<td>boolean</td>\n<td>Set to <code>true</code> if the event date is flexible or not yet fixed</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes--validation-rules\">Notes &amp; Validation Rules</h2>\n<ul>\n<li><p><code>eventDate</code> must be in the future</p>\n</li>\n<li><p><code>eventTime</code> must use <strong>24-hour format</strong></p>\n</li>\n<li><p><code>email</code> is validated for proper format</p>\n</li>\n<li><p><code>partySize</code> must be ≥ 1</p>\n</li>\n<li><p>Requests for RIDs without an active Private Dining subscription will fail</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","privatedining","restaurant","{{RID}}","leads"],"host":["((base-url}}"],"query":[],"variable":[]}},"response":[{"id":"9c99e9f3-0df8-4674-83b3-c99996f54358","name":"201","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"user@example.com\",\n  \"phoneNumber\": \"1 123 123 1234\",\n  \"eventDate\": \"2027-01-01\",\n  \"eventTime\": \"18:30\",\n  \"partySize\": 100, \n  \"eventType\": \"Anniversary\",\n  \"flexibleDate\": true\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v1/privatedining/restaurant/{{rid}}/leads"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"7ea6fbf7-b273-4975-871f-38dabb5fd521"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"A3F69561-F1A9-4CE7-A12B-B607730100D1"},{"key":"OT-SessionID","value":"6a76dacf-2665-4d95-adcc-1567e97315b5"},{"key":"Content-Type","value":"text/plain;charset=utf-8"},{"key":"X-OT-Backend","value":"eventDiningPartner"},{"key":"X-OT-UriTemplate","value":"/eventDiningPartner/api/v1/privatedining/restaurant/{rid}/leads"},{"key":"Content-Length","value":"24"},{"key":"Date","value":"Wed, 21 Jan 2026 21:23:06 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=A80D4E0A20858200B33816024925E972~YAAQiJs+F8P/p86bAQAAXJBw4h559yHEqGnzP3fHYj7VQJ4ye6uvRIrw6ijcA7NCWXnOWvhH+RIjPC8ACnD4gRy0/W9Cz5/VsXl1NRxL8v7sYVW+ksXbznemi4+VIG/FJVzt6zntLupXFLSLPORL6xg6uGzPJQ3tuTmyMSP8mytS5pJoQh75ttdZjsiDrQFcyDNQbi4Fjb2RdwQXN889uBKydEchfAu9DVmXQovoiJSo7nl7c9gT9GmJv7F/ZKnnPi2p~1; Domain=.opentable.com; Path=/; Expires=Wed, 21 Jan 2026 23:17:48 GMT; Max-Age=6882; SameSite=None; Secure"}],"cookie":[],"responseTime":null,"body":"697143ba23a07a71d1c3cf51"}],"_postman_id":"990fadac-b956-4328-959a-bad00a9c128a"}],"id":"033b00a6-1d26-4b6e-a1ae-7b216b0319b3","description":"<h1 id=\"overview\">Overview</h1>\n<p>The Private Dining Lead API allows partners to create and submit private dining inquiries on behalf of guests directly to an OpenTable restaurant. Each lead is routed using the OpenTable restaurant ID (RID), ensuring the request reaches the correct venue and its private dining team.  </p>\n<p>This endpoint is designed to support high-value event inquiries such as celebrations, corporate events, and group dining, helping restaurants capture demand beyond standard reservations.  </p>\n<p>Posting leads is restricted to restaurants with an active Private Dining subscription.</p>\n","_postman_id":"033b00a6-1d26-4b6e-a1ae-7b216b0319b3"}],"id":"daa8627b-ce98-4157-8b16-47a3bf55210e","_postman_id":"daa8627b-ce98-4157-8b16-47a3bf55210e","description":""},{"name":"Use Cases","item":[{"name":"Consumer API Use Case - Make Reservation","item":[{"name":"GET Single RID Search V2","id":"32c44ff6-d8b6-4492-939d-848409c2317e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/v2/availability/{{rid3}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse2}}","urlObject":{"path":["v2","availability","{{rid3}}"],"host":["{{base-url}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse2}}"}],"variable":[]}},"response":[{"id":"69e82677-4ff2-488b-9ba0-b4dcbd4bc474","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{base-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"df7a3d8b-433d-491a-a752-371ac1dc740d"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"108"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/availability/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:56:33 GMT"},{"key":"Content-Length","value":"979"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1074796,\n    \"party_size\": 2,\n    \"times\": [\n        \"2025-03-05T07:00\",\n        \"2025-03-05T07:15\",\n        \"2025-03-05T07:30\",\n        \"2025-03-05T07:45\",\n        \"2025-03-05T08:00\",\n        \"2025-03-05T08:15\",\n        \"2025-03-05T08:30\",\n        \"2025-03-05T08:45\",\n        \"2025-03-05T09:00\",\n        \"2025-03-05T09:15\",\n        \"2025-03-05T09:30\",\n        \"2025-03-05T09:45\",\n        \"2025-03-05T10:00\",\n        \"2025-03-05T10:15\",\n        \"2025-03-05T10:30\",\n        \"2025-03-05T10:45\",\n        \"2025-03-05T11:00\",\n        \"2025-03-05T11:15\",\n        \"2025-03-05T11:30\",\n        \"2025-03-05T11:45\",\n        \"2025-03-05T12:00\",\n        \"2025-03-05T12:15\",\n        \"2025-03-05T12:30\",\n        \"2025-03-05T12:45\",\n        \"2025-03-05T13:00\"\n    ],\n    \"times_available\": [\n        {\n            \"time\": \"2025-03-05T07:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A00&sd=2025-03-05T07%3A00&p=2&pt=100&hash=2147862740&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A15&sd=2025-03-05T07%3A15&p=2&pt=100&hash=217371454&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A30&sd=2025-03-05T07%3A30&p=2&pt=100&hash=2147606043&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A45&sd=2025-03-05T07%3A45&p=2&pt=100&hash=2032678253&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A00&sd=2025-03-05T08%3A00&p=2&pt=100&hash=2660307093&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A15&sd=2025-03-05T08%3A15&p=2&pt=100&hash=138347776&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A30&sd=2025-03-05T08%3A30&p=2&pt=100&hash=2773282000&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A45&sd=2025-03-05T08%3A45&p=2&pt=100&hash=2614241140&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A00&sd=2025-03-05T09%3A00&p=2&pt=100&hash=836874191&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A15&sd=2025-03-05T09%3A15&p=2&pt=100&hash=2708338772&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1207480732&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=1793344914&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=3707628001&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1027216335&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=1124764936&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A45&sd=2025-03-05T10%3A45&p=2&pt=100&hash=3082816818&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A00&sd=2025-03-05T11%3A00&p=2&pt=100&hash=2813092328&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A15&sd=2025-03-05T11%3A15&p=2&pt=100&hash=3509409143&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A30&sd=2025-03-05T11%3A30&p=2&pt=100&hash=425483764&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A45&sd=2025-03-05T11%3A45&p=2&pt=100&hash=3263916944&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A00&sd=2025-03-05T12%3A00&p=2&pt=100&hash=2022544807&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A15&sd=2025-03-05T12%3A15&p=2&pt=100&hash=2026935413&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A30&sd=2025-03-05T12%3A30&p=2&pt=100&hash=3752222726&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A45&sd=2025-03-05T12%3A45&p=2&pt=100&hash=2617696080&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T13:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T13%3A00&sd=2025-03-05T13%3A00&p=2&pt=100&hash=4009648945&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T13%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ],\n    \"no_availability_reasons\": [],\n    \"href\": \"https://platform.otqa.com/sync/listings/1074796\"\n}"},{"id":"82b41d7b-262e-4da9-be11-7ba577211bd0","name":"404","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{oauth-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{oauth-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"OT-RequestId","value":"c2e3f23e-6ef1-4994-9115-c1df7ec7e033"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1EBF9FAD-AA08-4631-874C-42B0A58954FC"},{"key":"Pragma","value":"no-cache"},{"key":"Strict-Transport-Security","value":"max-age=31536000 ; includeSubDomains"},{"key":"x-frame-options","value":"DENY"},{"key":"Cache-Control","value":"must-revalidate,no-cache,no-store"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"18"},{"key":"Content-Length","value":"133"},{"key":"Date","value":"Mon, 23 Dec 2024 16:14:59 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-12-23T16:14:59.531+0000\",\n    \"status\": 404,\n    \"error\": \"Not Found\",\n    \"message\": \"Not Found\",\n    \"path\": \"/v2/availability/1074796\"\n}"},{"id":"39fd0ce3-e566-4570-9994-ea9d137ef3cb","name":"403","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{base-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"ff3b1deb-944f-4c34-9634-12dc088fb97e"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"6"},{"key":"Content-Length","value":"95"},{"key":"Date","value":"Mon, 23 Dec 2024 18:49:10 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"message\": \"Permission denied\"\n        }\n    ],\n    \"requestid\": \"ff3b1deb-944f-4c34-9634-12dc088fb97e\"\n}"}],"_postman_id":"32c44ff6-d8b6-4492-939d-848409c2317e"},{"name":"Slot Locks","id":"ab385eb8-1c14-45f6-8eac-0d3ddddc289b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer ff6c42ab-d31c-4afe-84db-fc66bc9925ec"}],"body":{"mode":"raw","raw":"{\n    \"restaurant_id\": 1038007,\n    \"party_size\": 2,\n    \"date_time\": \"2024-12-13T16:30\",\n    \"reservation_attribute\": \"default\",\n    \"experience\": {\n        \"id\": 511659,\n        \"version\": 2,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"3de22255-8af7-42dd-aade-e6b4cfc767d7\",\n                \"quantity\": 2\n            }\n        ]\n    },\n    \"dining_area_id\": 2632,\n    \"environment\": \"Indoor\"\n}"},"url":"https://platform.otqa.com/booking/slot_locks","urlObject":{"protocol":"https","path":["booking","slot_locks"],"host":["platform","otqa","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"ab385eb8-1c14-45f6-8eac-0d3ddddc289b"},{"name":"Make Res","id":"a9568460-c449-4f32-b17c-d782d0112ca0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer ff6c42ab-d31c-4afe-84db-fc66bc9925ec"}],"body":{"mode":"raw","raw":"{\n    \"restaurant_id\": 1038007,\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NzU3NDAxNzJ8MnwyMDI0LTEyLTEzVDE2OjAwfDEwMzgwMDcifQ.9e8IVpXJICEV6YwFtz4QlrsfFJN0A-bI4j3j1PRvlnL7svyUfKmrVgavLzCU6xmxZng85dfk92BiI2LV2-vcKA\",\n    \"first_name\": \"Matt\",\n    \"last_name\": \"Vogel\",\n    \"email_address\": \"mvogel.test@opentable.com\",\n    \"phone\": {\n        \"number\": \"7738956585\",\n        \"country_code\": \"US\",\n        \"phone_type\": \"Mobile\"\n    },\n    \"reservation_attribute\": \"default\",\n    \"special_request\": \"Window Table\",\n    \"credit_card\": {\n        \"token\": \"tok_0QPT85jrulGLaJAMQLe4dE9i\",\n        \"last4\": \"4242\"\n    },\n    \"restaurant_email_marketing_opt_in\": false,\n    \"dining_area_id\": 2632,\n    \"environment\": \"Indoor\",\n    \"experience\": {\n        \"id\": 511659,\n        \"version\": 2,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"3de22255-8af7-42dd-aade-e6b4cfc767d7\",\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},"url":"https://platform.otqa.com/booking/reservations","urlObject":{"protocol":"https","path":["booking","reservations"],"host":["platform","otqa","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a9568460-c449-4f32-b17c-d782d0112ca0"}],"id":"41b1f45a-2431-42db-bfbf-d58c06e801bf","description":"<h2 id=\"as-a-restauranteur-i-would-like-to-create-a-custom-booking-flow-on-my-website\">As a restauranteur I would like to create a custom booking flow on my website.</h2>\n<p>APIs to use:</p>\n<p>Consumer API v2:</p>\n<ul>\n<li><p>Availability APIs (Search)</p>\n</li>\n<li><p>Slot Locks</p>\n</li>\n<li><p>Make Reservation</p>\n</li>\n<li><p>Additional functionlity, not required:</p>\n<ul>\n<li><p>Experiences</p>\n</li>\n<li><p>Policies</p>\n</li>\n<li><p>Stripe APIs (credit card functionality within the Make Call)</p>\n</li>\n<li><p>Modify or Cancel</p>\n</li>\n<li><p>Find Reservations</p>\n</li>\n</ul>\n</li>\n</ul>\n<img src=\"https://content.pstmn.io/fab389d0-75ed-4d96-8938-516746694314/Q29uc3VtZXIgQVBJIEZsb3djaGFydC5wbmc=\" alt />","_postman_id":"41b1f45a-2431-42db-bfbf-d58c06e801bf"},{"name":"Consumer API Use Case - Make Reservation with Cancellation Policy","item":[{"name":"GET Single RID Search V2","id":"af0a8667-db92-4dba-a10b-73143011970b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/v2/availability/{{rid3}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse2}}","urlObject":{"path":["v2","availability","{{rid3}}"],"host":["{{base-url}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse2}}"}],"variable":[]}},"response":[{"id":"50eccbfc-dd0b-417f-ba5d-ce7e0f37dc60","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{base-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"df7a3d8b-433d-491a-a752-371ac1dc740d"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"108"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/availability/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:56:33 GMT"},{"key":"Content-Length","value":"979"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1074796,\n    \"party_size\": 2,\n    \"times\": [\n        \"2025-03-05T07:00\",\n        \"2025-03-05T07:15\",\n        \"2025-03-05T07:30\",\n        \"2025-03-05T07:45\",\n        \"2025-03-05T08:00\",\n        \"2025-03-05T08:15\",\n        \"2025-03-05T08:30\",\n        \"2025-03-05T08:45\",\n        \"2025-03-05T09:00\",\n        \"2025-03-05T09:15\",\n        \"2025-03-05T09:30\",\n        \"2025-03-05T09:45\",\n        \"2025-03-05T10:00\",\n        \"2025-03-05T10:15\",\n        \"2025-03-05T10:30\",\n        \"2025-03-05T10:45\",\n        \"2025-03-05T11:00\",\n        \"2025-03-05T11:15\",\n        \"2025-03-05T11:30\",\n        \"2025-03-05T11:45\",\n        \"2025-03-05T12:00\",\n        \"2025-03-05T12:15\",\n        \"2025-03-05T12:30\",\n        \"2025-03-05T12:45\",\n        \"2025-03-05T13:00\"\n    ],\n    \"times_available\": [\n        {\n            \"time\": \"2025-03-05T07:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A00&sd=2025-03-05T07%3A00&p=2&pt=100&hash=2147862740&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A15&sd=2025-03-05T07%3A15&p=2&pt=100&hash=217371454&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A30&sd=2025-03-05T07%3A30&p=2&pt=100&hash=2147606043&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T07:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T07%3A45&sd=2025-03-05T07%3A45&p=2&pt=100&hash=2032678253&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T07%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A00&sd=2025-03-05T08%3A00&p=2&pt=100&hash=2660307093&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A15&sd=2025-03-05T08%3A15&p=2&pt=100&hash=138347776&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A30&sd=2025-03-05T08%3A30&p=2&pt=100&hash=2773282000&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T08:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T08%3A45&sd=2025-03-05T08%3A45&p=2&pt=100&hash=2614241140&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T08%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A00&sd=2025-03-05T09%3A00&p=2&pt=100&hash=836874191&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A15&sd=2025-03-05T09%3A15&p=2&pt=100&hash=2708338772&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1207480732&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=1793344914&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T09%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=3707628001&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1027216335&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=1124764936&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T10%3A45&sd=2025-03-05T10%3A45&p=2&pt=100&hash=3082816818&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T10%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A00&sd=2025-03-05T11%3A00&p=2&pt=100&hash=2813092328&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A15&sd=2025-03-05T11%3A15&p=2&pt=100&hash=3509409143&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A30&sd=2025-03-05T11%3A30&p=2&pt=100&hash=425483764&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T11:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T11%3A45&sd=2025-03-05T11%3A45&p=2&pt=100&hash=3263916944&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T11%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A00&sd=2025-03-05T12%3A00&p=2&pt=100&hash=2022544807&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A15&sd=2025-03-05T12%3A15&p=2&pt=100&hash=2026935413&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A15&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A30&sd=2025-03-05T12%3A30&p=2&pt=100&hash=3752222726&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A30&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T12:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T12%3A45&sd=2025-03-05T12%3A45&p=2&pt=100&hash=2617696080&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T12%3A45&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T13:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1074796&d=2025-03-05T13%3A00&sd=2025-03-05T13%3A00&p=2&pt=100&hash=4009648945&ref=&tc=default&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1074796&dateTime=2025-03-05T13%3A00&partySize=2&restref=1074796\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ],\n    \"no_availability_reasons\": [],\n    \"href\": \"https://platform.otqa.com/sync/listings/1074796\"\n}"},{"id":"94f02e95-53c6-420b-990b-a7e1fb2200fa","name":"200 with experiences","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v2/availability/{{rid3}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse2}}","host":["{{base-url}}"],"path":["v2","availability","{{rid3}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse2}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"c2a11789-41c8-4c48-b9b2-036bf4dabc84"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"126"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/availability/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 03 Jan 2025 20:33:05 GMT"},{"key":"Content-Length","value":"782"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1038007,\n    \"party_size\": 2,\n    \"times\": [\n        \"2025-03-05T09:30\",\n        \"2025-03-05T09:45\",\n        \"2025-03-05T10:00\",\n        \"2025-03-05T10:15\",\n        \"2025-03-05T10:30\"\n    ],\n    \"times_available\": [\n        {\n            \"time\": \"2025-03-05T09:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1897530236&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A30&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1897530236&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A30&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1897530236&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A30&partySize=2&restref=1038007\"\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1897530236&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A30&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                503345,\n                                512031\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1897530236&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A30&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                503345,\n                                512031\n                            ]\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A30&sd=2025-03-05T09%3A30&p=2&pt=100&hash=1897530236&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A30&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                503345,\n                                512031\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T09:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=2615317202&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A45&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=2615317202&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A45&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=2615317202&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A45&partySize=2&restref=1038007\"\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=2615317202&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A45&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                503345,\n                                512031\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=2615317202&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A45&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                503345,\n                                512031\n                            ]\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T09%3A45&sd=2025-03-05T09%3A45&p=2&pt=100&hash=2615317202&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T09%3A45&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                503345,\n                                512031\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=2845245934&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A00&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=2845245934&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A00&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=2845245934&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A00&partySize=2&restref=1038007\"\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=2845245934&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A00&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=2845245934&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A00&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A00&sd=2025-03-05T10%3A00&p=2&pt=100&hash=2845245934&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A00&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1874501101&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A15&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1874501101&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A15&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1874501101&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A15&partySize=2&restref=1038007\"\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1874501101&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A15&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1874501101&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A15&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A15&sd=2025-03-05T10%3A15&p=2&pt=100&hash=1874501101&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A15&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-03-05T10:30\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=2726442334&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A30&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=2726442334&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A30&partySize=2&restref=1038007\"\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=2726442334&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A30&partySize=2&restref=1038007\"\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"cancellationPolicy\": {},\n                    \"diningArea\": [\n                        {\n                            \"id\": 2632,\n                            \"attributes\": [\n                                \"default\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=2726442334&ref=&tc=default&diningAreaId=2632\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A30&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"attributes\": [\n                                \"highTop\",\n                                \"bar\"\n                            ],\n                            \"environment\": \"Indoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=2726442334&ref=&tc=highTop&diningAreaId=1\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A30&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        },\n                        {\n                            \"id\": 2439,\n                            \"attributes\": [\n                                \"bar\"\n                            ],\n                            \"environment\": \"Outdoor\",\n                            \"booking_url\": \"https://www.opentable.com/book/validate?rid=1038007&d=2025-03-05T10%3A30&sd=2025-03-05T10%3A30&p=2&pt=100&hash=2726442334&ref=&tc=bar&diningAreaId=2439\",\n                            \"booking_restref_url\": \"https://www.opentable.com/restref/client?rid=1038007&dateTime=2025-03-05T10%3A30&partySize=2&restref=1038007\",\n                            \"experience_ids\": [\n                                512031,\n                                508444\n                            ]\n                        }\n                    ]\n                }\n            ]\n        }\n    ],\n    \"no_availability_reasons\": [],\n    \"href\": \"https://platform.otqa.com/sync/listings/1038007\"\n}"},{"id":"4cca5530-b711-422f-9be4-fd8af75719c4","name":"404","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{oauth-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{oauth-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"OT-RequestId","value":"c2e3f23e-6ef1-4994-9115-c1df7ec7e033"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1EBF9FAD-AA08-4631-874C-42B0A58954FC"},{"key":"Pragma","value":"no-cache"},{"key":"Strict-Transport-Security","value":"max-age=31536000 ; includeSubDomains"},{"key":"x-frame-options","value":"DENY"},{"key":"Cache-Control","value":"must-revalidate,no-cache,no-store"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"18"},{"key":"Content-Length","value":"133"},{"key":"Date","value":"Mon, 23 Dec 2024 16:14:59 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-12-23T16:14:59.531+0000\",\n    \"status\": 404,\n    \"error\": \"Not Found\",\n    \"message\": \"Not Found\",\n    \"path\": \"/v2/availability/1074796\"\n}"},{"id":"ebec79e4-8fa4-4733-b17f-5b642b3b109d","name":"403","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v2/availability/{{rid}}?start_date_time={{yyyy-mm-ddThh:ss}}&forward_minutes={{forwardminutes}}&backward_minutes={{backwardminutes}}&party_size={{partysize}}&require_attributes={{tabletypes}}&include_credit_card_results={{trueorfalse}}&include_experiences={{trueorfalse}}","host":["{{base-url}}"],"path":["v2","availability","{{rid}}"],"query":[{"key":"start_date_time","value":"{{yyyy-mm-ddThh:ss}}"},{"key":"forward_minutes","value":"{{forwardminutes}}"},{"key":"backward_minutes","value":"{{backwardminutes}}"},{"key":"party_size","value":"{{partysize}}"},{"key":"require_attributes","value":"{{tabletypes}}"},{"key":"include_credit_card_results","value":"{{trueorfalse}}"},{"key":"include_experiences","value":"{{trueorfalse}}"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"ff3b1deb-944f-4c34-9634-12dc088fb97e"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"6"},{"key":"Content-Length","value":"95"},{"key":"Date","value":"Mon, 23 Dec 2024 18:49:10 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"message\": \"Permission denied\"\n        }\n    ],\n    \"requestid\": \"ff3b1deb-944f-4c34-9634-12dc088fb97e\"\n}"}],"_postman_id":"af0a8667-db92-4dba-a10b-73143011970b"},{"name":"Slot Locks","id":"7972f583-87bd-47ac-bf3b-4511c2064500","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"party_size\": 2,\n    \"date_time\": \"2025-10-13T16:00\",\n    \"reservation_attribute\": \"default\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    },\n    \"dining_area_id\": 2632,\n    \"environment\": \"Indoor\"\n}\n"},"url":"{{base-url}}/v2/booking/{{rid}}/slot_locks","description":"<h2 id=\"overview\">Overview</h2>\n<p>The Slot Lock API provides the ability to create, manage, and retrieve reservations for a restaurant. This documentation outlines the payload structure, attributes, and their descriptions, along with sample requests and responses for seamless integration.</p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>URL:</strong> <code>{{base-url}}/v2/booking/{{rid}}/slot_locks</code></p>\n<p><strong>Method: POST</strong></p>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<h3 id=\"attributes\">Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>Number of people in the reservation party. <em>Required</em></td>\n</tr>\n<tr>\n<td><code>date_time</code></td>\n<td>string</td>\n<td>Date and time of the reservation in ISO 8601 format. <em>Required</em></td>\n</tr>\n<tr>\n<td><code>reservation_attribute</code></td>\n<td>string</td>\n<td>Type or attribute of the reservation (e.g., <code>default</code>).</td>\n</tr>\n<tr>\n<td><code>experience</code></td>\n<td>object</td>\n<td>Details about the dining experience. <em>Optional, only required if experience will be booked.</em></td>\n</tr>\n<tr>\n<td><code>dining_area_id</code></td>\n<td>integer</td>\n<td>Identifier for the dining area. <em>Optional, only required if specific dining area will be booked.</em></td>\n</tr>\n<tr>\n<td><code>environment</code></td>\n<td>string</td>\n<td>Type of environment (e.g., <code>Indoor</code>, <code>Outdoor</code>). <em>Optional, only required if specific environment will be booked.</em></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"experience-object-attributes\">Experience Object Attributes</h3>\n<p><em>Note: This Data will be gathered from the GET Experiences API response. All attributes are required when booking an experience.</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Unique identifier for the experience.</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>integer</td>\n<td>Version of the experience.</td>\n</tr>\n<tr>\n<td><code>party_size_per_price_type</code></td>\n<td>array</td>\n<td>Array detailing the party size per price type. <em>Optional, applicable only if returned in GET Experiences API</em></td>\n</tr>\n<tr>\n<td><code>add_ons</code></td>\n<td>array</td>\n<td>Array of add-on items for the experience. <em>Optional, applicable only if returned in GET Experiences API</em></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"party_size_per_price_type-array-object-attributes\">Party_Size_Per_Price_Type Array Object Attributes</h3>\n<p><em>Note: This Data will be gathered from the GET Experiences API response. Optional, applicable only if returned in GET Experiences API</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Unique identifier for the price type.</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>integer</td>\n<td>Count of items for the price type.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"add_ons-array-object-attributes\">Add_Ons Array Object Attributes</h3>\n<p><em>Note: This Data will be gathered from the GET Experiences API response. Optional, applicable only if returned in GET Experiences API</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>item_id</code></td>\n<td>string</td>\n<td>Unique identifier for the add-on item.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Quantity of the add-on item.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li>Ensure the <code>restaurant_id</code>, <code>party_size</code>, <code>date_time</code>, and <code>experience</code> attributes are accurate for successful reservation creation.</li>\n</ul>\n<h2 id=\"response\">Response</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>expires_at</code></td>\n<td>string</td>\n<td>The expiration date and time of the slot lock in ISO 8601 format. The slot lock expires within 5 minutes.</td>\n</tr>\n<tr>\n<td><code>reservation_token</code></td>\n<td>string</td>\n<td>A unique token required for the subsequent reservation creation request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes-1\">Notes</h3>\n<ul>\n<li><p>The <code>expires_at</code> timestamp indicates when the slot lock expires. Ensure the reservation is completed before this time.</p>\n</li>\n<li><p>The <code>reservation_token</code> is required for the reservation creation request and ensures the slot remains locked during the reservation process.</p>\n</li>\n<li><p>If the <code>expires_at</code> time is reached without completing the reservation, the slot will be released.</p>\n</li>\n<li><p>Tokens should be treated securely and not exposed to unauthorized users.</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","booking","{{rid}}","slot_locks"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"2d0d819a-4be2-4685-a851-e124abed8895","name":"200","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer "}],"body":{"mode":"raw","raw":"{\n    \"party_size\": 2,\n    \"date_time\": \"2025-10-13T16:00\",\n    \"reservation_attribute\": \"default\",\n    \"experience\": {\n        \"id\": 512031,\n        \"version\": 1,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"4cb68e46-39be-4110-b345-884bf57635bd\",\n                \"quantity\": 2\n            }\n        ]\n    },\n    \"dining_area_id\": 2632,\n    \"environment\": \"Indoor\"\n}\n"},"url":"{{base-url}}/v2/booking/{{rid}}/slot_locks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"c57221ea-b815-4ba9-9568-9f2ccf2dab66"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-envoy-upstream-service-time","value":"218"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/booking/slot_locks"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 06 Jan 2025 21:19:51 GMT"},{"key":"Content-Length","value":"229"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"expires_at\": \"2025-01-06T21:24:50\",\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI2MTc3MzgxNDJ8MnwyMDI1LTEwLTEzVDE2OjAwfDEwMzgwMDcifQ.6uVQiE9gzI8nRxIP0qUjP2o__5pwV7DwYeW_0-VPq8oJUvltg-HIj8iel3acYzWeKZuQqLHNiBQ3VlSVeONYGQ\"\n}"}],"_postman_id":"7972f583-87bd-47ac-bf3b-4511c2064500"},{"name":"Cancellation Policies","id":"3e3105ef-e6c0-45af-8332-3e095c417071","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/cancellation-policies/{{rid}}/{{cancelationid}}","description":"<h2 id=\"cancellation-policies-api-documentation\">Cancellation Policies API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>URL:</strong> <code>{{base-url}}/v2/cancellation-policies/{rid}/{cancelationid}</code></p>\n<p><strong>Method:</strong> GET</p>\n<h3 id=\"description\">Description</h3>\n<p>The cancellation policy endpoint allows you to retrieve the cancellation policy for a reservation based on the restaurant ID and cancellation ID. The <code>cancelationid</code> is obtained from the response of the Make Reservation call.</p>\n<h3 id=\"sample-request\">Sample Request</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl --location '{{base-url}}/v2/cancellation-policies/{rid}/{cancelationid}' \\\n--header 'Authorization: bearer '\n\n</code></pre>\n<h3 id=\"response\">Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"partySize\": 5,\n    \"policyType\": \"Deposit\",\n    \"depositDetails\": {\n        \"amount\": 1500,\n        \"currency\": \"USD\",\n        \"denominator\": 100,\n        \"type\": \"PerGuest\"\n    },\n    \"cutOff\": {\n        \"cutoffType\": \"DaysBefore\",\n        \"daysBeforeCutoff\": 2\n    }\n}\n\n</code></pre>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partySize</code></td>\n<td>integer</td>\n<td>The number of guests for the reservation.</td>\n</tr>\n<tr>\n<td><code>policyType</code></td>\n<td>string</td>\n<td>Type of cancellation policy.</td>\n</tr>\n<tr>\n<td><code>depositDetails</code></td>\n<td>object</td>\n<td>Details of the deposit policy.</td>\n</tr>\n<tr>\n<td><code>depositDetails.amount</code></td>\n<td>integer</td>\n<td>Deposit amount in minor currency units.</td>\n</tr>\n<tr>\n<td><code>depositDetails.currency</code></td>\n<td>string</td>\n<td>Currency of the deposit amount.</td>\n</tr>\n<tr>\n<td><code>depositDetails.denominator</code></td>\n<td>integer</td>\n<td>Conversion factor for minor units.</td>\n</tr>\n<tr>\n<td><code>depositDetails.type</code></td>\n<td>string</td>\n<td>Specifies if the deposit is per guest.</td>\n</tr>\n<tr>\n<td><code>cutOff</code></td>\n<td>object</td>\n<td>Cutoff policy details.</td>\n</tr>\n<tr>\n<td><code>cutOff.cutoffType</code></td>\n<td>string</td>\n<td>Type of cutoff applied.</td>\n</tr>\n<tr>\n<td><code>cutOff.daysBeforeCutoff</code></td>\n<td>integer</td>\n<td>Number of days before cutoff.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure you use a valid <code>cancelationid</code> retrieved from the Make Reservation call.</p>\n</li>\n<li><p>The cutoff policy specifies the period within which cancellations are allowed.</p>\n</li>\n<li><p>The deposit amount is specified in minor currency units (e.g., cents for USD).</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","cancellation-policies","{{rid}}","{{cancelationid}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"a154aea7-033d-49ab-bd7e-a8c7c5ef13b1","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/cancellation-policies/{{rid}}/{{cancelationid}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"d3f3ee25-870a-4848-a089-50fe89822b19"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"78"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v1/cancellation-policies/{rid}/{policyId}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Tue, 07 Jan 2025 03:05:44 GMT"},{"key":"Content-Length","value":"158"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"partySize\": 5,\n    \"policyType\": \"Deposit\",\n    \"depositDetails\": {\n        \"amount\": 1500,\n        \"currency\": \"USD\",\n        \"denominator\": 100,\n        \"type\": \"PerGuest\"\n    },\n    \"cutOff\": {\n        \"cutoffType\": \"DaysBefore\",\n        \"daysBeforeCutoff\": 2\n    }\n}"}],"_postman_id":"3e3105ef-e6c0-45af-8332-3e095c417071"},{"name":"Make Res","id":"46480ef4-ffb9-432c-aec4-6242e7a252c7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer ff6c42ab-d31c-4afe-84db-fc66bc9925ec"}],"body":{"mode":"raw","raw":"{\n    \"restaurant_id\": 1038007,\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NzU3NDAxNzJ8MnwyMDI0LTEyLTEzVDE2OjAwfDEwMzgwMDcifQ.9e8IVpXJICEV6YwFtz4QlrsfFJN0A-bI4j3j1PRvlnL7svyUfKmrVgavLzCU6xmxZng85dfk92BiI2LV2-vcKA\",\n    \"first_name\": \"Matt\",\n    \"last_name\": \"Vogel\",\n    \"email_address\": \"mvogel.test@opentable.com\",\n    \"phone\": {\n        \"number\": \"7738956585\",\n        \"country_code\": \"US\",\n        \"phone_type\": \"Mobile\"\n    },\n    \"reservation_attribute\": \"default\",\n    \"special_request\": \"Window Table\",\n    \"credit_card\": {\n        \"token\": \"tok_0QPT85jrulGLaJAMQLe4dE9i\",\n        \"last4\": \"4242\"\n    },\n    \"restaurant_email_marketing_opt_in\": false,\n    \"dining_area_id\": 2632,\n    \"environment\": \"Indoor\",\n    \"experience\": {\n        \"id\": 511659,\n        \"version\": 2,\n        \"party_size_per_price_type\": [\n            {\n                \"id\": 121058,\n                \"count\": 1\n            },\n            {\n                \"id\": 121059,\n                \"count\": 1\n            }\n        ],\n        \"add_ons\": [\n            {\n                \"item_id\": \"3de22255-8af7-42dd-aade-e6b4cfc767d7\",\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},"url":"https://platform.otqa.com/booking/reservations","urlObject":{"protocol":"https","path":["booking","reservations"],"host":["platform","otqa","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"46480ef4-ffb9-432c-aec4-6242e7a252c7"}],"id":"42fc1281-45cd-435e-af1c-9f734c7030bb","description":"<h2 id=\"as-a-restauranteur-i-would-like-to-create-a-custom-booking-flow-on-my-website\">As a restauranteur I would like to create a custom booking flow on my website.</h2>\n<p>APIs to use:</p>\n<p>Consumer API v2:</p>\n<ul>\n<li><p>Availability APIs (Search)</p>\n</li>\n<li><p>Policies</p>\n</li>\n<li><p>Stripe APIs (credit card functionality within the Make Call)</p>\n</li>\n<li><p>Slot Locks</p>\n</li>\n<li><p>Make Reservation</p>\n</li>\n<li><p>Additional functionality, not required:</p>\n<ul>\n<li>Experiences</li>\n</ul>\n</li>\n</ul>\n<img src=\"https://content.pstmn.io/f9ca16c5-5f29-4cd2-a14f-03be2fd4ee55/Q29uc3VtZXIgQVBJIEZsb3djaGFydCAoNSkucG5n\" />","_postman_id":"42fc1281-45cd-435e-af1c-9f734c7030bb"}],"id":"84793408-0f49-4aff-afee-853a9e6e05d6","description":"<p>Here are some ways our partners use our Consumer APIs.</p>\n","_postman_id":"84793408-0f49-4aff-afee-853a9e6e05d6"},{"name":"Migration Guide Overview","item":[],"id":"9b1858ff-6951-4577-bc69-5306be515e24","description":"<p>For partners looking to migrate from Online Booking API v1 to Online Booking API v2, we have a detailed migration guide available upon request. We have also included some of the overview details below.</p>\n<p>Please note that any new implementation of our APIs may require additional contracting and certification. Please work with your OpenTable team for details.</p>\n<h1 id=\"migration-overview\">Migration Overview</h1>\n<h2 id=\"whats-changed\">What's Changed?</h2>\n<ul>\n<li><p>Availability response is nested: availability_types[] with dining_area, environment, and policy refs.</p>\n</li>\n<li><p>Search window expanded to ≤720 minutes.</p>\n</li>\n<li><p>New endpoints: availability-metadata, booking-policies, cancellation-policies, experiences totals.</p>\n</li>\n<li><p>Slot lock path changed and adds DELETE to release.</p>\n</li>\n<li><p>Make reservation path changed</p>\n</li>\n<li><p>Booking supports Accept-Language, gzip, SMS opt-in, dining_area_id, environment.</p>\n</li>\n<li><p>Link policy split: booking_url (affiliate) vs booking_restref_url (restaurant group).</p>\n</li>\n</ul>\n<h2 id=\"breaking-changes-you-must-handle\"><strong>Breaking Changes You Must Handle</strong></h2>\n<ol>\n<li><p>Parse availability_types (remove reliance on time-root attribute/availabilityType).</p>\n</li>\n<li><p>Lift validators for forward/backward minutes to ≤720.</p>\n</li>\n<li><p>Normalize attribute casing (e.g., 'highTop').</p>\n</li>\n<li><p>Don’t hard-code policies—fetch and render via policy endpoints.</p>\n</li>\n<li><p>Implement DELETE for slot lock cancellation.</p>\n</li>\n</ol>\n<h2 id=\"minimal-code-changes-to-ship\"><strong>Minimal Code Changes to Ship</strong></h2>\n<img src=\"https://content.pstmn.io/5525e0c2-b7db-494b-97a3-3e95a673c413/aW1hZ2UucG5n\" alt height=\"274\" width=\"734\" />\n\n<h2 id=\"known-pitfalls\"><strong>Known Pitfalls</strong></h2>\n<ul>\n<li><p>Hard-coded policy copy, leading to mismatches.</p>\n</li>\n<li><p>Forgetting to DELETE slot_locks on user cancel.</p>\n</li>\n<li><p>Attribute casing mismatches breaking filters.</p>\n</li>\n<li><p>Designing APIs or schemas too rigidly, without allowing for additional attributes or fields. This can lead to breaking changes when new properties are introduced within objects or appended to the end of a response. To avoid this, clients should be built to ignore unknown attributes and treat responses as extensible rather than fixed.</p>\n</li>\n</ul>\n","_postman_id":"9b1858ff-6951-4577-bc69-5306be515e24"},{"name":"Tips for Successful Implementation for Online Booking API","item":[],"id":"5b64f591-de88-427f-b950-001fbc63e487","description":"<h1 id=\"overview\"><strong>Overview</strong></h1>\n<p>The OpenTable Booking API catalog (aka Consumer API) is a robust suite of tools designed to empower partners to seamlessly integrate OpenTable's reservation management functionalities into their own digital platforms. This comprehensive API solution offers a wide array of capabilities, providing restaurants with the ability to not only search for available tables in real-time across single or multiple restaurant locations but also to create, modify, and cancel reservations directly within their own website or application.</p>\n<p>Furthermore, the Consumer API enables partners to maintain control over their booking policies and customize the user experience to align with their brand identity. By leveraging the API's flexible framework, restaurants can optimize their reservation process, enhance customer engagement, and streamline operations, ultimately driving increased bookings and improved customer satisfaction.</p>\n<p>For questions and support, please contact <a href=\"https://mailto:api@opentable.com\">api@opentable.com</a></p>\n<h1 id=\"details-and-documentation\"><strong>Details and Documentation</strong></h1>\n<p>As of spring 2025, the most current version of Consumer API is v2, and any new implementation must adhere to those specifications. You can find the documentation for the APIs here - <a href=\"https://docs.opentable.com/#e521f540-a3db-404e-ba0d-8e0aea242c5c\">docs.opentable.com</a></p>\n<h1 id=\"helpful-tips\"><strong>Helpful Tips</strong></h1>\n<ul>\n<li><p>We are here to help! Reach out to us at <a href=\"https://mailto:api@opentable.com\">api@opentable.com</a> should you have any questions.</p>\n</li>\n<li><p><strong>Environments:</strong> During the onboarding process, you will only have access to our pre-production test restaurants. You will be given access to your production restaurants upon certification.</p>\n</li>\n<li><p><strong>Search Window:</strong> Although not required, the maximum number of minutes forwards and backwards to search for times is 720 +/-, giving you a full day's window -- Does your implementation allow for a maximized search window or have you accounted for actively limiting the search results?</p>\n</li>\n<li><p><strong>Table Types:</strong> Although not required, Table Types and Dining Areas are part of over 90% of our current restaurant base -- Are you exposing these options?</p>\n</li>\n<li><p><strong>Credit Cards:</strong> Although not required, Credit Card capture is required in a growing number of our restaurant base -- Do you have credit card search and capture as part of your implementation or have you accounted for actively not including it?</p>\n</li>\n<li><p><strong>Email opt-in:</strong> Do you have means to allow diners to opt-in or opt-out of email marketing from the restaurant in question? If you do not present the option to the diner and that is not part of the API payload, you will not be able to capture their marketing preference.</p>\n</li>\n<li><p><strong>Reservation Notes:</strong> Have you included a field to allow diners to key in freeform notes as requests associated with their reservation?</p>\n</li>\n<li><p><strong>Experiences:</strong> Make sure you can handle the following experiences IDs (pre prod) for RID 1040230 - The experiences are the same as production but with a different ID:</p>\n<ul>\n<li><p><strong>518093:</strong> This experience has multiple priceTitles (these titles can be anything) and a mandatory tip.</p>\n<ul>\n<li><strong>priceId, 129261</strong> has priceAllInclusive = false. Meaning that it has taxes and service which affects the total price</li>\n</ul>\n</li>\n<li><p><strong>518092:</strong> The name is “Breakfast - Pay at the restaurant” make sure your LLM is not relying on the name to inform the diner that they must pay at the restaurant. (use the price array)</p>\n</li>\n<li><p><strong>518091:</strong> Experiences inherit the restaurant level/default policy only when the policy is “hold”. Make sure you can handle it on Mondays where there is no policy and Friday to Sunday where there’s a “hold” policy.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h1 id=\"testing-environment\"><strong>Testing Environment</strong></h1>\n<p>Below are some Test Restaurant ID’s (RIDs) that you may utilize for the Consumer API. These are meant to be used for Pre-Production testing only. We have also included some nuances around availability and requirements for each. This should help you test numerous scenarios.</p>\n<p><strong>Note we consider the following days “Special Days”:</strong></p>\n<ul>\n<li><p>Thanksgiving Day (US Observance date)</p>\n</li>\n<li><p>Christmas Eve</p>\n</li>\n<li><p>Christmas Day</p>\n</li>\n<li><p>New Year's Day</p>\n</li>\n<li><p>Memorial Day</p>\n</li>\n<li><p>Independence Day</p>\n</li>\n<li><p>Labor Day</p>\n</li>\n</ul>\n<p><strong>RID : 264001</strong></p>\n<ul>\n<li><p>Party Size: 1-20</p>\n</li>\n<li><p>Shift: 6AM-2AM, Sun-Sat</p>\n</li>\n<li><p>Special Days closed</p>\n</li>\n</ul>\n<p><strong>RID 1038007: With Credit Card Requirements and Experiences (Stripe)</strong></p>\n<ul>\n<li><p>Party Size: 1-10</p>\n</li>\n<li><p>Shift: 24 hours</p>\n</li>\n<li><p>Special Days open</p>\n</li>\n</ul>\n<p><strong>RID 1040230: With Credit Card Requirements and Experiences (Spreedly)</strong></p>\n<ul>\n<li><p>Party Size: 1-20</p>\n</li>\n<li><p>Reservations:</p>\n</li>\n<li><p>- Monday: standard</p>\n</li>\n<li><p>- Tues to Thur: deposit | party size &gt; 2</p>\n</li>\n<li><p>- Fri to Sun: credit card hold | party size &gt; 2</p>\n</li>\n<li><p>- Experiences: everyday 6am-12am</p>\n</li>\n<li><p>Shifts: 6AM-12PM, 1PM-5PM, 6PM-11.30PM.</p>\n</li>\n</ul>\n<p><strong>RID 268549:</strong></p>\n<ul>\n<li><p>Party Size: 1-10</p>\n</li>\n<li><p>Shifts: 7AM-6PM, 8PM-12AM, Sun-Sat</p>\n</li>\n<li><p>Special Days closed</p>\n</li>\n</ul>\n<p><strong>RID 138712:</strong></p>\n<ul>\n<li><p>Party Size: 1-6</p>\n</li>\n<li><p>Shifts: 8AM-2AM, Sun &amp; Sat only</p>\n</li>\n<li><p>Special Days closed</p>\n</li>\n</ul>\n<h1 id=\"certification-process\"><strong>Certification Process</strong></h1>\n<p>OpenTable will need to review and approve your pre-production implementation of the API prior to granting production publication. A minimum window of 14 days for OpenTable to review a pre-production submission is required. Production credentials will be provided only after QA certification of the pre-prod implementation.</p>\n<p><strong>The following scenarios will be verified:</strong></p>\n<ul>\n<li><p>Verify party size is between 1-20</p>\n</li>\n<li><p>Verify times are between 12:00 AM and 11:30 PM</p>\n</li>\n<li><p>Diner should not be allowed to select a past date (optional, but highly recommended)</p>\n</li>\n<li><p>Perform a search on a future date, time and party size between 1-20. This should return at least one time slot</p>\n</li>\n<li><p>Diner should be allowed to select a date/time/party size and book a reservation that is up-to a year in advance (depends on your preferred setting: it can be as little as 1 day and up to 1 year)</p>\n</li>\n<li><p>Verify diner must enter first name, last name, e-mail, and phone number in order to book a reservation</p>\n</li>\n<li><p>Verify with different combinations of first, last name, phone number and email address.</p>\n</li>\n<li><p>Verify diner is able to cancel a reservation</p>\n</li>\n<li><p>If more than one restaurant locations is supported, verify the reservation is made correctly for the selected location, date, time and party size</p>\n</li>\n<li><p>Perform a search on today's date and a time that has already passed. Diner should get available time slots that are in the future.</p>\n</li>\n<li><p>Book and cancel a reservation. Confirm the diner's name, date/time/party size of the reservation is accurate. Verify e-mail confirmation is received for booking and cancellation.</p>\n</li>\n<li><p>Book two reservations for the same date that are within 2.5 hours. Verify diner gets an appropriate error message and is directed back to the search page for the second reservation. Cancel the first reservation</p>\n</li>\n<li><p>If there is a cut off time for cancellation, verify diner gets a cancellation error if cancellation is made after the cut off time.</p>\n</li>\n<li><p>Email opt in checkbox present and functions correctly in OT4R when on and off</p>\n</li>\n<li><p>Special requests coming through properly in the Guest Requests section. Make sure only notes appear when entered in web UI</p>\n</li>\n</ul>\n<h1 id=\"branding-requirements-for-website\"><strong>Branding Requirements for Website</strong></h1>\n<ul>\n<li><p>For details around our brand requirements please visit <a href=\"https://www.opentable.design/\">opentable.design</a></p>\n</li>\n<li><p>The restaurant website is required to display “Powered by” and the OpenTable logo on any pages/areas that include the reservation booking flow.</p>\n</li>\n<li><p>The restaurant website is required to link to OpenTable’s Terms of Use Privacy Policy and include language requiring the user to agree as part of the reservation booking flow prior to completing the reservation.</p>\n<ul>\n<li><p>E.g. “By clicking ‘Complete reservation’ you agree to the OpenTable <a href=\"https://www.opentable.com/legal/terms-and-conditions\">Terms of Use</a> and <a href=\"https://www.opentable.com/legal/privacy-policy\">Privacy Policy</a>.”</p>\n</li>\n<li><p>Terms and Conditions: <a href=\"https://www.opentable.com/legal/terms-and-conditions\">https://www.opentable.com/legal/terms-and-conditions</a></p>\n</li>\n<li><p>Privacy Policy:  <a href=\"https://www.opentable.com/legal/privacy-policy\"> https://www.opentable.com/legal/privacy-policy</a></p>\n</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"5b64f591-de88-427f-b950-001fbc63e487"}],"id":"e521f540-a3db-404e-ba0d-8e0aea242c5c","description":"<p><strong>Consumer API Availability Notice</strong></p>\n<p>For existing partners, <strong>Consumer API v1</strong> remains available and supported. There are <strong>no deprecation dates currently scheduled</strong> for v1. If you are already integrated, you may continue using it as part of your existing implementation. Please coordinate with your implementation team to access the appropriate documentation or if you have any questions regarding usage.</p>\n<p>However, we <strong>recommend</strong> using <strong>Consumer API v2</strong> for all <strong>new integrations</strong>, as it offers enhanced functionality, improved performance, and ongoing feature development.</p>\n<p><strong>The documentation below details Consumer API v2 endpoints.</strong></p>\n","_postman_id":"e521f540-a3db-404e-ba0d-8e0aea242c5c"},{"name":"In House Booking API (aka Voice AI API)","item":[{"name":"APIs","item":[{"name":"Availability Search","item":[{"name":"Availability","id":"47020dd6-98a1-4f94-b8d7-16113dfb8eed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"{{base-url}}/inhouse/v1/availability/{{rid4}}?party_size={{party_size}}&start_date_time={{start_date_time}}&forward_minutes={{minutes}}&backward_minutes={{minutes}}&include_experiences={{true_false}}","description":"<hr />\n","urlObject":{"path":["inhouse","v1","availability","{{rid4}}"],"host":["{{base-url}}"],"query":[{"key":"party_size","value":"{{party_size}}"},{"key":"start_date_time","value":"{{start_date_time}}"},{"key":"forward_minutes","value":"{{minutes}}"},{"key":"backward_minutes","value":"{{minutes}}"},{"key":"include_experiences","value":"{{true_false}}"}],"variable":[]}},"response":[{"id":"8be67434-679c-4819-8ea8-f2163c12313b","name":"200","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"https://platform.opentable.com/inhouse/v1/availability/1038007?party_size=2&start_date_time=2025-07-28T13:00&forward_minutes=15&backward_minutes=15&include_experiences=true","protocol":"https","host":["platform","opentable","com"],"path":["inhouse","v1","availability","1038007"],"query":[{"key":"party_size","value":"2"},{"key":"start_date_time","value":"2025-07-28T13:00"},{"key":"forward_minutes","value":"15"},{"key":"backward_minutes","value":"15"},{"key":"include_experiences","value":"true"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"3fbf5a39-4f60-4831-97e3-7dab461790f3"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"6b58e986-e618-4ee8-86f5-e6dbb65c1f94"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/availability/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 18:14:38 GMT"},{"key":"Content-Length","value":"324"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQSXQyF4XwZy+XAQAAb15NQRzJzELvqIEK1SScITAKraItPQdCM10BMwtB5+mD2NtLQf9AhJarXVi8L2qNLmx/tFWTJvy6d4WaMIpz8aYbX5q+KUVk5Cgg9Tu9dkWlBy0Yh6lmm0wV9gNsgUHeQyJ/4DNN0Dp89wDbIOcUiUoZaI96OFSKyKtuWdbW39gajY2/JtbLYJCs2Zx0rYXJ/9mspoBAn8BVv5kor0g7uZLd0dDs7KMVvyOWtjyt+V/JVdh1VQ==~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=2401; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1038007,\n    \"party_size\": 2,\n    \"restaurant_settings\": {\n        \"scc_enabled\": true\n    },\n    \"times\": [\n        \"2025-07-28T12:45\",\n        \"2025-07-28T13:00\",\n        \"2025-07-28T13:15\"\n    ],\n    \"times_available\": [\n        {\n            \"time\": \"2025-07-28T12:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-07-28T13:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-07-28T13:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"47020dd6-98a1-4f94-b8d7-16113dfb8eed"},{"name":"Availability Metadata","id":"21868040-9ca6-43c4-9438-781bc2bed7f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/v2/availability-metadata/{{rid4}}","description":"<h1 id=\"overview\">Overview</h1>\n<p>This documentation outlines the process for using the Availability Search API to retrieve reservation times and metadata for one restaurant.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/v2/availability-metadata/{{rid}}</code></p>\n<h3 id=\"path-parameter\">Path Parameter</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>Integer</td>\n<td>A unique, static identifier for each restaurant. Each restaurant will have its own unique ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"query-parameters\">Query Parameters</h2>\n<p>The API does not use query parameters for this endpoint.</p>\n<p><strong>Response Elements</strong></p>\n<p>The API response includes the following elements:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td>Object</td>\n<td>See <code>Data</code> section</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"data\">Data</h3>\n<p>The <code>data</code> object includes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>environments</code></td>\n<td>Array of Strings</td>\n<td>Values will be either <code>Outdoor</code> or <code>Indoor</code>.</td>\n</tr>\n<tr>\n<td><code>attributes</code></td>\n<td>Array of Strings</td>\n<td>Values will be either <code>bar</code>, <code>counter</code>, <code>highTop</code>, <code>outdoor</code>, or <code>default</code>.</td>\n</tr>\n<tr>\n<td><code>dining_areas</code></td>\n<td>Array of Objects</td>\n<td>Detailed information about available dining areas (see <code>Dining Areas</code> section).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"the-dining_areas-array\">The <code>dining_areas</code> Array</h3>\n<p>Each dining area object includes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Integer</td>\n<td>Identifier of the dining area.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Name of the dining area.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>String</td>\n<td>Description of the dining area.</td>\n</tr>\n<tr>\n<td><code>environment</code></td>\n<td>String</td>\n<td>Environment type (e.g., <code>Indoor</code>, <code>Outdoor</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","availability-metadata","{{rid4}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"a79d88ff-13f4-4012-b22d-c61dc5176a1a","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"token","type":"text","disabled":true}],"url":"{{base-url}}/v2/availability-metadata/{{rid}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"8f49d723-7db4-4c2d-aa61-a58a84727ed1"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"16"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/availability-metadata/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 05 Feb 2025 19:48:50 GMT"},{"key":"Content-Length","value":"205"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"enviroments\": [\n            \"Outdoor\",\n            \"Indoor\"\n        ],\n        \"attributes\": [\n            \"bar\",\n            \"counter\",\n            \"highTop\",\n            \"default\"\n        ],\n        \"dining_areas\": [\n            {\n                \"id\": 1,\n                \"name\": \"Other\",\n                \"description\": \"Other\"\n            },\n            {\n                \"id\": 2439,\n                \"name\": \"Garden\",\n                \"description\": \"Garden\",\n                \"environment\": \"Outdoor\"\n            },\n            {\n                \"id\": 2632,\n                \"name\": \"VIP Lounge\",\n                \"description\": \"Ultra VIP lounge\",\n                \"environment\": \"Indoor\"\n            }\n        ]\n    }\n}"}],"_postman_id":"21868040-9ca6-43c4-9438-781bc2bed7f0"}],"id":"ab80c4d3-3c2e-44a5-9289-e47e8eabcbbb","description":"<h1 id=\"introduction\">Introduction</h1>\n<p><strong>Availability Search API</strong> provides developers with a streamlined way to retrieve restaurant reservation availability using OpenTable's platform. This API enables partners to perform highly customizable searches based on parameters such as date, time, party size, table type, and more.</p>\n<h2 id=\"overview\">Overview</h2>\n<p><strong>Availability Search API</strong> allows you to:</p>\n<ul>\n<li><p>Customize searches with parameters like date, time range, party size, and table type.</p>\n</li>\n<li><p>Retrieve detailed availability, including dining area information and cancellation policies.</p>\n</li>\n<li><p>Include special options like experiences and credit-card-secured reservation times.</p>\n</li>\n<li><p>This will search for any inventory available that has been categorized as \"In House Only\" or \"All Availabilities\"</p>\n</li>\n</ul>\n<h3 id=\"request\"><strong>Request</strong></h3>\n<p><strong>Method:</strong> <code>GET</code><br /><strong>Search URL:</strong> <code>{{base-url}}/inhouse/v1/availability/{RID}</code></p>\n<h4 id=\"path-parameter\"><strong>Path Parameter</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>RID</code></td>\n<td>long</td>\n<td>Restaurant ID</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"query-parameters\"><strong>Query Parameters</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Usage</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>party_size</code></td>\n<td>int32</td>\n<td>The party size for availability search. Must be between 1 and 20.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>start_date_time</code></td>\n<td>Date (yyyy-MM-ddThh:mm)</td>\n<td>The restaurant local date and time to search in ISO 8601 format. Must align to a 15-minute interval. Example: <code>2024-12-01T18:00</code>. Must be within 730 days from today.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>forward_minutes</code></td>\n<td>int32</td>\n<td>The number of minutes forward from the start time to search availability (15-minute intervals, up to 180 minutes).</td>\n<td>No (Default: 150)</td>\n</tr>\n<tr>\n<td><code>backward_minutes</code></td>\n<td>int32</td>\n<td>The number of minutes backward from the start time to search availability (15-minute intervals, up to 180 minutes).</td>\n<td>No (Default: 150)</td>\n</tr>\n<tr>\n<td><code>include_experiences</code></td>\n<td>Boolean</td>\n<td>Whether to include experience availabilities.</td>\n<td>No (Default: false)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>📝 Note:</strong></p>\n<ul>\n<li><p>The API considers 5 AM as the start of a new business day.</p>\n</li>\n<li><p>Example: A request with <code>start_date_time = 2024-01-10T03:30</code> will only search availability between 01:00 and 04:45 on 2024-01-10.</p>\n</li>\n<li><p>If no availability is found, a <code>200 OK</code> will be returned with empty arrays.</p>\n</li>\n</ul>\n<hr />\n<h3 id=\"response\"><strong>Response</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>Restaurant Identifier</td>\n</tr>\n<tr>\n<td><code>restaurant_settings</code></td>\n<td>List of settings applied to the restaurant</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>The party size used for the availability search</td>\n</tr>\n<tr>\n<td><code>times</code></td>\n<td>Array of available time slots</td>\n</tr>\n<tr>\n<td><code>times_available</code></td>\n<td>Array of available time entities</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"the-restaurant_settings-object\"><strong>The</strong> <strong><code>restaurant_settings</code></strong> <strong>Object</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>scc_enabled</code></td>\n<td>Boolean</td>\n<td>Indicates whether secure credit card capture is enabled for the restaurant. When <code>true</code>, the restaurant supports bookings that require credit card holds, deposits, or prepayments.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"the-times_available-array\"><strong>The</strong> <strong><code>times_available</code></strong> <strong>Array</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>time</code></td>\n<td>String</td>\n<td>ISO 8601 time slot (<code>yyyy-MM-ddThh:mm</code>)</td>\n</tr>\n<tr>\n<td><code>availability_types</code></td>\n<td>Array</td>\n<td>Types of availability (<code>Standard</code> or <code>Experience</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"the-availability_types-array\"><strong>The</strong> <strong><code>availability_types</code></strong> <strong>Array</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>String</td>\n<td>Type of availability (<code>Standard</code> or <code>Experience</code>)</td>\n</tr>\n<tr>\n<td><code>cancellationPolicy</code></td>\n<td>Object</td>\n<td>Cancellation policy information</td>\n</tr>\n<tr>\n<td><code>diningArea</code></td>\n<td>Array of Entities</td>\n<td>Dining area and table type details</td>\n</tr>\n<tr>\n<td><code>experienceCancellationPolicy</code></td>\n<td>Array</td>\n<td>Cancellation policy details specific to each experience (when <code>type</code> is Experience)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"the-cancellationpolicy-object\"><strong>The</strong> <strong><code>cancellationPolicy</code></strong> <strong>Object</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>String</td>\n<td>Type of policy (<code>Deposit</code>, <code>Hold</code>, <code>Prepayment</code>)</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Policy identifier</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>int32</td>\n<td>Deposit amount in fractional currency (e.g., $50.49 → 5049)</td>\n</tr>\n<tr>\n<td><code>denominator</code></td>\n<td>int32</td>\n<td>Currency denominator (e.g., 1 USD = 100)</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>String</td>\n<td>3-letter currency code</td>\n</tr>\n<tr>\n<td><code>deposit_type</code></td>\n<td>String</td>\n<td>Calculation basis (<code>PerGuest</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"the-dining_area-array\"><strong>The</strong> <strong><code>dining_area</code></strong> <strong>Array</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Long</td>\n<td>Dining area ID</td>\n</tr>\n<tr>\n<td><code>table_type</code></td>\n<td>Array of Strings</td>\n<td>Table types (<code>default</code>, <code>bar</code>, etc.)</td>\n</tr>\n<tr>\n<td><code>experience_ids</code></td>\n<td>List of Longs</td>\n<td>(For <code>Experience</code> type only) Applicable experience IDs</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"understanding-dining-areas-and-table-types\"><strong>Understanding Dining Areas and Table types</strong></h4>\n<ul>\n<li><p><strong>Dining Area:</strong> is a grouping of tables within a specific physical or conceptual section of a restaurant, such as “Patio,” “Main Room,” or “Lounge.” Restaurants can create dining areas and assign tables to them.</p>\n<ul>\n<li>A restaurant section without a designated <strong>Dining Area,</strong> will return<code>other</code></li>\n</ul>\n</li>\n<li><p><strong>Table Type</strong> describes the attributes of the table itself. The available table types are: Regular (API sees <code>default</code>), High top, Counter, Bar and Outdoor</p>\n<ul>\n<li>A table without a designated <strong>Table Type,</strong> will return <code>default</code></li>\n</ul>\n</li>\n</ul>\n<p>When all the Dining Areas and Tables Types are assigned and these are not provided in the request, you will get the following error because the API has no value to default to.</p>\n<p><strong>Note:</strong> Don't forget include these in your Slot Lock and Make Reservation endpoints</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"errors\": [\n        {\n            \"code\": \"NoAvailability\",\n            \"message\": \"No availability found for the given parameters\"\n        }\n    ],\n    \"requestid\": \"53e15428-79dc-888-a55a-3e4fb50f5\"\n}\n\n</code></pre>\n<p><strong>📝 Note:</strong></p>\n<p>To retrieve full dining area details, make a call to:<br /><code>https://platform.opentable.com/v1/availability-metadata?rid={}</code></p>\n<h3 id=\"common-error-messaging\"><strong>Common Error Messaging</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>errors</code></td>\n<td>Array</td>\n<td>An array of error entities</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>String</td>\n<td>Short description of the error</td>\n</tr>\n<tr>\n<td><code>requestid</code></td>\n<td>String</td>\n<td>Unique request ID for OpenTable support reference</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"search---common-errors\"><strong>Search - Common Errors</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Reason</th>\n<th>Message</th>\n<th>Code</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Invalid or Expired Token</td>\n<td>invalid_token</td>\n<td><code>invalid_token</code></td>\n<td>401 Unauthorized</td>\n</tr>\n<tr>\n<td>No Authorization Token provided</td>\n<td>Authorization token is required to access this resource</td>\n<td>—</td>\n<td>403 Forbidden</td>\n</tr>\n<tr>\n<td>Illegal Party Size</td>\n<td>Party size must be from 1 to 20</td>\n<td><code>InvalidPartySize</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>No Party Size</td>\n<td>Required Integer parameter <code>party_size</code> is not present</td>\n<td><code>MissingPartySize</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Party Size not an Integer</td>\n<td><code>party_size</code> should be of type Integer</td>\n<td><code>InvalidPartySize</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>No Start Date/Time</td>\n<td>Required parameter <code>start_date_time</code> not present</td>\n<td><code>MissingDateTime</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Invalid Date/Time</td>\n<td><code>start_date_time</code> should be in ISO format</td>\n<td><code>InvalidDateTime</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Invalid Forward Minutes</td>\n<td><code>forward_minutes</code> should be of type Integer</td>\n<td><code>InvalidForwardMinutes</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Invalid Backward Minutes</td>\n<td><code>backward_minutes</code> should be of type Integer</td>\n<td><code>InvalidBackwardMinutes</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Start Date too soon</td>\n<td>Cannot search within 15 minutes of current time</td>\n<td><code>InvalidStartDateTime</code></td>\n<td>400 Bad Request</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","_postman_id":"ab80c4d3-3c2e-44a5-9289-e47e8eabcbbb"},{"name":"Experiences","item":[{"name":"Experience-Specific Cancellation Policies","item":[],"id":"96a444bc-6fe4-4b19-8ce0-d5e1e146f89e","description":"<h2 id=\"experience-specific-policies\">Experience-Specific Policies</h2>\n<p>OpenTable supports customizable policies for individual experiences, allowing restaurants to tailor booking, cancellation, and terms and conditions to each unique offering. These policies apply only to reservations made for a specific experience and do not affect standard reservations.</p>\n<h3 id=\"policy-hierarchy\">Policy Hierarchy</h3>\n<p>Restaurants can choose to:</p>\n<ul>\n<li>Define <strong>experience-specific policies</strong> for each experience, or use <strong>default policies</strong> that apply to all reservations via OpenTable for Restaurants (OT4R).</li>\n</ul>\n<h3 id=\"types-of-experience-specific-policies\">Types of Experience-Specific Policies</h3>\n<ul>\n<li><p><strong>Prepaid Experiences</strong></p>\n<p>  Always use a <code>Prepayment</code> policy type.</p>\n</li>\n<li><p><strong>Free and non pre paid Experiences:</strong></p>\n<ul>\n<li>Will inherit the restaurant level/default policy only when the policy is <strong>hold</strong></li>\n</ul>\n</li>\n</ul>\n<p>📝 <strong>Note - Free Experiences:</strong> they inherit the restaurant level policy when it's hold.</p>\n<h3 id=\"legacy-experiences\">Legacy Experiences</h3>\n<p>Experiences created <strong>before the launch of experience-specific policies</strong> will retain their original configurations. These are referred to as <strong>legacy experiences</strong> and do not adopt the new policy structures unless updated manually.</p>\n<hr />\n<h2 id=\"api-changes-availability-search\">API Changes: Availability Search</h2>\n<p>To support these policies, a new structure has been introduced in the availability search response:</p>\n<ul>\n<li><p><strong>New Field:</strong> <code>availability_types.experienceCancellationPolicy</code></p>\n<ul>\n<li><p>This field is included <strong>only when the</strong> <strong><code>type</code></strong> <strong>is</strong> <strong><code>\"Experience\"</code></strong>. Developers should use this new structure to retrieve cancellation policies for experience-based availability.</p>\n</li>\n<li><p><strong>Experiences cannot be cancelled nor modified</strong></p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Backward Compatibility Notice:</strong></p>\n<p>During the transition period, the legacy <code>cancellationPolicy</code> field will continue to appear for <code>\"Experience\"</code> availability types. This allows developers to integrate the new field while maintaining compatibility with existing implementations.</p>\n<hr />\n<h3 id=\"example-api-response\">Example API Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"times_available\": [\n    {\n      \"time\": \"2025-03-31T11:30\",\n      \"availability_types\": [\n        {\n          \"type\": \"Standard\",\n          \"cancellationPolicy\": {\n            \"type\": \"Deposit\",\n            \"id\": \"605388198f76d3d97a5e6964:v13\",\n            \"amount\": 500,\n            \"denominator\": 100,\n            \"currency\": \"USD\",\n            \"depositType\": \"PerGuest\"\n          }\n        },\n        {\n          \"type\": \"Experience\",\n          \"cancellationPolicy\": {\n            \"type\": \"Deposit\",\n            \"id\": \"605388198f76d3d97a5e6964:v13\",\n            \"amount\": 500,\n            \"denominator\": 100,\n            \"currency\": \"USD\",\n            \"depositType\": \"PerGuest\"\n          },\n          \"experienceCancellationPolicy\": [\n            {\n              \"experienceId\": 513366,\n              \"type\": \"Prepayment\",\n              \"id\": \"67d3235f4c20509ba6dce0d6:v1\"\n            },\n            {\n              \"experienceId\": 512230,\n              \"type\": \"Deposit\",\n              \"id\": \"605388198f76d3d97a5e6964:v13\",\n              \"amount\": 500,\n              \"denominator\": 100,\n              \"currency\": \"USD\",\n              \"depositType\": \"PerGuest\"\n            },\n            {\n              \"experienceId\": 513364,\n              \"type\": \"Hold\",\n              \"id\": \"67d31ba38762da53f4b1df07:v1\"\n            },\n            {\n              \"experienceId\": 512940,\n              \"type\": \"Prepayment\",\n              \"id\": \"67b89d527e04fd46b4435295:v1\"\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n\n</code></pre>\n<p>The <code>experienceCancellationPolicy</code> object is the authoritative source for cancellation details associated with experience-based reservations and will eventually replace the general <code>cancellationPolicy</code> field.</p>\n<hr />\n","_postman_id":"96a444bc-6fe4-4b19-8ce0-d5e1e146f89e"},{"name":"Active Experiences","id":"4c0ae07b-5ac7-4db2-9b7a-f1cb2f1562ed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/inhouse/v1/booking/experiences/{{rid4}}","description":"<h1 id=\"active-experiences-api\"><strong>Active Experiences API</strong></h1>\n<h3 id=\"overview\"><strong>Overview</strong></h3>\n<p>The <strong>Active Experiences</strong> endpoint allows clients to retrieve a list of active bookable experiences associated with a specific restaurant. It includes rich metadata such as descriptions, pricing, gratuity, and availability details.</p>\n<p><strong>Important Note:</strong> This endpoint <strong>may return experiences that are not bookable by phone</strong>. Partners must validate bookability using the availability search endpoint, based on date, time, and party size.</p>\n<hr />\n<h3 id=\"request\"><strong>Request</strong></h3>\n<ul>\n<li><p><strong>Method:</strong> <code>GET</code></p>\n</li>\n<li><p><strong>URL:</strong> <code>{{base-url}}/inhouse/v1/booking/experiences/{{rid}}</code></p>\n</li>\n</ul>\n<h4 id=\"path-parameter\"><strong>Path Parameter</strong></h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>RID</code></td>\n<td>Long</td>\n<td>Restaurant ID used to fetch associated active experiences</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"response\"><strong>Response</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td>Array of Entity</td>\n<td>Array of active experiences (see <strong>Data Entity</strong>)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"the-data-array-active-experience\"><strong>The</strong> <strong><code>data</code></strong> <strong>Array: Active Experience</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>bookable</code></td>\n<td>Boolean</td>\n<td>Indicates if the experience can be booked</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>String (3-letter)</td>\n<td>Currency of the experience price</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>String</td>\n<td>Description of the experience</td>\n</tr>\n<tr>\n<td><code>experience_id</code></td>\n<td>Long</td>\n<td>Unique identifier of the experience</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Name/title of the experience</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>Long</td>\n<td>Restaurant identifier</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>Int</td>\n<td>Version of the experience</td>\n</tr>\n<tr>\n<td><code>price_info</code></td>\n<td>Object</td>\n<td>Nested object with pricing details (see <strong>Price Info Entity</strong>)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"the-price_info-object\"><strong>The</strong> <strong><code>price_info</code></strong> <strong>Object</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>price_type</code></td>\n<td>Enum { PER_PERSON, PER_PARTY }</td>\n<td>Indicates pricing is per person or per party</td>\n</tr>\n<tr>\n<td><code>pre_payment_required</code></td>\n<td>Boolean</td>\n<td>Indicates if prepayment is required</td>\n</tr>\n<tr>\n<td><code>currency_code</code></td>\n<td>String (3-letter)</td>\n<td>Currency used for the pricing</td>\n</tr>\n<tr>\n<td><code>multiplier</code></td>\n<td>Int</td>\n<td>Multiplier for price units</td>\n</tr>\n<tr>\n<td><code>gratuity</code></td>\n<td>Object</td>\n<td>Gratuity details (see <strong>Gratuity Entity</strong>)</td>\n</tr>\n<tr>\n<td><code>prices</code></td>\n<td>Array</td>\n<td>Array of price definitions (see <strong>Prices Entity</strong>)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"the-gratuity-object\"><strong>The</strong> <strong><code>gratuity</code></strong> <strong>Object</strong></h3>\n<p><strong>Gratuity = tip:</strong> it is an additional charge added to the cost of an experience and It can be mandatory or optional. If it gratuity is mandantory, it should be mentioned.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>label</code></td>\n<td>String</td>\n<td>Description of the gratuity</td>\n</tr>\n<tr>\n<td><code>numerator</code></td>\n<td>Int</td>\n<td>Numerator value of gratuity percentage</td>\n</tr>\n<tr>\n<td><code>denominator</code></td>\n<td>Int</td>\n<td>Denominator for gratuity calculation</td>\n</tr>\n<tr>\n<td><code>mandatory</code></td>\n<td>Boolean</td>\n<td>Indicates if gratuity is mandatory</td>\n</tr>\n<tr>\n<td><code>taxable</code></td>\n<td>Boolean</td>\n<td>Indicates if gratuity is taxable</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"the-prices-array\"><strong>The</strong> <strong><code>prices</code></strong> <strong>Array</strong></h3>\n<p>Experiences return an array of prices to enable flexible, category-based pricing for the same event or service. This design allows for:</p>\n<ul>\n<li><p>Differentiated pricing for various guest types (e.g., adults, children, seniors)</p>\n</li>\n<li><p>Accommodation of promotional rates or packages within a single experience</p>\n</li>\n<li><p>Greater configurability for venues to tailor pricing based on demand, time, or guest characteristics</p>\n</li>\n</ul>\n<p>By storing prices as an array, the system can seamlessly present appropriate options for each booking without requiring separate experience entries for each pricing scenario.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>price_id</code></td>\n<td>Long</td>\n<td>Unique price identifier</td>\n</tr>\n<tr>\n<td><code>price_title</code></td>\n<td>String</td>\n<td>Title or label of the price (e.g. Adult, Child)</td>\n</tr>\n<tr>\n<td><code>min_unit_amount</code></td>\n<td>Int</td>\n<td>Minimum price amount (in minor units e.g. cents)</td>\n</tr>\n<tr>\n<td><code>price_all_inclusive</code></td>\n<td>Boolean</td>\n<td>Indicates if the price includes taxes and service charges. This affects the final price. Make sure you call Experience total to get the full price</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"common-error-messaging\"><strong>Common Error Messaging</strong></h2>\n<h3 id=\"error-response-structure\"><strong>Error Response Structure</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>errors</code></td>\n<td>Array</td>\n<td>List of error entities</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>String</td>\n<td>Brief error message</td>\n</tr>\n<tr>\n<td><code>requestid</code></td>\n<td>String</td>\n<td>Unique identifier for troubleshooting</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"active-experiences---common-errors\"><strong>Active Experiences - Common Errors</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Reason for the Error</th>\n<th>Error Message</th>\n<th>Code</th>\n<th>HTTP Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Invalid or Expired Token</td>\n<td><code>invalid_token</code></td>\n<td><code>invalid_token</code></td>\n<td>401 Unauthorized</td>\n</tr>\n<tr>\n<td>No Authorization Token Provided</td>\n<td>Authorization token is required to access this resource</td>\n<td>—</td>\n<td>403 Forbidden</td>\n</tr>\n<tr>\n<td>Invalid Restaurant ID</td>\n<td>Restaurant identifier is invalid</td>\n<td><code>InvalidRid</code></td>\n<td>400 Bad Request</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"path":["inhouse","v1","booking","experiences","{{rid4}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"a332eb9a-1a7d-4287-8082-a6d3c561b6e5","name":"200","originalRequest":{"method":"GET","header":[],"url":"https://platform.opentable.com/inhouse/v1/booking/experiences/1038007"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"012192af-5919-4d95-9629-e56a2d2659ef"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"8957e661-7832-44c8-8cd1-a503a9b3d65c"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/experiences/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Content-Length","value":"597"},{"key":"Date","value":"Thu, 05 Jun 2025 16:33:54 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"otuvid=1D9E2108-2191-4176-B6BF-A6F651D643C8; Path=/; Domain=opentable.com; Max-Age=31536000; Expires=Fri, 05 Jun 2026 16:33:54 GMT; Secure; SameSite=None"},{"key":"Set-Cookie","value":"ak_bmsc=C127FE2E39AD8A57F525EC974CF02C6E~000000000000000000000000000000~YAAQUKvWF2Sb5DOXAQAAxiHxQBweTh73hMU1iL/14ts/0eGlmcw0MbXkU7ZCKHEahy9NRVN8n4ZyCtInXSiPA58g+OMghgdZPHceuZEGuL5j2d0Sspw8aVkdEXVIqQ5j5x+SqJsFSHFUuNF6dbAxiQw7bpQs471mBB140OCFfYe2YYkRRaE9gyZRWI67vTC9fntO+V0O+ZlXT/mIBHr/DR+GjCKZowBwB5w2pklmGWadyH7gjMoKxW/lXHPpZrbq51MpzBcMEdinR9+7w8WrS2Pip9UfIPNgd5IZSTLZc7xo1HAEeDxkhIHKcDL2vO7xuCbQ0ZBucfVCBaXGkCVfbqD3IL/gPHJh2bbeaA==; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:33:51 GMT; Max-Age=7197"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"bookable\": true,\n            \"currency\": \"USD\",\n            \"description\": \"test test test test\",\n            \"experience_id\": 111800,\n            \"name\": \"Tequila Dinner\",\n            \"rid\": 1038007,\n            \"version\": 3,\n            \"price_info\": {\n                \"price_type\": \"PER_PERSON\",\n                \"prepayment_required\": false,\n                \"currency_code\": \"USD\",\n                \"multiplier\": 100,\n                \"prices\": [\n                    {\n                        \"price_id\": 239721,\n                        \"min_unit_amount\": 5000,\n                        \"price_all_inclusive\": true\n                    }\n                ]\n            }\n        },\n        {\n            \"bookable\": true,\n            \"currency\": \"USD\",\n            \"description\": \"Enjoy an amazing evening with the best pizza, that has won 3 Michelin stars.\",\n            \"experience_id\": 324887,\n            \"name\": \"Michelin Pizza  Dinner\",\n            \"rid\": 1038007,\n            \"version\": 5,\n            \"price_info\": {\n                \"price_type\": \"PER_PERSON\",\n                \"prepayment_required\": false,\n                \"currency_code\": \"USD\",\n                \"multiplier\": 100,\n                \"gratuity\": {\n                    \"label\": \"Gratuity\",\n                    \"numerator\": 1000,\n                    \"denominator\": 10000,\n                    \"mandatory\": true,\n                    \"taxable\": false\n                },\n                \"prices\": [\n                    {\n                        \"price_id\": 626016,\n                        \"price_title\": \"price 1\",\n                        \"min_unit_amount\": 10000,\n                        \"price_all_inclusive\": false\n                    },\n                    {\n                        \"price_id\": 635228,\n                        \"price_title\": \"Kid\",\n                        \"min_unit_amount\": 5000,\n                        \"price_all_inclusive\": false\n                    }\n                ]\n            }\n        },\n        {\n            \"bookable\": true,\n            \"currency\": \"USD\",\n            \"description\": \"Non prepaid Rakesh\",\n            \"experience_id\": 441127,\n            \"name\": \"Non prepaid Rakesh\",\n            \"rid\": 1038007,\n            \"version\": 1,\n            \"price_info\": {\n                \"price_type\": \"PER_PERSON\",\n                \"prepayment_required\": false,\n                \"currency_code\": \"USD\",\n                \"multiplier\": 100,\n                \"prices\": [\n                    {\n                        \"price_id\": 719518,\n                        \"min_unit_amount\": 3300,\n                        \"price_all_inclusive\": true\n                    }\n                ]\n            }\n        },\n        {\n            \"bookable\": true,\n            \"currency\": \"USD\",\n            \"description\": \"Rakesh Non prepaid with custom cancellation\",\n            \"experience_id\": 449565,\n            \"name\": \"Rakesh Non prepaid with custom cancellation\",\n            \"rid\": 1038007,\n            \"version\": 1,\n            \"price_info\": {\n                \"price_type\": \"PER_PERSON\",\n                \"prepayment_required\": false,\n                \"currency_code\": \"USD\",\n                \"multiplier\": 100,\n                \"prices\": [\n                    {\n                        \"price_id\": 726466,\n                        \"min_unit_amount\": 2000,\n                        \"price_all_inclusive\": true\n                    }\n                ]\n            }\n        },\n        {\n            \"bookable\": true,\n            \"currency\": \"USD\",\n            \"description\": \"Experience with hold\",\n            \"experience_id\": 480995,\n            \"name\": \"Experience with hold\",\n            \"rid\": 1038007,\n            \"version\": 1,\n            \"price_info\": {\n                \"price_type\": \"PER_PERSON\",\n                \"prepayment_required\": false,\n                \"currency_code\": \"USD\",\n                \"multiplier\": 100,\n                \"prices\": [\n                    {\n                        \"price_id\": 751251,\n                        \"min_unit_amount\": 100,\n                        \"price_all_inclusive\": true\n                    }\n                ]\n            }\n        },\n        {\n            \"bookable\": true,\n            \"currency\": \"USD\",\n            \"description\": \"Special menu with CC required\",\n            \"experience_id\": 345068,\n            \"name\": \"Special menu with CC required\",\n            \"rid\": 1038007,\n            \"version\": 4,\n            \"price_info\": {\n                \"price_type\": \"PER_PERSON\",\n                \"prepayment_required\": true,\n                \"currency_code\": \"USD\",\n                \"multiplier\": 100,\n                \"gratuity\": {\n                    \"label\": \"Gratuity\",\n                    \"numerator\": 2000,\n                    \"denominator\": 10000,\n                    \"mandatory\": true,\n                    \"taxable\": false\n                },\n                \"prices\": [\n                    {\n                        \"price_id\": 638112,\n                        \"min_unit_amount\": 2000,\n                        \"price_all_inclusive\": true\n                    }\n                ]\n            }\n        }\n    ]\n}"}],"_postman_id":"4c0ae07b-5ac7-4db2-9b7a-f1cb2f1562ed"},{"name":"Experience Total","id":"36f79fcf-eeda-4645-b6c0-421c296960e6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"experience_id\":324887,\n    \"party_size_per_price_type\": [\n        {\n            \"id\":626016,\n            \"count\":2\n        },\n        {\n            \"id\":635228,\n            \"count\":1\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/experiences/{{rid4}}","description":"<h1 id=\"experience-total-api\">Experience Total API</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The <strong>Experience Total</strong> endpoint calculates the full cost breakdown for a selected experience, including optional add-ons, service fees, taxes, and gratuity, based on the party size and price types.</p>\n<hr />\n<h2 id=\"request\">Request</h2>\n<ul>\n<li><p><strong>Method:</strong> <code>POST</code></p>\n</li>\n<li><p><strong>URL:</strong> <code>/booking/experiences/{RID}</code></p>\n</li>\n</ul>\n<h3 id=\"path-parameter\">Path Parameter</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>RID</td>\n<td>Long</td>\n<td>Restaurant ID</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>experience_id</code></td>\n<td>Long</td>\n<td>Experience Identifier (<strong>required</strong>)</td>\n</tr>\n<tr>\n<td><code>party_size_per_price_type</code></td>\n<td>Array</td>\n<td>Indicates different price types. <strong>Required</strong> if <code>\"price_type\": \"PER_PERSON\"</code> For <code>\"price_type\": \"PER_PARTY\"</code> set to <code>null</code> or omit it. You can find this from the Get Active Experiences endpont.</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>Int</td>\n<td>If using slot lock, this should match that number. <strong>Required</strong> only if <code>\"price_type\": \"PER_PARTY\"</code> You can find this from the Get Active Experiences endpont.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response\">Response</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Long</td>\n<td>Experience Identifier</td>\n</tr>\n<tr>\n<td><code>subtotal_amount</code></td>\n<td>Integer</td>\n<td>Prices of experience and add-ons (before fees, taxes, tips)</td>\n</tr>\n<tr>\n<td><code>service_fee_amount</code></td>\n<td>Integer</td>\n<td>Amount of service fee charged.</td>\n</tr>\n<tr>\n<td><code>taxes_amount</code></td>\n<td>Integer</td>\n<td>Amount of taxes charged</td>\n</tr>\n<tr>\n<td><code>tip_amount</code></td>\n<td>Integer</td>\n<td>Tip amount to be charged (zero if tip is not mandatory)</td>\n</tr>\n<tr>\n<td><code>total_amount</code></td>\n<td>Integer</td>\n<td>Total = subtotal + service fee + taxes + tip</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"common-error-messaging\">Common Error Messaging</h2>\n<h3 id=\"error-response-format\">Error Response Format</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>errors</td>\n<td>Array</td>\n<td>An array of entities with error descriptions</td>\n</tr>\n<tr>\n<td>message</td>\n<td>String</td>\n<td>Short description of the error</td>\n</tr>\n<tr>\n<td>requestid</td>\n<td>String</td>\n<td>Unique request ID for tracing/debugging purposes with OpenTable support</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"experience-total--common-errors\">Experience Total – Common Errors</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Reason for the Error</th>\n<th>Error Message</th>\n<th>Code</th>\n<th>HTTP Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Invalid or Expired Token</td>\n<td><code>invalid_token</code></td>\n<td>invalid_token</td>\n<td>401 Unauthorized</td>\n</tr>\n<tr>\n<td>No Authorization Token Provided</td>\n<td>Authorization token is required to access this resource</td>\n<td>—</td>\n<td>403 Forbidden</td>\n</tr>\n<tr>\n<td>Invalid Restaurant or Experience ID</td>\n<td>Restaurant identifier or Experience Identifier is invalid</td>\n<td>InvalidRidOrExperienceId</td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Missing Experience ID</td>\n<td>Required Long parameter ‘experience_id’ is not present</td>\n<td>MissingExpId</td>\n<td>400 Bad Request</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["inhouse","v1","booking","experiences","{{rid4}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"9bc63cd3-922d-4ac8-998d-dfeb0754766d","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"experience_id\":324887,\n    \"party_size_per_price_type\": [\n        {\n            \"id\":626016,\n            \"count\":2\n        },\n        {\n            \"id\":635228,\n            \"count\":1\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/experiences/1038007"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"2f63e3a5-bf58-4a0e-900e-4bdb1b6d3c68"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"18db26ec-ae84-47f5-b02a-ef7bb0b090af"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/experiences/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 16:55:18 GMT"},{"key":"Content-Length","value":"88"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQSXQyF/TrZC+XAQAAj7wEQRxJIJ6/LUZFW9fRPvb4C21Kdpzvx6Uy4JQuSjBqWBsIXbYO/IfVe/Edw3BLDspzBuuRuYGEQhZ9XnCBmUCeBkJnybwlBme45dv40KwDh4D9Gl3luGqNMxclSj5dshaC0V+mgyP4r32HS7VVhUIqB4yaWl/SHMj4v+fq5iAQgEXKFi3TdtsFrDxAfmze1TI93Cg6KAtI7jCoBnKfe9eC4n/UY8zNVP14zg9TH5sLDQ6v~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=7161; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"subtotal_amount\": 25000,\n    \"service_fee_amount\": 2500,\n    \"taxes_amount\": 2750,\n    \"tip_amount\": 2500,\n    \"total_amount\": 32750\n}"}],"_postman_id":"36f79fcf-eeda-4645-b6c0-421c296960e6"}],"id":"85c6db54-f3af-4e90-95ee-121d415123d9","description":"<h1 id=\"description\"><strong>Description</strong></h1>\n<p><strong>OVERVIEW</strong></p>\n<p>Experiences allow restaurants to use their availability for special events. From happy hour to winery tours, $1 oysters to exquisite 12-course tasting menus and more. When restaurants offer Experiences on OpenTable, the Voice AI API will allow you to book, confirm and even collect deposits.</p>\n<p>Availability for the experiences are real-time and reservations are confirmed in the system once the reservation is completed. You can choose to show only standard availability or also include experiences by using the <code>include_experiences</code> query parameter.</p>\n<p><strong>HOW WILL THIS IMPACT RESTAURANTS?</strong></p>\n<p>While these APIs are optional, restaurants that offer experiences will have inventory dedicated to the experiences. Here is how it looks on OpenTable.com for a restaurant with an experience and standard availability.</p>\n<img src=\"https://content.pstmn.io/806cb51d-5d10-4074-bff9-a18d1e459169/aW1hZ2UucG5n\" width=\"415\" height=\"286\" />","_postman_id":"85c6db54-f3af-4e90-95ee-121d415123d9"},{"name":"Slot Lock (aka Booking Lock)","item":[{"name":"Slot Lock","id":"aeceb7ee-2e91-42a5-bb1d-b2f849f88cbd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n   \"restaurant_id\": {{rid4}},\n   \"party_size\": 2,\n   \"date_time\": \"2025-07-28T12:45\",\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/locks","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","locks"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"0222d62d-45a6-4228-9bec-05da9ca06f43","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n   \"restaurant_id\": 1038007,\n   \"party_size\": 2,\n   \"date_time\": \"2025-07-28T12:45\",\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/locks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"6170d56a-5ddd-43ff-a2bd-52d178799fb7"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"f15df2b9-67a7-45ef-b305-e8bc08f6ddfd"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/locks"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 18:16:34 GMT"},{"key":"Content-Length","value":"229"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQSXQyF78WaC+XAQAAsiBPQRzMqV54qLWVZHeugIN4t7s9K2HZdSUjX+a9IvVB8zbmegCPS3fHgHrkCqW9gqlAV8Q8yaBWUIAo2dZJj8ySmC/CUlUUSKUo12GMPVZL5dyiy9ocmZN/twTHZvjm86KAv+6TnwVx7nDM6Ripc5Al723XjVloaz73m/hlmTgYntuH+BgaieGkrWSXbio0x3zrT0oUwlvmNTIFhZ0vbVi2QqDa4Qs5eeKxJwoug5Ta5GLkpw==~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=2285; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"expires_at\": \"2025-06-05T18:21\",\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0NDYwNTc4NDR8MnwyMDI1LTA3LTI4VDEyOjQ1fDEwMzgwMDcifQ.7Ej6x8wkOqZFsrq09M0YX7FbmohWbrrKwTj00hcHMlaRqxfnOZHa8fLrtoKvbfFtJeyEmi4LAZtOuZfjnA3ohw\"\n}"}],"_postman_id":"aeceb7ee-2e91-42a5-bb1d-b2f849f88cbd"}],"id":"286e6fda-c0b9-4547-a153-f62b07027747","description":"<h1 id=\"description\"><strong>Description</strong></h1>\n<h2 id=\"overview\"><strong>OVERVIEW</strong></h2>\n<p>Slot Locks allow for the inventory that has been chosen by the booker to be locked for a total of 5 minutes. This allows that no other user can book the reservation while the initial booker completes their transaction. If a booking is attempted after the slot lock expiry, the booking can be re-tried, but availability is not guareenteed.</p>\n<p>Availability has already been verified via the APIs, this step will block the availability for the diner and allow for booking.</p>\n<p>The five minute window is hard coded and cannot be edited.</p>\n<h3 id=\"how-will-this-impact-restaurants\"><strong>HOW WILL THIS IMPACT RESTAURANTS?</strong></h3>\n<p>Restaurant availability will be blocked for that specific user for the allotment of the slot lock window.</p>\n<img src=\"https://content.pstmn.io/4a041506-ea89-4068-ad98-3c0a4c4ca709/aW1hZ2UucG5n\" width=\"1276\" height=\"654\" />\n\n<h2 id=\"endpoint-details\"><strong>Endpoint Details</strong></h2>\n<ul>\n<li><p><strong>Method:</strong> <code>POST</code></p>\n</li>\n<li><p><strong>URL:</strong> <code>{{base-url}}/inhouse/v1/booking/{{rid}}/locks</code></p>\n</li>\n</ul>\n<h2 id=\"path-parameter\"><strong>Path Parameter</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>RID</code></td>\n<td>long</td>\n<td>Restaurant ID</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\"><strong>Request Body</strong></h2>\n<p>The body of the request must be a JSON object containing the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>restaurant_id</code></td>\n<td>Int</td>\n<td>The unique identifier for the restaurant. Must match the <code>rid</code> in the URL</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>Int</td>\n<td>Party Size (must be &lt;= 20)</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>date_time</code></td>\n<td>String</td>\n<td>The desired date and time for the reservation, formatted as <code>yyyy-MM-ddTHH:mm</code></td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>table_type</code></td>\n<td>String</td>\n<td>The preferred type of table. If not specified, the system will default to <code>default</code>. Accepted values:<code>default, highTop, outdoor, bar, counter</code></td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>dining_area_id</code></td>\n<td>Int</td>\n<td>No, if not sent, it shall default it to <code>default</code></td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>experience_id</code></td>\n<td>Int</td>\n<td>This is the experience ID returned from the Availability and Active Experience endpoints</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><p>Example Request Body for Slot Locks</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n   \"restaurant_id\": 1234,\n   \"party_size\": 2,\n   \"date_time\": \"2025-07-28T12:45\",\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1\n   \"experience_id\": 542699 # If applicable\n}\n\n</code></pre>\n","_postman_id":"286e6fda-c0b9-4547-a153-f62b07027747"},{"name":"Make Reservation","item":[{"name":"Make Reservation","id":"8036cfb5-c934-48b1-a499-b3a0ab953b52","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"\n{\n   \"first_name\": \"Han\",\n   \"last_name\": \"Solo\",\n   \"phone\": {\n       \"number\": \"4155555555\",\n       \"country_code\": 1\n   },\n   \"restaurant_id\": \"1040230\",\n   \"special_request\": \"Date night\",\n   \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxNDAyMjM1NTQ0fDJ8MjAyNS0xMi0xN1QxMzowMHwxMDQwMjMwIn0.mvo0RIreaJ6LLBJmtuO5vJoZGsdHqQ0VqRNqpx7M_AzVTmG-mm1-SBKHBzO71g109SVRvZ9X8Bi4V6QhTG9l7Q\",\n   \"sms_notifications_opt_in\": true,\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1,\n   \"payments\": {\n    \"waive\": false,\n    \"waive_reason\": \"TBD\"\n   }\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid}}/reservations","urlObject":{"path":["inhouse","v1","booking","{{rid}}","reservations"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"dc33931c-f6dd-451e-a31c-c6335b8e93dc","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"\n{\n   \"first_name\": \"Han\",\n   \"last_name\": \"Solo\",\n   \"phone\": {\n       \"number\": \"4155555555\",\n       \"country_code\": 1\n   },\n   \"restaurant_id\": \"1040230\",\n   \"special_request\": \"Date night\",\n   \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxNDAyMjM1NTQ0fDJ8MjAyNS0xMi0xN1QxMzowMHwxMDQwMjMwIn0.mvo0RIreaJ6LLBJmtuO5vJoZGsdHqQ0VqRNqpx7M_AzVTmG-mm1-SBKHBzO71g109SVRvZ9X8Bi4V6QhTG9l7Q\",\n   \"sms_notifications_opt_in\": true,\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1,\n   \"payments\": {\n    \"waive\": false,\n    \"waive_reason\": \"TBD\"\n   }\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/reservations"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"0aa2766f-00c0-490d-8da2-357fdb2ee715"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"81A2E558-AE0A-4896-B46B-9D7A26A4B1D7"},{"key":"ot-sessionid","value":"b40307f0-5ea8-4e23-8094-401575006b70"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"299"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations"},{"key":"Content-Encoding","value":"gzip"},{"key":"Content-Length","value":"187"},{"key":"Date","value":"Wed, 26 Nov 2025 11:44:37 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=4247D566D06EB7AF7518437B1D6111BF~YAAQZk5OaNHKWLiaAQAAU9L6vx2twQ0scyrjy9D5+4TuBNxrxYLfn9FTTEQ9GhrWheToDCLPw2lClj6o47wF2MBXkaDsJQVX1JK22DcEc6laeAx5Qat6GlCga2G2xFQcreLKWNa7lE+gVRdf/3N7zGFQ/mUe20c7MQs1iz/Y3RySDt/Mglkj6Gm7IectoJsoDgQRiHLZQ2Pes0pIrnTxBMElTziNjNbNEeiMat5VTRnUbSavUMjRWBJRy0guaAc3EWqL~1; Domain=.opentable.com; Path=/; Expires=Wed, 26 Nov 2025 13:44:25 GMT; Max-Age=7188; SameSite=None; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"confirmation_number\": 2110008578,\n    \"reservation_id\": \"6926e825d31b7a0f0d694e5d\",\n    \"date_time\": \"2025-12-17T13:00\",\n    \"party_size\": 2,\n    \"special_request\": \"Date night\",\n    \"cancellation_policy\": \"6894cf09335a01e25a798bd6:v18\"\n}"}],"_postman_id":"8036cfb5-c934-48b1-a499-b3a0ab953b52"}],"id":"26dfd28e-63ee-4373-b56a-fb2f1b5edcdb","description":"<h2 id=\"description\">Description:</h2>\n<p>Creates a new reservation at the specified restaurant. This endpoint supports both <strong>standard</strong> and <strong>experience-based</strong> reservations. Depending on the payload, OpenTable will validate availability, pricing, guest information, and—if applicable—any associated experience rules (e.g., prepaid charges or deposit holds).</p>\n<h2 id=\"how-will-this-impact-restaurants\">How will this impact restaurants?</h2>\n<p>This will create a phone reservation with all applicable details in the OpenTable for Restaurants table management software.</p>\n<img src=\"https://content.pstmn.io/6797cb05-875f-402c-b583-f7a554c83209/VGVzdCBCb29raW5nLnBuZw==\" />\n\n<h2 id=\"endpoint-details\"><strong>Endpoint Details</strong></h2>\n<ul>\n<li><p><strong>Method:</strong> <code>POST</code></p>\n</li>\n<li><p><strong>URL:</strong> <code>{{base-url}}/inhouse/v1/booking/{{rid}}/reservations</code></p>\n</li>\n</ul>\n<h2 id=\"path-parameter\"><strong>Path Parameter</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>RID</code></td>\n<td>long</td>\n<td>Restaurant ID</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body-standard\"><strong>Request Body (Standard)</strong></h2>\n<p>The body of the request must be a JSON object containing the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>first_name</code></td>\n<td>String</td>\n<td>The first name of the primary diner.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>last_name</code></td>\n<td>String</td>\n<td>The last name of the primary diner.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>phone_number</code></td>\n<td>Object</td>\n<td>An object containing the diner's phone number and country code.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>restaurant_id</code></td>\n<td>String</td>\n<td>The unique identifier for the restaurant. Must match the <code>{rid}</code> in the URL.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>special_request</code></td>\n<td>String</td>\n<td>Any special requests from the diner (e.g., \"allergy to nuts,\" \"window seat if possible\").</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>reservation_token</code></td>\n<td>String</td>\n<td>The unique token received from the Slot Lock endpoint. This token contains the details of the held slot (party size, date/time, etc.).</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>sms_notifications_opt_in</code></td>\n<td>Boolean</td>\n<td>Set to true if the user agrees to receive SMS notifications about their booking. Set to false otherwise.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>dining_area_id</code></td>\n<td>Int</td>\n<td>This is the ID returned from the availability and metadata endpoint</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>table_type</code></td>\n<td>String</td>\n<td>The same dining area can contain different table types</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"the-phone_number-object\">The <code>phone_number</code> Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>number</code></td>\n<td>String</td>\n<td>The phone number of primary contact</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>country_code</code></td>\n<td>Int</td>\n<td>The country code of phone number from above</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Note:</strong> please reach out to you account manager if you're interested in using this.</p>\n<p>Example Request Body for Make Reservations (Standards)</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"first_name\": \"Savannah\",\n  \"last_name\": \"GourmetExplorer\",\n  \"phone\": {\n    \"number\": \"4153444200\",\n    \"country_code\": 1\n  },\n  \"special_request\": \"Date night\",\n  \"restaurant_id\": \"1038007\",\n  \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIyMTA0NzI2NzU1fDR8MjAyNC0wMy0wOVQxNjowMHwxMDM4MDA3In0.bxxF9zraEtxu9OIVMjfJm-WPZ9J2xicurQpIO8MFx384Dg4sz6zxyjs5itZt4gVvL7NiAj029cmjcqK74fiJ2Q\",\n  \"table_type\": \"default\",\n  \"dining_area_id\": 1,\n  \"sms_notifications_opt_in\": true\n}\n\n</code></pre>\n<h2 id=\"request-body-with-experiences\"><strong>Request Body (with Experiences)</strong></h2>\n<h3 id=\"the-experience-object\">The <code>experience</code> object</h3>\n<p>When a booking is for a specific experience, the <code>experience</code> object must be added to the body of the standard Make Reservation request and must include the following nested fields</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Int</td>\n<td>The unique identifier for the dining experience. Can be found by calling Active Experiences API</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>version</code></td>\n<td>Int</td>\n<td>The version number of the experience being booked. Can be found by calling Active Experiences API</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>party_size_per_price_type</code></td>\n<td>Array</td>\n<td>An array specifying how the total <code>party_size</code> is broken down into different pricing tiers or ticket types. Set this to <code>null</code> if <code>\"price_type\": \"PER_PARTY\"</code> you find this from Get Active Experiences endpoint</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"the-party_size_per_price_type-array\">The <code>party_size_per_price_type</code> Array</h3>\n<p><strong>Note:</strong> For free experiences omit this array but keep the <code>experience</code> object with just the <code>id</code> and <code>version</code></p>\n<p>Each object in the <code>party_size_per_price_type</code> array contains:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>Int</td>\n<td>The identifier for the specific price type (e.g., 799237 might represent an 'Adult' ticket). Can be found by calling Active Experiences API and it's named <code>price_id</code></td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>count</code></td>\n<td>Int</td>\n<td>This is equal to <code>party_size</code>. If the experience has different prices for example, adults and kids, make sure to list them all. Can be found by calling Active Experiences API</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><p>Example Request Body for Make Reservation with Experiences - This reservation is for 6 people.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"first_name\": \"Savannah\",\n  \"last_name\": \"GourmetExplorer\",\n  \"phone\": {\n    \"number\": \"4153444200\",\n    \"country_code\": 1\n  },\n  \"special_request\": \"Date night\",\n  \"restaurant_id\": \"1038007\",\n  \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIyMTA0NzI2NzU1fDR8MjAyNC0wMy0wOVQxNjowMHwxMDM4MDA3In0.bxxF9zraEtxu9OIVMjfJm-WPZ9J2xicurQpIO8MFx384Dg4sz6zxyjs5itZt4gVvL7NiAj029cmjcqK74fiJ2Q\",\n  \"table_type\": \"default\",\n  \"dining_area_id\": 1,\n  \"sms_notifications_opt_in\": true,\n  \"experience\": {\n    \"id\": 542724,\n    \"version\": 1,\n    \"party_size_per_price_type\": [ \n      {\n        \"id\": 12345,\n        \"count\": 4\n      },\n      {\n        \"id\": 321,\n        \"count\": 2\n      }\n    ]\n  }\n}\n\n</code></pre>\n","_postman_id":"26dfd28e-63ee-4373-b56a-fb2f1b5edcdb"},{"name":"Policies","item":[{"name":"Booking Policies","id":"669c7bd2-764b-4519-8bfc-38eed2c34328","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/booking-policies/{{rid4}}/{{date}}/{{time}}/{{partysize}}?dinerContext=details","description":"<h2 id=\"booking-policies-api-documentation\">Booking Policies API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><code>{{base-url}}/v2/booking-policies/{{rid}}/{YEAR-MONTH-DAY}/{TIME}/{PartySize}</code></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<ul>\n<li><p><strong>rid (restaurant id)</strong>: A static identifier for each restaurant.</p>\n</li>\n<li><p><strong>date (YEAR-MONTH-DAY)</strong>: Specifies the booking date. Example: <code>2024-12-01</code>.</p>\n</li>\n<li><p><strong>time (TIME)</strong>: Specifies the time of the reservation. Must be in 15-minute intervals (<code>7:00</code>, <code>7:15</code>, <code>7:30</code>, <code>7:45</code>).</p>\n</li>\n<li><p><strong>PartySize</strong>: Specifies the number of guests for the booking policy query.</p>\n</li>\n</ul>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dinerContext</td>\n<td>string</td>\n<td>Must be set to <code>details</code> only.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-elements\">Response Elements</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Policies</td>\n<td>array</td>\n<td>Contains available policies</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"policies-attributes\">Policies Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Message</td>\n<td>string</td>\n<td>Describes any available messages.</td>\n</tr>\n<tr>\n<td>Type</td>\n<td>string</td>\n<td>Usually <code>General</code>. Represents the policy type.</td>\n</tr>\n<tr>\n<td>Language</td>\n<td>array</td>\n<td>Specifies the language details of the policy.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"language-attributes\">Language Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Code</td>\n<td>string</td>\n<td>Language code.</td>\n</tr>\n<tr>\n<td>Region</td>\n<td>string</td>\n<td>Region associated with language.</td>\n</tr>\n<tr>\n<td>IETF</td>\n<td>string</td>\n<td>IETF language code format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","booking-policies","{{rid4}}","{{date}}","{{time}}","{{partysize}}"],"host":["{{base-url}}"],"query":[{"key":"dinerContext","value":"details"}],"variable":[]}},"response":[{"id":"b5a5cbdc-b85d-4423-8aea-07ecc1264944","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":{"raw":"{{base-url}}/v2/booking-policies/{{rid}}/{{date}}/{{time}}/{{partysize}}?dinerContext=details","host":["{{base-url}}"],"path":["v2","booking-policies","{{rid}}","{{date}}","{{time}}","{{partysize}}"],"query":[{"key":"dinerContext","value":"details"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"OT-RequestId","value":"72ea2a04-bb79-4f41-8eed-4d9669ded136"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"73"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v1/booking-policies/{rid}/{date}/{time}/{partySize}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 20:21:52 GMT"},{"key":"Content-Length","value":"266"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"Policies\": [\n        {\n            \"Message\": \"We have a 15 minute grace period. Please call us if you are running later than 15 minutes after your reservation time.<br /><br />Your table will be reserved for 1 hour 30 minutes for parties of up to 2; 2 hours for parties of up to 4; 2 hours 30 minutes for parties of up to 6; and 3 hours for parties of 7+.\",\n            \"Type\": \"General\",\n            \"Language\": {\n                \"Code\": \"en\",\n                \"Region\": \"US\",\n                \"IETF\": \"en-US\"\n            }\n        }\n    ]\n}"}],"_postman_id":"669c7bd2-764b-4519-8bfc-38eed2c34328"},{"name":"Cancellation Policies","id":"581c1f0b-8876-4273-9287-d78301449e0c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/cancellation-policies/{{rid}}/{{cancelation-ID}}","description":"<h2 id=\"cancellation-policies-api-documentation\">Cancellation Policies API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>URL:</strong> <code>{{base-url}}/v2/cancellation-policies/{rid}/{cancelationid}</code></p>\n<p><strong>Method:</strong> GET</p>\n<h3 id=\"description\">Description</h3>\n<p>The cancellation policy endpoint allows you to retrieve the cancellation policy for a reservation based on the restaurant ID and cancellation ID. The <code>cancelationid</code> is obtained from the response of the GET Availability call.</p>\n<h3 id=\"responsne-deposit\">Responsne (Deposit)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"partySize\": 5,\n    \"policyType\": \"Deposit\",\n    \"depositDetails\": {\n        \"amount\": 1500,\n        \"currency\": \"USD\",\n        \"denominator\": 100,\n        \"type\": \"PerGuest\"\n    },\n    \"cutOff\": {\n        \"cutoffType\": \"DaysBefore\",\n        \"daysBeforeCutoff\": 2\n    }\n}\n\n</code></pre>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partySize</code></td>\n<td>Int</td>\n<td>The number of guests for the reservation.</td>\n</tr>\n<tr>\n<td><code>policyType</code></td>\n<td>String</td>\n<td>Type of cancellation policy.</td>\n</tr>\n<tr>\n<td><code>depositDetails</code></td>\n<td>Object</td>\n<td>Details of the deposit policy.</td>\n</tr>\n<tr>\n<td><code>depositDetails.amount</code></td>\n<td>Int</td>\n<td>Deposit amount in minor currency units.</td>\n</tr>\n<tr>\n<td><code>depositDetails.currency</code></td>\n<td>String</td>\n<td>Currency of the deposit amount.</td>\n</tr>\n<tr>\n<td><code>depositDetails.denominator</code></td>\n<td>Int</td>\n<td>Conversion factor for minor units.</td>\n</tr>\n<tr>\n<td><code>depositDetails.type</code></td>\n<td>String</td>\n<td>Specifies if the deposit is per guest.</td>\n</tr>\n<tr>\n<td><code>cutOff</code></td>\n<td>Object</td>\n<td>Cutoff policy details.</td>\n</tr>\n<tr>\n<td><code>cutOff.cutoffType</code></td>\n<td>String</td>\n<td>Types of cut off: CancellableAnytime, DaysBefore, DayOfReservation, NotCancellable</td>\n</tr>\n<tr>\n<td><code>cutOff.daysBeforeCutoff</code></td>\n<td>Int</td>\n<td>Number of days before cutoff.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"respone-hold\">Respone (Hold)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"name\": \"CC Hold\",\n    \"partySize\": 2,\n    \"policyType\": \"Hold\",\n    \"holdDetails\": {\n        \"cancellationPenaltyAmount\": 5,\n        \"guestCountChangePenaltyAmount\": 5\n    },\n    \"cutOff\": {\n        \"cutoffType\": \"DaysBefore\",\n        \"daysBeforeCutoff\": 2\n    },\n    \"schedules\": [\n        {\n            \"priority\": 2,\n            \"startDate\": \"2026-02-13\",\n            \"endlate\": \"2028-01-01\",\n            \"startTime\": \"12:00\",\n            \"endTime\": \"13:45\"\n        }\n    ]\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Name of the policy</td>\n</tr>\n<tr>\n<td><code>partySize</code></td>\n<td>Int</td>\n<td>The number of guests where the policy start taking place. E.g if it's 3 and your reservation for 2 people, the policy doesn't apply</td>\n</tr>\n<tr>\n<td><code>policyType</code></td>\n<td>String</td>\n<td>Type of cancellation policy.</td>\n</tr>\n<tr>\n<td><code>holdDetails</code></td>\n<td>Object</td>\n<td>Details of the policy</td>\n</tr>\n<tr>\n<td><code>holdDetails.cancellationPenaltyAmount</code></td>\n<td>Int</td>\n<td>Panalty for cancelling outside the cancellation window or not showing up. In whole numbers. E.g. if it's 5, it's 5 USD, GBP, EUR etc</td>\n</tr>\n<tr>\n<td><code>holdDetails.guestCountChangePenaltyAmount</code></td>\n<td>Int</td>\n<td>Penatly for changing the party size. In whole numbers. E.g. if it's 5, it's 5 USD, GBP, EUR etc</td>\n</tr>\n<tr>\n<td><code>cutOff</code></td>\n<td>Object</td>\n<td>Cutoff policy details.</td>\n</tr>\n<tr>\n<td><code>cutOff.cutoffType</code></td>\n<td>String</td>\n<td>Types of cut off: CancellableAnytime, DaysBefore, DayOfReservation, NotCancellable</td>\n</tr>\n<tr>\n<td><code>cutOff.daysBeforeCutoff</code></td>\n<td>Int</td>\n<td>Number of days before cutoff.</td>\n</tr>\n<tr>\n<td><code>schedules.priority</code></td>\n<td>String</td>\n<td>Priority level for this policy. Higher priority policies win if multiple apply at same time.</td>\n</tr>\n<tr>\n<td><code>schedules.startDate</code></td>\n<td>String</td>\n<td>First calendar date this CC Hold policy can apply.</td>\n</tr>\n<tr>\n<td><code>schedules.endDate</code></td>\n<td>String</td>\n<td>Last calendar date this CC Hold policy can apply (inclusive).</td>\n</tr>\n<tr>\n<td><code>schedules.startTime</code></td>\n<td>String</td>\n<td>Earliest reservation time (inclusive) where this policy applies each active day.</td>\n</tr>\n<tr>\n<td><code>schedules.endTime</code></td>\n<td>String</td>\n<td>Latest reservation time (exclusive). A booking at 13:44 is included; a booking at 13:45 is not.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure you use a valid <code>cancelationPolicy.id</code> retrieved from the Make Reservation or Availability call.</p>\n</li>\n<li><p>The cutoff policy specifies the period within which cancellations are allowed.</p>\n</li>\n<li><p>The deposit amount is specified in minor currency units (e.g., cents for USD).</p>\n</li>\n<li><p>Amount for desposit is in fractional unit. For hold, it's in whole numbers</p>\n</li>\n<li><p>Remember that cancelling <code>hold</code> or <code>deposit</code> reservations outside the cancellation is not supported through this API</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","cancellation-policies","{{rid}}","{{cancelation-ID}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"54f94a69-7aa2-49c8-b780-86082fffbcb7","name":"Deposit","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/cancellation-policies/{{rid}}/{{cancelation-ID}}"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"d567928a-ef22-4287-8b38-9de95b4f8d3a"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"81A2E558-AE0A-4896-B46B-9D7A26A4B1D7"},{"key":"ot-sessionid","value":"e2dd7d0e-bf46-4921-ae7d-d59bde35bc40"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"35"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/cancellation-policies/{rid}/{policyId}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Content-Length","value":"200"},{"key":"Date","value":"Thu, 27 Nov 2025 13:37:02 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"ak_bmsc=EE69989461BF47948419DDE0812C8379~000000000000000000000000000000~YAAQbk5OaJtusL+aAQAAahmIxR1qCEnAN1bvtzQhb+GcpjNF70IT8xstzDW07oCba2CyYBvsE2V7Pi5QSdfKhdRkKe4kY4l2SZgT9mpNAK7+CZJhXv8jhQ00CrF3rKSl39tz/G9av00ys2mEbtQPEQ5kdeBp5T+JyDLPa+fUpWF88PSFADrKJ5Fr3meMoXWUDbJ2Gx5ZMOAKvMWShW3Qd3zxn+bpY9HNDzSy36HWNhK02ACOAMDa966Yo002+G5gMrbMKDIBUCTXt+9kfowmfMY0BQHJzYdtyrrsWKMAphuyWckj5sCFPM5XXfKwTCoFBbpYo3pmJD5nLhiwe9tkkSzPT+X94zThbNB9mCLOxQ==; Domain=.opentable.com; Path=/; Expires=Thu, 27 Nov 2025 15:37:02 GMT; Max-Age=7200; SameSite=None; Secure; HttpOnly"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"Deposit\",\n    \"partySize\": 1,\n    \"policyType\": \"Deposit\",\n    \"depositDetails\": {\n        \"amount\": 500,\n        \"currency\": \"USD\",\n        \"denominator\": 100,\n        \"type\": \"PerGuest\"\n    },\n    \"cutOff\": {\n        \"cutoffType\": \"DaysBefore\",\n        \"daysBeforeCutoff\": 2\n    },\n    \"schedules\": [\n        {\n            \"priority\": 2,\n            \"startDate\": \"2025-10-31\"\n        }\n    ]\n}"},{"id":"ce6e69a8-24f1-4bcb-a7c5-2328aea6881e","name":"Hold","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"bearer ","type":"text"}],"url":"{{base-url}}/v2/cancellation-policies/{{rid}}/{{cancelation-ID}}"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin,Access-Control-Request-Method,Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"b6b2e4b6-13d1-42a5-bac1-310b9b282d77"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"81A2E558-AE0A-4896-B46B-9D7A26A4B1D7"},{"key":"ot-sessionid","value":"596c853d-09ab-46b5-ac20-4380c368f8a6"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"70"},{"key":"x-ot-backend","value":"partnerfeeds"},{"key":"x-ot-uritemplate","value":"/partnerfeeds/v2/cancellation-policies/{rid}/{policyId}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Content-Length","value":"199"},{"key":"Date","value":"Thu, 27 Nov 2025 13:40:43 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=301240D7F67AB99E7C7DB192B1D53A81~YAAQDU5OaOsQKK2aAQAAr3iLxR3lZkrih7BHzfRLqZjy8FU8XxQCXNhS77c/9X6rsTXBa0tc/EwL4MCV58qzZQtK8VYxig52CK/7oBij6hBXS2e/rmTsYmJT/fMaKFeYgBvKUmdeDCWe868chvB+B7F9jJ7PXPJLA8FgDUw8YGRJpcdeZTd7P03x/ffi1c4CyiHeSID+GJPpTmZ5Gbd4ktGsMHK63mejsCM4D8l1lGEv3IRkmriEu/inGVYciIPEM3qt~1; Domain=.opentable.com; Path=/; Expires=Thu, 27 Nov 2025 15:40:43 GMT; Max-Age=7200; SameSite=None; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"CC Hold\",\n    \"partySize\": 1,\n    \"policyType\": \"Hold\",\n    \"holdDetails\": {\n        \"cancellationPenaltyAmount\": 5,\n        \"guestCountChangePenaltyAmount\": 5\n    },\n    \"cutOff\": {\n        \"cutoffType\": \"DaysBefore\",\n        \"daysBeforeCutoff\": 2\n    },\n    \"schedules\": [\n        {\n            \"priority\": 2,\n            \"startDate\": \"2025-11-24\"\n        }\n    ]\n}"}],"_postman_id":"581c1f0b-8876-4273-9287-d78301449e0c"}],"id":"95e36b4a-f975-4aeb-b8b6-4a0be2cdd3b8","description":"<p><strong>OVERVIEW</strong></p>\n<p>Booking Policies allow the restaurants to expose any specific details they would like the diner to know when they book the reservation.</p>\n<p>These details should be exposed when the diner is confirming the reservation so that they understand the terms of the reservations. These can be as simple as \"We offer valet parking...\" to \"Deposit of $50.00 will be collected if there is a no show\".</p>\n<p>A few notes:</p>\n<ul>\n<li><p>Booking and Cancellation Policies can vary by date and party size.</p>\n</li>\n<li><p>If no policies are available, the APIs will return an empty response.</p>\n</li>\n</ul>\n","_postman_id":"95e36b4a-f975-4aeb-b8b6-4a0be2cdd3b8"},{"name":"Cancellation","item":[{"name":"Cancellation","id":"b88611a5-f003-4cd2-abc7-db9ef929c0ec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/reservations/{{reservation-id}}","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","reservations","{{reservation-id}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"19dc7597-06ec-49c6-8e30-fd3de55645cb","name":"200","originalRequest":{"method":"DELETE","header":[],"url":"{{base-url}}/inhouse/v1/booking/{{rid}}/reservations/{{reservation-id}}"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"02f8fd98-8d3a-4137-b65b-eba533525853"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"8A7C7A9A-EA15-476B-A1A4-25C859B770CB"},{"key":"OT-SessionID","value":"4246afc8-cb75-46b3-9ee6-2d8393ca401f"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations/{id}"},{"key":"Content-Length","value":"90"},{"key":"Date","value":"Thu, 18 Sep 2025 13:04:56 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=EABD0139CEB7B59065A41B5C03A68128~YAAQc8gwF7Qym1aZAQAAR5DtXB1Fnb+mNhQ6PhQfKhVxZG0j8dZUCspUL9sw74zcNwOQ8PxFDcPnm6W0c0Sv2uLwWfPGP35wrHHyrRi8Xag7oD6Sgvbu7BmnX3jN2mHL8hXI4Lw8XOBZ9w4kUVosOKctnn9+qZWW96DR4xuUjbw7gJT4Ne5IijRcwQcGNIAiYoyczL0f73nZuojc1QEiE3wSMcYU+3Rm/qJEV/7s5XM6XSXMdfIRc2PwOnsESDkY1DSo~1; Domain=.opentable.com; Path=/; Expires=Thu, 18 Sep 2025 15:03:12 GMT; Max-Age=7096; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"RID\": 1040230,\n    \"ReservationId\": \"68c7e4cb0f2195ac8205d293\",\n    \"PartnerId\": 8472,\n    \"StatusCode\": 0\n}"},{"id":"c24e8249-5ff4-409a-8916-d4bcc38a5af8","name":"403","originalRequest":{"method":"DELETE","header":[],"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/reservations/841dffddc6521cc719cebaa"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"fd7b79f7-673b-4aa7-a4b1-95be3f2940ea"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"8464c9a2-8fd8-432f-90f8-1750ccf4692b"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations/{id}"},{"key":"Content-Length","value":"154"},{"key":"Date","value":"Sun, 08 Jun 2025 22:00:19 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=DEB77D133D433A987AD21C15F197330E~YAAQUdYhF4YidjOXAQAAdw2PURx7+xRrnFDhbOEm9/ww4cODaqTG0BYN4Tfz4zlUpHwWxg/Qlnv8ESLXLiVLrmBl4aHgnpZ4Cuv6aEoUOwefnlwbpjV6ZumVq8Zov58EuXe6ZU+TslYMIuuW71Kxuu2SJFhweN8B4Or7rK+3UdhzTf2PG47I2+H8pSaoOr/PXaIjAdCJR0TPfsd2Hd5AYgO7zlw6BneIxvWgXQc+WENvGrHQDZLdzL6t3ky6HsvQmKDpxg==~1; Domain=.opentable.com; Path=/; Expires=Sun, 08 Jun 2025 23:36:01 GMT; Max-Age=5742; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"code\": \"RedirectToHost\",\n            \"message\": \"Human intervention is needed to complete the request\"\n        }\n    ],\n    \"requestid\": \"fd7b79f7-673b-4aa7-a4b1-95be3f2940ea\"\n}"}],"_postman_id":"b88611a5-f003-4cd2-abc7-db9ef929c0ec"}],"id":"43f5b44e-dc22-4711-8fbe-8fae0219e467","description":"<h1 id=\"booking--cancel\">Booking – Cancel</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>This API allows partners to <strong>cancel an existing reservation</strong>. Cancellations may be subject to cancellation policies such as credit card holds or deposits. Depending on the policy and timing, the cancellation may either be processed automatically or require human intervention.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>Method:</strong> <code>DELETE</code><br /><strong>URL:</strong> <code>{{base-url}}/inhouse/v1/booking/{{rid}}/reservations/{{reservation-id}}</code></p>\n<hr />\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rid</td>\n<td>Int</td>\n<td>OpenTable Restaurant Identifier</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique ID corresponding to reservation</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"cancellation-policy-considerations\">Cancellation Policy Considerations</h2>\n<p>Cancellation behavior is determined by the <strong>cancellation window</strong> defined in the reservation’s policy. This window specifies the timeframe during which diners can cancel <strong>without losing deposits or incurring charges</strong>.</p>\n<p>If a cancellation is attempted <strong>after</strong> the window has closed, the diner may forfeit their deposit or be charged, depending on the restaurant’s terms. In these cases, OpenTable may not be able to complete the cancellation directly.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Use Case</th>\n<th>Result</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Canceling reservation with no policies</td>\n<td>OpenTable handles</td>\n</tr>\n<tr>\n<td>Canceling CC hold reservation <strong>within</strong> cancellation window</td>\n<td>OpenTable handles</td>\n</tr>\n<tr>\n<td>Canceling CC hold reservation <strong>outside</strong> cancellation window</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>Canceling deposit reservation <strong>within</strong> cancellation window</td>\n<td>OpenTable handles</td>\n</tr>\n<tr>\n<td>Canceling deposit reservation <strong>outside</strong> cancellation window</td>\n<td>Redirect to Host</td>\n</tr>\n</tbody>\n</table>\n</div><p>When cancellation is <strong>not supported automatically</strong>, the API will return a <code>403 Forbidden</code> with error code <code>RedirectToHost</code>, indicating that the restaurant must be contacted directly.</p>\n<hr />\n<h2 id=\"response-codes\">Response Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>204</td>\n<td>Reservation canceled successfully</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Restaurant ID or Reservation ID not valid</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Unexpected internal server error</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-structure\">Error Structure</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>errors</td>\n<td>array</td>\n<td>An array of objects with <code>code</code> and <code>message</code></td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Short description of the issue</td>\n</tr>\n<tr>\n<td>requestid</td>\n<td>string</td>\n<td>Unique OT-RequestId for support/debugging</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Example:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"errors\": [\n    {\n      \"code\": \"InvalidRidOrReservationId\",\n      \"message\": \"Restaurant id or reservation id is invalid\"\n    }\n  ],\n  \"requestid\": \"8414fadb-eac6-4869-80aa-3ee999974cd7\"\n}\n\n</code></pre>\n<hr />\n<h3 id=\"common-errors\">Common Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Reason</th>\n<th>Error Message</th>\n<th>Code</th>\n<th>Status Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Invalid or expired token</td>\n<td><code>invalid_token</code></td>\n<td><code>invalid_token</code></td>\n<td>401 Unauthorized</td>\n</tr>\n<tr>\n<td>Missing authorization token</td>\n<td><code>Authorization token is required to access this resource</code></td>\n<td>—</td>\n<td>403 Forbidden</td>\n</tr>\n<tr>\n<td>Invalid restaurant or reservation ID</td>\n<td><code>Restaurant id or reservation id is invalid</code></td>\n<td><code>InvalidRidOrReservationId</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Human intervention is required to cancel reservation</td>\n<td><code>Human intervention is needed to complete the request</code></td>\n<td><code>RedirectToHost</code></td>\n<td>403 Forbidden</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","_postman_id":"43f5b44e-dc22-4711-8fbe-8fae0219e467"},{"name":"Lookup API","item":[{"name":"Lookup API","id":"e50492ab-d8e8-42eb-9879-b47f260550f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\"phone_number\":{\n    \"number\": \"4155555555\",\n    \"country_code\": 1\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/reservations/search","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","reservations","search"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"84627144-0cf4-4b85-8f9e-19d3d846c28c","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"phone_number\": {\n        \"number\": \"4153444200\",\n        \"country_code\": 1\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/reservations/search"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"f4e841ed-982e-4bfd-bb62-b8eb4e0df1ce"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"cfdcc958-df21-439a-bcb6-df2f053508e6"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations/search"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Sun, 08 Jun 2025 21:39:32 GMT"},{"key":"Content-Length","value":"192"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=DEB77D133D433A987AD21C15F197330E~YAAQUdYhF1a2czOXAQAANAd8URz0YNNr566OjWU01q/LfTk5WQV+nDrkL/FolV0t42BwdiNJ6Eo6FhxikFcp7Ypf0XCQ0DdEok1dvF1EMajqirnHchB/VM6JIs7yWM/p0NzQwXYY1ioGlB+wiJrcKC590A6TW9ZkhWhmxvEFdYh/SDs3djdNejTVleASprYU64VUN6QlvtDO8ufhgeG2XB09mImrRPiwqopx96/AO1q0eJ16zBE+L3kFtdK0VXBMBHOg~1; Domain=.opentable.com; Path=/; Expires=Sun, 08 Jun 2025 23:36:01 GMT; Max-Age=6989; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"reservations\": [\n        {\n            \"special_request\": \"Date night\",\n            \"confirmation_number\": 2592,\n            \"reservation_id\": \"6841dffddc6521cc719cebaa\",\n            \"restaurant_id\": 1038007,\n            \"date_time\": \"2025-07-28T12:45:00\",\n            \"party_size\": 2,\n            \"status\": \"Modifiable\"\n        }\n    ]\n}"}],"_postman_id":"e50492ab-d8e8-42eb-9879-b47f260550f8"}],"id":"cadd112d-1811-4f88-a724-3168148e347a","description":"<h2 id=\"booking--lookup\">Booking – Lookup</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>This API endpoint allows partners to search for and identify diners who have upcoming reservations at a specific restaurant. By submitting a phone number partners can retrieve a list of matching reservations. Additional optional parameters, such as reservation date or diner’s first and last name, can be included to narrow the search and improve accuracy.</p>\n<hr />\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>Method:</strong> POST</p>\n<p><strong>URL:</strong> <code>{{base-url}}/inhouse/v1/booking/{{rid}}/reservations/search</code></p>\n<hr />\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rid</td>\n<td>int32</td>\n<td>OpenTable Restaurant ID</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>phone_number</td>\n<td>string</td>\n<td>Phone number of the diner (without country code).</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>country_code</td>\n<td>int32</td>\n<td>Country calling code.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>date</td>\n<td>string</td>\n<td>Reservation date in <code>yyyy-MM-dd</code> format.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>first_name</td>\n<td>string</td>\n<td>First name of the diner. Optional; improves search specificity.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>last_name</td>\n<td>string</td>\n<td>Last name of the diner. Optional; improves search specificity.</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Notes:</strong></p>\n<ul>\n<li><p>The reservations being returned is NOT a guarantee that any given update request will succeed; the client must at least execute a subsequent availability check to find available times for the reservation. However, certain internal conditions, such as a change in cancellation policy (for example, if the time or party size change), may still cause the update to fail. Also, currently we do not distinguish in the response whether a reservation is updatable or cancellable.</p>\n</li>\n<li><p>OpenTable will retrieve all reservations associated with the phone number provided on the specified date(00:00-23:59) in the request. It is the responsibility of the partners to accurately identify the specific reservation the diner is calling about.</p>\n</li>\n</ul>\n<hr />\n<h3 id=\"behavior-and-limitations\">Behavior and Limitations</h3>\n<ul>\n<li><p>The endpoint performs <strong>exact match searches</strong> based on the input data.</p>\n</li>\n<li><p>Does not return first and last name.</p>\n</li>\n<li><p>The response does <strong>not explicitly indicate</strong> whether a reservation is updatable or cancellable.</p>\n</li>\n</ul>\n<hr />\n<h3 id=\"response-structure\">Response Structure</h3>\n<p>Returns an array of matching reservations with the following attributes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>confirmation_number</td>\n<td>Restaurant-specific reservation code (not globally unique).</td>\n</tr>\n<tr>\n<td>reservation_id</td>\n<td>OpenTable’s unique reservation identifier.</td>\n</tr>\n<tr>\n<td>restaurant_id</td>\n<td>OpenTable Restaurant ID.</td>\n</tr>\n<tr>\n<td>date_time</td>\n<td>Local time of the reservation at the restaurant.</td>\n</tr>\n<tr>\n<td>party_size</td>\n<td>Number of guests.</td>\n</tr>\n<tr>\n<td>special_request</td>\n<td>Diner-provided notes or requests.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>Indicates if the reservation is modifiable (<code>Modifiable</code> or <code>NotModifiable</code>).</td>\n</tr>\n<tr>\n<td>experience_id</td>\n<td>ID of the associated experience, if applicable.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"error-handling\">Error Handling</h3>\n<p>If the request fails, the response includes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>errors</td>\n<td>array</td>\n<td>Contains error objects with a <code>message</code> and optional <code>code</code>.</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Short description of the issue.</td>\n</tr>\n<tr>\n<td>requestid</td>\n<td>string</td>\n<td>Unique OpenTable request ID for support/debugging.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"common-errors\">Common Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Reason</th>\n<th>Message</th>\n<th>Code</th>\n<th>HTTP Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Invalid or expired token</td>\n<td><code>invalid_token</code></td>\n<td><code>invalid_token</code></td>\n<td>401 Unauthorized</td>\n</tr>\n<tr>\n<td>Missing authorization token</td>\n<td><code>Authorization token is required to access this resource</code></td>\n<td>—</td>\n<td>403 Forbidden</td>\n</tr>\n<tr>\n<td>Illegal phone number format</td>\n<td><code>phone number is not valid</code></td>\n<td><code>IllegalPhoneNumber</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Missing phone entity</td>\n<td><code>Phone cannot be null</code></td>\n<td><code>MissingPhoneNumber</code></td>\n<td>400 Bad Request</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","_postman_id":"cadd112d-1811-4f88-a724-3168148e347a"},{"name":"Change  Reservation","item":[{"name":"Change Request","id":"7977ec45-1f90-4376-820d-1800082f7024","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"party_size\": \"2\",\n    \"date_time\": \"2025-07-29T12:45\",\n    \"special_request\": \"Birthday celebration\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/reservations/{{id}}","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","reservations","{{id}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"3e4f5f49-b57b-4ece-b8b1-c9579f7e405e","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"party_size\": \"2\",\n    \"date_time\": \"2025-07-29T12:45\",\n    \"special_request\": \"Birthday celebration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/reservations/6841dffddc6521cc719cebaa"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"27e586f9-661f-4196-8f4c-6a7c2c81c7a4"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"a9fa039c-fb3b-46f6-aee5-5d78e0018ce7"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations/{reservationId}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Sun, 08 Jun 2025 21:50:15 GMT"},{"key":"Content-Length","value":"157"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=DEB77D133D433A987AD21C15F197330E~YAAQjXLMF4YqbDuXAQAAK9iFURxmWeImptwEyGXE3l7nyBVFcZ9VjeDw1S7oV8qRo6eWrxczEQ28+jDHJ7OgyeoyTTMfrSwO2QEyUNbYN+NaWvhYZr+Yl3SvTl5/z36/uf38ivPlRkvxVVrdCxGV9nIrpOmer5bmmqE1gBjHdP9DvDdBtxFGKXuXiAp3QHIfb4E68YNlmClaIgdWiX1oCTIIcOPfTEencX65Cszp5J8VI/bs+CNNBG4Thtu6r2Kfm9kYVA==~1; Domain=.opentable.com; Path=/; Expires=Sun, 08 Jun 2025 23:36:01 GMT; Max-Age=6346; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"confirmation_number\": 2592,\n    \"reservation_id\": \"6841dffddc6521cc719cebaa\",\n    \"date_time\": \"2025-07-29T12:45\",\n    \"party_size\": 2,\n    \"special_request\": \"Birthday celebration\"\n}"}],"_postman_id":"7977ec45-1f90-4376-820d-1800082f7024"}],"id":"ec9dfb1a-17eb-42bf-8a79-ec61b543b91c","description":"<h2 id=\"booking--change\">Booking – Change</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>The Change API allows partners to <strong>modify an existing reservation</strong> by updating fields such as date/time, party size, or special requests. However, OpenTable cannot guarantee the success of the modification due to various constraints (e.g., restaurant closure, slot unavailability, or policy changes).</p>\n<p>To ensure a seamless user experience, it is <strong>strongly recommended to check availability</strong> for the requested changes prior to invoking this endpoint. In most flows, a <code>search</code> or <code>lookup</code> call should precede a change request.</p>\n<hr />\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><strong>Method:</strong> <code>PUT</code><br /><strong>URL:</strong> <code>/booking/{rid}/reservations/{id}</code></p>\n<hr />\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rid</td>\n<td>int32</td>\n<td>OpenTable Restaurant ID</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique reservation identifier</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n<th>Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>party_size</td>\n<td>int32</td>\n<td>Must be between 1 and 20.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>date_time</td>\n<td>string</td>\n<td>New reservation time in <code>yyyy-MM-ddThh:mm</code> format.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>special_request</td>\n<td>string</td>\n<td>Optional diner notes or requests.</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"cancellation-policy-transitions\">Cancellation Policy Transitions</h3>\n<p>Updating a reservation may involve a change in the <strong>cancellation policy</strong>, which can impact whether the update is allowed automatically. Some transitions are permitted by OpenTable; others require manual intervention and will return an error.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Original Reservation</th>\n<th>Updated Reservation</th>\n<th>Result</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>No Policies</td>\n<td>No Policies</td>\n<td>OpenTable handles</td>\n</tr>\n<tr>\n<td>No Policies</td>\n<td>CC Hold</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>No Policies</td>\n<td>Deposit</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>CC Hold</td>\n<td>CC Hold</td>\n<td>OpenTable handles</td>\n</tr>\n<tr>\n<td>CC Hold</td>\n<td>Deposit</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>CC Hold</td>\n<td>No Policies</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>Deposit (Same Policy)</td>\n<td>Deposit (Same Policy)</td>\n<td>OpenTable handles</td>\n</tr>\n<tr>\n<td>Deposit</td>\n<td>CC Hold</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>Deposit</td>\n<td>No Policies</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>Deposit</td>\n<td>Different Deposit Policy</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>Deposit (Party Size X)</td>\n<td>Deposit (Party Size &lt; X)</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>Deposit (Party Size X)</td>\n<td>Deposit (Party Size &gt; X)</td>\n<td>Redirect to Host</td>\n</tr>\n<tr>\n<td>CC Hold (Party Size X)</td>\n<td>CC Hold (Party Size &lt; X)</td>\n<td>OpenTable handles</td>\n</tr>\n<tr>\n<td>CC Hold (Party Size X)</td>\n<td>CC Hold (Party Size &gt; X)</td>\n<td>OpenTable handles</td>\n</tr>\n</tbody>\n</table>\n</div><p>When a transition is not automatically supported, the API will return a <code>403 Forbidden</code> response with error code <code>RedirectToHost</code>, indicating that <strong>human intervention</strong> (e.g., contact with the restaurant) is required.</p>\n<hr />\n<h3 id=\"response-structure\">Response Structure</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>confirmation_number</td>\n<td>Restaurant-specific confirmation code (not globally unique).</td>\n</tr>\n<tr>\n<td>reservation_id</td>\n<td>Unique OpenTable reservation ID.</td>\n</tr>\n<tr>\n<td>date_time</td>\n<td>Updated reservation date and time.</td>\n</tr>\n<tr>\n<td>party_size</td>\n<td>Updated number of guests.</td>\n</tr>\n<tr>\n<td>special_request</td>\n<td>Diner’s updated special request, if provided.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"error-handling\">Error Handling</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>errors</td>\n<td>array</td>\n<td>Array of error objects with <code>code</code> and <code>message</code>.</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>Short description of the issue.</td>\n</tr>\n<tr>\n<td>requestid</td>\n<td>string</td>\n<td>Unique OpenTable request ID for debugging or support reference.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"common-errors\">Common Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Reason</th>\n<th>Error Message</th>\n<th>Code</th>\n<th>HTTP Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Invalid or expired token</td>\n<td><code>invalid_token</code></td>\n<td><code>invalid_token</code></td>\n<td>401 Unauthorized</td>\n</tr>\n<tr>\n<td>No authorization token provided</td>\n<td><code>Authorization token is required to access this resource</code></td>\n<td>—</td>\n<td>403 Forbidden</td>\n</tr>\n<tr>\n<td>Invalid party size</td>\n<td><code>Party size must be from 1 to 20</code></td>\n<td><code>MissingPartySize</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Invalid restaurant or reservation ID</td>\n<td><code>Restaurant id or reservation id is invalid</code></td>\n<td><code>InvalidRidOrReservationId</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Invalid date_time format</td>\n<td><code>date_time should be of type LocalDateTime</code></td>\n<td><code>InvalidDateTime</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Reservation update not at least 15 minutes in the future</td>\n<td><code>You can only search/update for a slot which is 15 minutes after the current time at the restaurant</code></td>\n<td><code>InvalidStartDateTime</code></td>\n<td>400 Bad Request</td>\n</tr>\n<tr>\n<td>Change in cancellation policy not automatically handled</td>\n<td><code>Need human intervention</code></td>\n<td><code>RedirectToHost</code></td>\n<td>403 Forbidden</td>\n</tr>\n<tr>\n<td>Attempt to update a reservation in the past</td>\n<td><code>Cannot modify reservation in past</code></td>\n<td><code>CannotModifyReservationInPast</code></td>\n<td>400 Bad Request</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"ec9dfb1a-17eb-42bf-8a79-ec61b543b91c"}],"id":"ca3db9c1-2857-4fbb-a4c6-f5776d8f91cd","_postman_id":"ca3db9c1-2857-4fbb-a4c6-f5776d8f91cd","description":""},{"name":"FAQs","item":[],"id":"8a0838db-64a6-41a2-9b0a-82d0486af37d","description":"<h3 id=\"does-a-reservation-booked-online-show-in-the-booking-lookup-endpoint\"><strong>Does a reservation booked online show in the Booking Lookup Endpoint?</strong></h3>\n<p><em>Yes, all future, active reservations, regardless of booking method, will be returned. Past or cancelled reservations will not be included.</em></p>\n<h3 id=\"is-it-possible-to-change-or-cancel-reservations-returned-in-the-booking-lookup-endpoint\"><strong>Is it possible to change or cancel reservations returned in the Booking Lookup Endpoint?</strong></h3>\n<p><em>The system returns all future reservations, but does not differentiate between updatable and cancellable reservations in the response. OpenTable retrieves all reservations associated with the provided phone number for the specified date (00:00-23:59). Partners are responsible for accurately identifying the specific reservation the diner is referencing.</em></p>\n<p><em><strong>Note: Experience reservations are not cancellable or changeable by the APIs.</strong></em></p>\n<h3 id=\"why-is-the-api-not-returning-availability-when-it-is-visible-online\"><strong>Why is the API not returning availability when it is visible online?</strong></h3>\n<p><em>Restaurants have the option to segment their inventory into categories such as “All Availability,” “Online Reservations,” “In-House Reservations,” or “Walk-In.” Ensure restaurant settings align with desired availability displays.</em></p>\n<h3 id=\"should-the-experience_id-always-be-sent\"><strong>Should the experience_id always be sent?</strong></h3>\n<p><em>The experience_id should only be sent if the diner is specifically booking an experience. Otherwise, it should be omitted.</em></p>\n<h3 id=\"what-occurs-if-cancellation-is-attempted-after-the-cancellation-window\"><strong>What occurs if cancellation is attempted after the cancellation window?</strong></h3>\n<p><em>The booking will not be cancelled, and a 403 RedirectToHost error will be returned.</em></p>\n<h3 id=\"is-pricing-handled-uniformly-across-all-bookings\"><strong>Is pricing handled uniformly across all bookings?</strong></h3>\n<p><em>No, pricing varies. Standard bookings may involve only a card hold. Experiences may require prepaid or deposit charges.</em></p>\n<h3 id=\"what-details-should-be-communicated-to-the-diner-when-booking-a-reservation\"><strong>What details should be communicated to the diner when booking a reservation?</strong></h3>\n<p><em>For Experiences: Communicate the experience name, description, and pricing (total or per guest). For all reservations: Communicate cancellation and refund policies.</em></p>\n<h3 id=\"whats-the-difference-between-deposit-and-prepaid\"><strong>What’s the difference between deposit and prepaid?</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Type</th>\n<th>Charge Timing</th>\n<th>Refundable?</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Prepaid</td>\n<td>At booking</td>\n<td>No after window</td>\n</tr>\n<tr>\n<td>Deposit</td>\n<td>At booking</td>\n<td>Sometimes</td>\n</tr>\n<tr>\n<td>Card Hold</td>\n<td>Only on cancel/no-show</td>\n<td>Yes if honored</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"summary-table-experience-vs-standard-bookings\"><strong>Summary Table: Experience vs. Standard Bookings</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>Standard Booking</th>\n<th>Experience Booking</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Uses <code>/reservations</code></td>\n<td>✅</td>\n<td>✅</td>\n</tr>\n<tr>\n<td>Requires Experience ID</td>\n<td>❌</td>\n<td>✅</td>\n</tr>\n<tr>\n<td>Prepaid allowed?</td>\n<td>❌</td>\n<td>✅</td>\n</tr>\n<tr>\n<td>Prone to <code>RedirectToHost</code></td>\n<td>⚠</td>\n<td>✅</td>\n</tr>\n<tr>\n<td>Modifiable</td>\n<td>✅</td>\n<td>❌</td>\n</tr>\n<tr>\n<td>Requires pricing validation</td>\n<td>❌</td>\n<td>❌</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"how-does-a-restaurant-capture-credit-card-details-for-certain-reservations-credit-card-details-are-mandatory\">How does a restaurant capture credit card details? For certain reservations, credit card details are mandatory.</h3>\n<p><em>OpenTable provides a secure method for acquiring these details and manages all necessary credit card processing. A link will be provided to the guest to enter their card information and remit the deposit.</em></p>\n<h3 id=\"how-do-restaurants-check-the-status-of-credit-card-deposits-and-payments\">How do restaurants check the status of credit card deposits and payments?</h3>\n<p><em>Restaurants use the reservation listing in the Front of House system to see deposit status and balances, and can generate a Reservation Report to review credit card status for many reservations, using the Payment Details column to filter by Prepayment Method, Status, and Paid Total.</em></p>\n<h3 id=\"how-are-reservations-booked-via-the-api-distinguished-from-standard-phone-interactions\">How are reservations booked via the API distinguished from standard phone interactions?</h3>\n<p><em>API-originated reservations are identified with an \"<em>phone/in-housed</em>\" tag in reservation history details. The Reservation Report displays \"<em>phone/in-house</em>\" as the booking source for API reservations, as opposed to \"Phone/In-House\" for standard bookings.</em></p>\n","_postman_id":"8a0838db-64a6-41a2-9b0a-82d0486af37d"},{"name":"Use Cases","item":[{"name":"In-House Booking API Use Case - Standard Reservation","item":[{"name":"Availability","id":"d448c781-9f53-4a9f-bbbd-2419756c61d8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"{{base-url}}/inhouse/v1/availability/{{rid4}}?party_size={{party_size}}&start_date_time={{start_date_time}}&forward_minutes={{minutes}}&backward_minutes={{minutes}}&include_experiences={{true_false}}","description":"<hr />\n","urlObject":{"path":["inhouse","v1","availability","{{rid4}}"],"host":["{{base-url}}"],"query":[{"key":"party_size","value":"{{party_size}}"},{"key":"start_date_time","value":"{{start_date_time}}"},{"key":"forward_minutes","value":"{{minutes}}"},{"key":"backward_minutes","value":"{{minutes}}"},{"key":"include_experiences","value":"{{true_false}}"}],"variable":[]}},"response":[{"id":"3d977348-ea11-48e7-8825-821e4dfdee11","name":"200","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"https://platform.opentable.com/inhouse/v1/availability/1038007?party_size=2&start_date_time=2025-07-28T13:00&forward_minutes=15&backward_minutes=15&include_experiences=true","protocol":"https","host":["platform","opentable","com"],"path":["inhouse","v1","availability","1038007"],"query":[{"key":"party_size","value":"2"},{"key":"start_date_time","value":"2025-07-28T13:00"},{"key":"forward_minutes","value":"15"},{"key":"backward_minutes","value":"15"},{"key":"include_experiences","value":"true"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"3fbf5a39-4f60-4831-97e3-7dab461790f3"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"6b58e986-e618-4ee8-86f5-e6dbb65c1f94"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/availability/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 18:14:38 GMT"},{"key":"Content-Length","value":"324"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQSXQyF4XwZy+XAQAAb15NQRzJzELvqIEK1SScITAKraItPQdCM10BMwtB5+mD2NtLQf9AhJarXVi8L2qNLmx/tFWTJvy6d4WaMIpz8aYbX5q+KUVk5Cgg9Tu9dkWlBy0Yh6lmm0wV9gNsgUHeQyJ/4DNN0Dp89wDbIOcUiUoZaI96OFSKyKtuWdbW39gajY2/JtbLYJCs2Zx0rYXJ/9mspoBAn8BVv5kor0g7uZLd0dDs7KMVvyOWtjyt+V/JVdh1VQ==~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=2401; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1038007,\n    \"party_size\": 2,\n    \"restaurant_settings\": {\n        \"scc_enabled\": true\n    },\n    \"times\": [\n        \"2025-07-28T12:45\",\n        \"2025-07-28T13:00\",\n        \"2025-07-28T13:15\"\n    ],\n    \"times_available\": [\n        {\n            \"time\": \"2025-07-28T12:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-07-28T13:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-07-28T13:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"d448c781-9f53-4a9f-bbbd-2419756c61d8"},{"name":"Slot Lock","id":"a1343fa3-2d66-4289-b583-97d1a3ff52b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n   \"restaurant_id\": {{rid4}},\n   \"party_size\": 2,\n   \"date_time\": \"2025-07-28T12:45\",\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/locks","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","locks"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"3fe3344e-8010-4a2f-9fcd-cbd3ba0a5743","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n   \"restaurant_id\": 1038007,\n   \"party_size\": 2,\n   \"date_time\": \"2025-07-28T12:45\",\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/locks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"6170d56a-5ddd-43ff-a2bd-52d178799fb7"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"f15df2b9-67a7-45ef-b305-e8bc08f6ddfd"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/locks"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 18:16:34 GMT"},{"key":"Content-Length","value":"229"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQSXQyF78WaC+XAQAAsiBPQRzMqV54qLWVZHeugIN4t7s9K2HZdSUjX+a9IvVB8zbmegCPS3fHgHrkCqW9gqlAV8Q8yaBWUIAo2dZJj8ySmC/CUlUUSKUo12GMPVZL5dyiy9ocmZN/twTHZvjm86KAv+6TnwVx7nDM6Ripc5Al723XjVloaz73m/hlmTgYntuH+BgaieGkrWSXbio0x3zrT0oUwlvmNTIFhZ0vbVi2QqDa4Qs5eeKxJwoug5Ta5GLkpw==~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=2285; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"expires_at\": \"2025-06-05T18:21\",\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0NDYwNTc4NDR8MnwyMDI1LTA3LTI4VDEyOjQ1fDEwMzgwMDcifQ.7Ej6x8wkOqZFsrq09M0YX7FbmohWbrrKwTj00hcHMlaRqxfnOZHa8fLrtoKvbfFtJeyEmi4LAZtOuZfjnA3ohw\"\n}"}],"_postman_id":"a1343fa3-2d66-4289-b583-97d1a3ff52b0"},{"name":"Make Reservation","id":"003cd795-a90a-42ae-8a01-cb03a00610b8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"\n{\n   \"first_name\": \"Han\",\n   \"last_name\": \"Solo\",\n   \"phone\": {\n       \"number\": \"4155555555\",\n       \"country_code\": 1\n   },\n   \"restaurant_id\": \"1038007\",\n   \"special_request\": \"Date night\",\n   \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0NDYwNTc4NDR8MnwyMDI1LTA3LTI4VDEyOjQ1fDEwMzgwMDcifQ.7Ej6x8wkOqZFsrq09M0YX7FbmohWbrrKwTj00hcHMlaRqxfnOZHa8fLrtoKvbfFtJeyEmi4LAZtOuZfjnA3ohw\",\n   \"sms_notifications_opt_in\": true\n   }\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/reservations","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","reservations"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"3afb964b-e6e9-45ed-9d83-e77d032511a6","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"\n{\n   \"first_name\": \"Han\",\n   \"last_name\": \"Solo\",\n   \"phone\": {\n       \"number\": \"4153444200\",\n       \"country_code\": 1\n   },\n   \"restaurant_id\": \"1038007\",\n   \"special_request\": \"Date night\",\n   \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0NDYwNTc4NDR8MnwyMDI1LTA3LTI4VDEyOjQ1fDEwMzgwMDcifQ.7Ej6x8wkOqZFsrq09M0YX7FbmohWbrrKwTj00hcHMlaRqxfnOZHa8fLrtoKvbfFtJeyEmi4LAZtOuZfjnA3ohw\",\n   \"sms_notifications_opt_in\": true\n   }\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/reservations"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"c1c69000-3a2f-4b23-9cb9-a8c2993923ec"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"73353440-2483-411a-886d-cd5979f84dd4"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 18:20:45 GMT"},{"key":"Content-Length","value":"152"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQTKvWF9gqxDyXAQAAkvZSQRz3brJXg+b/XNmm8C0kvCgula3l/8F7tdZg8C6W4nwNtdgKfpXm9+j8hKzGI7smw9jslT8EHnvYTEC0BOh2KnJzg95cN9X1qTuPS3EIrimEbeuKIQJtrutO1dCKbmvBFQDD2Prowvj9/S4iAD4mv2N4b5mKrSwFEZRUJb3K+y5cYEtRCtq+46vPJIsw8pI8z/MFbujjU4dTlJsLYUxL5vFwKcy3NJuc+Jdpr5pELG3igw==~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=2034; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"confirmation_number\": 2592,\n    \"reservation_id\": \"6841dffddc6521cc719cebaa\",\n    \"date_time\": \"2025-07-28T12:45\",\n    \"party_size\": 2,\n    \"special_request\": \"Date night\"\n}"}],"_postman_id":"003cd795-a90a-42ae-8a01-cb03a00610b8"}],"id":"d3865ad5-d724-4ffb-a718-5d92ed5d9275","description":"<h2 id=\"as-a-diner-i-would-like-to-make-a-reservation-via-the-phone-the-reservation-does-not-have-any-applicable-credit-card-restrictions-or-holds\">As a diner, I would like to make a reservation via the phone. The reservation does not have any applicable credit card restrictions or holds.</h2>\n<p>APIs to use:</p>\n<p>In House Booking API:</p>\n<ul>\n<li><p>Availability APIs (Search)</p>\n</li>\n<li><p>Slot Lock</p>\n</li>\n<li><p>Make Reservation</p>\n</li>\n</ul>\n<img src=\"https://content.pstmn.io/f3624fa0-e1c3-4c80-abac-fd5d1b28c384/Vm9pY2UgQUkgQVBJIEZsb3djaGFydC5wbmc=\" alt />","_postman_id":"d3865ad5-d724-4ffb-a718-5d92ed5d9275"},{"name":"In-House Booking API Use Case - Credit Card Hold Reservation","item":[{"name":"Availability","id":"b0fc0397-ccb8-45ba-8f23-5f850d038796","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"{{base-url}}/inhouse/v1/availability/{{rid4}}?party_size={{party_size}}&start_date_time={{start_date_time}}&forward_minutes={{minutes}}&backward_minutes={{minutes}}&include_experiences={{true_false}}","description":"<hr />\n","urlObject":{"path":["inhouse","v1","availability","{{rid4}}"],"host":["{{base-url}}"],"query":[{"key":"party_size","value":"{{party_size}}"},{"key":"start_date_time","value":"{{start_date_time}}"},{"key":"forward_minutes","value":"{{minutes}}"},{"key":"backward_minutes","value":"{{minutes}}"},{"key":"include_experiences","value":"{{true_false}}"}],"variable":[]}},"response":[{"id":"8e986634-48bd-4a8f-9bf4-4fb2465caefc","name":"200","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"https://platform.opentable.com/inhouse/v1/availability/1038007?party_size=2&start_date_time=2025-07-28T13:00&forward_minutes=15&backward_minutes=15&include_experiences=true","protocol":"https","host":["platform","opentable","com"],"path":["inhouse","v1","availability","1038007"],"query":[{"key":"party_size","value":"2"},{"key":"start_date_time","value":"2025-07-28T13:00"},{"key":"forward_minutes","value":"15"},{"key":"backward_minutes","value":"15"},{"key":"include_experiences","value":"true"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"3fbf5a39-4f60-4831-97e3-7dab461790f3"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"6b58e986-e618-4ee8-86f5-e6dbb65c1f94"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/availability/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 18:14:38 GMT"},{"key":"Content-Length","value":"324"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQSXQyF4XwZy+XAQAAb15NQRzJzELvqIEK1SScITAKraItPQdCM10BMwtB5+mD2NtLQf9AhJarXVi8L2qNLmx/tFWTJvy6d4WaMIpz8aYbX5q+KUVk5Cgg9Tu9dkWlBy0Yh6lmm0wV9gNsgUHeQyJ/4DNN0Dp89wDbIOcUiUoZaI96OFSKyKtuWdbW39gajY2/JtbLYJCs2Zx0rYXJ/9mspoBAn8BVv5kor0g7uZLd0dDs7KMVvyOWtjyt+V/JVdh1VQ==~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=2401; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1038007,\n    \"party_size\": 2,\n    \"restaurant_settings\": {\n        \"scc_enabled\": true\n    },\n    \"times\": [\n        \"2025-07-28T12:45\",\n        \"2025-07-28T13:00\",\n        \"2025-07-28T13:15\"\n    ],\n    \"times_available\": [\n        {\n            \"time\": \"2025-07-28T12:45\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-07-28T13:00\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"time\": \"2025-07-28T13:15\",\n            \"availability_types\": [\n                {\n                    \"type\": \"Standard\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\",\n                                \"outdoor\"\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"type\": \"Experience\",\n                    \"diningArea\": [\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"default\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        },\n                        {\n                            \"id\": 1,\n                            \"table_type\": [\n                                \"outdoor\"\n                            ],\n                            \"experience_ids\": [\n                                480995\n                            ]\n                        }\n                    ],\n                    \"experienceCancellationPolicy\": [\n                        {\n                            \"experienceId\": 480995,\n                            \"type\": \"Hold\",\n                            \"id\": \"681a0cc3731b95b6c4dd1aa1:v1\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"b0fc0397-ccb8-45ba-8f23-5f850d038796"},{"name":"Slot Lock","id":"cfc0269b-f50f-493c-bde0-f0005f7f0f66","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n   \"restaurant_id\": {{rid4}},\n   \"party_size\": 2,\n   \"date_time\": \"2025-07-28T12:45\",\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/locks","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","locks"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"49830b49-29f7-4aa6-b879-fcfa5aa1e0cc","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n   \"restaurant_id\": 1038007,\n   \"party_size\": 2,\n   \"date_time\": \"2025-07-28T12:45\",\n   \"table_type\": \"default\",\n   \"dining_area_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/locks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"6170d56a-5ddd-43ff-a2bd-52d178799fb7"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"f15df2b9-67a7-45ef-b305-e8bc08f6ddfd"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/locks"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 18:16:34 GMT"},{"key":"Content-Length","value":"229"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQSXQyF78WaC+XAQAAsiBPQRzMqV54qLWVZHeugIN4t7s9K2HZdSUjX+a9IvVB8zbmegCPS3fHgHrkCqW9gqlAV8Q8yaBWUIAo2dZJj8ySmC/CUlUUSKUo12GMPVZL5dyiy9ocmZN/twTHZvjm86KAv+6TnwVx7nDM6Ripc5Al723XjVloaz73m/hlmTgYntuH+BgaieGkrWSXbio0x3zrT0oUwlvmNTIFhZ0vbVi2QqDa4Qs5eeKxJwoug5Ta5GLkpw==~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=2285; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"expires_at\": \"2025-06-05T18:21\",\n    \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0NDYwNTc4NDR8MnwyMDI1LTA3LTI4VDEyOjQ1fDEwMzgwMDcifQ.7Ej6x8wkOqZFsrq09M0YX7FbmohWbrrKwTj00hcHMlaRqxfnOZHa8fLrtoKvbfFtJeyEmi4LAZtOuZfjnA3ohw\"\n}"}],"_postman_id":"cfc0269b-f50f-493c-bde0-f0005f7f0f66"},{"name":"Make Reservation","id":"72f3c75d-de20-4b91-a95f-9a7338f870b3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"\n{\n   \"first_name\": \"Han\",\n   \"last_name\": \"Solo\",\n   \"phone\": {\n       \"number\": \"4155555555\",\n       \"country_code\": 1\n   },\n   \"restaurant_id\": \"1038007\",\n   \"special_request\": \"Date night\",\n   \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0NDYwNTc4NDR8MnwyMDI1LTA3LTI4VDEyOjQ1fDEwMzgwMDcifQ.7Ej6x8wkOqZFsrq09M0YX7FbmohWbrrKwTj00hcHMlaRqxfnOZHa8fLrtoKvbfFtJeyEmi4LAZtOuZfjnA3ohw\",\n   \"sms_notifications_opt_in\": true\n   }\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/reservations","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","reservations"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"81fba3f5-79eb-42f8-9aea-f7b9861090a6","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"\n{\n   \"first_name\": \"Han\",\n   \"last_name\": \"Solo\",\n   \"phone\": {\n       \"number\": \"4153444200\",\n       \"country_code\": 1\n   },\n   \"restaurant_id\": \"1038007\",\n   \"special_request\": \"Date night\",\n   \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI0NDYwNTc4NDR8MnwyMDI1LTA3LTI4VDEyOjQ1fDEwMzgwMDcifQ.7Ej6x8wkOqZFsrq09M0YX7FbmohWbrrKwTj00hcHMlaRqxfnOZHa8fLrtoKvbfFtJeyEmi4LAZtOuZfjnA3ohw\",\n   \"sms_notifications_opt_in\": true\n   }\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/reservations"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"c1c69000-3a2f-4b23-9cb9-a8c2993923ec"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"73353440-2483-411a-886d-cd5979f84dd4"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Thu, 05 Jun 2025 18:20:45 GMT"},{"key":"Content-Length","value":"152"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=F4EC3569D5235DFAC0139CF3428A35BA~YAAQTKvWF9gqxDyXAQAAkvZSQRz3brJXg+b/XNmm8C0kvCgula3l/8F7tdZg8C6W4nwNtdgKfpXm9+j8hKzGI7smw9jslT8EHnvYTEC0BOh2KnJzg95cN9X1qTuPS3EIrimEbeuKIQJtrutO1dCKbmvBFQDD2Prowvj9/S4iAD4mv2N4b5mKrSwFEZRUJb3K+y5cYEtRCtq+46vPJIsw8pI8z/MFbujjU4dTlJsLYUxL5vFwKcy3NJuc+Jdpr5pELG3igw==~1; Domain=.opentable.com; Path=/; Expires=Thu, 05 Jun 2025 18:54:39 GMT; Max-Age=2034; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"confirmation_number\": 2592,\n    \"reservation_id\": \"6841dffddc6521cc719cebaa\",\n    \"date_time\": \"2025-07-28T12:45\",\n    \"party_size\": 2,\n    \"special_request\": \"Date night\"\n}"}],"_postman_id":"72f3c75d-de20-4b91-a95f-9a7338f870b3"}],"id":"c185d08b-14ba-402d-a177-cb3a9ccea182","description":"<h2 id=\"as-a-diner-i-would-like-to-make-a-reservation-via-the-phone-the-reservation-has-a-credit-card-hold-required\">As a diner, I would like to make a reservation via the phone. The reservation has a credit card hold required.</h2>\n<p>APIs to use:</p>\n<p>In House Booking API:</p>\n<ul>\n<li><p>Availability APIs (Search)</p>\n</li>\n<li><p>Slot Lock</p>\n</li>\n<li><p>Make Reservation</p>\n</li>\n</ul>\n<img src=\"https://content.pstmn.io/b5c62734-b3cf-43d9-b27c-4163ee225378/Vm9pY2UgQUkgQVBJIEZsb3djaGFydCAoMSkucG5n\" alt />","_postman_id":"c185d08b-14ba-402d-a177-cb3a9ccea182"},{"name":"In-House Booking API Use Case - Reservation Cancellation","item":[{"name":"Lookup API","id":"e784bf4a-3f13-4232-9720-fe7ae2422300","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\"phone_number\":{\n    \"number\": \"4155555555\",\n    \"country_code\": 1\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/reservations/search","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","reservations","search"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"710a5406-eb0b-443e-aa72-f149ca3ccbc3","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"phone_number\": {\n        \"number\": \"4153444200\",\n        \"country_code\": 1\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/reservations/search"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"f4e841ed-982e-4bfd-bb62-b8eb4e0df1ce"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"cfdcc958-df21-439a-bcb6-df2f053508e6"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations/search"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Sun, 08 Jun 2025 21:39:32 GMT"},{"key":"Content-Length","value":"192"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=DEB77D133D433A987AD21C15F197330E~YAAQUdYhF1a2czOXAQAANAd8URz0YNNr566OjWU01q/LfTk5WQV+nDrkL/FolV0t42BwdiNJ6Eo6FhxikFcp7Ypf0XCQ0DdEok1dvF1EMajqirnHchB/VM6JIs7yWM/p0NzQwXYY1ioGlB+wiJrcKC590A6TW9ZkhWhmxvEFdYh/SDs3djdNejTVleASprYU64VUN6QlvtDO8ufhgeG2XB09mImrRPiwqopx96/AO1q0eJ16zBE+L3kFtdK0VXBMBHOg~1; Domain=.opentable.com; Path=/; Expires=Sun, 08 Jun 2025 23:36:01 GMT; Max-Age=6989; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"reservations\": [\n        {\n            \"special_request\": \"Date night\",\n            \"confirmation_number\": 2592,\n            \"reservation_id\": \"6841dffddc6521cc719cebaa\",\n            \"restaurant_id\": 1038007,\n            \"date_time\": \"2025-07-28T12:45:00\",\n            \"party_size\": 2,\n            \"status\": \"Modifiable\"\n        }\n    ]\n}"}],"_postman_id":"e784bf4a-3f13-4232-9720-fe7ae2422300"},{"name":"Cancellation","id":"302b875c-f8cf-42c6-8d5b-ebfb0edfb5c1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{base-url}}/inhouse/v1/booking/{{rid4}}/reservations/841dffddc6521cc719cebaa","urlObject":{"path":["inhouse","v1","booking","{{rid4}}","reservations","841dffddc6521cc719cebaa"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"6d784080-320f-4997-8a00-7b41aa4fafca","name":"403","originalRequest":{"method":"DELETE","header":[],"url":"https://platform.opentable.com/inhouse/v1/booking/1038007/reservations/841dffddc6521cc719cebaa"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"fd7b79f7-673b-4aa7-a4b1-95be3f2940ea"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"1D9E2108-2191-4176-B6BF-A6F651D643C8"},{"key":"OT-SessionID","value":"8464c9a2-8fd8-432f-90f8-1750ccf4692b"},{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"partnerfeeds"},{"key":"X-OT-UriTemplate","value":"/partnerfeeds/inhouse/v1/booking/{rid}/reservations/{id}"},{"key":"Content-Length","value":"154"},{"key":"Date","value":"Sun, 08 Jun 2025 22:00:19 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=DEB77D133D433A987AD21C15F197330E~YAAQUdYhF4YidjOXAQAAdw2PURx7+xRrnFDhbOEm9/ww4cODaqTG0BYN4Tfz4zlUpHwWxg/Qlnv8ESLXLiVLrmBl4aHgnpZ4Cuv6aEoUOwefnlwbpjV6ZumVq8Zov58EuXe6ZU+TslYMIuuW71Kxuu2SJFhweN8B4Or7rK+3UdhzTf2PG47I2+H8pSaoOr/PXaIjAdCJR0TPfsd2Hd5AYgO7zlw6BneIxvWgXQc+WENvGrHQDZLdzL6t3ky6HsvQmKDpxg==~1; Domain=.opentable.com; Path=/; Expires=Sun, 08 Jun 2025 23:36:01 GMT; Max-Age=5742; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"code\": \"RedirectToHost\",\n            \"message\": \"Human intervention is needed to complete the request\"\n        }\n    ],\n    \"requestid\": \"fd7b79f7-673b-4aa7-a4b1-95be3f2940ea\"\n}"}],"_postman_id":"302b875c-f8cf-42c6-8d5b-ebfb0edfb5c1"}],"id":"7630dfda-b1d7-4513-b4b0-08c6de7d49bb","description":"<h2 id=\"as-a-diner-i-would-like-to-cancel-a-reservation-via-the-phone\">As a diner, I would like to cancel a reservation via the phone.</h2>\n<p>APIs to use:</p>\n<p>In House Booking API:</p>\n<ul>\n<li><p>Diner Lookup API</p>\n</li>\n<li><p>Cancellation Endpoint</p>\n</li>\n</ul>\n<p><em><strong>Note: The APIs do not currently support the ability to cancel or change Experience reservations, only Standard Reservations.</strong></em></p>\n<img src=\"https://content.pstmn.io/28a116ee-f8b6-44ba-bff8-54fa7b7cabbc/Vm9pY2UgQUkgQVBJIEZsb3djaGFydCAoMikucG5n\" alt />","_postman_id":"7630dfda-b1d7-4513-b4b0-08c6de7d49bb"}],"id":"e7194584-0403-48a1-8007-ae981a64b8fa","_postman_id":"e7194584-0403-48a1-8007-ae981a64b8fa","description":""},{"name":"In House Booking APIs (aka Voice AI) - Tips for Successful Implementation","item":[],"id":"1927445d-81b0-4864-a47b-a8b08cf3ddf4","description":"<h1 id=\"overview\">Overview</h1>\n<p>The In-House Booking API facilitates the seamless booking of reservations directly into a restaurant's inventory, encompassing both In-House and Online availability. This powerful API is specifically engineered to support a range of reservation management functionalities, particularly for Voice AI driven reservation systems.</p>\n<p>Primarily developed to power Voice AI reservation systems, this API is designed for efficiency and integration with advanced conversational interfaces. Its architecture supports automated and real-time interactions, crucial for voice-based booking experiences.</p>\n<p>Partners are expected to develop solutions for Voice AI, Onboarding and offboard functionality, with the onboarding process for restaurants to opt into your integration being crucial to our partnership. We offer two methods for this: OAuth flow or Unique Identifier flow.</p>\n<p>Please note that we require product certification and full onboarding flow for go-live. To view detailed documentation, please visit - docs.opentable.com.</p>\n<h2 id=\"details-and-documentation\">Details and Documentation</h2>\n<p>In House Booking API (aka Voice Al API): The only APIs you have access to are under In House Booking API (aka Voice Al API) -&gt; APIs</p>\n<h2 id=\"helpful-tips\"><strong>Helpful Tips</strong></h2>\n<ul>\n<li><p><strong>Search Window:</strong> Although not required, the maximum number of minutes forwards and backwards to search for times is 180 +/-, giving you a significant window -- Does your implementation allow for a maximized search window or have you accounted for actively limiting the search results?</p>\n</li>\n<li><p><strong>Dining Areas:</strong> Although not required, Dining Areas are part of over 90% of our current restaurant base</p>\n</li>\n<li><p><strong>SMS opt-in:</strong> Ensuring diner SMS opt-in is essential for successful reservation communications, including confirmations and credit card details. Capture this information as part of the required diner details.</p>\n</li>\n<li><p><strong>Reservations/Experiences that require deposit or CC hold:</strong> make sure to inform the diner about the amount and for deposit reservations and CC details are required for hold reservations before the reservation is made. OpenTable must send these transactional SMS</p>\n</li>\n<li><p><strong>Experiences:</strong> Make sure your LLM can handle the following experiences IDs (pre prod) for RID <code>1040230</code> - The experiences are the same production but with a different ID:</p>\n<ul>\n<li><p><strong><code>518093</code></strong>: This experience has multiple <code>priceTitles</code> (these titles can be anything) and mandatory tips. <code>priceId</code>, 129261 has <code>priceAllInclusive</code> = <code>false</code>. Meaning that it has taxes and service which affects the total price</p>\n</li>\n<li><p><strong><code>129260</code></strong>: This experience is per party, the request body is slighty different.</p>\n</li>\n<li><p><strong><code>518092</code></strong>: The name is <code>Breakfast - Pay at the restaurant</code> make sure your LLM is not relying on the name to inform the diner that they must pay at the restaurant. (use the <code>price</code> array)</p>\n</li>\n<li><p><strong><code>518091</code></strong>: Experiences with no policy inherits the restaurant level/default policy only when the policy is <code>“hold”</code>. Make your LLM can handle it on Mondays where there is no policy and Friday to Sunday where there’s a <code>“hold”</code> policy.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"testing-environment\"><strong>Testing Environment</strong></h2>\n<p>Below are some Test Restaurant ID’s (RIDs) that you can use for API. These are meant to be used for Pre-Production testing only. We have also included some nuances around availability and requirements for each. This should help you test numerous scenarios.</p>\n<p><strong>Note we consider the following days “Special Days”:</strong></p>\n<ul>\n<li><p>Thanksgiving Day (US Observance date)</p>\n</li>\n<li><p>Christmas Eve</p>\n</li>\n<li><p>Christmas Day</p>\n</li>\n<li><p>New Year's Day</p>\n</li>\n<li><p>Memorial Day</p>\n</li>\n<li><p>Independence Day</p>\n</li>\n<li><p>Labor Day</p>\n</li>\n</ul>\n<p><strong>RID : 264001</strong></p>\n<ul>\n<li><p>Party Size: 1-20</p>\n</li>\n<li><p>Shift: 6AM-2AM, Sun-Sat</p>\n</li>\n<li><p>Special Days closed</p>\n</li>\n</ul>\n<p><strong>RID 1040230: With Credit Card Requirements and Experiences</strong></p>\n<ul>\n<li><p>Party Size: 1-20</p>\n</li>\n<li><p>Reservations:</p>\n<ul>\n<li><p>Monday: standard</p>\n</li>\n<li><p>Tues to Thur: deposit | party size &gt; 2</p>\n</li>\n<li><p>Fri to Sun: credit card hold | party size &gt; 2</p>\n</li>\n<li><p>Experiences: everyday 6am-12am</p>\n</li>\n<li><p>Shifts: 6AM-12PM, 1PM-5PM, 6PM-11.30PM.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>RID 268549:</strong></p>\n<ul>\n<li><p>Party Size: 1-10</p>\n</li>\n<li><p>Shifts: 7AM-6PM, 8PM-12AM, Sun-Sat</p>\n</li>\n<li><p>Special Days closed</p>\n</li>\n</ul>\n<p><strong>RID 138712:</strong></p>\n<ul>\n<li><p>Party Size: 1-6</p>\n</li>\n<li><p>Shifts: 8AM-2AM, Sun &amp; Sat only</p>\n</li>\n<li><p>Special Days closed</p>\n</li>\n</ul>\n<h2 id=\"certification-process\">Certification Process</h2>\n<p>OpenTable will need to review and approve your pre-production implementation of the API prior to granting production publication. A minimum window of 14 days for OpenTable to review a pre-production submission is required. We use RID 1040230 for our testing, so please provide a phone number for us to call.</p>\n<p>An account to your platform will be useful to test the onboarding flow and to point you to the right transcripts in case any errors during the certification.</p>\n<h3 id=\"requirements\">Requirements:</h3>\n<h3 id=\"scenarios-and-validation\">Scenarios and Validation:</h3>\n<h4 id=\"availability-search\"><strong>Availability Search</strong></h4>\n<ul>\n<li><p>Confirm the partner can call /availability with various party sizes and date/times.</p>\n</li>\n<li><p>Confirm response includes accurate availability including experience options when requested.</p>\n</li>\n<li><p>Confirm response when no availability is present</p>\n</li>\n</ul>\n<h4 id=\"experience-retrieval\"><strong>Experience Retrieval</strong></h4>\n<ul>\n<li><p>Confirm partners can successfully retrieve /experiences for a restaurant.</p>\n</li>\n<li><p>Validate correct explanation of price types, prepaid flags, and cancellation policies.</p>\n</li>\n</ul>\n<h4 id=\"reservation-creation\"><strong>Reservation Creation</strong></h4>\n<ul>\n<li><p>Test creating standard bookings without experience fields.</p>\n</li>\n<li><p>Test creating experience bookings with valid experience_id and correct price.</p>\n</li>\n<li><p>Confirm booking with prepaid and deposit logic behaves as expected.</p>\n</li>\n</ul>\n<h4 id=\"reservation-modification\">Reservation Modification</h4>\n<ul>\n<li><p>Test modifying standard bookings with date/time/party size/special request updates.</p>\n</li>\n<li><p>Test modifying experience bookings, including changes triggering RedirectToHost.</p>\n</li>\n<li><p>Confirm changes fail if reservation is in the past.</p>\n</li>\n</ul>\n<h4 id=\"reservation-cancellation\">Reservation Cancellation</h4>\n<ul>\n<li><p>Test cancellation of standard bookings with no policies – expect success (204).</p>\n</li>\n<li><p>Test cancellation of bookings with CC holds or deposits within and outside cancellation windows – confirm correct RedirectToHost errors where applicable.</p>\n</li>\n</ul>\n<h4 id=\"additional-validation\">Additional Validation</h4>\n<ul>\n<li><p>Verify Lookup API behavior when multiple reservations in the future are present</p>\n</li>\n<li><p>Verify correct attribution of reservations to partner ID</p>\n</li>\n</ul>\n<h2 id=\"support\">Support</h2>\n<p>OpenTable is committed to ensuring that we have a successful partnership, during all phases of the partnership. Please ensure to go through the FAQs and Known Limitations before asking any questions</p>\n<ul>\n<li><p><strong>Partnership Questions:</strong> Questions about the contract and general partnership terms, including marketing opportunities, contact your Partnership Manager</p>\n</li>\n<li><p><strong>Integration Onboarding Help:</strong> OpenTables shares a document that is accessible by partners. Questions will be answered as soon as possible, but usually take 3-5 business days.</p>\n</li>\n<li><p><strong>Ongoing Support (post Go-Live):</strong> For any technical support post implementation. Please email <a href=\"https://mailto:api@opentable.com\">api@opentable.com</a> Emails will automatically create a ticket in our support queue. Questions will be answered as soon as possible, but usually take 3-5 business days.</p>\n</li>\n<li><p><strong>Outages and Maintenance Windows:</strong> Please visit and subscribe to alerts on our status website. status-api.opentable.com</p>\n</li>\n</ul>\n","_postman_id":"1927445d-81b0-4864-a47b-a8b08cf3ddf4"}],"id":"1cd0f678-5c33-4d15-a774-f74269abfb39","description":"<h2 id=\"overview\"><strong>Overview:</strong></h2>\n<p>The In-House Booking API facilitates the seamless booking of reservations directly into a restaurant's inventory, encompassing both In-House and Online availability. This powerful API is specifically engineered to support a range of reservation management functionalities, particularly for Voice AI driven reservation systems.</p>\n<p>This API also allows partners to book 2 types of reservations: Standard reservations and/or Experiences reservations.</p>\n<p>Primarily developed to power Voice AI reservation systems, this API is designed for efficiency and integration with advanced conversational interfaces. Its architecture supports automated and real-time interactions, crucial for voice-based booking experiences.</p>\n<p><strong>Key Endpoints and Functionality:</strong></p>\n<ul>\n<li><p><strong>Availability Search (Standard or Experiences):</strong> Allows for querying the restaurant's availability based on specific criteria, enabling users or systems to check for suitable reservation slots.</p>\n</li>\n<li><p><strong>Get Experiences (Experiences only):</strong> Provides the capability to retrieve information about special dining experiences offered by the restaurant, potentially including events, tasting menus, or themed dinners.</p>\n</li>\n<li><p><strong>Create Reservation (Standard or Experience):</strong> Supports the creation of new reservations, whether standard dining bookings or reservations for special experiences. This endpoint is critical for registering new customers and securing their dining arrangements.</p>\n</li>\n<li><p><strong>Modify Reservation (Standard Only):</strong> Enables users or systems to alter existing reservation details, such as time, party size, or special requests, providing flexibility and accommodating changing plans.</p>\n</li>\n<li><p><strong>Cancel Reservation (Standard Only):</strong> Allows for the cancellation of previously made reservations, ensuring inventory is accurately updated and available slots are released for other bookings.</p>\n</li>\n</ul>\n<h2 id=\"eligibility-and-technical-requirements\">Eligibility and Technical Requirements</h2>\n<p>This Integration is <strong>available only to approved partners</strong> that have signed the applicable paperwork and agreed to the terms and conditions. Also note before a Voice AI partner is approved, there will be a Quality Assurance process to ensure the integration is successful.</p>\n<h1 id=\"known-limitations\">Known limitations</h1>\n<ul>\n<li><p>Voice AI cannot pass the 2% OpenTable service charge on to guests.</p>\n</li>\n<li><p>A diner profile is created and identified based on phone number, first and last name.</p>\n</li>\n<li><p>If there are more than 10 guests linked to the same phone number and there are more than 10 active resersation, Lookup API will return 10 random reservations (tends to be the earliest reservations)</p>\n</li>\n<li><p><strong>Blocking availability only works for online reservations, for in-house, the shift must be edited under \"Availability Planning\" and remove in-house or create a \"Special Day\" in Availability planning, then edit shift settings on that special day, then go to each table type and make that table type \"walk-in\" only. (Yes, this is more manual so make sure that you as the partner let your customers know this) For more information, go to -&gt;</strong> <a href=\"https://support.opentable.com/\">https://support.opentable.com/</a></p>\n</li>\n<li><p>If the customer is running, this cannot updated through this API</p>\n</li>\n<li><p>All reservations show as <code>modifiable</code></p>\n</li>\n<li><p>Requires a mobile number capable of receiving SMS. Landline numbers are not supported.</p>\n</li>\n<li><p>Ticketed experiences are not supported</p>\n</li>\n<li><p>For credit card holds or deposits, if <code>\"sms_notifications_opt_in: false\"</code> the reservation gets booked but the diner doesn't get a link to enter the credit card information</p>\n</li>\n<li><p>Experiences cannot be cancelled or modified through this API</p>\n</li>\n</ul>\n","_postman_id":"1cd0f678-5c33-4d15-a774-f74269abfb39"}],"id":"9157e3fb-fc94-4dfc-8b39-0160e955cc65","description":"<p>OpenTable provides two distinct Application Programming Interfaces (APIs) for the purpose of reserving tables within OpenTable for Restaurants, its table management software.</p>\n<p>The Online Booking API, also referred to as Consumer API, facilitates online reservation processing, contingent upon user acceptance of OpenTable's terms and conditions within a visually accessible interface. Conversely, the In-House Booking API, alternatively known as the Voice AI API, is specifically designed for environments lacking a visual interface, such as voice-activated systems. Although both APIs ultimately accomplish the same objective—the successful creation of a reservation—they differ significantly in methodology, functionality, and intended application.</p>\n<p>It is imperative to acknowledge that the utilization of the Voice AI API for online reservations and the Consumer API for voice reservations is strictly prohibited and constitutes a violation of OpenTable's terms of service. Please work with the business development teams for access to and contracting for each of the APIs.</p>\n","_postman_id":"9157e3fb-fc94-4dfc-8b39-0160e955cc65"},{"name":"CRM APIs","item":[{"name":"APIs","item":[{"name":"Loyalty Programs","item":[{"name":"CRM V3 Loyalties","id":"88f58a48-4ea9-4c96-a035-ed7eb144c50e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"loyalties\": [\r\n    {\r\n      \"accountId\": \"Diner Loyalty Program ID\",\r\n      \"programName\": \"OpenTable Loyalty\",\r\n      \"loyaltyTier\": \"Diamond\",\r\n      \"pointsBalance\": \"2100\",\r\n      \"flexFields\": [\r\n        {\r\n          \"label\": \"Favorite Meal\",\r\n          \"value\": \"Jalapeno & Tomato Pizza\"\r\n        },\r\n        {\r\n          \"label\": \"Benefits\",\r\n          \"value\": \"VIP\"\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/loyalties","description":"<h1 id=\"crm-v3---loyalty-api-documentation\">CRM v3 - Loyalty API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The Loyalty API enables external partners to manage guest loyalty information within the OpenTable ecosystem. This API allows for adding, managing guest loyalty program data to enhance guest experiences and personalize services.</p>\n<hr />\n<p>Endpoints: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests/{guestId}/loyalties</code></p>\n<h4 id=\"purpose\">Purpose</h4>\n<p>Retrieve the loyalty details for a specific guest in a restaurant.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>loyalties</code></td>\n<td>array</td>\n<td>Array of loyalty programs associated with the guest.</td>\n</tr>\n<tr>\n<td><code>accountId</code></td>\n<td>string</td>\n<td>Unique identifier for the loyalty account.</td>\n</tr>\n<tr>\n<td><code>programName</code></td>\n<td>string</td>\n<td>Name of the loyalty program.</td>\n</tr>\n<tr>\n<td><code>loyaltyTier</code></td>\n<td>string</td>\n<td>Loyalty tier of the guest (e.g., <code>Diamond</code>, <code>Gem</code>).</td>\n</tr>\n<tr>\n<td><code>pointsBalance</code></td>\n<td>string</td>\n<td>Current points balance of the guest in the program.</td>\n</tr>\n<tr>\n<td><code>flexFields</code></td>\n<td>array</td>\n<td>Array of custom fields associated with the loyalty program.</td>\n</tr>\n<tr>\n<td><code>flexFields.label</code></td>\n<td>string</td>\n<td>Label of the custom field (e.g., <code>Favorite Meal</code>).</td>\n</tr>\n<tr>\n<td><code>flexFields.value</code></td>\n<td>string</td>\n<td>Value of the custom field (e.g., <code>Jalapeno &amp; Tomato Pizza</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"managing-loyalty-data\">Managing Loyalty Data</h2>\n<h3 id=\"post-add-or-append-loyalty-data\">POST: Add or Append Loyalty Data</h3>\n<p><strong>URL</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests/{guestId}/loyalties</code></p>\n<h4 id=\"purpose-1\">Purpose</h4>\n<p>Add new loyalty data or append additional loyalty programs to an existing resource.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>loyalties</code></td>\n<td>array</td>\n<td>Array of loyalty programs to be added.</td>\n</tr>\n<tr>\n<td><code>accountId</code></td>\n<td>string</td>\n<td>Unique identifier for the loyalty account.</td>\n</tr>\n<tr>\n<td><code>programName</code></td>\n<td>string</td>\n<td>Name of the loyalty program.</td>\n</tr>\n<tr>\n<td><code>loyaltyTier</code></td>\n<td>string</td>\n<td>Loyalty tier of the guest (e.g., <code>Diamond</code>, <code>Gem</code>).</td>\n</tr>\n<tr>\n<td><code>pointsBalance</code></td>\n<td>string</td>\n<td>Current points balance of the guest in the program.</td>\n</tr>\n<tr>\n<td><code>flexFields</code></td>\n<td>array</td>\n<td>Array of custom fields associated with the loyalty program.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"put-update-loyalty-data\">PUT: Update Loyalty Data</h3>\n<p><code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests/{guestId}/loyalties</code></p>\n<h4 id=\"purpose-2\">Purpose</h4>\n<p>Update an existing loyalty resource by replacing the entire object. Use this method for deletions as well by omitting fields you wish to remove.</p>\n<h4 id=\"request-body-1\">Request Body</h4>\n<p>The structure is identical to the POST method.</p>\n<hr />\n<h2 id=\"deleting-data\">Deleting Data</h2>\n<p>To delete specific loyalty data, use the PUT method with an updated object that excludes the items you wish to delete. Partial deletions are not supported; you must submit the complete object.</p>\n<hr />\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","loyalties"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"098be3cd-8512-4081-9dbc-658fc106e2f3","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"loyalties\": [\r\n    {\r\n      \"accountId\": \"Diner Loyalty Program ID\",\r\n      \"programName\": \"OpenTable Loyalty\",\r\n      \"loyaltyTier\": \"Diamond\",\r\n      \"pointsBalance\": \"2100\",\r\n      \"flexFields\": [\r\n        {\r\n          \"label\": \"Favorite Meal\",\r\n          \"value\": \"Jalapeno & Tomato Pizza\"\r\n        },\r\n        {\r\n          \"label\": \"Benefits\",\r\n          \"value\": \"VIP\"\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/loyalties"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"c3567e90-9c6f-4d6c-a878-0ff4ded80ce7"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"419"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/loyalties"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 20 Dec 2024 18:59:29 GMT"},{"key":"Content-Length","value":"201"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"loyalties\": [\n        {\n            \"programName\": \"OpenTable Loyalty\",\n            \"loyaltyTier\": \"Diamond\",\n            \"pointsBalance\": \"2100\",\n            \"accountId\": \"Diner Loyalty Program ID\",\n            \"flexFields\": [\n                {\n                    \"label\": \"Favorite Meal\",\n                    \"value\": \"Jalapeno & Tomato Pizza\"\n                },\n                {\n                    \"label\": \"Benefits\",\n                    \"value\": \"VIP\"\n                }\n            ]\n        }\n    ]\n}"},{"id":"cb433365-061f-4d74-8e53-97f336dae83e","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"loyalties\": [\r\n    {\r\n      \"accountId\": \"Test ID-3b97d36d-e93c-41e3-8442-12c0cb632b99\",\r\n      \"programName\": \"OpenTable Loyalty\",\r\n      \"loyaltyTier\": \"Gem\",\r\n      \"pointsBalance\": \"2100\",\r\n      \"flexFields\": [\r\n        {\r\n          \"label\": \"Favorite Meal\",\r\n          \"value\": \"Jalapeno & Tomato Pizza\"\r\n        },\r\n        {\r\n          \"label\": \"Benefits\",\r\n          \"value\": \"VIP\"\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/loyalties"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"74ac7097-e37c-4ff2-9b32-bbe9abb082a6"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/loyalties"},{"key":"x-envoy-upstream-service-time","value":"24"},{"key":"Content-Length","value":"311"},{"key":"Date","value":"Tue, 29 Oct 2024 06:28:27 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-29T06:28:27.098+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/5850/restaurants/188878/guests/96c1ca88-a5f5-4949-9474-8a9922925a4b/loyalties\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"7aeca0ca\"\n}"}],"_postman_id":"88f58a48-4ea9-4c96-a035-ed7eb144c50e"}],"id":"9a98a0de-1c74-4ebc-8ba9-15b6aa476d4b","description":"<h2 id=\"description\">Description</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>This endpoint will allow developers to expose information about diner's loyalty program participation to the OpenTable for Restaurants table management software. These details will show in the Guestbook, Reso Card, Chit and the Owner’s App.</p>\n<h3 id=\"how-will-this-impact-restaurants\">How will this impact restaurants?</h3>\n<p>Information about the diner’s loyalty program and status will show in the diner card, allowing for additional insight.</p>\n<img src=\"https://content.pstmn.io/c1a8394e-a6b5-41c0-bddc-a4f14e516115/Y3JtLXYzLWxveWFsdGllcy5wbmc=\" />","_postman_id":"9a98a0de-1c74-4ebc-8ba9-15b6aa476d4b"},{"name":"Tag Create, Delete and Post","item":[{"name":"CRM V3 - Tag Create","id":"743ac52f-31a1-4a10-b455-145f02d2eb16","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"displayName\": \"Friend of manager\",\n    \"category\": \"special_guests\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags/{{tag-id}}","description":"<h1 id=\"tag-management-api-documentation\">Tag Management API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The Tag Management API enables external partners to manage guest tags within the OpenTable system. This API allows for the creation, updating, and management of custom tags that can be associated with specific guests, providing flexibility and customization for restaurants to enhance guest relationships and experiences.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\">URL</h3>\n<p><strong>PUT</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{restaurantId}/tags/{tagId}</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the tag is being managed.</td>\n</tr>\n<tr>\n<td><code>tagId</code></td>\n<td>string</td>\n<td>The unique identifier for the tag being created or updated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be in JSON format and contain the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>displayName</code></td>\n<td>string</td>\n<td>The name of the tag as it will appear in the system.</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>string</td>\n<td>The category under which the tag is grouped. Pick one among the allowed values <code>special_guests</code> or <code>dietary_needs</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>The response is returned in JSON format and confirms the successful creation or update of the tag.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>The unique identifier of the tag.</td>\n</tr>\n<tr>\n<td><code>displayName</code></td>\n<td>string</td>\n<td>The name of the tag.</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>string</td>\n<td>The category under which the tag is grouped.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-codes\">Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>The request body is invalid or missing required fields.</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Authentication failed due to an invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Forbidden</td>\n<td>The client does not have permission to access the specified resource.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The specified tag, partner, or restaurant could not be found.</td>\n</tr>\n<tr>\n<td><code>409</code></td>\n<td>Conflict</td>\n<td>Attempt to update a secondary guest. Please update the primary guest instead. (primaryGuestId is returned to store and update)</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Internal Server Error</td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure that the <code>partnerId</code>, <code>restaurantId</code>, and <code>tagId</code> are valid and correspond to existing records in the OpenTable system.</p>\n</li>\n<li><p>Use meaningful <code>displayName</code> and <code>category</code> values to streamline guest classification and management.</p>\n</li>\n<li><p>If a guest profile is merged and there is an attempt to update the secondary <code>guestId</code>, a 409 conflict error will occur. The error will return the <code>primaryGuestId</code> of the merged guest profile. This <code>guestId</code> which should be stored as the primary <code>guestId</code> for all future updates.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","tags","{{tag-id}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"07c60924-fc22-425a-9569-d234f2da7f03","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"displayName\": \"Friend of manager\",\n    \"category\": \"special_guests\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/tags/{{tag-id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"3b43e989-ace4-45db-bb2a-a592596963b1"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"256"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags/{partner_tag_id}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:07:01 GMT"},{"key":"Content-Length","value":"116"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"105\",\n    \"displayName\": \"Friend of manager\",\n    \"category\": \"special_guests\"\n}"},{"id":"d24dd6e9-0318-4517-a775-150d950c896b","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"displayName\": \"now_defined_api_1_max_LENGTHHHHHHH_testtttttttttt!\",\n    \"category\": \"special_guests\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags/{{tag-id}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"19760abf-7eb2-4197-99db-a1f5b0e7de82"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags/{partner_tag_id}"},{"key":"x-envoy-upstream-service-time","value":"12"},{"key":"Content-Length","value":"267"},{"key":"Date","value":"Wed, 30 Oct 2024 05:10:56 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-30T05:10:56.950+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/6166/restaurants/1038007/tags/105\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"1cfca8d5\"\n}"}],"_postman_id":"743ac52f-31a1-4a10-b455-145f02d2eb16"},{"name":"CRM V3 - Tag Retrieval","id":"c7cac42f-85d1-4e02-a0d1-69cafeb4153d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags","description":"<h1 id=\"tag-listing-api-documentation\">Tag Listing API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The Tag Listing API allows external partners to retrieve a list of all tags associated with a specific restaurant. These tags enable restaurants to classify guests based on specific attributes, preferences, or needs, facilitating a more personalized dining experience.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\">URL</h3>\n<p><strong>GET</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{restaurantId}/tags</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant whose tags are being retrieved.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>The response is returned in JSON format and contains a list of tags associated with the specified restaurant.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>The unique identifier of the tag.</td>\n</tr>\n<tr>\n<td><code>displayName</code></td>\n<td>string</td>\n<td>The name of the tag as it appears in the system.</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>string</td>\n<td>The category under which the tag is grouped.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-codes\">Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>The request is invalid or malformed.</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Authentication failed due to an invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Forbidden</td>\n<td>The client does not have permission to access the specified resource.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The specified partner, restaurant, or tags could not be found.</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Internal Server Error</td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure that the <code>partnerId</code> and <code>restaurantId</code> are valid and correspond to existing records in the OpenTable system.</p>\n</li>\n<li><p>Tags retrieved are specific to the specified restaurant and are not shared across restaurants.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","tags"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"883e0641-e895-439b-8343-572bfb595fd5","name":"200","originalRequest":{"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/tags"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"3fdfc835-0144-48ea-bc01-2959bbadb958"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"91"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:07:42 GMT"},{"key":"Content-Length","value":"199"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"101\",\n        \"displayName\": \"Pizza Club Member\",\n        \"category\": \"special_guests\"\n    },\n    {\n        \"id\": \"102\",\n        \"displayName\": \"Celiac\",\n        \"category\": \"dietary_needs\"\n    },\n    {\n        \"id\": \"103\",\n        \"displayName\": \"Wine Locker Member\",\n        \"category\": \"special_guests\"\n    },\n    {\n        \"id\": \"104\",\n        \"displayName\": \"Lactose intolerance\",\n        \"category\": \"dietary_needs\"\n    },\n    {\n        \"id\": \"105\",\n        \"displayName\": \"Friend of manager\",\n        \"category\": \"special_guests\"\n    }\n]"},{"id":"7432124b-0575-49ec-8422-4f676584334e","name":"401","originalRequest":{"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"4d95ef30-89ea-4e53-b749-fc15bd503b02"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags"},{"key":"x-envoy-upstream-service-time","value":"7"},{"key":"Content-Length","value":"263"},{"key":"Date","value":"Wed, 30 Oct 2024 05:11:07 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-30T05:11:07.921+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/6166/restaurants/1038007/tags\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"40d40fb7\"\n}"}],"_postman_id":"c7cac42f-85d1-4e02-a0d1-69cafeb4153d"},{"name":"CRM V3 - Tag Deletion","id":"c47c0776-a4d0-4d22-8bcc-9b0369f1c2aa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags/{{tag-id}}","description":"<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\">URL</h3>\n<p><strong>DELETE</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{restaurantId}/tags/{tagId}</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the tag is being deleted.</td>\n</tr>\n<tr>\n<td><code>tagId</code></td>\n<td>string</td>\n<td>The unique identifier of the tag to be deleted.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-codes\">Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>The request is invalid or malformed.</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Authentication failed due to an invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Forbidden</td>\n<td>The client does not have permission to delete the specified tag.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The specified tag, partner, or restaurant could not be found.</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Internal Server Error</td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure that the <code>partnerId</code>, <code>restaurantId</code>, and <code>tagId</code> are valid and correspond to existing records in the OpenTable system.</p>\n</li>\n<li><p>This endpoint only deletes the specified tag and does not affect other tags or guest data.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","tags","{{tag-id}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"ea10a84b-82a9-4132-a591-d4b56030d025","name":"200","originalRequest":{"method":"DELETE","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/tags/{{tag-id}}"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"OT-RequestId","value":"5bcc722a-b3b5-4a40-8c82-d858b908dfd0"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"x-envoy-upstream-service-time","value":"313"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags/{partner_tag_id}"},{"key":"Content-Type","value":"text/plain;charset=utf-8"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 30 Oct 2024 05:08:46 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":""},{"id":"c882ebf1-009b-4a8d-ba9d-1d602077dc73","name":"401","originalRequest":{"method":"DELETE","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags/{{tag-id}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"OT-RequestId","value":"77088b2c-3df5-4310-bd4a-3f0d20aaae7a"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags/{partner_tag_id}"},{"key":"x-envoy-upstream-service-time","value":"9"},{"key":"Content-Length","value":"267"},{"key":"Date","value":"Wed, 30 Oct 2024 05:11:18 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-30T05:11:18.156+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/6166/restaurants/1038007/tags/105\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"4c736c2c\"\n}"},{"id":"0c96a4f3-78b4-4f26-a539-bf66e1704824","name":"404","originalRequest":{"method":"DELETE","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags/{{tag-id}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"OT-RequestId","value":"fc50a0b2-41d8-4b75-ac7c-51e83ec565c2"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Cache-Control","value":"must-revalidate,no-cache,no-store"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"87"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags/{partner_tag_id}"},{"key":"Content-Length","value":"183"},{"key":"Date","value":"Fri, 20 Dec 2024 19:56:30 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-12-20T19:56:30.298+0000\",\n    \"status\": 404,\n    \"error\": \"Not Found\",\n    \"message\": \"tag definition not found\",\n    \"path\": \"/api/v3/external/partners/8056/restaurants/1074796/tags/105\"\n}"}],"_postman_id":"c47c0776-a4d0-4d22-8bcc-9b0369f1c2aa"},{"name":"CRM V3 - Tag Assign","id":"9205a904-7cd6-4e9c-bbba-33b4d1cd86cd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"tags\": [\n        \"101\",\n        \"103\",\n        \"104\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/tags","description":"<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\">URL</h3>\n<p><strong>POST</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{restaurantId}/guests/{guestId}/tags</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the guest tag is being assigned.</td>\n</tr>\n<tr>\n<td><code>guestId</code></td>\n<td>string</td>\n<td>The unique identifier of the guest to whom tags are being assigned.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be in JSON format and contain the following field:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tags</code></td>\n<td>array</td>\n<td>A list of tag IDs to assign to the guest.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>A successful tag assignment returns a <code>200 OK</code> status code along with the assigned tags in the response body.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tags</code></td>\n<td>array</td>\n<td>A list of tag IDs that were successfully assigned to the guest.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-codes\">Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>The request is invalid or malformed.</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Authentication failed due to an invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Forbidden</td>\n<td>The client does not have permission to assign tags to the specified guest.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The specified partner, restaurant, guest, or tags could not be found.</td>\n</tr>\n<tr>\n<td><code>409</code></td>\n<td>Conflict</td>\n<td>Attempt to update a secondary guest. Please update the primary guest instead. (<code>primaryGuestId</code> is returned to store and update)</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Internal Server Error</td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure that the <code>partnerId</code>, <code>restaurantId</code>, <code>guestId</code>, and <code>tags</code> are valid and correspond to existing records in the OpenTable system.</p>\n</li>\n<li><p>Tags that do not get created via the API will not be assigned.</p>\n</li>\n<li><p>If a guest profile is merged and there is an attempt to update the secondary <code>guestId</code>, a 409 conflict error will occur. The error will return the <code>primaryGuestId</code> of the merged guest profile. This <code>guestId</code> which should be stored as the primary <code>guestId</code> for all future updates.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","tags"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"0707ce72-6c1e-44b8-b40d-24958d7b6810","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"tags\": [\n        \"101\",\n        \"103\",\n        \"104\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/guests/{{guest-id}}/tags"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"0275c077-90ff-453e-b3a3-4690d9c90597"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"132"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/tags"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:09:40 GMT"},{"key":"Content-Length","value":"69"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"tags\": [\n        \"101\",\n        \"103\",\n        \"104\"\n    ]\n}"},{"id":"771d7c08-cc3e-48ce-8021-47bee18abde3","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"tags\": [\n        \"partner_tag_1\",\n        \"partner_tag_2\",\n        \"partner_tag_3\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/tags"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"0275c077-90ff-453e-b3a3-4690d9c90597"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"132"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/tags"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:09:40 GMT"},{"key":"Content-Length","value":"69"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-30T05:11:18.156+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/6166/restaurants/1038007/guests/guest-id/tags\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"4c736c2c\"\n}"}],"_postman_id":"9205a904-7cd6-4e9c-bbba-33b4d1cd86cd"}],"id":"38968864-6b57-47af-9ef6-aae70f09ca23","description":"<h2 id=\"description\">Description</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>This endpoint within the CRM API catalog allows for creating Guest Tags and as well as the ability to assign these Guest Tags to guests. The updated guest information records associated with a specific partner's restaurant will have the data exposed within the guest data in the restaurant’s OpenTable table management software.</p>\n<h3 id=\"how-will-this-impact-restaurants\">How will this impact restaurants?</h3>\n<p>The CRM tag creation will allow for partners to create and add new tags to guest profiles without the limitation of needing a tag to exist with the restaurant’s OpenTable for Restaurants system.</p>\n<p>Tags from CRM API will appear on the guest profile and will not be editable.</p>\n<img src=\"https://content.pstmn.io/841c95df-8d63-4369-98fa-5f047bbdb980/NzU0ZTcwYzdiOGY0NjIyZTU2ODk4ODAwZGU3MjkzNTAucG5n\" />","_postman_id":"38968864-6b57-47af-9ef6-aae70f09ca23"},{"name":"Property/Hotel Details","item":[{"name":"CRM V3 Properties","id":"2327fb64-18e4-4d98-90ba-0a1225ece104","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"properties\":[\r\n      {\r\n         \"reservationID\":\"e8f72c21-442b-45e1-871a-af54304102e9\",\r\n         \"propertyName\":\"OpenTable Grand Hotel\",\r\n         \"resStatusCode\":\"RESERVED\",\r\n         \"resArriveDate\":\"2024-06-16T16:00:00.000\",\r\n         \"resDepartDate\":\"2024-06-20T11:00:00.000\",\r\n         \"roomNumber\":\"1121\",\r\n         \"rateCode\":\"9561797\",\r\n         \"flexFields\":[\r\n            {\r\n               \"label\":\"Promotions\",\r\n               \"value\":\"Free breakfast\"\r\n            },\r\n            {\r\n               \"label\":\"Activities booked\",\r\n               \"value\":\"Wine sampling\"\r\n            }\r\n         ]\r\n      }\r\n   ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/properties","description":"<h2 id=\"endpoints\">Endpoints</h2>\n<h3 id=\"put-update-or-add-guest-properties\">PUT: Update or Add Guest Properties</h3>\n<p><strong>URL</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests/{guestId}/properties</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the guest is managed.</td>\n</tr>\n<tr>\n<td><code>guestId</code></td>\n<td>string</td>\n<td>The unique identifier of the guest whose properties are being updated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be in JSON format and contain the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>properties</code></td>\n<td>array</td>\n<td>An array of property details to be associated with the guest.</td>\n</tr>\n<tr>\n<td><code>reservationID</code></td>\n<td>string</td>\n<td>Unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>propertyName</code></td>\n<td>string</td>\n<td>Name of the property associated with the guest.</td>\n</tr>\n<tr>\n<td><code>resStatusCode</code></td>\n<td>string</td>\n<td>Status code of the reservation (e.g., <code>RESERVED</code>, <code>CANCELLED</code>).</td>\n</tr>\n<tr>\n<td><code>resArriveDate</code></td>\n<td>string</td>\n<td>Arrival date and time in ISO 8601 format (e.g., <code>2024-06-16T16:00:00.000</code>).</td>\n</tr>\n<tr>\n<td><code>resDepartDate</code></td>\n<td>string</td>\n<td>Departure date and time in ISO 8601 format (e.g., <code>2024-06-20T11:00:00.000</code>).</td>\n</tr>\n<tr>\n<td><code>roomNumber</code></td>\n<td>string</td>\n<td>Room number assigned to the guest.</td>\n</tr>\n<tr>\n<td><code>rateCode</code></td>\n<td>string</td>\n<td>Rate code associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>flexFields</code></td>\n<td>array</td>\n<td>Array of custom fields with additional details about the reservation.</td>\n</tr>\n<tr>\n<td><code>flexFields.label</code></td>\n<td>string</td>\n<td>Label of the custom field (e.g., <code>Promotions</code>).</td>\n</tr>\n<tr>\n<td><code>flexFields.value</code></td>\n<td>string</td>\n<td>Value of the custom field (e.g., <code>Free breakfast</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>A successful request returns a <code>200 OK</code> status code along with the updated properties in the response body.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>properties</code></td>\n<td>array</td>\n<td>Array of property details associated with the guest.</td>\n</tr>\n<tr>\n<td><code>reservationID</code></td>\n<td>string</td>\n<td>Unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>propertyName</code></td>\n<td>string</td>\n<td>Name of the property associated with the guest.</td>\n</tr>\n<tr>\n<td><code>resStatusCode</code></td>\n<td>string</td>\n<td>Status code of the reservation (e.g., <code>RESERVED</code>, <code>CANCELLED</code>).</td>\n</tr>\n<tr>\n<td><code>resArriveDate</code></td>\n<td>string</td>\n<td>Arrival date and time in ISO 8601 format.</td>\n</tr>\n<tr>\n<td><code>resDepartDate</code></td>\n<td>string</td>\n<td>Departure date and time in ISO 8601 format.</td>\n</tr>\n<tr>\n<td><code>roomNumber</code></td>\n<td>string</td>\n<td>Room number assigned to the guest.</td>\n</tr>\n<tr>\n<td><code>rateCode</code></td>\n<td>string</td>\n<td>Rate code associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>flexFields</code></td>\n<td>array</td>\n<td>Array of custom fields with additional details about the reservation.</td>\n</tr>\n<tr>\n<td><code>flexFields.label</code></td>\n<td>string</td>\n<td>Label of the custom field.</td>\n</tr>\n<tr>\n<td><code>flexFields.value</code></td>\n<td>string</td>\n<td>Value of the custom field.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><code>{partnerId}</code>, <code>{rid}</code>, and <code>{guestId}</code> are dynamic path parameters.</p>\n<ul>\n<li><p><code>partnerId</code>: Assigned by OpenTable during onboarding.</p>\n</li>\n<li><p><code>rid</code>: Unique identifier for the restaurant, available via OpenTable.</p>\n</li>\n<li><p><code>guestId</code>: Found in the Sync API guest payload; remove the preceding RID from the guest ID.</p>\n</li>\n</ul>\n</li>\n<li><p>To delete specific property data, submit the full object excluding the items to be removed (partial deletions are not supported).</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","properties"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"3ffaeb18-9907-4c6b-a3a0-7a55732bb181","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"properties\":[\r\n      {\r\n         \"reservationID\":\"e8f72c21-442b-45e1-871a-af54304102e9\",\r\n         \"propertyName\":\"OpenTable Grand Hotel\",\r\n         \"resStatusCode\":\"RESERVED\",\r\n         \"resArriveDate\":\"2024-06-16T16:00:00.000\",\r\n         \"resDepartDate\":\"2024-06-20T11:00:00.000\",\r\n         \"roomNumber\":\"1121\",\r\n         \"rateCode\":\"9561797\",\r\n         \"flexFields\":[\r\n            {\r\n               \"label\":\"Promotions\",\r\n               \"value\":\"Free breakfast\"\r\n            },\r\n            {\r\n               \"label\":\"Activities booked\",\r\n               \"value\":\"Wine sampling\"\r\n            }\r\n         ]\r\n      }\r\n   ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/guests/{{guest-id}}/properties"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"ec5ecd14-7a32-4e19-878a-df4276aa3dd9"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"144"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/properties"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:02:21 GMT"},{"key":"Content-Length","value":"281"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"properties\": [\n        {\n            \"propertyName\": \"OpenTable Grand Hotel\",\n            \"resStatusCode\": \"RESERVED\",\n            \"reservationId\": \"e8f72c21-442b-45e1-871a-af54304102e9\",\n            \"resArriveDate\": \"2024-06-16T16:00:00\",\n            \"resDepartDate\": \"2024-06-20T11:00:00\",\n            \"roomNumber\": \"1121\",\n            \"rateCode\": \"9561797\",\n            \"flexFields\": [\n                {\n                    \"label\": \"Promotions\",\n                    \"value\": \"Free breakfast\"\n                },\n                {\n                    \"label\": \"Activities booked\",\n                    \"value\": \"Wine sampling\"\n                }\n            ]\n        }\n    ]\n}"},{"id":"37b3c833-de38-4b44-9195-fd35f303b2f8","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"properties\":[\r\n      {\r\n         \"reservationID\":\"e8f72c21-442b-45e1-871a-af54304102e9\",\r\n         \"propertyName\":\"OpenTable Grand Hotel\",\r\n         \"resStatusCode\":\"RESERVED\",\r\n         \"resArriveDate\":\"2024-06-16T16:00:00.000\",\r\n         \"resDepartDate\":\"2024-06-20T11:00:00.000\",\r\n         \"roomNumber\":\"1121\",\r\n         \"rateCode\":\"9561797\",\r\n         \"flexFields\":[\r\n            {\r\n               \"label\":\"Promotions\",\r\n               \"value\":\"Free breakfast\"\r\n            },\r\n            {\r\n               \"label\":\"Activities booked\",\r\n               \"value\":\"Wine sampling\"\r\n            }\r\n         ]\r\n      }\r\n   ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/properties"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"e369ce4a-60ea-41a9-be39-22aad180247c"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/properties"},{"key":"x-envoy-upstream-service-time","value":"16"},{"key":"Content-Length","value":"312"},{"key":"Date","value":"Tue, 29 Oct 2024 06:28:53 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-29T06:28:53.790+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/5850/restaurants/188878/guests/96c1ca88-a5f5-4949-9474-8a9922925a4b/properties\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"318d1bab\"\n}"}],"_postman_id":"2327fb64-18e4-4d98-90ba-0a1225ece104"}],"id":"0a516ebe-bd9c-4e7d-9808-c3cde273ea94","description":"<h3 id=\"overview\"><strong>Overview</strong></h3>\n<p>This API allows for updating guest information records associated with a partner's restaurant. The data is exposed within the guest data in the restaurant’s OpenTable table management software.</p>\n<h3 id=\"how-will-this-impact-restaurants\"><strong>How will this impact restaurants?</strong></h3>\n<p>Information about the diner’s property stay will show in the diner card, allowing for additional insight.</p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdydWFjOwg5zcv5m0_3OoIzgoxG4dlA0vVahNOZeAhruvDtGqR9Ha7ovrwXX2-teu8nZWYmKaVDppKyn53KaIqtYcwvxMcM1SwYcmkHLGq5YuJ2qk3wsegv7FntFxVc6QlO0tIzajRcPo1Bw1Xv8jLnKp4?key=tCuggL7VGnyy_zNrj0r2Ag\" />\n\n<h3 id=\"change-log\"><strong>Change Log</strong></h3>\n<p>The previous CRM API available was v2. We have also made some slight changes to v3 since we last provided documentation. The following changes have been made since:</p>\n<ul>\n<li><p>New Endpoint URLs</p>\n</li>\n<li><p>Enhanced security limiting partners to only certain attributes</p>\n</li>\n<li><p>Removal of the Integrations Object. That information is static and will be kept stored in the OpenTable system. For adjustments to the integration name, please work with OpenTable.</p>\n</li>\n</ul>\n<p>These changes were completed in April of 2024.</p>\n","_postman_id":"0a516ebe-bd9c-4e7d-9808-c3cde273ea94"},{"name":"Guest Creation and ID Retrieval","item":[{"name":"CRM API v3 - Guest Creation","id":"c8df7867-4246-4f9e-ba82-b886cc445306","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"firstName\": \"Jon\",\r\n    \"lastName\": \"Appleseed\",\r\n    \"email\": {\r\n        \"emailAddress\": \"jon@appleseed.com\",\r\n        \"isEmailMarketingOptedIn\": true\r\n    },\r\n    \"phoneNumbers\": [\r\n        {\r\n            \"countryCode\": \"1\",\r\n            \"number\": \"4150000000\",\r\n            \"isPrimary\": true\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests","description":"<h2 id=\"create-guest-api-documentation\">Create Guest API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><code>{base-url}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests</code></p>\n<h3 id=\"method\">Method</h3>\n<p><strong>POST</strong></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<ul>\n<li><p><strong>partnerId</strong>: A static identifier for the partner assigned by OpenTable after onboarding.</p>\n</li>\n<li><p><strong>rid (restaurant id)</strong>: A unique, static identifier for each restaurant provided by OpenTable.</p>\n</li>\n</ul>\n<h3 id=\"request-body-attributes\">Request Body Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>The first name of the guest. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>The last name of the guest. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>phoneNumbers</td>\n<td>array</td>\n<td>An array of phone numbers for the guest. <strong>Required if no email is provided</strong></td>\n</tr>\n<tr>\n<td>email</td>\n<td>object</td>\n<td>The email of the guest. <strong>Required if no phone number is provided</strong></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"phone-number-object-attributes\">Phone Number Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>countryCode</td>\n<td>string</td>\n<td>The country code for the phone number. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>number</td>\n<td>string</td>\n<td>The phone number. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>isPrimary</td>\n<td>boolean</td>\n<td>Indicates if it is the primary number. Defaults to true if not specified.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"email-object-attributes\">Email Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>emailAddress</td>\n<td>string</td>\n<td>The guest's email address. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>isEmailMarketingOptedIn</td>\n<td>boolean</td>\n<td>Indicates the email marketing opt-in preference. Defaults to false.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"success-and-error-codes\">Success and Error Codes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Message</th>\n<th>Reason for Error</th>\n<th>Status Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>OK</td>\n<td>Request successful</td>\n<td>200</td>\n</tr>\n<tr>\n<td>Bad Request</td>\n<td>Your request is invalid</td>\n<td>400</td>\n</tr>\n<tr>\n<td>invalid_token</td>\n<td>Invalid or expired token provided</td>\n<td>401</td>\n</tr>\n<tr>\n<td>Conflict</td>\n<td>Attempt to update a secondary guest. Please update the primary guest instead. (primaryGuestId is returned to store and update)</td>\n<td>409</td>\n</tr>\n<tr>\n<td>Too many requests</td>\n<td>No access available under your account</td>\n<td>429</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Either <code>phoneNumbers</code> or <code>email</code> must be provided.</p>\n</li>\n<li><p>If multiple <code>isPrimary: true</code> values are provided in the phone numbers array, only the first one will be retained.</p>\n</li>\n<li><p>Ensure your <code>partnerId</code> and <code>rid</code> values are correctly assigned by OpenTable during onboarding.</p>\n</li>\n<li><p>If a guest profile is merged and there is an attempt to update the secondary guestId, a 409 conflict error will occur. The error will return the primaryGuestId of the merged guest profile. This guestId which should be stored as the primary guestId for all future updates.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"ef1cfe2b-8946-40d3-be3d-b26bd7afcb75","name":"200","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"","disabled":true},{"key":"Authorization","value":"","disabled":true},{"key":"Cookie","value":"","disabled":true}],"body":{"mode":"raw","raw":"{\r\n    \"firstName\": \"Jon\",\r\n    \"lastName\": \"Appleseed\",\r\n    \"email\": {\r\n        \"emailAddress\": \"jon@appleseed.com\",\r\n        \"isEmailMarketingOptedIn\": true\r\n    },\r\n    \"phoneNumbers\": [\r\n        {\r\n            \"countryCode\": \"1\",\r\n            \"number\": \"4150000000\",\r\n            \"isPrimary\": true\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/guests"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"1975a2e7-a839-46cc-a79a-b0a3be5a951d"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"203"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:04:41 GMT"},{"key":"Content-Length","value":"64"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"guestId\": \"6696b6fc4f58cabd389b7e48\"\n}"},{"id":"5a5fb92f-de87-4cef-b528-ce29fb61057d","name":"401","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"","disabled":true},{"key":"Authorization","value":"","disabled":true},{"key":"Cookie","value":"","disabled":true}],"body":{"mode":"raw","raw":"{\r\n    \"firstName\": \"Jon\",\r\n    \"lastName\": \"Appleseed\",\r\n    \"email\": {\r\n        \"emailAddress\": \"jon@appleseed.com\",\r\n        \"isEmailMarketingOptedIn\": true\r\n    },\r\n    \"phoneNumbers\": [\r\n        {\r\n            \"countryCode\": \"1\",\r\n            \"number\": \"4150000000\",\r\n            \"isPrimary\": true\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"402158f3-3d2a-4f41-b94a-4fed0492546c"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"4E85E3A4-DA9B-4468-A555-093EB4B1B4BB"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests"},{"key":"x-envoy-upstream-service-time","value":"28"},{"key":"Content-Length","value":"264"},{"key":"Date","value":"Tue, 29 Oct 2024 09:24:46 GMT"},{"key":"Connection","value":"close"},{"key":"Set-Cookie","value":"otuvid=4E85E3A4-DA9B-4468-A555-093EB4B1B4BB; Path=/; Domain=otqa.com; Secure; SameSite=None"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-29T09:24:46.480+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/5850/restaurants/188878/guests\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"56fa4e9b\"\n}"}],"_postman_id":"c8df7867-4246-4f9e-ba82-b886cc445306"}],"id":"6119c2e2-8e40-45e6-9085-db44b0fa38a5","description":"<h2 id=\"description\">Description</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>Customer Relations Management API is a set of APIs that exposes additional guest and reservation details from other sources.</p>\n<p>The APIs will facilitate the addition of details in the diner profile and will leverage the Guest Sync API payload to accurately match and add information to specific guest profiles.</p>\n<p>This API allows for updating guest information records associated with a partner's restaurant. The data is exposed within the guest data in the restaurant’s OpenTable table management software.</p>\n<h3 id=\"how-will-this-impact-restaurants\">How will this impact restaurants?</h3>\n<p>The Guest Creation API allows partners to create guest profiles in the OpenTable for Restaurants platform outside of the reservation making process.</p>\n<h3 id=\"before-guest-creation\">Before guest creation</h3>\n<img src=\"https://content.pstmn.io/81b1a394-333f-4094-96f9-0de5d9676d89/Y3JtLWJlZm9yZS1ndWVzdC1jcmVhdGlvbi5wbmc=\" width=\"529\" height=\"271\" />\n\n<h3 id=\"after-guest-creation\">After guest creation</h3>\n<img src=\"https://content.pstmn.io/b785a8bb-2932-4458-85af-8dcf63d84f4c/Y3JtLWFmdGVyLWd1ZXN0LWNyZWF0aW9uLnBuZw==\" width=\"529\" height=\"352\" />\n\n<h2 id=\"guest-matching--creation-logic\">Guest Matching / Creation Logic</h2>\n<p>When the Guest Creation API is called the following logic will be used to match to existing restaurant guest profiles or to create a brand new profile.</p>\n<p><strong>Scenario 1: match</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, Phone A, email A</p>\n<p><strong>Scenario 2: match</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, Phone A, no email</p>\n<p><strong>Scenario 3: match</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, no phone, email A</p>\n<p><strong>Scenario 4: no match, creation of a new guest</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, Phone A, email B</p>\n<p><strong>Scenario 5: no match, creation of a new guest</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, Phone B, email A</p>\n<h2 id=\"rate-limit\">Rate Limit:</h2>\n<p>The maximum allowable rate of API calls at this endpoint is set at 10 calls per second per partner. Please note that other endpoints may have different requirements or limits.</p>\n<h2 id=\"change-log\">Change Log</h2>\n<p>These changes were completed in April of 2024.</p>\n","_postman_id":"6119c2e2-8e40-45e6-9085-db44b0fa38a5"},{"name":"Guest Insights","item":[{"name":"CRM V3 Insights","id":"15f96b05-09df-4ab7-9e6f-d7d2a84a201c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"insights\":[\r\n      {\r\n         \"label\":\"Average check size\",\r\n         \"value\":\"$62\"\r\n      },\r\n      {\r\n         \"label\":\"Customer proximity\",\r\n         \"value\":\"0.5 miles\"\r\n      },\r\n      {\r\n         \"label\":\"Customer dining frequency\",\r\n         \"value\":\"2 times per week\"\r\n      }\r\n   ]\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/insights","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","insights"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"bbbc1945-eaac-41d4-8cc8-552cca6b8fc2","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"insights\":[\r\n      {\r\n         \"label\":\"Average check size\",\r\n         \"value\":\"$62\"\r\n      },\r\n      {\r\n         \"label\":\"Customer proximity\",\r\n         \"value\":\"0.5 miles\"\r\n      },\r\n      {\r\n         \"label\":\"Customer dining frequency\",\r\n         \"value\":\"2 times per week\"\r\n      }\r\n   ]\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/guests/{{guest-id}}/insights"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"09d3baa8-0d01-437e-88aa-39af45b73fd4"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"102"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/insights"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:04:12 GMT"},{"key":"Content-Length","value":"146"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"insights\": [\n        {\n            \"label\": \"Average check size\",\n            \"value\": \"$62\"\n        },\n        {\n            \"label\": \"Customer proximity\",\n            \"value\": \"0.5 miles\"\n        },\n        {\n            \"label\": \"Customer dining frequency\",\n            \"value\": \"2 times per week\"\n        }\n    ]\n}"},{"id":"f7569ec0-75ef-4d55-b3c4-c4448ad44b0d","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"insights\":[\r\n      {\r\n         \"label\":\"Average check size\",\r\n         \"value\":\"$62\"\r\n      },\r\n      {\r\n         \"label\":\"Customer proximity\",\r\n         \"value\":\"0.5 miles\"\r\n      },\r\n      {\r\n         \"label\":\"Customer dining frequency\",\r\n         \"value\":\"2 times per week\"\r\n      }\r\n   ]\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/insights"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"b2aeba87-70af-450c-a5e4-e4a9b6f50c6c"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/insights"},{"key":"x-envoy-upstream-service-time","value":"15"},{"key":"Content-Length","value":"310"},{"key":"Date","value":"Tue, 29 Oct 2024 08:59:49 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-29T08:59:49.683+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/5850/restaurants/188878/guests/96c1ca88-a5f5-4949-9474-8a9922925a4b/insights\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"3f580b0f\"\n}"}],"_postman_id":"15f96b05-09df-4ab7-9e6f-d7d2a84a201c"}],"id":"6cf5b6bd-76c4-4a12-8f04-5518891ddd8d","description":"<h2 id=\"api-documentation-for-updating-guest-insights\">API Documentation for Updating Guest Insights</h2>\n<h2 id=\"overview\">Overview</h2>\n<p>This documentation outlines the process for using the PUT API endpoint to update guest insights for a specific restaurant. It includes the request format, headers, and example payload, as well as the expected response structure.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{base-url}/api/v3/external/partners/{partner_id}/restaurants/{restaurant_id}/guests/{guest_id}/insights</code></p>\n<p><strong>Method</strong>: PUT</p>\n<h2 id=\"headers\">Headers</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header Name</th>\n<th>Description</th>\n<th>Example Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td>Specifies the media type of the request body.</td>\n<td><code>application/json</code></td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td>Bearer token for authentication.</td>\n<td><code>Bearer 7b476eed-13cb-4b38-a357-6cdf9517eb48</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-parameters\">Request Parameters</h2>\n<h3 id=\"path-parameters\">Path Parameters:</h3>\n<ul>\n<li><p><code>partner_id</code>: The unique identifier of the partner.</p>\n</li>\n<li><p><code>restaurant_id</code>: The unique identifier of the restaurant.</p>\n</li>\n<li><p><code>guest_id</code>: The unique identifier of the guest.</p>\n</li>\n</ul>\n<h2 id=\"request-body\">Request Body</h2>\n<p>The request body must include an array of insights, each with a <code>label</code> and a <code>value</code>.</p>\n<h3 id=\"fields\">Fields:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>label</code></td>\n<td>String</td>\n<td>The label for the insight (e.g., \"Average check size\").</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>String</td>\n<td>The value associated with the label (e.g., \"$62\").</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<h3 id=\"fields-1\">Fields:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>label</code></td>\n<td>String</td>\n<td>The label for the insight (e.g., \"Average check size\").</td>\n</tr>\n<tr>\n<td><code>value</code></td>\n<td>String</td>\n<td>The value associated with the label (e.g., \"$62\").</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure that the <code>Authorization</code> token provided is valid and has sufficient permissions.</p>\n</li>\n<li><p>All <code>label</code> and <code>value</code> pairs should be meaningful and relevant to the guest insights.</p>\n</li>\n<li><p>There is no character limit, but we recomend we keep it as succint as possible</p>\n</li>\n<li><p>There is no limit on the amount of labels.</p>\n</li>\n<li><p>Incorrect or missing fields may result in validation errors.</p>\n</li>\n</ul>\n<h2 id=\"error-handling\">Error Handling</h2>\n<h3 id=\"common-errors\">Common Errors:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Error Message</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>Invalid request format</code></td>\n<td>The request body is malformed or missing required fields.</td>\n</tr>\n<tr>\n<td>401</td>\n<td><code>Unauthorized</code></td>\n<td>The provided token is invalid or expired.</td>\n</tr>\n<tr>\n<td>404</td>\n<td><code>Resource not found</code></td>\n<td>The specified <code>partner_id</code>, <code>restaurant_id</code>, or <code>guest_id</code> does not exist.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"6cf5b6bd-76c4-4a12-8f04-5518891ddd8d"},{"name":"Guest Photo","item":[{"name":"CRM V3 Upload Photo","id":"e8d71f96-c1a8-483e-8e2a-e357ba078bb1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"url\": \"https://my-photo-url\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos","description":"<h1 id=\"crm-v3---guest-photo-upload-api-documentation\">CRM V3 - Guest Photo Upload API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The upload of the Guest photos works in asynchronous fashion, meaning that the upload request is acknowledged but the actual upload will happen in the background. The status API will allow partners to monitor the status of the photo.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\"><strong>URL</strong></h3>\n<p><strong>PUT</strong>: <code>{base-url}/api/v3/external/partners/{partner_id}/restaurants/{restaurant_id}/guests/{guest_id}/photos</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the photo is being managed.</td>\n</tr>\n<tr>\n<td><code>guestId</code></td>\n<td>string</td>\n<td>The unique identifier of the guest whose photo is being updated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be in JSON format and contain the following field:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>url</code></td>\n<td>string</td>\n<td>URL link to the guest photo. JPEG or PNG are only supported formats.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>The response body returned will be empty for a successful photo upoad request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>202</code></td>\n<td>Accepted</td>\n<td>Photo upload request acknowledged</td>\n</tr>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>Returned when the photo url is empty</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-notes\"><strong>Additional Notes</strong></h3>\n<ul>\n<li><p>Supported photo formats: JPEG, PNG</p>\n</li>\n<li><p>Minimum supported size: 512px x 512px</p>\n</li>\n<li><p>One photo per guest (per partner, per rid): uploading a new photo for a guest, will overwrite the previously uploaded one</p>\n</li>\n<li><p>Every new upload request will delete the previously uploaded photo for guest, regardless of the outcome of the upload (more about this below, in the <code>status</code> table)</p>\n</li>\n<li><p>Partner needs to ensure url is valid for at leat 30 days</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","photos"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"6b67719c-be1a-49a5-a64b-f362c9b46e41","name":"202","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"url\": \"https://my-photo-url\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos"},"status":"Accepted","code":202,"_postman_previewlanguage":"plain","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"bd4cbd1e-fada-4c36-a769-015381313c09"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"x-envoy-upstream-service-time","value":"507"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/photos"},{"key":"Content-Type","value":"text/plain;charset=utf-8"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Fri, 31 Jan 2025 17:03:22 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null},{"id":"0de10621-acb1-4829-8819-88865fe855fc","name":"400","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"da1edff3-671b-4fae-ac1d-8d96135ff0ea"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Cache-Control","value":"must-revalidate,no-cache,no-store"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"49"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/photos"},{"key":"Content-Length","value":"220"},{"key":"Date","value":"Mon, 03 Feb 2025 21:55:51 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2025-02-03T21:55:51.430+0000\",\n    \"status\": 400,\n    \"error\": \"Bad Request\",\n    \"message\": \"'url' cannot be null or empty\",\n    \"path\": \"/api/v3/external/partners/7337/restaurants/1038007/guests/61dd968860ae9a0001c3da34/photos\"\n}"},{"id":"780b188a-4124-4d8d-ae9b-13e400ea238d","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"url\": \"https://my-photo-url\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"2a14cd85-06f0-4d6d-862f-34002c545ccb"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/photos"},{"key":"x-envoy-upstream-service-time","value":"11"},{"key":"Content-Length","value":"322"},{"key":"Date","value":"Mon, 03 Feb 2025 21:50:24 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2025-02-03T21:50:24.889+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/7337/restaurants/1038007/guests/61dd968860ae9a0001c3da34/photos\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Missing authorization token for request\",\n    \"requestId\": \"1a0630a4\"\n}"}],"_postman_id":"e8d71f96-c1a8-483e-8e2a-e357ba078bb1"},{"name":"CRM V3 Delete Photo","id":"8b5baae7-a118-4a81-b231-439b695fd5aa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos","description":"<h1 id=\"guest-photo-delete-api-documentation\">Guest Photo Delete API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The deletion of the Guest photos works in asynchronous fashion, meaning that the deletion request is acknowledged but the actual deletion will happen in the background.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\"><strong>URL</strong></h3>\n<p><strong>DELETE</strong>: <code>{base-url}/api/v3/external/partners/{partner_id}/restaurants/{restaurant_id}/guests/{guest_id}/photos</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the photo is being managed.</td>\n</tr>\n<tr>\n<td><code>guestId</code></td>\n<td>string</td>\n<td>The unique identifier of the guest whose photo is being updated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body for the DELETE call is empty.</p>\n<h3 id=\"response-format\">Response Format</h3>\n<p>The response body returned will be empty for a successful photo deletion request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>202</code></td>\n<td>Accepted</td>\n<td>Photo deletion request acknowledged</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The partner photo for the guest doesn’t exist</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","photos"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"70226e1f-b36e-41fc-a985-8b1a38062336","name":"202","originalRequest":{"method":"DELETE","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos"},"status":"Accepted","code":202,"_postman_previewlanguage":"plain","header":[{"key":"OT-RequestId","value":"c1a2906f-eb36-47e5-9e2b-d5eb1a5688a7"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"x-envoy-upstream-service-time","value":"346"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/photos"},{"key":"Content-Type","value":"text/plain;charset=utf-8"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Fri, 31 Jan 2025 17:08:49 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null},{"id":"54213e36-65b7-4ab4-b94f-00a07908c6b6","name":"401","originalRequest":{"method":"DELETE","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"OT-RequestId","value":"3985cf7c-a09b-4980-82d1-d23e8a6dda77"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/photos"},{"key":"x-envoy-upstream-service-time","value":"5"},{"key":"Content-Length","value":"322"},{"key":"Date","value":"Mon, 03 Feb 2025 21:51:34 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2025-02-03T21:51:34.664+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/7337/restaurants/1038007/guests/61dd968860ae9a0001c3da34/photos\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Missing authorization token for request\",\n    \"requestId\": \"5f2e004d\"\n}"}],"_postman_id":"8b5baae7-a118-4a81-b231-439b695fd5aa"},{"name":"CRM V3 Photo Status API","id":"fda0faed-52e5-48ae-86f1-e267322cdbf9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{pp_oauth}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos","description":"<h2 id=\"overview\">Overview</h2>\n<p>The photo status API allows for the partner to monitor and check the status of a uploaded or deleted photo. This ApI will also return the timestamp of the latest status of the photo.</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\"><strong>URL</strong></h3>\n<p>GET: <code>{base-url}/api/v3/external/partners/{partner_id}/restaurants/{restaurant_id}/guests/{guest_id}/photos</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the photo is being managed.</td>\n</tr>\n<tr>\n<td><code>guestId</code></td>\n<td>string</td>\n<td>The unique identifier of the guest whose photo is being updated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body for the GET photo status call is empty.</p>\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>The response is returned in JSON format and provides the current status of the photo submitted for upload or deletion.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td>The status of the photo. (see below for all available statuses)</td>\n</tr>\n<tr>\n<td><code>updatedAt</code></td>\n<td>string</td>\n<td>UTC timestamp of the last status update of the photo.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status-descriptions\">Status Descriptions</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Notes</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>PENDING_UPLOAD</code></td>\n<td>The photo has been queued for upload</td>\n<td></td>\n</tr>\n<tr>\n<td><code>INVALID</code></td>\n<td>The upload attempt failed because of problems with the image</td>\n<td>This can be related to problems with the image url, or the image being in the wrong format, or the image size being incorrect.</td>\n</tr>\n<tr>\n<td><code>IN_MODERATION</code></td>\n<td>The photo is in moderation, awaiting approval/rejection</td>\n<td></td>\n</tr>\n<tr>\n<td><code>REJECTED</code></td>\n<td>The photo has been rejected by the moderation team</td>\n<td></td>\n</tr>\n<tr>\n<td><code>APPROVED</code></td>\n<td>The photo is correctly uploaded, approved and ready to be displayed</td>\n<td>The photo might not be necessarily displayed in OpenTable because it’s subject to photo display rules.</td>\n</tr>\n<tr>\n<td><code>DELETED</code></td>\n<td>The photo has been deleted</td>\n<td>This can happen both whether the partner deletes it, or if OpenTable support deletes it upon restaurant request</td>\n</tr>\n<tr>\n<td><code>PENDING_DELETE</code></td>\n<td>The photo has been queued for deletion</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>200</code></td>\n<td>OK</td>\n<td>The status of the photo is returned</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Authentication failed due to an invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The guest/partner photo for the guest doesn’t exist</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","photos"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"27eaefa6-8293-4fab-ac08-6da4220d35ea","name":"200","originalRequest":{"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"95c857df-3c2f-4e3f-a99c-ad442af9de51"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"178"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/photos"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 31 Jan 2025 17:22:25 GMT"},{"key":"Content-Length","value":"84"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"APPROVED\",\n    \"updatedAt\": \"2025-01-31T17:08:49.168Z\"\n}"},{"id":"2563012c-b709-4e59-a4eb-60707fb1b026","name":"401","originalRequest":{"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"fff258ec-171c-48c7-a72d-222f8ec277bd"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/photos"},{"key":"x-envoy-upstream-service-time","value":"6"},{"key":"Content-Length","value":"322"},{"key":"Date","value":"Mon, 03 Feb 2025 21:52:34 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2025-02-03T21:52:34.929+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/7337/restaurants/1038007/guests/61dd968860ae9a0001c3da34/photos\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Missing authorization token for request\",\n    \"requestId\": \"67df21d6\"\n}"},{"id":"c1f37872-db2b-4626-9c2a-3893fee7eab0","name":"404","originalRequest":{"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/photos"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"6625252f-8966-4e31-ae78-0457e032144e"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Cache-Control","value":"must-revalidate,no-cache,no-store"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"122"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/photos"},{"key":"Content-Length","value":"203"},{"key":"Date","value":"Mon, 03 Feb 2025 22:19:29 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2025-02-03T22:19:29.071+0000\",\n    \"status\": 404,\n    \"error\": \"Not Found\",\n    \"message\": \"Guest not found\",\n    \"path\": \"/api/v3/external/partners/7337/restaurants/1038007/guests/61dd968860ae9a0001c3da3/photos\"\n}"}],"_postman_id":"fda0faed-52e5-48ae-86f1-e267322cdbf9"}],"id":"c868c53d-bfa1-4175-9119-ec2d341ccaa9","description":"<h2 id=\"description\">Description</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>This collection within the CRM API catalog allows for the upload, deletion and the status check of a guest photo to the OpenTable for Restaurants table management software. The photo will be visible within the diner's profile and in the reservation card.</p>\n<h3 id=\"how-will-this-impact-restaurants\">How will this impact restaurants?</h3>\n<p>The guest profile photo available within the Opentable for Restaurants software allows for guest recognition and an increased level of hospitality.</p>\n<img src=\"https://content.pstmn.io/0bc6a52a-68c3-4223-b896-2572d9439143/aW1hZ2UgKDMpLnBuZw==\" width=\"925\" height=\"745\" />","_postman_id":"c868c53d-bfa1-4175-9119-ec2d341ccaa9"}],"id":"4a2c8090-ef90-421f-abf4-c7331b697606","_postman_id":"4a2c8090-ef90-421f-abf4-c7331b697606","description":""},{"name":"Use Cases","item":[{"name":"CRM API - I would like to post information about my restaurant loyalty program","item":[{"name":"Guests API v2","id":"f96cb0b4-3ca9-4ce4-b6e1-42d4e32f5d33","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","description":"<h1 id=\"opentable-guest-sync-api-documentation\">OpenTable Guest Sync API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The OpenTable Guest Sync API allows users to retrieve detailed information about guest profiles associated with a restaurant.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/sync/v2/guests</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>email_optin</code></td>\n<td>boolean</td>\n<td>List searches to guests that have the email optin flag set to true or false</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Filters guests updated after the specified ISO 8601 timestamp. (UTC time)</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting point for pagination. Default is <code>0</code>.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of guests to return per request. Default is <code>1000</code>, maximum number available for return is <code>2000</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>boolean</td>\n<td>Indicates if there are additional pages of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>string</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>An array of guest objects containing detailed information about each guest.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"guest-object-attributes\">Guest Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>Unique identifier for the guest by restaurant.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>string</td>\n<td>A fully qualified URL for the guest.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this guest is associated with.</td>\n</tr>\n<tr>\n<td><code>sequence_id</code></td>\n<td>integer</td>\n<td>Sequential identifier for the guest record within OpenTable systems.</td>\n</tr>\n<tr>\n<td><code>gpid</code></td>\n<td>string</td>\n<td>Globally unique OpenTable identifier for the guest.</td>\n</tr>\n<tr>\n<td><code>first_name</code></td>\n<td>string</td>\n<td>The first name of the guest. This field may be empty for guests associated with anonymous, walk-in or in-house reservations.</td>\n</tr>\n<tr>\n<td><code>last_name</code></td>\n<td>string</td>\n<td>The last name of the guest. This field may be empty for guests associated with anonymous, walk-in or in-house reservations.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Guest's email address.</td>\n</tr>\n<tr>\n<td><code>email_optin</code></td>\n<td>boolean</td>\n<td>Indicates if the guest opted into receiving marketing emails from the restaurant. If the value is true then the email may be sent to the user on behalf of the restaurant. If the value is false then the guest should not be sent emails for marketing purposes.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Guest's primary phone number.</td>\n</tr>\n<tr>\n<td><code>phone_type</code></td>\n<td>string</td>\n<td>Type of the primary phone number (e.g., Mobile, Home, Work).</td>\n</tr>\n<tr>\n<td><code>tags</code></td>\n<td>array or null</td>\n<td>Guest tags that have been applied to the diner profile.</td>\n</tr>\n<tr>\n<td><code>birth_date</code></td>\n<td>string or null</td>\n<td>Guest's date of birth, if available.</td>\n</tr>\n<tr>\n<td><code>anniversary_date</code></td>\n<td>string or null</td>\n<td>Guest's anniversary date, if available.</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the guest profile (local time).</td>\n</tr>\n<tr>\n<td><code>forgotten</code></td>\n<td>boolean</td>\n<td>The user has requested to have their diner info forgotten. Partners are responsible for removing the diner’s information from all systems where it may be stored. This is a requirement mandated by EU for compliance with General Data Protection Regulation GDPR.</td>\n</tr>\n<tr>\n<td><code>archived</code></td>\n<td>boolean</td>\n<td>This flag indicates whether the guest is archived. If true, all attributes aside from primary_guest, id and href would be null for this archived guest.</td>\n</tr>\n<tr>\n<td><code>primary_guest</code></td>\n<td>string or null</td>\n<td>This attribute is returned when there is another guest record in the restaurant database that has merged with this record, thus there being data on the main, or primary, record. This attribute will signal the guest_id without the leading RID designation of the primary guest record. Otherwise this attribute is null.</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>string or null</td>\n<td>The address of guest. address_line1 (string), address_line2 (string), city (string), state (string), zip (string), country (string).</td>\n</tr>\n<tr>\n<td><code>mail_opted_in</code></td>\n<td>boolean</td>\n<td>Indicates if the guest opted into physical mail marketing.</td>\n</tr>\n<tr>\n<td><code>company_name</code></td>\n<td>string or null</td>\n<td>Name of the company associated with the guest.</td>\n</tr>\n<tr>\n<td><code>phone_numbers</code></td>\n<td>array</td>\n<td>List of phone numbers associated with the guest, including labels, country codes, and primary flags.</td>\n</tr>\n<tr>\n<td><code>created_date</code></td>\n<td>string</td>\n<td>Timestamp of when the guest profile was created (local time).</td>\n</tr>\n<tr>\n<td><code>updated_at_utc</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the guest profile (UTC time).</td>\n</tr>\n<tr>\n<td><code>marketing_opted_out</code></td>\n<td>boolean</td>\n<td>This flag indicates whether an OpenTable network diner has opted in or out of data sharing for purposes beyond operational needs of the restaurant. A value of ‘true’ means the diner has elected not to have their current profile and reservation history used by the restaurant or 3rd party for any additional marketing purposes. A value of ‘false’ means the diners has consented to data sharing for any use case highlighted in the OpenTable consumer privacy policy.</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td>string or null</td>\n<td>General notes about the guest.</td>\n</tr>\n<tr>\n<td><code>notes_special_relationship</code></td>\n<td>string or null</td>\n<td>Restaurant entered diner information highlighting any association to restaurant, chef or group (ex. friend of chef)</td>\n</tr>\n<tr>\n<td><code>notes_food_and_drink</code></td>\n<td>string or null</td>\n<td>Restaurant entered diner information identifying dietary considerations in service (ex. wife is gluten free)</td>\n</tr>\n<tr>\n<td><code>notes_seating</code></td>\n<td>string or null</td>\n<td>Restaurant entered seating preferences for diner (ex. table 42 when available)</td>\n</tr>\n<tr>\n<td><code>created_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the guest profile was created (UTC time).</td>\n</tr>\n<tr>\n<td><code>date_last_visit</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's most recent visit (local time).</td>\n</tr>\n<tr>\n<td><code>date_first_visit</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's first visit (local time).</td>\n</tr>\n<tr>\n<td><code>date_last_visit_utc</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's most recent visit (UTC time).</td>\n</tr>\n<tr>\n<td><code>date_first_visit_utc</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's first visit (UTC time).</td>\n</tr>\n<tr>\n<td><code>is_hidden</code></td>\n<td>boolean</td>\n<td>his flag indicates if a guest has been deleted (hidden from the standard guestbook). If true, the guest’s profile has been deleted/hidden from the restaurant’s guestbook.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response-for-guests\">Error Response for Guests</h2>\n<h3 id=\"error-messaging\">Error Messaging</h3>\n<p>The error response DTO returned by the Sync API collections are in the below format. When reporting issues, always provide the OT-RequestId (located in the response header) to allow OpenTable to uniquely identify a specific request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>PARAMETER</th>\n<th>DESCRIPTION</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>timestamp</strong>  <br /><code>integer</code></td>\n<td>The unix time stamp of the error.</td>\n</tr>\n<tr>\n<td><strong>path</strong>  <br /><code>string</code></td>\n<td>The end path of the API you are calling.</td>\n</tr>\n<tr>\n<td><strong>status</strong>  <br /><code>integer</code></td>\n<td>The numerical 3 digit code associated to the error. E.g., 400, 404, 409.</td>\n</tr>\n<tr>\n<td><strong>error</strong>  <br /><code>string</code></td>\n<td>The descriptive phrase associated to the error. E.g., Bad Request, Unauthorized, Not Found.</td>\n</tr>\n<tr>\n<td><strong>message</strong>  <br /><code>string</code></td>\n<td>A short user-readable description of the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","guests"],"host":["{{base-url}}"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}],"variable":[]}},"response":[{"id":"303a4d20-b891-4f13-807f-a32503c21283","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","disabled":true},{"key":"Authorization","value":"bearer [Access Token]","disabled":true},{"key":"Cache-Control","value":"no-cache","disabled":true}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"a05ce3ed-0058-403b-b7fc-cc3b2a3a4311"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"217"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:38:28 GMT"},{"key":"Content-Length","value":"395"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"hasNextPage\": false,\n    \"nextPageUrl\": null,\n    \"offset\": 0,\n    \"limit\": 1000,\n    \"items\": [\n        {\n            \"id\": \"1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"href\": \"https://platform.otqa.com/sync/v2/guests/1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"rid\": 1234567,\n            \"sequence_id\": 1,\n            \"gpid\": null,\n            \"first_name\": \"John\",\n            \"last_name\": \"Doe\",\n            \"email\": \"john.doe@email.com\",\n            \"email_optin\": true,\n            \"phone\": \"2125555555\",\n            \"phone_type\": \"Mobile\",\n            \"tags\": null,\n            \"birth_date\": null,\n            \"anniversary_date\": null,\n            \"updated_at\": \"2024-12-20T08:09:19\",\n            \"forgotten\": false,\n            \"archived\": false,\n            \"primary_guest\": null,\n            \"address\": null,\n            \"mail_opted_in\": false,\n            \"company_name\": null,\n            \"phone_numbers\": [\n                {\n                    \"label\": \"Mobile\",\n                    \"number\": \"2125555555\",\n                    \"country_code\": \"1\",\n                    \"primary\": true\n                }\n            ],\n            \"created_date\": \"2024-12-20T08:09:19\",\n            \"updated_at_utc\": \"2024-12-20T16:09:19Z\",\n            \"marketing_opted_out\": false,\n            \"notes\": null,\n            \"notes_special_relationship\": null,\n            \"notes_food_and_drink\": null,\n            \"notes_seating\": null,\n            \"created_date_utc\": \"2024-12-20T16:09:19Z\",\n            \"date_last_visit\": \"2024-12-20T05:00:00\",\n            \"date_first_visit\": \"2024-12-20T05:00:00\",\n            \"date_last_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"date_first_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"is_hidden\": false\n        }\n    ]\n}"},{"id":"df4fd08a-e223-4713-85ba-4da4274340c7","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"bbf348f6-37e0-45ed-9f83-b2cc6fd35877"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"97913951-9eea-4707-96a2-b96e17b6fe68"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"128"},{"key":"Date","value":"Tue, 15 Oct 2024 04:49:44 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T04:49:44.787+0000\",\n    \"path\": \"/sync/v2/guests\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"3b6f9d3f\"\n}"}],"_postman_id":"f96cb0b4-3ca9-4ce4-b6e1-42d4e32f5d33"},{"name":"CRM V3 Loyalties","id":"3e8adb68-62ca-4d1f-9123-f221322bf316","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"loyalties\": [\r\n    {\r\n      \"accountId\": \"Diner Loyalty Program ID\",\r\n      \"programName\": \"OpenTable Loyalty\",\r\n      \"loyaltyTier\": \"Diamond\",\r\n      \"pointsBalance\": \"2100\",\r\n      \"flexFields\": [\r\n        {\r\n          \"label\": \"Favorite Meal\",\r\n          \"value\": \"Jalapeno & Tomato Pizza\"\r\n        },\r\n        {\r\n          \"label\": \"Benefits\",\r\n          \"value\": \"VIP\"\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/loyalties","description":"<h1 id=\"crm-v3---loyalty-api-documentation\">CRM v3 - Loyalty API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The Loyalty API enables external partners to manage guest loyalty information within the OpenTable ecosystem. This API allows for adding, managing guest loyalty program data to enhance guest experiences and personalize services.</p>\n<hr />\n<p>Endpoints: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests/{guestId}/loyalties</code></p>\n<h4 id=\"purpose\">Purpose</h4>\n<p>Retrieve the loyalty details for a specific guest in a restaurant.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>loyalties</code></td>\n<td>array</td>\n<td>Array of loyalty programs associated with the guest.</td>\n</tr>\n<tr>\n<td><code>accountId</code></td>\n<td>string</td>\n<td>Unique identifier for the loyalty account.</td>\n</tr>\n<tr>\n<td><code>programName</code></td>\n<td>string</td>\n<td>Name of the loyalty program.</td>\n</tr>\n<tr>\n<td><code>loyaltyTier</code></td>\n<td>string</td>\n<td>Loyalty tier of the guest (e.g., <code>Diamond</code>, <code>Gem</code>).</td>\n</tr>\n<tr>\n<td><code>pointsBalance</code></td>\n<td>string</td>\n<td>Current points balance of the guest in the program.</td>\n</tr>\n<tr>\n<td><code>flexFields</code></td>\n<td>array</td>\n<td>Array of custom fields associated with the loyalty program.</td>\n</tr>\n<tr>\n<td><code>flexFields.label</code></td>\n<td>string</td>\n<td>Label of the custom field (e.g., <code>Favorite Meal</code>).</td>\n</tr>\n<tr>\n<td><code>flexFields.value</code></td>\n<td>string</td>\n<td>Value of the custom field (e.g., <code>Jalapeno &amp; Tomato Pizza</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"managing-loyalty-data\">Managing Loyalty Data</h2>\n<h3 id=\"post-add-or-append-loyalty-data\">POST: Add or Append Loyalty Data</h3>\n<p><strong>URL</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests/{guestId}/loyalties</code></p>\n<h4 id=\"purpose-1\">Purpose</h4>\n<p>Add new loyalty data or append additional loyalty programs to an existing resource.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>loyalties</code></td>\n<td>array</td>\n<td>Array of loyalty programs to be added.</td>\n</tr>\n<tr>\n<td><code>accountId</code></td>\n<td>string</td>\n<td>Unique identifier for the loyalty account.</td>\n</tr>\n<tr>\n<td><code>programName</code></td>\n<td>string</td>\n<td>Name of the loyalty program.</td>\n</tr>\n<tr>\n<td><code>loyaltyTier</code></td>\n<td>string</td>\n<td>Loyalty tier of the guest (e.g., <code>Diamond</code>, <code>Gem</code>).</td>\n</tr>\n<tr>\n<td><code>pointsBalance</code></td>\n<td>string</td>\n<td>Current points balance of the guest in the program.</td>\n</tr>\n<tr>\n<td><code>flexFields</code></td>\n<td>array</td>\n<td>Array of custom fields associated with the loyalty program.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"put-update-loyalty-data\">PUT: Update Loyalty Data</h3>\n<p><code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests/{guestId}/loyalties</code></p>\n<h4 id=\"purpose-2\">Purpose</h4>\n<p>Update an existing loyalty resource by replacing the entire object. Use this method for deletions as well by omitting fields you wish to remove.</p>\n<h4 id=\"request-body-1\">Request Body</h4>\n<p>The structure is identical to the POST method.</p>\n<hr />\n<h2 id=\"deleting-data\">Deleting Data</h2>\n<p>To delete specific loyalty data, use the PUT method with an updated object that excludes the items you wish to delete. Partial deletions are not supported; you must submit the complete object.</p>\n<hr />\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","loyalties"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"8c989adc-cd94-4a22-880c-4bf46d6e4f0a","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"loyalties\": [\r\n    {\r\n      \"accountId\": \"Diner Loyalty Program ID\",\r\n      \"programName\": \"OpenTable Loyalty\",\r\n      \"loyaltyTier\": \"Diamond\",\r\n      \"pointsBalance\": \"2100\",\r\n      \"flexFields\": [\r\n        {\r\n          \"label\": \"Favorite Meal\",\r\n          \"value\": \"Jalapeno & Tomato Pizza\"\r\n        },\r\n        {\r\n          \"label\": \"Benefits\",\r\n          \"value\": \"VIP\"\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/loyalties"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"c3567e90-9c6f-4d6c-a878-0ff4ded80ce7"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"419"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/loyalties"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 20 Dec 2024 18:59:29 GMT"},{"key":"Content-Length","value":"201"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"loyalties\": [\n        {\n            \"programName\": \"OpenTable Loyalty\",\n            \"loyaltyTier\": \"Diamond\",\n            \"pointsBalance\": \"2100\",\n            \"accountId\": \"Diner Loyalty Program ID\",\n            \"flexFields\": [\n                {\n                    \"label\": \"Favorite Meal\",\n                    \"value\": \"Jalapeno & Tomato Pizza\"\n                },\n                {\n                    \"label\": \"Benefits\",\n                    \"value\": \"VIP\"\n                }\n            ]\n        }\n    ]\n}"},{"id":"9e5bd0f8-ba2a-49b9-83d2-70ef4fcfcdf4","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"loyalties\": [\r\n    {\r\n      \"accountId\": \"Test ID-3b97d36d-e93c-41e3-8442-12c0cb632b99\",\r\n      \"programName\": \"OpenTable Loyalty\",\r\n      \"loyaltyTier\": \"Gem\",\r\n      \"pointsBalance\": \"2100\",\r\n      \"flexFields\": [\r\n        {\r\n          \"label\": \"Favorite Meal\",\r\n          \"value\": \"Jalapeno & Tomato Pizza\"\r\n        },\r\n        {\r\n          \"label\": \"Benefits\",\r\n          \"value\": \"VIP\"\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/loyalties"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"74ac7097-e37c-4ff2-9b32-bbe9abb082a6"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/loyalties"},{"key":"x-envoy-upstream-service-time","value":"24"},{"key":"Content-Length","value":"311"},{"key":"Date","value":"Tue, 29 Oct 2024 06:28:27 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-29T06:28:27.098+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/5850/restaurants/188878/guests/96c1ca88-a5f5-4949-9474-8a9922925a4b/loyalties\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"7aeca0ca\"\n}"}],"_postman_id":"3e8adb68-62ca-4d1f-9123-f221322bf316"}],"id":"45d78dc8-d266-4f2f-a04f-5f2713187389","description":"<p><strong>As a restaurateur, I want to enhance the guest experience by integrating loyalty program details from my CRM system into OpenTable. By surfacing this information in the Diner Details view within OpenTable for Restaurants, staff can easily identify and better serve returning or high-value guests.</strong></p>\n<p><strong>APIs to use:</strong></p>\n<ul>\n<li><p><strong>Sync API – Guests</strong></p>\n</li>\n<li><p><strong>CRM API – Loyalties</strong></p>\n</li>\n</ul>\n<p><strong>Step 1:</strong></p>\n<p>Retrieve guest data by using the <strong>Sync API</strong> to pull guest information from OpenTable.</p>\n<p><strong>Step 2:</strong></p>\n<p>Store relevant guest attributes in your system for ongoing use and matching. Recommended fields from the guest payload:</p>\n<ol>\n<li><p><code>id</code></p>\n</li>\n<li><p><code>first_name</code></p>\n</li>\n<li><p><code>last_name</code></p>\n</li>\n<li><p><code>email</code></p>\n</li>\n<li><p><code>phone</code></p>\n</li>\n<li><p><code>updated_at</code></p>\n</li>\n</ol>\n<p><strong>Step 3:</strong></p>\n<p>Match with loyalty records by cross-referencing the retrieved OpenTable guest data with your existing loyalty program records.</p>\n<p><strong>Step 4:</strong></p>\n<p>Use the CRM Loyalties endpoint to submit loyalty program details using the guest’s <code>guest_id</code> and associated <code>RID</code> (restaurant ID). This will update the guest’s profile with loyalty information, making it available to restaurant staff in-platform.</p>\n","_postman_id":"45d78dc8-d266-4f2f-a04f-5f2713187389"},{"name":"CRM API - I would my hotel restaurant to have additional insights for hotel guests","item":[{"name":"Guests API v2","id":"c7ebabfd-d58b-4033-ac7d-702c1cdfebf3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","description":"<h1 id=\"opentable-guest-sync-api-documentation\">OpenTable Guest Sync API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The OpenTable Guest Sync API allows users to retrieve detailed information about guest profiles associated with a restaurant.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/sync/v2/guests</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>email_optin</code></td>\n<td>boolean</td>\n<td>List searches to guests that have the email optin flag set to true or false</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Filters guests updated after the specified ISO 8601 timestamp. (UTC time)</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting point for pagination. Default is <code>0</code>.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of guests to return per request. Default is <code>1000</code>, maximum number available for return is <code>2000</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>boolean</td>\n<td>Indicates if there are additional pages of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>string</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>An array of guest objects containing detailed information about each guest.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"guest-object-attributes\">Guest Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>Unique identifier for the guest by restaurant.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>string</td>\n<td>A fully qualified URL for the guest.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this guest is associated with.</td>\n</tr>\n<tr>\n<td><code>sequence_id</code></td>\n<td>integer</td>\n<td>Sequential identifier for the guest record within OpenTable systems.</td>\n</tr>\n<tr>\n<td><code>gpid</code></td>\n<td>string</td>\n<td>Globally unique OpenTable identifier for the guest.</td>\n</tr>\n<tr>\n<td><code>first_name</code></td>\n<td>string</td>\n<td>The first name of the guest. This field may be empty for guests associated with anonymous, walk-in or in-house reservations.</td>\n</tr>\n<tr>\n<td><code>last_name</code></td>\n<td>string</td>\n<td>The last name of the guest. This field may be empty for guests associated with anonymous, walk-in or in-house reservations.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Guest's email address.</td>\n</tr>\n<tr>\n<td><code>email_optin</code></td>\n<td>boolean</td>\n<td>Indicates if the guest opted into receiving marketing emails from the restaurant. If the value is true then the email may be sent to the user on behalf of the restaurant. If the value is false then the guest should not be sent emails for marketing purposes.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Guest's primary phone number.</td>\n</tr>\n<tr>\n<td><code>phone_type</code></td>\n<td>string</td>\n<td>Type of the primary phone number (e.g., Mobile, Home, Work).</td>\n</tr>\n<tr>\n<td><code>tags</code></td>\n<td>array or null</td>\n<td>Guest tags that have been applied to the diner profile.</td>\n</tr>\n<tr>\n<td><code>birth_date</code></td>\n<td>string or null</td>\n<td>Guest's date of birth, if available.</td>\n</tr>\n<tr>\n<td><code>anniversary_date</code></td>\n<td>string or null</td>\n<td>Guest's anniversary date, if available.</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the guest profile (local time).</td>\n</tr>\n<tr>\n<td><code>forgotten</code></td>\n<td>boolean</td>\n<td>The user has requested to have their diner info forgotten. Partners are responsible for removing the diner’s information from all systems where it may be stored. This is a requirement mandated by EU for compliance with General Data Protection Regulation GDPR.</td>\n</tr>\n<tr>\n<td><code>archived</code></td>\n<td>boolean</td>\n<td>This flag indicates whether the guest is archived. If true, all attributes aside from primary_guest, id and href would be null for this archived guest.</td>\n</tr>\n<tr>\n<td><code>primary_guest</code></td>\n<td>string or null</td>\n<td>This attribute is returned when there is another guest record in the restaurant database that has merged with this record, thus there being data on the main, or primary, record. This attribute will signal the guest_id without the leading RID designation of the primary guest record. Otherwise this attribute is null.</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>string or null</td>\n<td>The address of guest. address_line1 (string), address_line2 (string), city (string), state (string), zip (string), country (string).</td>\n</tr>\n<tr>\n<td><code>mail_opted_in</code></td>\n<td>boolean</td>\n<td>Indicates if the guest opted into physical mail marketing.</td>\n</tr>\n<tr>\n<td><code>company_name</code></td>\n<td>string or null</td>\n<td>Name of the company associated with the guest.</td>\n</tr>\n<tr>\n<td><code>phone_numbers</code></td>\n<td>array</td>\n<td>List of phone numbers associated with the guest, including labels, country codes, and primary flags.</td>\n</tr>\n<tr>\n<td><code>created_date</code></td>\n<td>string</td>\n<td>Timestamp of when the guest profile was created (local time).</td>\n</tr>\n<tr>\n<td><code>updated_at_utc</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the guest profile (UTC time).</td>\n</tr>\n<tr>\n<td><code>marketing_opted_out</code></td>\n<td>boolean</td>\n<td>This flag indicates whether an OpenTable network diner has opted in or out of data sharing for purposes beyond operational needs of the restaurant. A value of ‘true’ means the diner has elected not to have their current profile and reservation history used by the restaurant or 3rd party for any additional marketing purposes. A value of ‘false’ means the diners has consented to data sharing for any use case highlighted in the OpenTable consumer privacy policy.</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td>string or null</td>\n<td>General notes about the guest.</td>\n</tr>\n<tr>\n<td><code>notes_special_relationship</code></td>\n<td>string or null</td>\n<td>Restaurant entered diner information highlighting any association to restaurant, chef or group (ex. friend of chef)</td>\n</tr>\n<tr>\n<td><code>notes_food_and_drink</code></td>\n<td>string or null</td>\n<td>Restaurant entered diner information identifying dietary considerations in service (ex. wife is gluten free)</td>\n</tr>\n<tr>\n<td><code>notes_seating</code></td>\n<td>string or null</td>\n<td>Restaurant entered seating preferences for diner (ex. table 42 when available)</td>\n</tr>\n<tr>\n<td><code>created_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the guest profile was created (UTC time).</td>\n</tr>\n<tr>\n<td><code>date_last_visit</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's most recent visit (local time).</td>\n</tr>\n<tr>\n<td><code>date_first_visit</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's first visit (local time).</td>\n</tr>\n<tr>\n<td><code>date_last_visit_utc</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's most recent visit (UTC time).</td>\n</tr>\n<tr>\n<td><code>date_first_visit_utc</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's first visit (UTC time).</td>\n</tr>\n<tr>\n<td><code>is_hidden</code></td>\n<td>boolean</td>\n<td>his flag indicates if a guest has been deleted (hidden from the standard guestbook). If true, the guest’s profile has been deleted/hidden from the restaurant’s guestbook.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response-for-guests\">Error Response for Guests</h2>\n<h3 id=\"error-messaging\">Error Messaging</h3>\n<p>The error response DTO returned by the Sync API collections are in the below format. When reporting issues, always provide the OT-RequestId (located in the response header) to allow OpenTable to uniquely identify a specific request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>PARAMETER</th>\n<th>DESCRIPTION</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>timestamp</strong>  <br /><code>integer</code></td>\n<td>The unix time stamp of the error.</td>\n</tr>\n<tr>\n<td><strong>path</strong>  <br /><code>string</code></td>\n<td>The end path of the API you are calling.</td>\n</tr>\n<tr>\n<td><strong>status</strong>  <br /><code>integer</code></td>\n<td>The numerical 3 digit code associated to the error. E.g., 400, 404, 409.</td>\n</tr>\n<tr>\n<td><strong>error</strong>  <br /><code>string</code></td>\n<td>The descriptive phrase associated to the error. E.g., Bad Request, Unauthorized, Not Found.</td>\n</tr>\n<tr>\n<td><strong>message</strong>  <br /><code>string</code></td>\n<td>A short user-readable description of the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","guests"],"host":["{{base-url}}"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}],"variable":[]}},"response":[{"id":"15072537-a6bb-4b87-b765-361bb26871c7","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","disabled":true},{"key":"Authorization","value":"bearer [Access Token]","disabled":true},{"key":"Cache-Control","value":"no-cache","disabled":true}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"a05ce3ed-0058-403b-b7fc-cc3b2a3a4311"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"217"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:38:28 GMT"},{"key":"Content-Length","value":"395"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"hasNextPage\": false,\n    \"nextPageUrl\": null,\n    \"offset\": 0,\n    \"limit\": 1000,\n    \"items\": [\n        {\n            \"id\": \"1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"href\": \"https://platform.otqa.com/sync/v2/guests/1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"rid\": 1234567,\n            \"sequence_id\": 1,\n            \"gpid\": null,\n            \"first_name\": \"John\",\n            \"last_name\": \"Doe\",\n            \"email\": \"john.doe@email.com\",\n            \"email_optin\": true,\n            \"phone\": \"2125555555\",\n            \"phone_type\": \"Mobile\",\n            \"tags\": null,\n            \"birth_date\": null,\n            \"anniversary_date\": null,\n            \"updated_at\": \"2024-12-20T08:09:19\",\n            \"forgotten\": false,\n            \"archived\": false,\n            \"primary_guest\": null,\n            \"address\": null,\n            \"mail_opted_in\": false,\n            \"company_name\": null,\n            \"phone_numbers\": [\n                {\n                    \"label\": \"Mobile\",\n                    \"number\": \"2125555555\",\n                    \"country_code\": \"1\",\n                    \"primary\": true\n                }\n            ],\n            \"created_date\": \"2024-12-20T08:09:19\",\n            \"updated_at_utc\": \"2024-12-20T16:09:19Z\",\n            \"marketing_opted_out\": false,\n            \"notes\": null,\n            \"notes_special_relationship\": null,\n            \"notes_food_and_drink\": null,\n            \"notes_seating\": null,\n            \"created_date_utc\": \"2024-12-20T16:09:19Z\",\n            \"date_last_visit\": \"2024-12-20T05:00:00\",\n            \"date_first_visit\": \"2024-12-20T05:00:00\",\n            \"date_last_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"date_first_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"is_hidden\": false\n        }\n    ]\n}"},{"id":"4824a5a7-e26d-466c-ab2c-193ddfa7aa3c","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"bbf348f6-37e0-45ed-9f83-b2cc6fd35877"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"97913951-9eea-4707-96a2-b96e17b6fe68"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"128"},{"key":"Date","value":"Tue, 15 Oct 2024 04:49:44 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T04:49:44.787+0000\",\n    \"path\": \"/sync/v2/guests\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"3b6f9d3f\"\n}"}],"_postman_id":"c7ebabfd-d58b-4033-ac7d-702c1cdfebf3"},{"name":"CRM V3 Properties","id":"196a6ae8-3098-4265-8013-ff72c439d21c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"properties\":[\r\n      {\r\n         \"reservationID\":\"e8f72c21-442b-45e1-871a-af54304102e9\",\r\n         \"propertyName\":\"OpenTable Grand Hotel\",\r\n         \"resStatusCode\":\"RESERVED\",\r\n         \"resArriveDate\":\"2024-06-16T16:00:00.000\",\r\n         \"resDepartDate\":\"2024-06-20T11:00:00.000\",\r\n         \"roomNumber\":\"1121\",\r\n         \"rateCode\":\"9561797\",\r\n         \"flexFields\":[\r\n            {\r\n               \"label\":\"Promotions\",\r\n               \"value\":\"Free breakfast\"\r\n            },\r\n            {\r\n               \"label\":\"Activities booked\",\r\n               \"value\":\"Wine sampling\"\r\n            }\r\n         ]\r\n      }\r\n   ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/properties","description":"<h2 id=\"endpoints\">Endpoints</h2>\n<h3 id=\"put-update-or-add-guest-properties\">PUT: Update or Add Guest Properties</h3>\n<p><strong>URL</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests/{guestId}/properties</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the guest is managed.</td>\n</tr>\n<tr>\n<td><code>guestId</code></td>\n<td>string</td>\n<td>The unique identifier of the guest whose properties are being updated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be in JSON format and contain the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>properties</code></td>\n<td>array</td>\n<td>An array of property details to be associated with the guest.</td>\n</tr>\n<tr>\n<td><code>reservationID</code></td>\n<td>string</td>\n<td>Unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>propertyName</code></td>\n<td>string</td>\n<td>Name of the property associated with the guest.</td>\n</tr>\n<tr>\n<td><code>resStatusCode</code></td>\n<td>string</td>\n<td>Status code of the reservation (e.g., <code>RESERVED</code>, <code>CANCELLED</code>).</td>\n</tr>\n<tr>\n<td><code>resArriveDate</code></td>\n<td>string</td>\n<td>Arrival date and time in ISO 8601 format (e.g., <code>2024-06-16T16:00:00.000</code>).</td>\n</tr>\n<tr>\n<td><code>resDepartDate</code></td>\n<td>string</td>\n<td>Departure date and time in ISO 8601 format (e.g., <code>2024-06-20T11:00:00.000</code>).</td>\n</tr>\n<tr>\n<td><code>roomNumber</code></td>\n<td>string</td>\n<td>Room number assigned to the guest.</td>\n</tr>\n<tr>\n<td><code>rateCode</code></td>\n<td>string</td>\n<td>Rate code associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>flexFields</code></td>\n<td>array</td>\n<td>Array of custom fields with additional details about the reservation.</td>\n</tr>\n<tr>\n<td><code>flexFields.label</code></td>\n<td>string</td>\n<td>Label of the custom field (e.g., <code>Promotions</code>).</td>\n</tr>\n<tr>\n<td><code>flexFields.value</code></td>\n<td>string</td>\n<td>Value of the custom field (e.g., <code>Free breakfast</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>A successful request returns a <code>200 OK</code> status code along with the updated properties in the response body.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>properties</code></td>\n<td>array</td>\n<td>Array of property details associated with the guest.</td>\n</tr>\n<tr>\n<td><code>reservationID</code></td>\n<td>string</td>\n<td>Unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>propertyName</code></td>\n<td>string</td>\n<td>Name of the property associated with the guest.</td>\n</tr>\n<tr>\n<td><code>resStatusCode</code></td>\n<td>string</td>\n<td>Status code of the reservation (e.g., <code>RESERVED</code>, <code>CANCELLED</code>).</td>\n</tr>\n<tr>\n<td><code>resArriveDate</code></td>\n<td>string</td>\n<td>Arrival date and time in ISO 8601 format.</td>\n</tr>\n<tr>\n<td><code>resDepartDate</code></td>\n<td>string</td>\n<td>Departure date and time in ISO 8601 format.</td>\n</tr>\n<tr>\n<td><code>roomNumber</code></td>\n<td>string</td>\n<td>Room number assigned to the guest.</td>\n</tr>\n<tr>\n<td><code>rateCode</code></td>\n<td>string</td>\n<td>Rate code associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>flexFields</code></td>\n<td>array</td>\n<td>Array of custom fields with additional details about the reservation.</td>\n</tr>\n<tr>\n<td><code>flexFields.label</code></td>\n<td>string</td>\n<td>Label of the custom field.</td>\n</tr>\n<tr>\n<td><code>flexFields.value</code></td>\n<td>string</td>\n<td>Value of the custom field.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><code>{partnerId}</code>, <code>{rid}</code>, and <code>{guestId}</code> are dynamic path parameters.</p>\n<ul>\n<li><p><code>partnerId</code>: Assigned by OpenTable during onboarding.</p>\n</li>\n<li><p><code>rid</code>: Unique identifier for the restaurant, available via OpenTable.</p>\n</li>\n<li><p><code>guestId</code>: Found in the Sync API guest payload; remove the preceding RID from the guest ID.</p>\n</li>\n</ul>\n</li>\n<li><p>To delete specific property data, submit the full object excluding the items to be removed (partial deletions are not supported).</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","properties"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"277e8f10-710f-4d01-91db-df9410f115a8","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"properties\":[\r\n      {\r\n         \"reservationID\":\"e8f72c21-442b-45e1-871a-af54304102e9\",\r\n         \"propertyName\":\"OpenTable Grand Hotel\",\r\n         \"resStatusCode\":\"RESERVED\",\r\n         \"resArriveDate\":\"2024-06-16T16:00:00.000\",\r\n         \"resDepartDate\":\"2024-06-20T11:00:00.000\",\r\n         \"roomNumber\":\"1121\",\r\n         \"rateCode\":\"9561797\",\r\n         \"flexFields\":[\r\n            {\r\n               \"label\":\"Promotions\",\r\n               \"value\":\"Free breakfast\"\r\n            },\r\n            {\r\n               \"label\":\"Activities booked\",\r\n               \"value\":\"Wine sampling\"\r\n            }\r\n         ]\r\n      }\r\n   ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/guests/{{guest-id}}/properties"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"ec5ecd14-7a32-4e19-878a-df4276aa3dd9"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"144"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/properties"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:02:21 GMT"},{"key":"Content-Length","value":"281"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"properties\": [\n        {\n            \"propertyName\": \"OpenTable Grand Hotel\",\n            \"resStatusCode\": \"RESERVED\",\n            \"reservationId\": \"e8f72c21-442b-45e1-871a-af54304102e9\",\n            \"resArriveDate\": \"2024-06-16T16:00:00\",\n            \"resDepartDate\": \"2024-06-20T11:00:00\",\n            \"roomNumber\": \"1121\",\n            \"rateCode\": \"9561797\",\n            \"flexFields\": [\n                {\n                    \"label\": \"Promotions\",\n                    \"value\": \"Free breakfast\"\n                },\n                {\n                    \"label\": \"Activities booked\",\n                    \"value\": \"Wine sampling\"\n                }\n            ]\n        }\n    ]\n}"},{"id":"f8015b7b-713e-41f6-b5de-10953113162f","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n   \"properties\":[\r\n      {\r\n         \"reservationID\":\"e8f72c21-442b-45e1-871a-af54304102e9\",\r\n         \"propertyName\":\"OpenTable Grand Hotel\",\r\n         \"resStatusCode\":\"RESERVED\",\r\n         \"resArriveDate\":\"2024-06-16T16:00:00.000\",\r\n         \"resDepartDate\":\"2024-06-20T11:00:00.000\",\r\n         \"roomNumber\":\"1121\",\r\n         \"rateCode\":\"9561797\",\r\n         \"flexFields\":[\r\n            {\r\n               \"label\":\"Promotions\",\r\n               \"value\":\"Free breakfast\"\r\n            },\r\n            {\r\n               \"label\":\"Activities booked\",\r\n               \"value\":\"Wine sampling\"\r\n            }\r\n         ]\r\n      }\r\n   ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/properties"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"e369ce4a-60ea-41a9-be39-22aad180247c"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/properties"},{"key":"x-envoy-upstream-service-time","value":"16"},{"key":"Content-Length","value":"312"},{"key":"Date","value":"Tue, 29 Oct 2024 06:28:53 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-29T06:28:53.790+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/5850/restaurants/188878/guests/96c1ca88-a5f5-4949-9474-8a9922925a4b/properties\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"318d1bab\"\n}"}],"_postman_id":"196a6ae8-3098-4265-8013-ff72c439d21c"}],"id":"fa46ee10-7ea1-4eed-b916-9dd44b59608f","description":"<p><strong>As a restaurateur in a hotel, I want to enhance the guest experience by integrating loyalty program details from my Hotel CRM system into OpenTable. By surfacing this information in the Diner Details view within OpenTable for Restaurants, staff can easily identify and better serve returning or high-value guests.</strong></p>\n<p><strong>APIs to use:</strong></p>\n<ul>\n<li><p><strong>Sync API – Guests</strong></p>\n</li>\n<li><p><strong>CRM API – Properties</strong></p>\n</li>\n</ul>\n<p><strong>Step 1:</strong></p>\n<p>Retrieve guest data by using the <strong>Sync API</strong> to pull guest information from OpenTable.</p>\n<p><strong>Step 2:</strong></p>\n<p>Store relevant guest attributes in your system for ongoing use and matching. Recommended fields from the guest payload:</p>\n<ol>\n<li><p><code>id</code></p>\n</li>\n<li><p><code>first_name</code></p>\n</li>\n<li><p><code>last_name</code></p>\n</li>\n<li><p><code>email</code></p>\n</li>\n<li><p><code>phone</code></p>\n</li>\n<li><p><code>updated_at</code></p>\n</li>\n</ol>\n<p><strong>Step 3:</strong></p>\n<p>Match with loyalty records by cross-referencing the retrieved OpenTable guest data with your existing loyalty program records.</p>\n<p><strong>Step 4:</strong></p>\n<p>Use the CRM Loyalties endpoint to submit loyalty program details using the guest’s <code>guest_id</code> and associated <code>RID</code> (restaurant ID). This will update the guest’s profile with loyalty information, making it available to restaurant staff in-platform.</p>\n<img src=\"https://content.pstmn.io/631598f6-897f-4321-89d4-bbb7c57871b4/Q1JNIEZsb3cgZm9yIEhvdGVscy5wbmc=\" alt />","_postman_id":"fa46ee10-7ea1-4eed-b916-9dd44b59608f"},{"name":"CRM API - I would like to tag my special guests","item":[{"name":"Guest Creation and ID Retrieval","item":[{"name":"CRM API v3 - Guest Creation","id":"b9738aa6-27ba-4d5e-90be-609a6d10a436","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"firstName\": \"Jon\",\r\n    \"lastName\": \"Appleseed\",\r\n    \"email\": {\r\n        \"emailAddress\": \"jon@appleseed.com\",\r\n        \"isEmailMarketingOptedIn\": true\r\n    },\r\n    \"phoneNumbers\": [\r\n        {\r\n            \"countryCode\": \"1\",\r\n            \"number\": \"4150000000\",\r\n            \"isPrimary\": true\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests","description":"<h2 id=\"create-guest-api-documentation\">Create Guest API Documentation</h2>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><code>{base-url}/api/v3/external/partners/{partnerId}/restaurants/{rid}/guests</code></p>\n<h3 id=\"method\">Method</h3>\n<p><strong>POST</strong></p>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<ul>\n<li><p><strong>partnerId</strong>: A static identifier for the partner assigned by OpenTable after onboarding.</p>\n</li>\n<li><p><strong>rid (restaurant id)</strong>: A unique, static identifier for each restaurant provided by OpenTable.</p>\n</li>\n</ul>\n<h3 id=\"request-body-attributes\">Request Body Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>The first name of the guest. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>The last name of the guest. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>phoneNumbers</td>\n<td>array</td>\n<td>An array of phone numbers for the guest. <strong>Required if no email is provided</strong></td>\n</tr>\n<tr>\n<td>email</td>\n<td>object</td>\n<td>The email of the guest. <strong>Required if no phone number is provided</strong></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"phone-number-object-attributes\">Phone Number Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>countryCode</td>\n<td>string</td>\n<td>The country code for the phone number. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>number</td>\n<td>string</td>\n<td>The phone number. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>isPrimary</td>\n<td>boolean</td>\n<td>Indicates if it is the primary number. Defaults to true if not specified.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"email-object-attributes\">Email Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>emailAddress</td>\n<td>string</td>\n<td>The guest's email address. <strong>Required</strong></td>\n</tr>\n<tr>\n<td>isEmailMarketingOptedIn</td>\n<td>boolean</td>\n<td>Indicates the email marketing opt-in preference. Defaults to false.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"success-and-error-codes\">Success and Error Codes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Message</th>\n<th>Reason for Error</th>\n<th>Status Code</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>OK</td>\n<td>Request successful</td>\n<td>200</td>\n</tr>\n<tr>\n<td>Bad Request</td>\n<td>Your request is invalid</td>\n<td>400</td>\n</tr>\n<tr>\n<td>invalid_token</td>\n<td>Invalid or expired token provided</td>\n<td>401</td>\n</tr>\n<tr>\n<td>Too many requests</td>\n<td>No access available under your account</td>\n<td>429</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Either <code>phoneNumbers</code> or <code>email</code> must be provided.</p>\n</li>\n<li><p>If multiple <code>isPrimary: true</code> values are provided in the phone numbers array, only the first one will be retained.</p>\n</li>\n<li><p>Ensure your <code>partnerId</code> and <code>rid</code> values are correctly assigned by OpenTable during onboarding.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"72946ca3-c71c-42f7-90fa-bbdedf600b6e","name":"200","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"","disabled":true},{"key":"Authorization","value":"","disabled":true},{"key":"Cookie","value":"","disabled":true}],"body":{"mode":"raw","raw":"{\r\n    \"firstName\": \"Jon\",\r\n    \"lastName\": \"Appleseed\",\r\n    \"email\": {\r\n        \"emailAddress\": \"jon@appleseed.com\",\r\n        \"isEmailMarketingOptedIn\": true\r\n    },\r\n    \"phoneNumbers\": [\r\n        {\r\n            \"countryCode\": \"1\",\r\n            \"number\": \"4150000000\",\r\n            \"isPrimary\": true\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/guests"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"1975a2e7-a839-46cc-a79a-b0a3be5a951d"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"203"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:04:41 GMT"},{"key":"Content-Length","value":"64"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"guestId\": \"6696b6fc4f58cabd389b7e48\"\n}"},{"id":"a1f3dcce-610f-4f1f-a3d6-9608e6c10c34","name":"401","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"","disabled":true},{"key":"Authorization","value":"","disabled":true},{"key":"Cookie","value":"","disabled":true}],"body":{"mode":"raw","raw":"{\r\n    \"firstName\": \"Jon\",\r\n    \"lastName\": \"Appleseed\",\r\n    \"email\": {\r\n        \"emailAddress\": \"jon@appleseed.com\",\r\n        \"isEmailMarketingOptedIn\": true\r\n    },\r\n    \"phoneNumbers\": [\r\n        {\r\n            \"countryCode\": \"1\",\r\n            \"number\": \"4150000000\",\r\n            \"isPrimary\": true\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"402158f3-3d2a-4f41-b94a-4fed0492546c"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"4E85E3A4-DA9B-4468-A555-093EB4B1B4BB"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests"},{"key":"x-envoy-upstream-service-time","value":"28"},{"key":"Content-Length","value":"264"},{"key":"Date","value":"Tue, 29 Oct 2024 09:24:46 GMT"},{"key":"Connection","value":"close"},{"key":"Set-Cookie","value":"otuvid=4E85E3A4-DA9B-4468-A555-093EB4B1B4BB; Path=/; Domain=otqa.com; Secure; SameSite=None"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-29T09:24:46.480+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/5850/restaurants/188878/guests\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"56fa4e9b\"\n}"}],"_postman_id":"b9738aa6-27ba-4d5e-90be-609a6d10a436"}],"id":"12c9101a-2821-4d5b-ab64-e149f04f0a47","description":"<h2 id=\"description\">Description</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>Customer Relations Management API is a set of APIs that exposes additional guest and reservation details from other sources.</p>\n<p>The APIs will facilitate the addition of details in the diner profile and will leverage the Guest Sync API payload to accurately match and add information to specific guest profiles.</p>\n<p>This API allows for updating guest information records associated with a partner's restaurant. The data is exposed within the guest data in the restaurant’s OpenTable table management software.</p>\n<h3 id=\"how-will-this-impact-restaurants\">How will this impact restaurants?</h3>\n<p>The Guest Creation API allows partners to create guest profiles in the OpenTable for Restaurants platform outside of the reservation making process.</p>\n<h3 id=\"before-guest-creation\">Before guest creation</h3>\n<img src=\"https://content.pstmn.io/81b1a394-333f-4094-96f9-0de5d9676d89/Y3JtLWJlZm9yZS1ndWVzdC1jcmVhdGlvbi5wbmc=\" width=\"529\" height=\"271\" />\n\n<h3 id=\"after-guest-creation\">After guest creation</h3>\n<img src=\"https://content.pstmn.io/b785a8bb-2932-4458-85af-8dcf63d84f4c/Y3JtLWFmdGVyLWd1ZXN0LWNyZWF0aW9uLnBuZw==\" width=\"529\" height=\"352\" />\n\n<h2 id=\"guest-matching--creation-logic\">Guest Matching / Creation Logic</h2>\n<p>When the Guest Creation API is called the following logic will be used to match to existing restaurant guest profiles or to create a brand new profile.</p>\n<p><strong>Scenario 1: match</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, Phone A, email A</p>\n<p><strong>Scenario 2: match</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, Phone A, no email</p>\n<p><strong>Scenario 3: match</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, no phone, email A</p>\n<p><strong>Scenario 4: no match, creation of a new guest</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, Phone A, email B</p>\n<p><strong>Scenario 5: no match, creation of a new guest</strong></p>\n<p>Existing guest: FirstName, LastName, Phone A, email A</p>\n<p>PartnerGuest: FirstName, LastName, Phone B, email A</p>\n<h2 id=\"rate-limit\">Rate Limit:</h2>\n<p>The maximum allowable rate of API calls at this endpoint is set at 10 calls per second per partner. Please note that other endpoints may have different requirements or limits.</p>\n<h2 id=\"change-log\">Change Log</h2>\n<p>These changes were completed in April of 2024.</p>\n","_postman_id":"12c9101a-2821-4d5b-ab64-e149f04f0a47"},{"name":"Tag Create, Delete and Post Copy","item":[{"name":"CRM V3 - Tag Create","id":"206252a8-529a-4b10-ac3e-84eb07cd511d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"displayName\": \"Friend of manager\",\n    \"category\": \"special_guests\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags/{{tag-id}}","description":"<h1 id=\"tag-management-api-documentation\">Tag Management API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The Tag Management API enables external partners to manage guest tags within the OpenTable system. This API allows for the creation, updating, and management of custom tags that can be associated with specific guests, providing flexibility and customization for restaurants to enhance guest relationships and experiences.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\">URL</h3>\n<p><strong>PUT</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{restaurantId}/tags/{tagId}</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the tag is being managed.</td>\n</tr>\n<tr>\n<td><code>tagId</code></td>\n<td>string</td>\n<td>The unique identifier for the tag being created or updated.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be in JSON format and contain the following fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>displayName</code></td>\n<td>string</td>\n<td>The name of the tag as it will appear in the system.</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>string</td>\n<td>The category under which the tag is grouped. Pick one among the allowed values <code>special_guests</code> or <code>dietary_needs</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>The response is returned in JSON format and confirms the successful creation or update of the tag.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>The unique identifier of the tag.</td>\n</tr>\n<tr>\n<td><code>displayName</code></td>\n<td>string</td>\n<td>The name of the tag.</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>string</td>\n<td>The category under which the tag is grouped.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-codes\">Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>The request body is invalid or missing required fields.</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Authentication failed due to an invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Forbidden</td>\n<td>The client does not have permission to access the specified resource.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The specified tag, partner, or restaurant could not be found.</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Internal Server Error</td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure that the <code>partnerId</code>, <code>restaurantId</code>, and <code>tagId</code> are valid and correspond to existing records in the OpenTable system.</p>\n</li>\n<li><p>Use meaningful <code>displayName</code> and <code>category</code> values to streamline guest classification and management.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","tags","{{tag-id}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"2d463691-04de-42e3-8b71-39c26e85d400","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"displayName\": \"Friend of manager\",\n    \"category\": \"special_guests\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/tags/{{tag-id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"3b43e989-ace4-45db-bb2a-a592596963b1"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"256"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags/{partner_tag_id}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:07:01 GMT"},{"key":"Content-Length","value":"116"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"105\",\n    \"displayName\": \"Friend of manager\",\n    \"category\": \"special_guests\"\n}"},{"id":"79b9d050-7fcb-4137-8e7e-feb7c0397b98","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"displayName\": \"now_defined_api_1_max_LENGTHHHHHHH_testtttttttttt!\",\n    \"category\": \"special_guests\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags/{{tag-id}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"19760abf-7eb2-4197-99db-a1f5b0e7de82"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags/{partner_tag_id}"},{"key":"x-envoy-upstream-service-time","value":"12"},{"key":"Content-Length","value":"267"},{"key":"Date","value":"Wed, 30 Oct 2024 05:10:56 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-30T05:10:56.950+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/6166/restaurants/1038007/tags/105\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"1cfca8d5\"\n}"}],"_postman_id":"206252a8-529a-4b10-ac3e-84eb07cd511d"},{"name":"CRM V3 - Tag Retrieval","id":"92e96a77-cdf5-4222-a02b-ae589881d533","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags","description":"<h1 id=\"tag-listing-api-documentation\">Tag Listing API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The Tag Listing API allows external partners to retrieve a list of all tags associated with a specific restaurant. These tags enable restaurants to classify guests based on specific attributes, preferences, or needs, facilitating a more personalized dining experience.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\">URL</h3>\n<p><strong>GET</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{restaurantId}/tags</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant whose tags are being retrieved.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>The response is returned in JSON format and contains a list of tags associated with the specified restaurant.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>The unique identifier of the tag.</td>\n</tr>\n<tr>\n<td><code>displayName</code></td>\n<td>string</td>\n<td>The name of the tag as it appears in the system.</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>string</td>\n<td>The category under which the tag is grouped.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-codes\">Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>The request is invalid or malformed.</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Authentication failed due to an invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Forbidden</td>\n<td>The client does not have permission to access the specified resource.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The specified partner, restaurant, or tags could not be found.</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Internal Server Error</td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure that the <code>partnerId</code> and <code>restaurantId</code> are valid and correspond to existing records in the OpenTable system.</p>\n</li>\n<li><p>Tags retrieved are specific to the specified restaurant and are not shared across restaurants.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","tags"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"8cf6fee8-0928-40e3-8dfa-0e3d7ba56c90","name":"200","originalRequest":{"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/tags"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"3fdfc835-0144-48ea-bc01-2959bbadb958"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"91"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:07:42 GMT"},{"key":"Content-Length","value":"199"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"101\",\n        \"displayName\": \"Pizza Club Member\",\n        \"category\": \"special_guests\"\n    },\n    {\n        \"id\": \"102\",\n        \"displayName\": \"Celiac\",\n        \"category\": \"dietary_needs\"\n    },\n    {\n        \"id\": \"103\",\n        \"displayName\": \"Wine Locker Member\",\n        \"category\": \"special_guests\"\n    },\n    {\n        \"id\": \"104\",\n        \"displayName\": \"Lactose intolerance\",\n        \"category\": \"dietary_needs\"\n    },\n    {\n        \"id\": \"105\",\n        \"displayName\": \"Friend of manager\",\n        \"category\": \"special_guests\"\n    }\n]"},{"id":"6a1a3d8a-ebf1-4963-a2d7-a07ffa530c58","name":"401","originalRequest":{"method":"GET","header":[],"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/tags"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"4d95ef30-89ea-4e53-b749-fc15bd503b02"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/tags"},{"key":"x-envoy-upstream-service-time","value":"7"},{"key":"Content-Length","value":"263"},{"key":"Date","value":"Wed, 30 Oct 2024 05:11:07 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-30T05:11:07.921+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/6166/restaurants/1038007/tags\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"40d40fb7\"\n}"}],"_postman_id":"92e96a77-cdf5-4222-a02b-ae589881d533"},{"name":"CRM V3 - Tag Assign","id":"a32289fa-28d6-4aab-b1cb-7f107b2c70d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"tags\": [\n        \"101\",\n        \"103\",\n        \"104\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/tags","description":"<h2 id=\"endpoint\">Endpoint</h2>\n<h3 id=\"url\">URL</h3>\n<p><strong>POST</strong>: <code>{{base-url}}/api/v3/external/partners/{partnerId}/restaurants/{restaurantId}/guests/{guestId}/tags</code></p>\n<hr />\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>partnerId</code></td>\n<td>string</td>\n<td>The unique identifier for the partner making the request.</td>\n</tr>\n<tr>\n<td><code>restaurantId</code></td>\n<td>string</td>\n<td>The unique identifier for the restaurant where the guest tag is being assigned.</td>\n</tr>\n<tr>\n<td><code>guestId</code></td>\n<td>string</td>\n<td>The unique identifier of the guest to whom tags are being assigned.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request Body</h3>\n<p>The request body must be in JSON format and contain the following field:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tags</code></td>\n<td>array</td>\n<td>A list of tag IDs to assign to the guest.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-details\">Response Details</h2>\n<h3 id=\"response-format\">Response Format</h3>\n<p>A successful tag assignment returns a <code>200 OK</code> status code along with the assigned tags in the response body.</p>\n<h4 id=\"response-fields\">Response Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tags</code></td>\n<td>array</td>\n<td>A list of tag IDs that were successfully assigned to the guest.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-codes\">Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>The request is invalid or malformed.</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Authentication failed due to an invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Forbidden</td>\n<td>The client does not have permission to assign tags to the specified guest.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The specified partner, restaurant, guest, or tags could not be found.</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Internal Server Error</td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Ensure that the <code>partnerId</code>, <code>restaurantId</code>, <code>guestId</code>, and <code>tags</code> are valid and correspond to existing records in the OpenTable system.</p>\n</li>\n<li><p>Tags that do not get created via the API will not be assigned.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v3","external","partners","{{partner-id}}","restaurants","{{rid}}","guests","{{guest-id}}","tags"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"31b46d74-36d0-4f77-858b-5f6f397c8dd8","name":"200","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"tags\": [\n        \"101\",\n        \"103\",\n        \"104\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/11111/guests/{{guest-id}}/tags"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"0275c077-90ff-453e-b3a3-4690d9c90597"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"132"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/tags"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:09:40 GMT"},{"key":"Content-Length","value":"69"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"tags\": [\n        \"101\",\n        \"103\",\n        \"104\"\n    ]\n}"},{"id":"8c86a530-6d02-4f74-bfbc-9a1acb672403","name":"401","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"tags\": [\n        \"partner_tag_1\",\n        \"partner_tag_2\",\n        \"partner_tag_3\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/api/v3/external/partners/{{partner-id}}/restaurants/{{rid}}/guests/{{guest-id}}/tags"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"0275c077-90ff-453e-b3a3-4690d9c90597"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"BAABB029-248E-48E9-B8DA-E35FB5F257B7"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"132"},{"key":"x-ot-backend","value":"partnerGuestDataService"},{"key":"x-ot-uritemplate","value":"/partnerGuestDataService/api/v3/external/partners/{partner_id}/restaurants/{rid}/guests/{guest_id}/tags"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Wed, 30 Oct 2024 05:09:40 GMT"},{"key":"Content-Length","value":"69"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-30T05:11:18.156+0000\",\n    \"path\": \"/gateway/proxies/restaurantpartnerapigateway/partnerGuestDataService/api/v3/external/partners/6166/restaurants/1038007/guests/guest-id/tags\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"message\": \"Not authorized\",\n    \"requestId\": \"4c736c2c\"\n}"}],"_postman_id":"a32289fa-28d6-4aab-b1cb-7f107b2c70d0"}],"id":"524df42e-68c1-4a85-89f9-22ee242b8326","description":"<h2 id=\"description\">Description</h2>\n<h3 id=\"overview\">Overview</h3>\n<p>This endpoint within the CRM API catalog allows for creating Guest Tags and as well as the ability to assign these Guest Tags to guests. The updated guest information records associated with a specific partner's restaurant will have the data exposed within the guest data in the restaurant’s OpenTable table management software.</p>\n<h3 id=\"how-will-this-impact-restaurants\">How will this impact restaurants?</h3>\n<p>The CRM tag creation will allow for partners to create and add new tags to guest profiles without the limitation of needing a tag to exist with the restaurant’s OpenTable for Restaurants system.</p>\n<p>Tags from CRM API will appear on the guest profile and will not be editable.</p>\n<img src=\"https://content.pstmn.io/841c95df-8d63-4369-98fa-5f047bbdb980/NzU0ZTcwYzdiOGY0NjIyZTU2ODk4ODAwZGU3MjkzNTAucG5n\" />","_postman_id":"524df42e-68c1-4a85-89f9-22ee242b8326"}],"id":"e88d9b32-c57f-4196-bf6f-f84587abd082","description":"<p><strong>As a restaurateur, I want to identify and highlight VIPs or special guests from my database by adding them to OpenTable and tagging their profiles with custom labels. These tags will appear in the Diner Details view within OpenTable for Restaurants, allowing my staff to provide personalized service.</strong></p>\n<p><strong>APIs to Use:</strong></p>\n<ul>\n<li><p>CRM API – Guest Creation</p>\n</li>\n<li><p>CRM API – Tag Create</p>\n</li>\n<li><p>CRM API – Tag Assign</p>\n</li>\n</ul>\n<p><strong>Implementation Steps:</strong></p>\n<p><strong>Step 1:</strong>  </p>\n<p>Use the <strong>Guest Creation</strong> endpoint to add the guest to OpenTable. Store the <code>guest_id</code> returned in the API response for use in subsequent steps.</p>\n<p><strong>Step 2:</strong></p>\n<p>You must create or retrieve a tag. If the tag does not already exist, use the Tag Create endpoint to define a new tag <code>id</code>, including its <code>displayName</code>. For existing tags, use the <strong>Tag Retrieval</strong> endpoint to fetch the tag <code>id</code> and <code>displayName</code>.</p>\n<p><strong>Step 3:</strong></p>\n<p>Use the <strong>Tag Assign</strong> endpoint to associate the tag with the guest using the previously stored <code>guest_id</code>. This ensures the tag is visible in the OpenTable for Restaurants interface.</p>\n","_postman_id":"e88d9b32-c57f-4196-bf6f-f84587abd082"}],"id":"633291d6-ef9c-4813-9825-c45d4a3e8d46","_postman_id":"633291d6-ef9c-4813-9825-c45d4a3e8d46","description":""}],"id":"f94e7079-7c08-4888-ba86-62a250601c3b","description":"<p>OpenTable's CRM API enhances restaurant's ability to leverage guest data within the OpenTable Pro system, unlocking deeper insights and more personalized interactions. By integrating with the CRM API, restaurants can access enriched guest data that goes beyond basic reservations, enabling restaurants to better understand your diners’ preferences, habits, and history. With this information, restaurants and hospitality partners can deliver more tailored and memorable dining experiences, creating stronger guest relationships and driving customer loyalty.</p>\n<p>The CRM API allows you to seamlessly post third party insights and updates to the OpenTable Pro system. This two-way data exchange ensures your team is equipped with real-time, actionable information, helping you optimize operations and elevate guest satisfaction. Whether you’re tracking special occasions, preferences, or dining patterns, the CRM API empowers you to transform insights into impactful, guest-centered service.</p>\n<h2 id=\"crm-apis-are-subject-to-a-rate-limit\">CRM APIs are subject to a Rate Limit:</h2>\n<p>The maximum allowable rate of API calls for all CRM API endpoints is set at 10 calls per second per partner. Please note that other endpoints or APIs may have different requirements or limits.</p>\n<h2 id=\"change-log\">Change Log</h2>\n<p>The previous CRM API available was v2. We have also made some slight changes to v3 since we last provided documentation. The following changes have been made since:</p>\n<ul>\n<li><p>New Endpoint URLs</p>\n</li>\n<li><p>Enhanced security limiting partners to only certain attributes</p>\n</li>\n<li><p>Removal of the Integrations Object. That information is static and will be kept stored in the OpenTable system. For adjustments to the integration name, please work with OpenTable.</p>\n</li>\n</ul>\n<p>These changes were completed in April of 2024.</p>\n<h3 id=\"endpoints-notes\">Endpoints Notes</h3>\n<ul>\n<li><p>POST will allow you to add or append details (appends items to the resource)</p>\n</li>\n<li><p>PUT will allow you to update (overwrites the resource)</p>\n</li>\n</ul>\n","_postman_id":"f94e7079-7c08-4888-ba86-62a250601c3b"},{"name":"Directory API","item":[{"name":"APIs","item":[{"name":"Directory API","id":"b9b311ee-1284-4fa4-861f-e20ae5417b5f","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"host":true,"user-agent":true,"accept":true,"accept-encoding":true,"connection":true}},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/sync/directory?limit=10","description":"<h1 id=\"opentable-directory-api-documentation\"><strong>OpenTable Directory API Documentation</strong></h1>\n<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The Directory API gives approved developers the ability to acquire and synchronize restaurants that are visible as search results on the OpenTable website. The Directory API is only available to our Consumer Partners and is not offered to our Restaurant Partners.</p>\n<hr />\n<h2 id=\"endpoint\"><strong>Endpoint</strong></h2>\n<p><strong>URL:</strong> {{base-url}}/sync/directory</p>\n<p><strong>Method:</strong> GET</p>\n<h3 id=\"query-parameters\"><strong>Query Parameters</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>The OpenTable restaurant ID.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>The API will only return restaurants that exist in the specified country.</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>The starting point for pagination. Default is 0.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>The maximum number of guests to return per request. Default is 1000.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-attributes\"><strong>Response Attributes</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td>total_items</td>\n<td>integer</td>\n<td>Number of total records returned from the API call.</td>\n</tr>\n<tr>\n<td>items</td>\n<td>array</td>\n<td>An array of restaurant attributes containing detailed information about each restaurant.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"restaurant-object-attributes\"><strong>Restaurant Object Attributes</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this directory refers to. This field will only be present for restaurants that are members of the OpenTable network.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>The name of the restaurant.</td>\n</tr>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>The address of the restaurant.</td>\n</tr>\n<tr>\n<td>address2</td>\n<td>string</td>\n<td>The second address line of the restaurant.</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>The city in which the restaurant is located.</td>\n</tr>\n<tr>\n<td>state</td>\n<td>array</td>\n<td>The state or province in which the restaurant is located.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>The country in which the restaurant is located.</td>\n</tr>\n<tr>\n<td>latitude</td>\n<td>string</td>\n<td>The latitude of the restaurant.</td>\n</tr>\n<tr>\n<td>longitude</td>\n<td>string</td>\n<td>The longitude of the restaurant.</td>\n</tr>\n<tr>\n<td>postal_code</td>\n<td>integer</td>\n<td>The zip code or postal code for the restaurant.</td>\n</tr>\n<tr>\n<td>phone_number</td>\n<td>string</td>\n<td>The restaurant phone number.</td>\n</tr>\n<tr>\n<td>metro_name</td>\n<td>string</td>\n<td>The area of the city in which the restaurant is located.</td>\n</tr>\n<tr>\n<td>reservation_url</td>\n<td>string</td>\n<td>Restaurant ID-based reservation page URL.</td>\n</tr>\n<tr>\n<td>profile_url</td>\n<td>string</td>\n<td>Restaurant ID-based profile page URL.</td>\n</tr>\n<tr>\n<td>natural_reservation_url</td>\n<td>array</td>\n<td>Natural language-based reservation page URL.</td>\n</tr>\n<tr>\n<td>natural_profile_url</td>\n<td>string</td>\n<td>Natural language-based profile page URL.</td>\n</tr>\n<tr>\n<td>profile_photo</td>\n<td>array</td>\n<td>Array containing profile photos in different sizes.</td>\n</tr>\n<tr>\n<td>is_restaurant_in_group</td>\n<td>boolean</td>\n<td>Set to true when the restaurant is a member of the restaurant group associated with the partner.</td>\n</tr>\n<tr>\n<td>aggregate_score</td>\n<td>string</td>\n<td>Aggregate score of the restaurant.</td>\n</tr>\n<tr>\n<td>price_quartile</td>\n<td>string</td>\n<td>Qualitative pricing of the restaurant, measured in \"$\". Maximum \"$$$$\".</td>\n</tr>\n<tr>\n<td>review_count</td>\n<td>integer</td>\n<td>Number of reviews that the restaurant has.</td>\n</tr>\n<tr>\n<td>category</td>\n<td>string</td>\n<td>Food categories.</td>\n</tr>\n<tr>\n<td>hours</td>\n<td>string</td>\n<td>Operating hours of the restaurant represented as a string in HTML format.</td>\n</tr>\n<tr>\n<td>hours_raw</td>\n<td>array</td>\n<td>Operating hours of the restaurant represented as an array. Includes: \"name\" (shift name), \"shiftStarts\" (start time, HH:MM 24-hour), \"shiftEnds\" (end time, HH:MM 24-hour), and \"days\" (applicable weekdays). Each shift is detailed individually.</td>\n</tr>\n<tr>\n<td>private_dining</td>\n<td>object</td>\n<td>Details information about private dining space for the restaurant. If \"enabled_with_active_spaces\" the restaurant can accept Private Dining Leads</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"profile_photo-array\"><strong>Profile_Photo Array</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>A unique identifier for the image.</td>\n</tr>\n<tr>\n<td>sizes</td>\n<td>array</td>\n<td>Array of different sized profile photos. Values can include: small, xsmall, legacy, wide-xlarge, large, xlarge, wide-large, medium, wide-mlarge, wide-medium, huge, wide-huge, wide-small, wide-smedium.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"profile_photo-size-array\"><strong>Profile_Photo Size Array</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>url</td>\n<td>string</td>\n<td>URL link to the sized photo in JPG format.</td>\n</tr>\n<tr>\n<td>width</td>\n<td>integer</td>\n<td>Width of the photo in pixels.</td>\n</tr>\n<tr>\n<td>height</td>\n<td>integer</td>\n<td>Height of the photo in pixels.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-response-for-directory\"><strong>Error Response for Directory</strong></h3>\n<h3 id=\"error-messaging\"><strong>Error Messaging</strong></h3>\n<p>The error response details returned by the Directory API collection is in the below format. When reporting issues with the API, always provide the OT-RequestId (requestid from the error body and located in the response header) to allow OpenTable to uniquely identify a specific req<strong>uest.</strong></p>\n","urlObject":{"path":["sync","directory"],"host":["{{base-url}}"],"query":[{"key":"limit","value":"10"}],"variable":[]}},"response":[{"id":"87e4ec26-11b6-40be-9d61-46ce0b6c7be8","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/sync/directory?limit=10","host":["{{base-url}}"],"path":["sync","directory"],"query":[{"key":"limit","value":"10"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[],"cookie":[],"responseTime":null,"body":"{\n    \"total_items\": 60895,\n    \"offset\": 0,\n    \"limit\": 10,\n    \"items\": [\n        {\n            \"rid\": 10,\n            \"name\": \"Harris'\",\n            \"address\": \"2100 Van Ness Avenue\",\n            \"address2\": \"\",\n            \"city\": \"San Francisco\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.7950668\",\n            \"longitude\": \"-122.4229237\",\n            \"postal_code\": \"94109\",\n            \"phone_number\": \"4156731888\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/10\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/10\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/harris-san-francisco\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/harris-san-francisco\",\n            \"profile_photo\": {\n                \"id\": 79882553,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/3/79882553.png\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/3/79882553.png\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/3/79882553.png\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/3/79882553.png\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/3/79882553.png\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/3/79882553.png\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/3/79882553.png\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/3/79882553.png\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/3/79882553.png\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/3/79882553.png\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/3/79882553.png\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/3/79882553.png\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/3/79882553.png\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/3/79882553.png\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.800\",\n            \"price_quartile\": \"$$$$\",\n            \"review_count\": 5864,\n            \"category\": [\n                \"Steakhouse\",\n                \"American\",\n                \"Steak\"\n            ],\n            \"hours\": \"Sun 5:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"openingtimes\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 24,\n            \"name\": \"INDO Restaurant & Lounge\",\n            \"address\": \"3295 El Camino Real\",\n            \"address2\": \"\",\n            \"city\": \"Palo Alto\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.4209159\",\n            \"longitude\": \"-122.1369480\",\n            \"postal_code\": \"94306\",\n            \"phone_number\": \"+16504947168\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/24\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/24\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/indo-restaurant-and-lounge-palo-alto\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/indo-restaurant-and-lounge-palo-alto\",\n            \"profile_photo\": {\n                \"id\": 26286947,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod/26286947/5/small.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/5/26286947.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/5/26286947.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/5/26286947.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod/26286947/5/large.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/5/26286947.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/5/26286947.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod/26286947/5/medium.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/5/26286947.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/5/26286947.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod/26286947/5/huge.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/5/26286947.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/5/26286947.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/5/26286947.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.700\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 1163,\n            \"category\": [\n                \"Asian\",\n                \"Southeast Asian\",\n                \"Indonesian\"\n            ],\n            \"hours\": \"Lunch\\n<br />Daily 11:00 am–2:00 pm\\n<br />Dinner\\n<br />Daily 5:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:00\",\n                    \"shiftEnds\": \"14:00\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"sun\",\n                        \"mon\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"sun\",\n                        \"mon\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 33,\n            \"name\": \"Wildfire - Chicago\",\n            \"address\": \"159 West Erie St.\",\n            \"address2\": \"\",\n            \"city\": \"Chicago\",\n            \"state\": \"IL\",\n            \"country\": \"US\",\n            \"latitude\": \"41.8937860\",\n            \"longitude\": \"-87.6334978\",\n            \"postal_code\": \"60654\",\n            \"phone_number\": \"3127879000\",\n            \"metro_name\": \"Chicago / Illinois\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/33\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/33\",\n            \"natural_reservation_url\": \"http://www.opentable.com/wildfire-chicago\",\n            \"natural_profile_url\": \"http://www.opentable.com/wildfire-chicago\",\n            \"profile_photo\": {\n                \"id\": 23682457,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod/23682457/1/small.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/1/23682457.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/1/23682457.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/1/23682457.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod/23682457/1/large.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/1/23682457.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/1/23682457.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod/23682457/1/medium.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/1/23682457.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/1/23682457.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod/23682457/1/huge.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/1/23682457.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/1/23682457.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/1/23682457.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.400\",\n            \"price_quartile\": \"$$\",\n            \"review_count\": 8416,\n            \"category\": [\n                \"American\",\n                \"Steak\",\n                \"Seafood\"\n            ],\n            \"hours\": \"Mon–Thu, Sun 4:00 pm–8:30 pm\\n<br />Fri, Sat 4:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"openingtimes\",\n                    \"shiftStarts\": \"16:00\",\n                    \"shiftEnds\": \"20:30\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"sun\"\n                    ]\n                },\n                {\n                    \"name\": \"openingtimes\",\n                    \"shiftStarts\": \"16:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"fri\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 47,\n            \"name\": \"Shaw's Crab House & Oyster Bar - Chicago\",\n            \"address\": \"21 East Hubbard St.\",\n            \"address2\": \"\",\n            \"city\": \"Chicago\",\n            \"state\": \"IL\",\n            \"country\": \"US\",\n            \"latitude\": \"41.8899100\",\n            \"longitude\": \"-87.6274230\",\n            \"postal_code\": \"60611\",\n            \"phone_number\": \"3125272722\",\n            \"metro_name\": \"Chicago / Illinois\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/47\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/47\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/shaws-crab-house-and-oyster-bar-chicago-chicago\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/shaws-crab-house-and-oyster-bar-chicago-chicago\",\n            \"profile_photo\": {\n                \"id\": 68954757,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/2/68954757.png\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/2/68954757.png\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/2/68954757.png\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/2/68954757.png\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/2/68954757.png\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/2/68954757.png\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/2/68954757.png\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/2/68954757.png\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/2/68954757.png\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/2/68954757.png\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/2/68954757.png\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/2/68954757.png\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/2/68954757.png\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/2/68954757.png\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.800\",\n            \"price_quartile\": \"$$$$\",\n            \"review_count\": 14734,\n            \"category\": [\n                \"Seafood\",\n                \"American\",\n                \"Sushi\"\n            ],\n            \"hours\": \"Lunch\\n<br />Daily 11:30 am–3:00 pm\\n<br />Dinner\\n<br />Mon–Thu, Sun 3:00 pm–9:00 pm\\n<br />Fri, Sat 3:00 pm–10:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:30\",\n                    \"shiftEnds\": \"15:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"15:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"sun\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"15:00\",\n                    \"shiftEnds\": \"22:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:30\",\n                    \"shiftEnds\": \"15:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 101,\n            \"name\": \"Alcala\",\n            \"address\": \"246 East 44th Street\",\n            \"address2\": \"\",\n            \"city\": \"New York\",\n            \"state\": \"NY\",\n            \"country\": \"US\",\n            \"latitude\": \"40.7511146\",\n            \"longitude\": \"-73.9717761\",\n            \"postal_code\": \"10017\",\n            \"phone_number\": \"2123701866\",\n            \"metro_name\": \"New York City\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/101\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/101\",\n            \"natural_reservation_url\": \"http://www.opentable.com/alcala\",\n            \"natural_profile_url\": \"http://www.opentable.com/alcala\",\n            \"profile_photo\": {\n                \"id\": 47526468,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod1/47526468/2/small.png\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/2/47526468.png\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/2/47526468.png\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/2/47526468.png\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod1/47526468/2/large.png\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/2/47526468.png\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/2/47526468.png\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod1/47526468/2/medium.png\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/2/47526468.png\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/2/47526468.png\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod1/47526468/2/huge.png\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/2/47526468.png\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/2/47526468.png\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/2/47526468.png\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.400\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 617,\n            \"category\": [\n                \"Spanish\",\n                \"Latin / Spanish\",\n                \"Comfort Food\"\n            ],\n            \"hours\": \"Lunch\\n<br />Mon–Fri 12:00 pm–4:30 pm\\n<br />Dinner\\n<br />Mon–Fri 5:00 pm–11:00 pm\\n<br />Sat, Sun 5:30 pm–11:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"12:00\",\n                    \"shiftEnds\": \"16:30\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"23:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:30\",\n                    \"shiftEnds\": \"23:00\",\n                    \"days\": [\n                        \"sun\",\n                        \"sat\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": false\n            }\n        },\n        {\n            \"rid\": 112,\n            \"name\": \"Marin\",\n            \"address\": \"1101 4th Ave.\",\n            \"address2\": \"\",\n            \"city\": \"Seattle\",\n            \"state\": \"WA\",\n            \"country\": \"US\",\n            \"latitude\": \"47.6069535\",\n            \"longitude\": \"-122.3340941\",\n            \"postal_code\": \"98101\",\n            \"phone_number\": \"+12066247755\",\n            \"metro_name\": \"Seattle / Eastern Washington\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/112\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/112\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/marin-seattle\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/marin-seattle\",\n            \"profile_photo\": {\n                \"id\": 79033572,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/4/79033572.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/4/79033572.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/4/79033572.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/4/79033572.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/4/79033572.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/4/79033572.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/4/79033572.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/4/79033572.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/4/79033572.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/4/79033572.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/4/79033572.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/4/79033572.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/4/79033572.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/4/79033572.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.300\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 30,\n            \"category\": [\n                \"Mediterranean\",\n                \"American\",\n                \"Contemporary American\"\n            ],\n            \"hours\": \"Breakfast\\n<br />Mon–Fri 7:00 am–10:00 am\\n<br />Bar\\n<br />Sat, Sun 7:00 am–10:00 pm\\n<br />Brunch\\n<br />Sat, Sun 8:00 am–2:00 pm\\n<br />Lunch\\n<br />Mon–Fri 11:00 am–2:00 pm\\n<br />Happy Hour\\n<br />Daily 3:00 pm–5:00 pm\\n<br />Dinner\\n<br />Daily 5:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"breakfast\",\n                    \"shiftStarts\": \"07:00\",\n                    \"shiftEnds\": \"10:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"fri\",\n                        \"wed\",\n                        \"thu\"\n                    ]\n                },\n                {\n                    \"name\": \"brunch\",\n                    \"shiftStarts\": \"08:00\",\n                    \"shiftEnds\": \"14:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                },\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:00\",\n                    \"shiftEnds\": \"14:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"happyhour\",\n                    \"shiftStarts\": \"15:00\",\n                    \"shiftEnds\": \"17:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"sun\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"sat\",\n                        \"sun\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"bar\",\n                    \"shiftStarts\": \"07:00\",\n                    \"shiftEnds\": \"22:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 130,\n            \"name\": \"Boulevard\",\n            \"address\": \"1 Mission St.\",\n            \"address2\": \"\",\n            \"city\": \"San Francisco\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.7932194\",\n            \"longitude\": \"-122.3929750\",\n            \"postal_code\": \"94105\",\n            \"phone_number\": \"+14155436084\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/130\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/130\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/boulevard-san-francisco\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/boulevard-san-francisco\",\n            \"profile_photo\": {\n                \"id\": 51634215,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod1/51634215/2/small.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/2/51634215.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/2/51634215.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/2/51634215.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod1/51634215/2/large.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/2/51634215.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/2/51634215.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod1/51634215/2/medium.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/2/51634215.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/2/51634215.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod1/51634215/2/huge.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/2/51634215.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/2/51634215.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/2/51634215.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.900\",\n            \"price_quartile\": \"$$$$\",\n            \"review_count\": 9311,\n            \"category\": [\n                \"Californian\",\n                \"Contemporary French / American\",\n                \"Contemporary American\"\n            ],\n            \"hours\": \"Bar\\n<br />Mon–Sat 5:00 pm–9:30 pm\\n<br />Dinner\\n<br />Mon–Sat 5:15 pm–9:30 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:15\",\n                    \"shiftEnds\": \"21:30\",\n                    \"days\": [\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"wed\",\n                        \"tue\",\n                        \"mon\"\n                    ]\n                },\n                {\n                    \"name\": \"bar\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:30\",\n                    \"days\": [\n                        \"wed\",\n                        \"tue\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"mon\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 141,\n            \"name\": \"ANZU\",\n            \"address\": \"222 Mason St.\",\n            \"address2\": \"\",\n            \"city\": \"San Francisco\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.7860081\",\n            \"longitude\": \"-122.4092959\",\n            \"postal_code\": \"94102\",\n            \"phone_number\": \"+14153941100\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/141\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/141\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/anzu-san-francisco\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/anzu-san-francisco\",\n            \"profile_photo\": {\n                \"id\": 92081614,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/1/92081614.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/1/92081614.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/1/92081614.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/1/92081614.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/1/92081614.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/1/92081614.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/1/92081614.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/1/92081614.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/1/92081614.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/1/92081614.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/1/92081614.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/1/92081614.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/1/92081614.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/1/92081614.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.100\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 2578,\n            \"category\": [\n                \"Breakfast\",\n                \"Californian\",\n                \"Japanese\"\n            ],\n            \"hours\": \"Breakfast\\n<br />Mon–Fri 6:30 am–10:30 am\\n<br />Sat, Sun 7:00 am–12:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"breakfast\",\n                    \"shiftStarts\": \"06:30\",\n                    \"shiftEnds\": \"10:30\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"breakfast\",\n                    \"shiftStarts\": \"07:00\",\n                    \"shiftEnds\": \"12:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": false\n            }\n        },\n        {\n            \"rid\": 144,\n            \"name\": \"Il Solito\",\n            \"address\": \"627 SW Washington St.\",\n            \"address2\": \"\",\n            \"city\": \"Portland\",\n            \"state\": \"OR\",\n            \"country\": \"US\",\n            \"latitude\": \"45.5206798\",\n            \"longitude\": \"-122.6785073\",\n            \"postal_code\": \"97205\",\n            \"phone_number\": \"+15032281515\",\n            \"metro_name\": \"Portland / Oregon\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/144\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/144\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/il-solito-portland\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/il-solito-portland\",\n            \"profile_photo\": {\n                \"id\": 82056458,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/3/82056458.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/3/82056458.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/3/82056458.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/3/82056458.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/3/82056458.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/3/82056458.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/3/82056458.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/3/82056458.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/3/82056458.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/3/82056458.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/3/82056458.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/3/82056458.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/3/82056458.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/3/82056458.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.300\",\n            \"price_quartile\": \"$$\",\n            \"review_count\": 1364,\n            \"category\": [\n                \"Breakfast\",\n                \"Contemporary Italian\",\n                \"Northwest\"\n            ],\n            \"hours\": \"Breakfast\\n<br />Mon–Fri 7:00 am–11:00 am\\n<br />Brunch\\n<br />Sat, Sun 8:00 am–2:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"breakfast\",\n                    \"shiftStarts\": \"07:00\",\n                    \"shiftEnds\": \"11:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"brunch\",\n                    \"shiftStarts\": \"08:00\",\n                    \"shiftEnds\": \"14:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": false\n            }\n        },\n        {\n            \"rid\": 147,\n            \"name\": \"Birk's\",\n            \"address\": \"3955 Freedom Circle\",\n            \"address2\": \"\",\n            \"city\": \"Santa Clara\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.3854527\",\n            \"longitude\": \"-121.9728830\",\n            \"postal_code\": \"95054\",\n            \"phone_number\": \"4089806400\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/147\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/147\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/birks-santa-clara\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/birks-santa-clara\",\n            \"profile_photo\": {\n                \"id\": 25175460,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod/25175460/1/small.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/1/25175460.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/1/25175460.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/1/25175460.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod/25175460/1/large.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/1/25175460.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/1/25175460.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod/25175460/1/medium.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/1/25175460.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/1/25175460.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod/25175460/1/huge.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/1/25175460.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/1/25175460.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/1/25175460.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.700\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 3715,\n            \"category\": [\n                \"American\",\n                \"Steakhouse\",\n                \"Steak\"\n            ],\n            \"hours\": \"Lunch\\n<br />Mon–Fri 11:00 am–2:30 pm\\n<br />Happy Hour\\n<br />Mon–Fri 3:30 pm–6:00 pm\\n<br />Sat 5:00 pm–7:00 pm\\n<br />Dinner\\n<br />Daily 5:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:00\",\n                    \"shiftEnds\": \"14:30\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"mon\"\n                    ]\n                },\n                {\n                    \"name\": \"happyhour\",\n                    \"shiftStarts\": \"15:30\",\n                    \"shiftEnds\": \"18:00\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"mon\"\n                    ]\n                },\n                {\n                    \"name\": \"happyhour\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"19:00\",\n                    \"days\": [\n                        \"sat\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"mon\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        }\n    ]\n}"},{"id":"7664773d-faed-4286-a09d-bd239a90dff8","name":"401","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/sync/directory?limit=10","host":["{{base-url}}"],"path":["sync","directory"],"query":[{"key":"limit","value":"10"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"1800b854-25d4-42a7-b046-92449c438ed5"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"10"},{"key":"Content-Length","value":"91"},{"key":"Date","value":"Wed, 22 Jan 2025 20:46:56 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"message\": \"invalid_token\"\n        }\n    ],\n    \"requestid\": \"1800b854-25d4-42a7-b046-92449c438ed5\"\n}"}],"_postman_id":"b9b311ee-1284-4fa4-861f-e20ae5417b5f"}],"id":"c43080e9-565f-4d4e-991f-616b70bdf533","description":"<p>The Directory API gives approved developers the ability to acquire and synchronize restaurants that are visible as search results on the OpenTable website. The Directory API is only available to our Consumer Partners and is not offered to our Restaurant Partners.</p>\n","_postman_id":"c43080e9-565f-4d4e-991f-616b70bdf533"}],"id":"c43e6c99-e40c-415a-b38b-3527753b7ac4","description":"<h1 id=\"affiliates-guide\"><strong>Affiliates Guide</strong></h1>\n<h2 id=\"introduction\"><strong>Introduction</strong></h2>\n<p>This section contains instructions to retrieve the directory information of all OpenTable restaurants and implement reservation links to OpenTable.com, the OpenTable iOS app, and OpenTable Android app. This provides affiliates with the ability to easily link to restaurants that accept online reservations via OpenTable.</p>\n<h2 id=\"retrieving-restaurant-data-via-directory-api\"><strong>Retrieving Restaurant Data via Directory API</strong></h2>\n<p>The Directory API returns a complete directory of restaurants that accept online reservations via OpenTable so that will need to first be called. The restaurant directory will be returned by the API in JSON format. The links can then be built using the data returned by the Directory API. The restaurant data is refreshed nightly, so it is recommended to call the API at least once a day to get the most current restaurant directory data.</p>\n<h2 id=\"linking-guidelines\"><strong>Linking Guidelines</strong></h2>\n<p>Affiliates must comply with the following guidelines when using OpenTable data and linking to the OpenTable site</p>\n<p>OpenTable reserve links must be displayed either next to or in lieu of the restaurant’s phone number. Additionally, the the link text must use one of the following conventions:</p>\n<ul>\n<li><p>“Online Reservations”</p>\n</li>\n<li><p>“[RestaurantName]”</p>\n</li>\n<li><p>“[RestaurantName] Reservations”</p>\n</li>\n<li><p>“Restaurant Reservations”</p>\n</li>\n</ul>\n<h2 id=\"linking-to-individual-restaurants-on-opentablecom\"><strong>Linking to Individual Restaurants on OpenTable.com</strong></h2>\n<p>The process of linking to each restaurant’s reservation page involves using the natural_profile_url value contained in the JSON response of the Directory API for each restaurant, along with your unique referral ID which is provided by OpenTable:</p>\n<p><a href=\"https://www.opentable.com/boulevard-san-francisco?ref=zzzz\">https://www.opentable.com/boulevard-san-francisco?ref=zzzz</a></p>\n<p>Where '<a href=\"https://www.opentable.com/r/boulevard-san-francisco%E2%80%9D\">https://www.opentable.com/r/boulevard-san-francisco'</a> is the restaurant’s natural_profile_url value as returned from the Directory API and zzzz is the numerical referral ID (this allows OpenTable to track reservations coming from your site). Your referral ID will be provided to you if approved for partnership.</p>\n<p>As an example, the link for Boulevard San Francisco for a referral ID of 1234: <a href=\"https://www.opentable.com/r/boulevard-san-francisco?ref=1234\">https://www.opentable.com/r/boulevard-san-francisco?ref=1234<br /></a></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Country</strong></th>\n<th><strong>URL</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>North America</td>\n<td><a href=\"https://www.opentable.com/boulevard-san-francisco?ref=zzzz\">https://www.opentable.com/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>UK</td>\n<td><a href=\"https://www.opentable.co.uk/boulevard-san-francisco?ref=zzzz\">https://www.opentable.co.uk/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Australia</td>\n<td><a href=\"https://www.opentable.com.au/boulevard-san-francisco?ref=zzzz\">https://www.opentable.com.au/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Germany</td>\n<td><a href=\"https://www.opentable.de/boulevard-san-francisco?ref=zzzz\">https://www.opentable.de/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Japan</td>\n<td><a href=\"https://www.opentable.jp/boulevard-san-francisco?ref=zzzz\">https://www.opentable.jp/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>France</td>\n<td><a href=\"https://www.opentable.fr/boulevard-san-francisco?ref=zzzz\">https://www.opentable.fr/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Spain</td>\n<td><a href=\"https://www.opentable.es/boulevard-san-francisco?ref=zzzz\">https://www.opentable.es/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Mexico</td>\n<td><a href=\"https://www.opentable.com.mx/boulevard-san-francisco?ref=zzzz\">https://www.opentable.com.mx/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Canada</td>\n<td><a href=\"https://www.opentable.ca/boulevard-san-francisco?ref=zzzz\">https://www.opentable.ca/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Hong Kong</td>\n<td><a href=\"https://www.opentable.hk/boulevard-san-francisco?ref=zzzz\">https://www.opentable.hk/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Ireland</td>\n<td><a href=\"https://www.opentable.ie/boulevard-san-francisco?ref=zzzz\">https://www.opentable.ie/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Singapore</td>\n<td><a href=\"https://www.opentable.sg/boulevard-san-francisco?ref=zzzz\">https://www.opentable.sg/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Netherlands</td>\n<td><a href=\"https://www.opentable.nl/boulevard-san-francisco?ref=zzzz\">https://www.opentable.nl/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>United Arab Emirates</td>\n<td><a href=\"https://www.opentable.ae/boulevard-san-francisco?ref=zzzz\">https://www.opentable.ae/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Thailand</td>\n<td><a href=\"https://www.opentable.co.th/boulevard-san-francisco?ref=zzzz\">https://www.opentable.co.th/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n<tr>\n<td>Italy</td>\n<td><a href=\"https://www.opentable.it/boulevard-san-francisco?ref=zzzz\">https://www.opentable.it/boulevard-san-francisco?ref=zzzz</a></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"deep-linking-into-the-opentable-ios-app\"><strong>“Deep Linking” into the OpenTable iOS App</strong></h2>\n<p>The OpenTable iOS app supports universal links (e.g., opening desktop/mobile web links directly into the app).</p>\n<p>This is the preferred way of deep linking into the app. The main benefit is that these links will always work, even if the app is not installed, taking the user to Safari.</p>\n","_postman_id":"c43e6c99-e40c-415a-b38b-3527753b7ac4"},{"name":"Menus API","item":[{"name":"Publish Menus","item":[{"name":"Menu Example Request - Webhook","id":"abf080a3-11c4-4726-af4c-54ba1bc5c403","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"    \"menus\": [\n        {\n            \"<menu_id>\": {\n                //Other Menu Fields\n                \"metadata\": {\n                    //Metadata\n                }\n            },\n            \"groups\": {\n                \"<group_id>\": {\n                    //Other Group Fields\n                    \"metadata\": {\n                        //Metadata\n                    }\n                }\n            },\n            \"items\": {\n                \"<itemId>\": {\n                    //Other Item Fields\n                    \"metadata\": {\n                        //Metadata\n                    }\n                }\n            },\n            \"itemSizes\": {\n                \"<itemSizeId>\": {\n                    //Other ItemSize Fields\n                    \"metadata\": {\n                        //Metadata\n\n                    }\n                }\n            },\n            \"modifierGroups\": {\n                \"<modifierGroupId>\": {\n                    //Other ModifierGroup Fields\n                    \"metadata\": {\n                        //Metadata\n                    }\n                }\n            },\n            \"modifiers\": {\n                \"<modifierId>\": {\n                    //Other Modifier Fields\n                    \"metadata\": {\n                        //Metadata\n                    }\n                }\n            },\n            \"preModifierGroups\": {\n                \"<preModifierGroupId>\": {\n                    //Other PreModifierGroup Fields\n                    \"metadata\": {\n                        //Metadata\n                    }\n                }\n            },\n            \"preModifiers\": {\n                \"<preModifierId>\": {\n                    //Other PreModifier Fields\n                    \"metadata\": {\n                        //Metadata\n                    }\n                }\n            }\n        }\n    ]\n}\n","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v1/partnermenu/{{partnername}}/location/{{rid}}/menus","description":"<h2 id=\"menu-webhook-format\"><strong>MENU WEBHOOK FORMAT</strong></h2>\n<p>OpenTable expects restaurant level menus to be pushed via the webhook API in below format.</p>\n<h2 id=\"api-path\"><strong>API Path</strong></h2>\n<p>/v1/partnermenu/{partnername}/location/{locationId}/menus</p>\n<p>Method: POST</p>\n<p>POST a request with all menus of the restaurant whenever there is a change in any part of any menu on a restaurant level.</p>\n<p>The sync will happen asynchronously whenever a webhook event with these details are received and the same will get reflected on UI. OpenTable will process these menus in real time.</p>\n<h3 id=\"parameters\"><strong>Parameters</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>partnername</td>\n<td>string</td>\n<td>Your agreed upon partner name. Should always be the exact same. REQUIRED</td>\n</tr>\n<tr>\n<td>locationId</td>\n<td>string</td>\n<td>Restaurant Identifier. REQUIRED</td>\n</tr>\n<tr>\n<td>request</td>\n<td>body</td>\n<td>Menu Details. REQUIRED</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"menu\"><strong>Menu</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Identifier of the underlying menu</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Corresponding display name of the menu</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of the menu</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Type of the menu for categorizing. Required to be one of the following: DELIVERY_AND_PICKUP, DELIVERY, PICKUP, DINE_IN, CURBSIDE</td>\n</tr>\n<tr>\n<td>defaultCurrency</td>\n<td>string</td>\n<td>Currency code in which restaurant operates</td>\n</tr>\n<tr>\n<td>ordinal</td>\n<td>integer</td>\n<td>Position of the menu</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>instant</td>\n<td>Created timestamp in UTC</td>\n</tr>\n<tr>\n<td>updatedAt</td>\n<td>instant</td>\n<td>Updated timestamp in UTC</td>\n</tr>\n<tr>\n<td>groups</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of Group Ids and their respective positions associated with the menu.</td>\n</tr>\n<tr>\n<td>footnote</td>\n<td>string</td>\n<td>Footnote display message for the menu</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>object</td>\n<td>Any metadata relevant at the menu level will be kept here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"group\"><strong>Group</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for menu group</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Corresponding display name of the menu group</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of the menu group</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>instant</td>\n<td>Created timestamp in UTC</td>\n</tr>\n<tr>\n<td>updatedAt</td>\n<td>instant</td>\n<td>Updated timestamp in UTC</td>\n</tr>\n<tr>\n<td>subGroups</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of Sub Group Ids and their respective positions for this menu group</td>\n</tr>\n<tr>\n<td>Items</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of Item Ids and their respective positions under this menu group</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>object</td>\n<td>Any metadata relevant at the menu level will be kept here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"item\"><strong>Item</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for individual item</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Corresponding display name of the menu item</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of the item</td>\n</tr>\n<tr>\n<td>priceMetadata</td>\n<td>object</td>\n<td>Price details for Item</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>instant</td>\n<td>Created timestamp in UTC</td>\n</tr>\n<tr>\n<td>updatedAt</td>\n<td>instant</td>\n<td>Updated timestamp in UTC</td>\n</tr>\n<tr>\n<td>modifierGroups</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of ModifierGroup Ids and their respective positions eligible for the item</td>\n</tr>\n<tr>\n<td>subItems</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of Item Ids and their respective positions which are part of a combo meal item. For example, Burger, coke, and fries in a Burger Combo Meal.</td>\n</tr>\n<tr>\n<td>sizes</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of ItemSize Ids and their respective positions for the underlying item. In this case, price is defined at the ItemSize level rather than at item level.</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>object</td>\n<td>Any metadata relevant at the item level will be kept here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"item-size\"><strong>Item Size</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for individual item size</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Corresponding display name of the item size</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of the item size</td>\n</tr>\n<tr>\n<td>priceMetadata</td>\n<td>object</td>\n<td>Price details of the item size</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>instant</td>\n<td>Created timestamp in UTC</td>\n</tr>\n<tr>\n<td>updatedAt</td>\n<td>instant</td>\n<td>Updated timestamp in UTC</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>object</td>\n<td>Any metadata relevant at the itemSize level will be kept here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"modifier-group\"><strong>Modifier Group</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for modifier group</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Corresponding display name of the modifier group</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of the modifier group</td>\n</tr>\n<tr>\n<td>minChoices</td>\n<td>integer</td>\n<td>Count of modifiers that should be selected at the minimum</td>\n</tr>\n<tr>\n<td>maxChoices</td>\n<td>integer</td>\n<td>Count of modifiers that can be selected at the maximum</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>instant</td>\n<td>Created timestamp in UTC</td>\n</tr>\n<tr>\n<td>updatedAt</td>\n<td>instant</td>\n<td>Updated timestamp in UTC</td>\n</tr>\n<tr>\n<td>preModifierGroup</td>\n<td>string</td>\n<td>Id of the PreModifierGroup applicable on the modifierGroup</td>\n</tr>\n<tr>\n<td>Modifiers</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of all Modifier Ids and their respective positions in the modifier group</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>object</td>\n<td>Any metadata relevant at the modifier group level will be kept here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"modifier\"><strong>Modifier</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for modifier</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Corresponding display name of the modifier</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of the modifier</td>\n</tr>\n<tr>\n<td>priceMetadata</td>\n<td>object</td>\n<td>Price details of the individual modifier</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>instant</td>\n<td>Created timestamp in UTC</td>\n</tr>\n<tr>\n<td>updatedAt</td>\n<td>instant</td>\n<td>Updated timestamp in UTC</td>\n</tr>\n<tr>\n<td>modifierGroups</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of ModifierGroup Ids and their respective positions eligible for the modifier</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>object</td>\n<td>Any metadata relevant at the modifier level will be kept here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"premodifier-group\"><strong>PreModifier Group</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for pre modifier group</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Corresponding display name of the pre modifier group</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of the pre modifier group</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>instant</td>\n<td>Created timestamp in UTC</td>\n</tr>\n<tr>\n<td>updatedAt</td>\n<td>instant</td>\n<td>Updated timestamp in UTC</td>\n</tr>\n<tr>\n<td>preModifiers</td>\n<td>list</td>\n<td>RelationMapping List. This will serve as a List of all PreModifier Ids and their respective positions in the pre modifier group</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>object</td>\n<td>Any metadata relevant at the preModifierGroup level will be kept here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"premodifier\"><strong>PreModifier</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for pre modifier</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Corresponding display name of the pre modifier</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of the pre modifier</td>\n</tr>\n<tr>\n<td>priceMetadata</td>\n<td>object</td>\n<td>Price details of the individual pre modifier</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>instant</td>\n<td>Created timestamp in UTC</td>\n</tr>\n<tr>\n<td>updatedAt</td>\n<td>instant</td>\n<td>Updated timestamp in UTC</td>\n</tr>\n<tr>\n<td>displayMode</td>\n<td>string</td>\n<td>Used to determine how the premodifier should be displayed along with the modifier. Should be - PREFIX or SUFFIX</td>\n</tr>\n<tr>\n<td>metadata</td>\n<td>object</td>\n<td>Any metadata relevant at the preModifier level will be kept here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"image\"><strong>Image</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>thumbnailUrl</td>\n<td>string</td>\n<td>Image thumbnail URL</td>\n</tr>\n<tr>\n<td>url</td>\n<td>string</td>\n<td>Image URL</td>\n</tr>\n<tr>\n<td>urlHeight</td>\n<td>integer</td>\n<td>Height of the image URL in pixels</td>\n</tr>\n<tr>\n<td>urlWidth</td>\n<td>integer</td>\n<td>Width of the image URL in pixels</td>\n</tr>\n<tr>\n<td>Featured</td>\n<td>boolean</td>\n<td>If true, thumbnailUrl of this image will be honored</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"relationmapping\"><strong>RelationMapping</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Identifier of the child field belonging to the respective parent field</td>\n</tr>\n<tr>\n<td>ordinal</td>\n<td>integer</td>\n<td>Position of the child field in the list</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"pricemetadata\"><strong>PriceMetadata</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>priceType</td>\n<td>string</td>\n<td>Based on the type, the appropriate field will be used. SIZE_PRICE type is only applicable at Item level. Values should be: PRICE, CUSTOM_PRICE_TEXT, SIZE_PRICE</td>\n</tr>\n<tr>\n<td>minPrice</td>\n<td>double</td>\n<td>Minimum price for the corresponding product in a price range</td>\n</tr>\n<tr>\n<td>maxPrice</td>\n<td>double</td>\n<td>Maximum price for the corresponding product in a price range</td>\n</tr>\n<tr>\n<td>customPriceText</td>\n<td>string</td>\n<td>In case there is no fixed price and instead we want to show custom text in the price field, this value is set</td>\n</tr>\n<tr>\n<td>unit</td>\n<td>string</td>\n<td>Price per unit (e.g., grams, kg)</td>\n</tr>\n<tr>\n<td>tax</td>\n<td>object</td>\n<td>List of different taxes applicable on the underlying product</td>\n</tr>\n<tr>\n<td>multiplicationFactor</td>\n<td>double</td>\n<td>Applicable for PreModifiers. This will be used if minPrice/maxPrice is not set for premodifiers.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"tax-details\"><strong>Tax Details</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>taxCategory</td>\n<td>string</td>\n<td>Category of the tax (e.g., VAT)</td>\n</tr>\n<tr>\n<td>taxAmount</td>\n<td>double</td>\n<td>Tax amount under the respective category</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"metadata\"><strong>Metadata</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>nameTranslations</td>\n<td>Map</td>\n<td>Applicable at all levels. Language Tag is the key and corresponding translation is the value. Example: “en-US”:”Pizza”</td>\n</tr>\n<tr>\n<td>descriptionTranslations</td>\n<td>Map</td>\n<td>Applicable at all levels. Language Tag is the key and corresponding translation is the value. Example: “en-US”:”Corn and Cheese Pizza”</td>\n</tr>\n<tr>\n<td>Calories</td>\n<td>object</td>\n<td>At Item, ItemSize, Modifier, and Pre-Modifier level</td>\n</tr>\n<tr>\n<td>multiMax</td>\n<td>integer</td>\n<td>Indicates whether the underlying can be selected multiple times.</td>\n</tr>\n<tr>\n<td>Availabilities</td>\n<td>object</td>\n<td>Indicating availability of a menu on all days for online ordering.</td>\n</tr>\n<tr>\n<td>Ingredients</td>\n<td>string</td>\n<td>Main ingredients in an item</td>\n</tr>\n<tr>\n<td>Additives</td>\n<td>string</td>\n<td>Any preservatives added to enhance the item quality</td>\n</tr>\n<tr>\n<td>prepackaged</td>\n<td>boolean</td>\n<td>If the underlying item is prepackaged or not</td>\n</tr>\n<tr>\n<td>nutritionalInfo</td>\n<td>object</td>\n<td>Nutritional information in defined unit (e.g., fat, carbohydrates, sugar)</td>\n</tr>\n<tr>\n<td>Tags</td>\n<td>list</td>\n<td>List of tags suitable for the item</td>\n</tr>\n<tr>\n<td>images</td>\n<td>object</td>\n<td>Image URLs at all levels</td>\n</tr>\n<tr>\n<td>Enabled</td>\n<td>boolean</td>\n<td>To indicate if the underlying is enabled for digital ordering</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"nutritional-info\"><strong>Nutritional Info</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>nutrients</td>\n<td>Map</td>\n<td>Quantity of each of the nutrients</td>\n</tr>\n<tr>\n<td>unit</td>\n<td>string</td>\n<td>The unit to measure the quantity (e.g., grams)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"calories\"><strong>Calories</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>min</td>\n<td>integer</td>\n<td>Min calorie count in a range</td>\n</tr>\n<tr>\n<td>max</td>\n<td>integer</td>\n<td>Max calorie count in a range. If no range, min and max will be equal.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"availability\"><strong>Availability</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dayOfWeek</td>\n<td>integer</td>\n<td>An integer value indicating the day of the week (1 = Monday)</td>\n</tr>\n<tr>\n<td>startTime</td>\n<td>string</td>\n<td>A 24-hour HH:MM format of the start time of an availability</td>\n</tr>\n<tr>\n<td>endTime</td>\n<td>string</td>\n<td>A 24-hour HH:MM format of the end time of an availability</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","partnermenu","{{partnername}}","location","{{rid}}","menus"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"926859d4-c704-44d3-94d5-1ba20e4b7dd3","name":"200","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":" {\n    \"menus\": [\n        {\n            \"8daa98e0-cfd0-11ed-afa1-0242ac120002\": {\n                \"id\": \"8daa98e0-cfd0-11ed-afa1-0242ac120002\",\n                \"name\": \"Example Menu\",\n                \"description\": \"Menu description\",\n                \"type\": \"DINE_IN\",\n                \"defaultCurrency\": \"USD\",\n                \"ordinal\": 100,\n                \"createdAt\": \"2023-03-17T06:37:27Z\",\n                \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                \"groups\": [\n                    {\n                        \"id\": \"3981f08e-cfd4-11ed-afa1-0242ac120002\",\n                        \"ordinal\": 1\n                    },\n                    {\n                        \"id\": \"3d11d670-cfe7-11ed-afa1-0242ac120002\",\n                        \"ordinal\": 2\n                    }\n                ],\n                \"footnote\": \"Lorem ipsum dolor sit amet\",\n                \"metadata\": {\n                    \"nameTranslations\": {\n                        \"en-CA\": \"Example Menu\"\n                    },\n                    \"descriptionTranslations\": {\n                        \"en-CA\": \"Menu description\"\n                    },\n                    \"availabilities\": [\n                        {\n                            \"dayOfWeek\": 1,\n                            \"endTime\": \"13:00\",\n                            \"startTime\": \"17:00\"\n                        },\n                        {\n                            \"dayOfWeek\": 2,\n                            \"endTime\": \"13:00\",\n                            \"startTime\": \"17:00\"\n                        },\n                        {\n                            \"dayOfWeek\": 3,\n                            \"endTime\": \"13:00\",\n                            \"startTime\": \"17:00\"\n                        },\n                        {\n                            \"dayOfWeek\": 4,\n                            \"endTime\": \"13:00\",\n                            \"startTime\": \"17:00\"\n                        },\n                        {\n                            \"dayOfWeek\": 5,\n                            \"endTime\": \"13:00\",\n                            \"startTime\": \"17:00\"\n                        },\n                        {\n                            \"dayOfWeek\": 6,\n                            \"endTime\": \"13:00\",\n                            \"startTime\": \"17:00\"\n                        },\n                        {\n                            \"dayOfWeek\": 6,\n                            \"endTime\": \"13:00\",\n                            \"startTime\": \"17:00\"\n                        },\n                        {\n                            \"dayOfWeek\": 7,\n                            \"endTime\": \"13:00\",\n                            \"startTime\": \"17:00\"\n                        }\n                    ],\n                    \"images\": [\n                        {\n                            \"thumbnailUrl\": \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR6xETmD993L7e611V1UOcwCDDaIRlpbpVbwQ&usqp=CAU\",\n                            \"url\": \"https://img.freepik.com/free-photo/flat-lay-batch-cooking-composition_23-2148765597.jpg\",\n                            \"featured\": true\n                        },\n                        {\n                            \"url\": \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRTmp-CfQ-albJX7ez9aZxkJ6Pbr-eZj3r5cA&usqp=CAU\",\n                            \"featured\": false\n                        }\n                    ],\n                    \"enabled\": true\n                }\n            },\n            \"groups\": {\n                \"3981f08e-cfd4-11ed-afa1-0242ac120002\": {\n                    \"id\": \"3981f08e-cfd4-11ed-afa1-0242ac120002\",\n                    \"name\": \"Starters\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"subGroups\": [\n                        {\n                            \"id\": \"50f7dd8c-cfd4-11ed-afa1-0242ac120002\",\n                            \"ordinal\": 1\n                        }\n                    ],\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                },\n                \"50f7dd8c-cfd4-11ed-afa1-0242ac120002\": {\n                    \"id\": \"50f7dd8c-cfd4-11ed-afa1-0242ac120002\",\n                    \"name\": \"Vegetarian Starters\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"items\": [\n                        {\n                            \"id\": \"edbd3b14-cfe1-11ed-afa1-0242ac120002\",\n                            \"ordinal\": \"1\"\n                        },\n                        {\n                            \"id\": \"736ab346-d18a-11ed-afa1-0242ac120002\",\n                            \"ordinal\": \"2\"\n                        }\n                    ],\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                },\n                \"3d11d670-cfe7-11ed-afa1-0242ac120002\": {\n                    \"id\": \"3d11d670-cfe7-11ed-afa1-0242ac120002\",\n                    \"name\": \"Pizzas\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"items\": [\n                        {\n                            \"id\": \"64d162de-cfe7-11ed-afa1-0242ac120002\",\n                            \"ordinal\": \"1\"\n                        }\n                    ],\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"items\": {\n                \"edbd3b14-cfe1-11ed-afa1-0242ac120002\": {\n                    \"id\": \"edbd3b14-cfe1-11ed-afa1-0242ac120002\",\n                    \"name\": \"Corn Cheese Balls\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"PRICE\",\n                        \"minPrice\": 20.0,\n                        \"maxPrice\": 20.0,\n                        \"tax\": [\n                            {\n                                \"taxCategory\": \"Sales Tax\",\n                                \"taxAmount\": 5.0\n                            }\n                        ]\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"modifierGroups\": [\n                        {\n                            \"id\": \"1e4a2ed8-cfe5-11ed-afa1-0242ac120002\",\n                            \"ordinal\": \"1\"\n                        }\n                    ],\n                    \"metadata\": {\n                        \"calories\": {\n                            \"min\": 90,\n                            \"max\": 90\n                        },\n                        \"multiMax\": 1,\n                        \"ingredients\": [\n                            \"Baby Corn\",\n                            \"Potato\",\n                            \"Processed Cheese\"\n                        ],\n                        \"prepackaged\": false,\n                        \"nutritionalInfo\": {\n                            \"nutrients\": {\n                                \"fat\": 2.8,\n                                \"protein\": 2\n                            },\n                            \"unit\": \"g\"\n                        },\n                        \"tags\": [\n                            \"dairy\",\n                            \"vegetarian\"\n                        ],\n                        \"images\": [\n                            {\n                                \"thumbnailUrl\": \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSVo-QysTFpXtr_ZbR36jsdPDW1PX0mtaOaYg&usqp=CAU\",\n                                \"url\": \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTpQtTEeqnJGFpRUlHmLGloA-5EzR29eszHwg&usqp=CAU\",\n                                \"featured\": true\n                            }\n                        ],\n                        \"enabled\": true\n                    }\n                },\n                \"736ab346-d18a-11ed-afa1-0242ac120002\": {\n                    \"id\": \"736ab346-d18a-11ed-afa1-0242ac120002\",\n                    \"name\": \"Kebab\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"CUSTOM_PRICE_TEXT\",\n                        \"customPriceText\": \"Special Price\"\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"modifierGroups\": [\n                        {\n                            \"id\": \"1e4a2ed8-cfe5-11ed-afa1-0242ac120002\",\n                            \"ordinal\": \"1\"\n                        }\n                    ],\n                    \"metadata\": {\n                        \"tags\": [\n                            \"vegetarian\"\n                        ],\n                        \"images\": [\n                            {\n                                \"thumbnailUrl\": \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRlLm_cKCgTv67yYcWm6_dxNepV5CcHCYijlw&usqp=CAU\",\n                                \"url\": \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRlLm_cKCgTv67yYcWm6_dxNepV5CcHCYijlw&usqp=CAU\",\n                                \"featured\": true\n                            }\n                        ],\n                        \"enabled\": true\n                    }\n                },\n                \"64d162de-cfe7-11ed-afa1-0242ac120002\": {\n                    \"id\": \"64d162de-cfe7-11ed-afa1-0242ac120002\",\n                    \"name\": \"Peppy Paneer Pizza\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"SIZE_PRICE\"\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"modifierGroups\": [\n                        {\n                            \"id\": \"df14ddd2-cfe7-11ed-afa1-0242ac120002\",\n                            \"ordinal\": \"1\"\n                        }\n                    ],\n                    \"sizes\": [\n                        {\n                            \"id\": \"cb69fd9e-cfe7-11ed-afa1-0242ac120002\",\n                            \"ordinal\": \"1\"\n                        },\n                        {\n                            \"id\": \"d9c600a4-cfe7-11ed-afa1-0242ac120002\",\n                            \"ordinal\": \"2\"\n                        }\n                    ],\n                    \"metadata\": {\n                        \"images\": [\n                            {\n                                \"thumbnailUrl\": \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSxf25fPlxLkIA0LQ4zE7OWiADZtqs844tUmQ&usqp=CAU\",\n                                \"url\": \"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTLzSAu--BxXSY4QqRzgLKFwbsy43lpItTJjA&usqp=CAU\",\n                                \"featured\": true\n                            }\n                        ],\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"itemSizes\": {\n                \"cb69fd9e-cfe7-11ed-afa1-0242ac120002\": {\n                    \"id\": \"cb69fd9e-cfe7-11ed-afa1-0242ac120002\",\n                    \"name\": \"Large\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"PRICE\",\n                        \"minPrice\": 20,\n                        \"maxPrice\": 20,\n                        \"tax\": [\n                            {\n                                \"taxCategory\": \"Sales Tax\",\n                                \"taxAmount\": 5.0\n                            }\n                        ]\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                },\n                \"d9c600a4-cfe7-11ed-afa1-0242ac120002\": {\n                    \"id\": \"d9c600a4-cfe7-11ed-afa1-0242ac120002\",\n                    \"name\": \"Medium\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"PRICE\",\n                        \"minPrice\": 15.0,\n                        \"maxPrice\": 15.0,\n                        \"tax\": [\n                            {\n                                \"taxCategory\": \"Sales Tax\",\n                                \"taxAmount\": 4.0\n                            }\n                        ]\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"modifierGroups\": {\n                \"1e4a2ed8-cfe5-11ed-afa1-0242ac120002\": {\n                    \"id\": \"1e4a2ed8-cfe5-11ed-afa1-0242ac120002\",\n                    \"name\": \"Dipping Sauce\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"minChoices\": 1,\n                    \"maxChoices\": 1,\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"preModifierGroup\": \"9ba2b81e-cfe5-11ed-afa1-0242ac120002\",\n                    \"modifiers\": [\n                        {\n                            \"id\": \"b7e0c0d6-cfe8-11ed-afa1-0242ac120002\",\n                            \"ordinal\": 1\n                        },\n                        {\n                            \"id\": \"bd7e9bc6-cfe8-11ed-afa1-0242ac120002\",\n                            \"ordinal\": 2\n                        }\n                    ],\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                },\n                \"df14ddd2-cfe7-11ed-afa1-0242ac120002\": {\n                    \"id\": \"df14ddd2-cfe7-11ed-afa1-0242ac120002\",\n                    \"name\": \"Toppings\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"minChoices\": 1,\n                    \"maxChoices\": 3,\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"modifiers\": [\n                        {\n                            \"id\": \"c4ef9cde-cfe8-11ed-afa1-0242ac120002\",\n                            \"ordinal\": 1\n                        },\n                        {\n                            \"id\": \"c93aea46-cfe8-11ed-afa1-0242ac120002\",\n                            \"ordinal\": 2\n                        }\n                    ],\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"modifiers\": {\n                \"b7e0c0d6-cfe8-11ed-afa1-0242ac120002\": {\n                    \"id\": \"b7e0c0d6-cfe8-11ed-afa1-0242ac120002\",\n                    \"name\": \"Tomato Sauce\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                },\n                \"bd7e9bc6-cfe8-11ed-afa1-0242ac120002\": {\n                    \"id\": \"bd7e9bc6-cfe8-11ed-afa1-0242ac120002\",\n                    \"name\": \"Cheese Dip\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                },\n                \"c4ef9cde-cfe8-11ed-afa1-0242ac120002\": {\n                    \"id\": \"c4ef9cde-cfe8-11ed-afa1-0242ac120002\",\n                    \"name\": \"Cottage Cheese\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"PRICE\",\n                        \"minPrice\": 2,\n                        \"maxPrice\": 2,\n                        \"tax\": [\n                            {\n                                \"taxCategory\": \"Sales Tax\",\n                                \"taxAmount\": 1\n                            }\n                        ]\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                },\n                \"c93aea46-cfe8-11ed-afa1-0242ac120002\": {\n                    \"id\": \"c93aea46-cfe8-11ed-afa1-0242ac120002\",\n                    \"name\": \"Black Olives\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"PRICE\",\n                        \"minPrice\": 2,\n                        \"maxPrice\": 2,\n                        \"tax\": [\n                            {\n                                \"taxCategory\": \"Sales Tax\",\n                                \"taxAmount\": 1\n                            }\n                        ]\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"preModifierGroups\": {\n                \"9ba2b81e-cfe5-11ed-afa1-0242ac120002\": {\n                    \"id\": \"9ba2b81e-cfe5-11ed-afa1-0242ac120002\",\n                    \"name\": \"Example Premodifier\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"preModifiers\": [\n                        {\n                            \"id\": \"e83fcd60-cfe5-11ed-afa1-0242ac120002\",\n                            \"ordinal\": 1\n                        },\n                        {\n                            \"id\": \"f5d6cf1e-cfe5-11ed-afa1-0242ac120002\",\n                            \"ordinal\": 2\n                        }\n                    ],\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                }\n            },\n            \"preModifiers\": {\n                \"e83fcd60-cfe5-11ed-afa1-0242ac120002\": {\n                    \"id\": \"e83fcd60-cfe5-11ed-afa1-0242ac120002\",\n                    \"name\": \"EXTRA\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"PRICE\",\n                        \"minPrice\": 1.5,\n                        \"maxPrice\": 1.5\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"displayMode\": \"PREFIX\",\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                },\n                \"f5d6cf1e-cfe5-11ed-afa1-0242ac120002\": {\n                    \"id\": \"f5d6cf1e-cfe5-11ed-afa1-0242ac120002\",\n                    \"name\": \"ON SIDE\",\n                    \"description\": \"Lorem ipsum dolor sit amet\",\n                    \"priceMetadata\": {\n                        \"priceType\": \"PRICE\",\n                        \"multiplicationFactor\": 1.5\n                    },\n                    \"createdAt\": \"2023-03-17T06:37:27Z\",\n                    \"updatedAt\": \"2023-03-17T07:37:27Z\",\n                    \"displayMode\": \"SUFFIX\",\n                    \"metadata\": {\n                        \"enabled\": true\n                    }\n                }\n            }\n        }\n    ]\n}\n","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v1/partnermenu/{{partnername}}/location/{{rid}}/menus"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"requestId\": 206,\n    \"itemStatus\": [\n        {\n            \"itemId\": \"1\",\n            \"sequenceId\": 205,\n            \"status\": \"Processing\"\n        }\n    ],\n    \"totalItems\": 1,\n    \"totalProcessedItems\": 1,\n    \"created\": \"2023-04-02T20:43:32.578478Z\"\n}"}],"_postman_id":"abf080a3-11c4-4726-af4c-54ba1bc5c403"}],"id":"b07ec18e-70a1-4347-bdd7-cebc5943a03d","description":"<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>This API allows OpenTable restaurants to integrate with 3rd party menus. This functionality allows restaurants to source menus from their preferred menu providers and have them available in OpenTable. Once integrated, the menus are kept in sync with the partner at all times. Restaurants will also be able to choose which menus they would like to display on their profile page as well as modify the order of the menus shown.</p>\n<h4 id=\"exposing-a-menu-on-opentable-for-restaurants\"><strong>Exposing a Menu on OpenTable for Restaurants:</strong></h4>\n<p>This API allows restaurants to view and publish partner menus on OpenTable. The ability to publish and order the menu(s) lives in OpenTable’s back of house functionality.</p>\n<p>Detailed below: OpenTable for Restaurants Menu management section</p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXchmLySQ4Qh3o0jfeV88geksp51kDYldHs_I8Bov-IGAl15BCOs5Y-i0frSSwJBU18PXFchSPn8Ut-irx56jFwK2X2aMlfVfb0fkasYJkDXS0ixZGPKvqFzF0G3QvUTeTwbSjOH0ufMdyCNmhNnzOYDMRA?key=L3GeeWxR_7y13hkkfv8K8A\" />\n\n<p>The Restaurant will also be able to preview their menu in web and mobile format.</p>\n<p>Detailed below: Menu previews</p>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXd89RSomqLip5KLwzAVuVZUg8Ia3c-ZNV_QOOsbmcLq3nmMv6UNSsG1kb0RrujpbIKQFGHu4-NjNjCPPP_Yqta-4gb2SeAeLFEXB4RzDDDeE2fcajXHZ9MW5b6EU0vG-jF4FYjpNUFE-9P7BOe4YxsdPw?key=L3GeeWxR_7y13hkkfv8K8A\" />\n\n<p>These menus will also be exposed on the OpenTable marketplace</p>\n<p>Detailed below: OpenTable marketplace profile page with menu</p>\n","_postman_id":"b07ec18e-70a1-4347-bdd7-cebc5943a03d"},{"name":"Access Menus","item":[{"name":"Get All Menus by Restaurant ID","id":"ea0ee001-de1c-4f49-abd2-a7afdf80a623","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"connection":true,"accept-encoding":true,"accept":true,"user-agent":true,"host":true}},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"{base-url}/v1/menus/rid/{rid}","description":"<h1 id=\"get-all-menus-by-restaurant-id\">Get All Menus by Restaurant ID</h1>\n<p>Retrieves all menus configured for a specific restaurant. The response may contain either:</p>\n<ul>\n<li><p>A <strong>direct URL to the restaurant’s web menu</strong>, or</p>\n</li>\n<li><p>A <strong>list of structured native menus</strong> including their groups, items, modifier groups, and modifiers.</p>\n</li>\n</ul>\n<h1 id=\"description\">Description</h1>\n<p>This API fetches all menus associated with a given restaurant ID.</p>\n<p>Depending on how the restaurant menu is configured, the response may include:</p>\n<ol>\n<li><p><strong>restaurantMenuUrl</strong> – A direct link to the restaurant's hosted web menu.</p>\n</li>\n<li><p><strong>menus</strong> – A list of structured native menus defined within the platform.</p>\n</li>\n</ol>\n<p>If a restaurant uses a <strong>web-hosted menu</strong>, the <code>menus</code> array will be empty and the <code>restaurantMenuUrl</code> field will contain the link.</p>\n<p>If a restaurant uses <strong>native menus</strong>, the <code>menus</code> array will contain complete menu structures.</p>\n<h1 id=\"description-1\">Description</h1>\n<p>This API fetches all menus associated with a given restaurant ID.</p>\n<p>Depending on how the restaurant menu is configured, the response may include:</p>\n<ol>\n<li><p><strong>restaurantMenuUrl</strong> – A direct link to the restaurant's hosted web menu.</p>\n</li>\n<li><p><strong>menus</strong> – A list of structured native menus defined within the platform.</p>\n</li>\n</ol>\n<p>If a restaurant uses a <strong>web-hosted menu</strong>, the <code>menus</code> array will be empty and the <code>restaurantMenuUrl</code> field will contain the link.</p>\n<p>If a restaurant uses <strong>native menus</strong>, the <code>menus</code> array will contain complete menu structures.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>Yes</td>\n<td>Unique identifier of the restaurant</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"menu-structure\">Menu Structure</h1>\n<p>Each entry in the <code>menus</code> array represents a <strong>complete menu hierarchy</strong>, including:</p>\n<ul>\n<li><p>Menu metadata</p>\n</li>\n<li><p>Groups (menu categories)</p>\n</li>\n<li><p>Items</p>\n</li>\n<li><p>Modifier groups</p>\n</li>\n<li><p>Modifiers</p>\n</li>\n</ul>\n<p>This structure allows clients to reconstruct the full menu with all relationships.</p>\n","urlObject":{"path":["v1","menus","rid","{rid}"],"host":["{base-url}"],"query":[],"variable":[]}},"response":[{"id":"4046bc1d-2e74-488a-89ad-3c21aaeeb98c","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer 0f2ff294-496b-4294-aaa6-f3fec31f908b","disabled":true},{"key":"Cookie","value":"ak_bmsc=13F3EA593818AB549DBF58F7864B6873~000000000000000000000000000000~YAAQPq3OF4dzsOWcAQAAt2uq8h9PiQef954l+zi4ZaOUO9hQ4K6JJ3enZVc6RvIenuF3CJ9ly6nopMF1GcyYG2K5qi3bGknRmlFXO60MQzVhvxTd85fgNF8T44MFneO05e5M1FJ9R1d9JVMOkkH7IW8+rRYEWcSgfpJaCWuq8g1fC1sJnMSLI5wN2MrLvpyLIAAZ+oPe9zY1MJP/mnp/DgZd2jJ/sMe89+09gCh08g0YPjujlXJWISFFf3GQFlQSEVhFTZZh+d9hEATQNNlGLZ2+sO2HZOJ46xsanDp5GQSeYhfXh4w0k4EqTcwgTPb5U/XkUFDQKyjUbH6GqBovdHJ28Ht/6yyZGBwGS+hQA9k=; bm_sv=044A4770C36D0A06F1515E828C041518~YAAQxVM2Fx11UeWcAQAANoS18h+vOIRzPzGZSe5nFxNRzQXIbGuG58r7HwNOIuRx17HyOXGhJ7J0OYrNn2IqPKh2mlcagxfIegjjySXb0gxA3Er8au4YxgbxSS8Htbeea6GD6sOtFGmeoaE0RrMsW47JcPJ0bf2d+GXokFgR8SfjOECmNkrawOzcMATCGZQ3A8zUJ6VAPIqlgsdJOJEqTOcmfk//Oz8TzEm7ljN+57WYnY3RDTAzUfzczSczF2I68Nfr~1; otuvid=63155CAD-FC36-40BD-8B58-5E2F0AAD8AB6","disabled":true}],"url":"https://platform.opentable.com/v1/menus/rid/1435321"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"f8ea7d0d-c2e9-48fa-9ec6-9552c2ae3663"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"63155CAD-FC36-40BD-8B58-5E2F0AAD8AB6"},{"key":"ot-sessionid","value":"9a723d11-48c2-4cf9-a18e-54f0b9776402"},{"key":"Content-Type","value":"application/json"},{"key":"x-ot-backend","value":"menusReadService"},{"key":"x-ot-uritemplate","value":"/menusReadService/api/v1/restaurants/flattened-menu/{rid}"},{"key":"x-envoy-upstream-service-time","value":"223"},{"key":"Content-Encoding","value":"gzip"},{"key":"Content-Length","value":"1988"},{"key":"Expires","value":"Mon, 16 Mar 2026 11:10:05 GMT"},{"key":"Cache-Control","value":"max-age=0, no-cache, no-store"},{"key":"Pragma","value":"no-cache"},{"key":"Date","value":"Mon, 16 Mar 2026 11:10:05 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=93E09010D3040F0E04B07E77AD03625D~YAAQFa3OF064kracAQAAsrxW9h9CuoaTWlFj0AxW+3QGvR1ID1HVrbd+HShWriPO3/rqvkRAdnIpYo5+LQqqQ9lZLhUoPlfJf7umGHMcjCCwIEumsTWwrJl5Q0ZESin7tLasVuE06uO4C7eCfIQ5kbsCXIpM32VtzI2Zzh/GdtHfcEETAYkuUSP1y28wvU5dWvKJFxUDNppFjTVhNfLs54gsl4JGdH4sLLLh2bO3NiXiK0U/cdZcc0UX90PUOc4897QA~1; Domain=.opentable.com; Path=/; Expires=Mon, 16 Mar 2026 13:06:03 GMT; Max-Age=6958; SameSite=None; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"rid\": 1435321,\n    \"menus\": [\n        {\n            \"menu\": {\n                \"id\": \"05c4f607-8162-442f-a9f6-f6357d286d78\",\n                \"name\": \"Happy Hour\",\n                \"description\": \"Daily, 3pm - 6pm & 9pm - close + All Day, Tuesdays\",\n                \"currency\": \"USD\",\n                \"updatedAt\": \"2026-02-20T21:42:47.812\",\n                \"ordinal\": 1,\n                \"groups\": [\n                    \"12ed7fb6-7bc5-4c18-8b95-51996088cc71\",\n                    \"5ee8d10a-3a3c-4fb7-bbbc-224d57c3f5c3\"\n                ]\n            },\n            \"groups\": [\n                {\n                    \"id\": \"12ed7fb6-7bc5-4c18-8b95-51996088cc71\",\n                    \"name\": \"From the Cocina\",\n                    \"ordinal\": 100,\n                    \"items\": [\n                        \"06500e7f-e48b-4317-8ab3-9150369c9c44\",\n                        \"692d4fc3-5481-4384-bb69-315c825576b5\",\n                        \"2bc6d339-4a80-4079-9979-99202d42dace\",\n                        \"33f05b45-450d-48bf-b15b-9d2fa5732fff\",\n                        \"86bfd600-0231-46ca-81cf-bc5765704d1d\"\n                    ]\n                },\n                {\n                    \"id\": \"5ee8d10a-3a3c-4fb7-bbbc-224d57c3f5c3\",\n                    \"name\": \"From the Bar\",\n                    \"ordinal\": 200,\n                    \"items\": [\n                        \"1d218933-83cd-4638-b155-fdf48e7e8e25\",\n                        \"ebae4aca-ca8b-41cb-a795-35730ee67917\",\n                        \"7797893f-1e33-44e1-8491-b5582d2bb7c8\",\n                        \"7bdd5152-cd21-42ea-941f-bdfe4658471e\",\n                        \"b0f084f9-3637-4b78-8354-6f0faa4e7613\"\n                    ]\n                }\n            ],\n            \"items\": [\n                {\n                    \"id\": \"692d4fc3-5481-4384-bb69-315c825576b5\",\n                    \"name\": \"Cachetada\",\n                    \"description\": \"cheese crusted tortilla\",\n                    \"ordinal\": 200,\n                    \"price\": {\n                        \"amount\": 6.25\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"2bc6d339-4a80-4079-9979-99202d42dace\",\n                    \"name\": \"Queso Fundido\",\n                    \"description\": \"melted manchego cheese / served with corn and flour tortillas\",\n                    \"ordinal\": 300,\n                    \"price\": {\n                        \"amount\": 6.5\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": [\n                        \"cccd5232-8ed8-49a4-ae5c-2eebced5385d\"\n                    ]\n                },\n                {\n                    \"id\": \"7bdd5152-cd21-42ea-941f-bdfe4658471e\",\n                    \"name\": \"Chile Pineapple Mango Margarita\",\n                    \"description\": \"Monte Alban Blanco / Ancho Reyes Chile / Pineapple / Mango / Lime\",\n                    \"ordinal\": 500,\n                    \"price\": {\n                        \"amount\": 10\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"b0f084f9-3637-4b78-8354-6f0faa4e7613\",\n                    \"name\": \"Tequila & Beer\",\n                    \"description\": \"Corazón Blanco & Modelo Especial\",\n                    \"ordinal\": 600,\n                    \"price\": {\n                        \"amount\": 11\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"33f05b45-450d-48bf-b15b-9d2fa5732fff\",\n                    \"name\": \"Churros\",\n                    \"description\": \"chocolate sauce / cajeta\",\n                    \"ordinal\": 400,\n                    \"price\": {\n                        \"amount\": 6\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"06500e7f-e48b-4317-8ab3-9150369c9c44\",\n                    \"name\": \"Guacamole\",\n                    \"ordinal\": 100,\n                    \"price\": {\n                        \"amount\": 8.25\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"7797893f-1e33-44e1-8491-b5582d2bb7c8\",\n                    \"name\": \"LP Margarita\",\n                    \"description\": \"Monte Alban Silver tequila / agave / lime / Cointreau ($7 on Taco Tuesday)\",\n                    \"ordinal\": 400,\n                    \"price\": {\n                        \"amount\": 8.5\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"ebae4aca-ca8b-41cb-a795-35730ee67917\",\n                    \"name\": \"Wine by the glass\",\n                    \"description\": \"House Red or White\",\n                    \"ordinal\": 300,\n                    \"price\": {\n                        \"amount\": 7.5\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"86bfd600-0231-46ca-81cf-bc5765704d1d\",\n                    \"name\": \"À la Carte Tacos\",\n                    \"description\": \"Ribeye / Carnitas / Chicken Tinga / Street Corn ($3 each on Taco Tuesday)\",\n                    \"ordinal\": 500,\n                    \"price\": {\n                        \"amount\": 4.25\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"1d218933-83cd-4638-b155-fdf48e7e8e25\",\n                    \"name\": \"Draft Beer\",\n                    \"description\": \"\",\n                    \"ordinal\": 200,\n                    \"price\": {\n                        \"amount\": 6\n                    },\n                    \"tags\": [],\n                    \"modifierGroups\": [\n                        \"1dd57f8a-1546-4def-b6ef-5d28fb806d2d\"\n                    ]\n                }\n            ],\n            \"modifierGroups\": [\n                {\n                    \"id\": \"1dd57f8a-1546-4def-b6ef-5d28fb806d2d\",\n                    \"name\": \"Make it a Michelada\",\n                    \"ordinal\": 200,\n                    \"minChoices\": 1,\n                    \"maxChoices\": 1,\n                    \"modifiers\": [\n                        \"b20b34e8-ad0c-43a5-8cb7-b67f3dd88613\"\n                    ]\n                },\n                {\n                    \"id\": \"cccd5232-8ed8-49a4-ae5c-2eebced5385d\",\n                    \"name\": \"Chorizo\",\n                    \"ordinal\": 100,\n                    \"minChoices\": 1,\n                    \"maxChoices\": 1,\n                    \"modifiers\": [\n                        \"e9340049-5715-4981-ac05-302399556d3e\"\n                    ]\n                }\n            ],\n            \"modifiers\": [\n                {\n                    \"id\": \"e9340049-5715-4981-ac05-302399556d3e\",\n                    \"name\": \"Chorizo\",\n                    \"ordinal\": 0,\n                    \"price\": {\n                        \"amount\": 3\n                    }\n                },\n                {\n                    \"id\": \"b20b34e8-ad0c-43a5-8cb7-b67f3dd88613\",\n                    \"name\": \"Make it a Michelada\",\n                    \"ordinal\": 0,\n                    \"price\": {\n                        \"amount\": 1\n                    }\n                }\n            ]\n        },\n        {\n            \"menu\": {\n                \"id\": \"cdad1e9a-f269-4981-9173-50728be964df\",\n                \"name\": \"Lunch Menu ($25 per guest)\",\n                \"description\": \"Monday - Friday, 11am - 2pm\",\n                \"currency\": \"USD\",\n                \"updatedAt\": \"2026-02-20T21:42:47.811\",\n                \"ordinal\": 2,\n                \"groups\": [\n                    \"3f7411b1-e82b-4353-978f-82f2d67efb92\",\n                    \"e40966a0-9511-47ac-b05f-672e62c1123c\"\n                ]\n            },\n            \"groups\": [\n                {\n                    \"id\": \"3f7411b1-e82b-4353-978f-82f2d67efb92\",\n                    \"name\": \"Starter\",\n                    \"description\": \"Choice of one\",\n                    \"ordinal\": 200,\n                    \"items\": [\n                        \"fa8d9df2-6219-4e74-89bf-df31eb5538e9\",\n                        \"93c9f258-5105-438b-b5f8-9ea3af2be739\",\n                        \"baa68d08-9833-425b-8a08-291dd12920bf\"\n                    ]\n                },\n                {\n                    \"id\": \"e40966a0-9511-47ac-b05f-672e62c1123c\",\n                    \"name\": \"Entrée\",\n                    \"description\": \"Choice of one\",\n                    \"ordinal\": 100,\n                    \"items\": [\n                        \"64ea6966-6283-48b1-b117-ffce2440eef5\",\n                        \"28e2935b-61c2-4ed2-8cf1-1896828d146e\",\n                        \"feb6e710-4179-4ac5-bf02-5bc48e8b4d39\",\n                        \"41ba5fb1-6d66-4d50-96d6-f5047425622f\"\n                    ]\n                }\n            ],\n            \"items\": [\n                {\n                    \"id\": \"41ba5fb1-6d66-4d50-96d6-f5047425622f\",\n                    \"name\": \"Tacos\",\n                    \"description\": \"CARNITAS, CHICKEN TINGA, STEET CORN or RIBEYE served with rice and beans\",\n                    \"ordinal\": 300,\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"28e2935b-61c2-4ed2-8cf1-1896828d146e\",\n                    \"name\": \"Torta\",\n                    \"description\": \"SHAVED RIBEYE, CHICKEN, or CARNITAS shredded lettuce / guacamole / pico de gallo / queso fresco / chipotle aioli / tajín fries\",\n                    \"ordinal\": 100,\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"feb6e710-4179-4ac5-bf02-5bc48e8b4d39\",\n                    \"name\": \"Enchiladas\",\n                    \"description\": \"SUIZA CHICKEN or QUESO cheese blend / crema / cilantro / guacamole / red onion\",\n                    \"ordinal\": 200,\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"baa68d08-9833-425b-8a08-291dd12920bf\",\n                    \"name\": \"Tortilla Soup\",\n                    \"description\": \"chicken / fried ancho chiles / tortilla strips / avocado / chicharrón / queso fresco / lime\",\n                    \"ordinal\": 200,\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"fa8d9df2-6219-4e74-89bf-df31eb5538e9\",\n                    \"name\": \"Queso Fundido\",\n                    \"description\": \"melted cheese blend / corn & flour tortillas\",\n                    \"ordinal\": 0,\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"64ea6966-6283-48b1-b117-ffce2440eef5\",\n                    \"name\": \"Corn Off the Cob Salad\",\n                    \"description\": \"STEAK or CHICKEN lettuce mix / corn / sweet peppers / cilantro / avocado / cotija / corn nuts / lime vinaigrette\",\n                    \"ordinal\": 0,\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                },\n                {\n                    \"id\": \"93c9f258-5105-438b-b5f8-9ea3af2be739\",\n                    \"name\": \"Guacamole\",\n                    \"ordinal\": 100,\n                    \"tags\": [],\n                    \"modifierGroups\": []\n                }\n            ],\n            \"modifierGroups\": [],\n            \"modifiers\": []\n        }\n    ]\n}"}],"_postman_id":"ea0ee001-de1c-4f49-abd2-a7afdf80a623"},{"name":"GET MENU BY ID","id":"fa9bf88b-b19a-4a49-b308-b125e67c5e07","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"host":true,"user-agent":true,"accept":true,"connection":true,"accept-encoding":true}},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"{base-url}/v1/menus/rid/{rid}/menu/{menu-id}","description":"<h1 id=\"get-menu-by-id\">Get Menu by ID</h1>\n<p>Retrieves the complete details of a specific menu for a given restaurant. The response includes the menu structure along with its groups, items, modifier groups, and modifiers.</p>\n<h2 id=\"description\">Description</h2>\n<p>This API returns the full menu structure for a restaurant based on the provided <strong>restaurant ID (<strong><strong><code>rid</code></strong></strong>)</strong> and <strong>menu ID (<strong><strong><code>menu-id</code></strong></strong>)</strong>.</p>\n<p>The response includes:</p>\n<ul>\n<li><p>Menu metadata</p>\n</li>\n<li><p>Menu groups (categories)</p>\n</li>\n<li><p>Menu items</p>\n</li>\n<li><p>Modifier groups</p>\n</li>\n<li><p>Modifiers</p>\n</li>\n</ul>\n<p>This allows clients to reconstruct the entire menu hierarchy for display or processing.</p>\n<h2 id=\"path-parameters\">Path Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>Yes</td>\n<td>Unique identifier of the restaurant</td>\n</tr>\n<tr>\n<td><code>menu-id</code></td>\n<td>string (UUID)</td>\n<td>Yes</td>\n<td>Unique identifier of the menu</td>\n</tr>\n</tbody>\n</table>\n</div><p>Example Request</p>\n<p>GET <a href=\"https://platform.opentable.com/v1/menus/rid/12345/menu/550e8400-e29b-41d4-a716-446655440000\">{base-url}/v1/menus/rid/{RID}/menu/</a>{menu-id}</p>\n<h1 id=\"error-responses\">Error Responses</h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401 Unauthorized</td>\n<td>Authentication token is missing or invalid</td>\n</tr>\n<tr>\n<td>404 Not Found</td>\n<td>The specified restaurant or menu could not be found</td>\n</tr>\n<tr>\n<td>429 Too Many Requests</td>\n<td>Request rate limit exceeded</td>\n</tr>\n<tr>\n<td>500 Internal Server Error</td>\n<td>An unexpected server error occurred</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","menus","rid","{rid}","menu","{menu-id}"],"host":["{base-url}"],"query":[],"variable":[]}},"response":[{"id":"3a51b2f7-1571-4bb3-a10a-1dfbddca2d4c","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer 0f2ff294-496b-4294-aaa6-f3fec31f908b","disabled":true},{"key":"Cookie","value":"ak_bmsc=13F3EA593818AB549DBF58F7864B6873~000000000000000000000000000000~YAAQPq3OF4dzsOWcAQAAt2uq8h9PiQef954l+zi4ZaOUO9hQ4K6JJ3enZVc6RvIenuF3CJ9ly6nopMF1GcyYG2K5qi3bGknRmlFXO60MQzVhvxTd85fgNF8T44MFneO05e5M1FJ9R1d9JVMOkkH7IW8+rRYEWcSgfpJaCWuq8g1fC1sJnMSLI5wN2MrLvpyLIAAZ+oPe9zY1MJP/mnp/DgZd2jJ/sMe89+09gCh08g0YPjujlXJWISFFf3GQFlQSEVhFTZZh+d9hEATQNNlGLZ2+sO2HZOJ46xsanDp5GQSeYhfXh4w0k4EqTcwgTPb5U/XkUFDQKyjUbH6GqBovdHJ28Ht/6yyZGBwGS+hQA9k=; bm_sv=044A4770C36D0A06F1515E828C041518~YAAQvlI2F0FjKLecAQAAKh+t8h9PwqY2e5pl8nyFVMaRHspE6JUATR01/vJ5Jgp5hvMUx8G9D0eE9pSrB6fsVsJR0QL8KqJ2mqjRnKQWAkoS+rOIPbOMjRepkqLbKbVfASBCxq6shaZgvZWjmlop4AjYFf25+0xmFNBVnypOL5Tfhm+9WfpSqXE2kJAxFDrYZwSmvZU8P+xsklcFZz3JiIk3eWjsCEKzQHAkAzg2RxCnQDoDyiQ+iWpvSGeQJHITMFsG~1; otuvid=63155CAD-FC36-40BD-8B58-5E2F0AAD8AB6","disabled":true}],"url":"https://platform.opentable.com/v1/menus/rid/1435321//menu/cdad1e9a-f269-4981-9173-50728be964df"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"27887e61-e508-46b7-82a9-4463908894a6"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"63155CAD-FC36-40BD-8B58-5E2F0AAD8AB6"},{"key":"ot-sessionid","value":"eb9068b3-2aa6-45c7-a3c2-331de01c1ce5"},{"key":"Content-Type","value":"application/json"},{"key":"x-ot-backend","value":"menusReadService"},{"key":"x-ot-uritemplate","value":"/menusReadService/api/v1/restaurants/flattened-menu/{rid}/menu/{menuId}"},{"key":"x-envoy-upstream-service-time","value":"254"},{"key":"Content-Encoding","value":"gzip"},{"key":"Content-Length","value":"942"},{"key":"Expires","value":"Mon, 16 Mar 2026 11:06:03 GMT"},{"key":"Cache-Control","value":"max-age=0, no-cache, no-store"},{"key":"Pragma","value":"no-cache"},{"key":"Date","value":"Mon, 16 Mar 2026 11:06:03 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=93E09010D3040F0E04B07E77AD03625D~YAAQBf7UF4fTXuScAQAAwgtT9h/fdgs+II2tiNx9YDjtqh+Z2xyuUmMcBRzy98w2xguTAG5E8ZUh9+ldkEB8LxmEnfvk2jMoGo6rzHwhmPFS0++dpKCqcWXp2WofsFS6d67DZWwZmYQ3c75pTyIpdt0VmpdhYuSbL+e4K0RaLe0u/uEVx4wkt4USEf5XVZ+abuye6bA0VomVrCSLDp3XvzXcUb/wRr5XS4gCL/Q18lvDgwzN6RlLB2HjrZ98umkggcuf~1; Domain=.opentable.com; Path=/; Expires=Mon, 16 Mar 2026 13:06:03 GMT; Max-Age=7200; SameSite=None; Secure"}],"cookie":[],"responseTime":null,"body":"{\n    \"menu\": {\n        \"id\": \"cdad1e9a-f269-4981-9173-50728be964df\",\n        \"name\": \"Lunch Menu ($25 per guest)\",\n        \"description\": \"Monday - Friday, 11am - 2pm\",\n        \"currency\": \"USD\",\n        \"updatedAt\": \"2026-02-20T21:42:47.811\",\n        \"ordinal\": 2,\n        \"groups\": [\n            \"3f7411b1-e82b-4353-978f-82f2d67efb92\",\n            \"e40966a0-9511-47ac-b05f-672e62c1123c\"\n        ]\n    },\n    \"groups\": [\n        {\n            \"id\": \"3f7411b1-e82b-4353-978f-82f2d67efb92\",\n            \"name\": \"Starter\",\n            \"description\": \"Choice of one\",\n            \"ordinal\": 200,\n            \"items\": [\n                \"fa8d9df2-6219-4e74-89bf-df31eb5538e9\",\n                \"93c9f258-5105-438b-b5f8-9ea3af2be739\",\n                \"baa68d08-9833-425b-8a08-291dd12920bf\"\n            ]\n        },\n        {\n            \"id\": \"e40966a0-9511-47ac-b05f-672e62c1123c\",\n            \"name\": \"Entrée\",\n            \"description\": \"Choice of one\",\n            \"ordinal\": 100,\n            \"items\": [\n                \"64ea6966-6283-48b1-b117-ffce2440eef5\",\n                \"28e2935b-61c2-4ed2-8cf1-1896828d146e\",\n                \"feb6e710-4179-4ac5-bf02-5bc48e8b4d39\",\n                \"41ba5fb1-6d66-4d50-96d6-f5047425622f\"\n            ]\n        }\n    ],\n    \"items\": [\n        {\n            \"id\": \"41ba5fb1-6d66-4d50-96d6-f5047425622f\",\n            \"name\": \"Tacos\",\n            \"description\": \"CARNITAS, CHICKEN TINGA, STEET CORN or RIBEYE served with rice and beans\",\n            \"ordinal\": 300,\n            \"tags\": [],\n            \"modifierGroups\": []\n        },\n        {\n            \"id\": \"28e2935b-61c2-4ed2-8cf1-1896828d146e\",\n            \"name\": \"Torta\",\n            \"description\": \"SHAVED RIBEYE, CHICKEN, or CARNITAS shredded lettuce / guacamole / pico de gallo / queso fresco / chipotle aioli / tajín fries\",\n            \"ordinal\": 100,\n            \"tags\": [],\n            \"modifierGroups\": []\n        },\n        {\n            \"id\": \"feb6e710-4179-4ac5-bf02-5bc48e8b4d39\",\n            \"name\": \"Enchiladas\",\n            \"description\": \"SUIZA CHICKEN or QUESO cheese blend / crema / cilantro / guacamole / red onion\",\n            \"ordinal\": 200,\n            \"tags\": [],\n            \"modifierGroups\": []\n        },\n        {\n            \"id\": \"baa68d08-9833-425b-8a08-291dd12920bf\",\n            \"name\": \"Tortilla Soup\",\n            \"description\": \"chicken / fried ancho chiles / tortilla strips / avocado / chicharrón / queso fresco / lime\",\n            \"ordinal\": 200,\n            \"tags\": [],\n            \"modifierGroups\": []\n        },\n        {\n            \"id\": \"fa8d9df2-6219-4e74-89bf-df31eb5538e9\",\n            \"name\": \"Queso Fundido\",\n            \"description\": \"melted cheese blend / corn & flour tortillas\",\n            \"ordinal\": 0,\n            \"tags\": [],\n            \"modifierGroups\": []\n        },\n        {\n            \"id\": \"64ea6966-6283-48b1-b117-ffce2440eef5\",\n            \"name\": \"Corn Off the Cob Salad\",\n            \"description\": \"STEAK or CHICKEN lettuce mix / corn / sweet peppers / cilantro / avocado / cotija / corn nuts / lime vinaigrette\",\n            \"ordinal\": 0,\n            \"tags\": [],\n            \"modifierGroups\": []\n        },\n        {\n            \"id\": \"93c9f258-5105-438b-b5f8-9ea3af2be739\",\n            \"name\": \"Guacamole\",\n            \"ordinal\": 100,\n            \"tags\": [],\n            \"modifierGroups\": []\n        }\n    ],\n    \"modifierGroups\": [],\n    \"modifiers\": []\n}"}],"_postman_id":"fa9bf88b-b19a-4a49-b308-b125e67c5e07"}],"id":"d2d6aa8d-a8d9-4111-9811-1058b23c52a1","description":"<h3 id=\"overview\"><strong>Overview</strong></h3>\n<p>The Access Menus functionality allows partners to retrieve restaurant menu data from OpenTable for use in their own applications, such as websites, mobile apps, or ordering experiences. This is done via GET endpoints that return structured menu data, enabling partners to display menu items, categories, descriptions, and pricing in a consistent and scalable way. This supports a range of use cases, from enhancing restaurant discovery experiences to powering downstream integrations like ordering or guest engagement.</p>\n<p>Menu availability is dependent on each restaurant’s configuration and OpenTable’s distribution rights. As a result, responses may not always include a restaurant’s full menu, and some restaurants may not return menu data at all. Partners should design their integrations to gracefully handle partial or missing data, and avoid assuming full menu coverage across all restaurants.</p>\n","_postman_id":"d2d6aa8d-a8d9-4111-9811-1058b23c52a1"}],"id":"189b21a3-c5f0-4ecf-a60e-9e8be41befcd","description":"<p>The Menus APIs provide flexible integration options for managing restaurant menus within OpenTable. Partners can:</p>\n<ul>\n<li><p><strong>Publish menus</strong> by submitting menu data directly to OpenTable</p>\n</li>\n<li><p><strong>Access menus</strong> by retrieving available menu data for supported restaurants</p>\n</li>\n</ul>\n","_postman_id":"189b21a3-c5f0-4ecf-a60e-9e8be41befcd"},{"name":"POS API","item":[{"name":"APIs","item":[{"name":"POS Tickets API","id":"119fa4c7-f03a-4805-875e-761971cd5328","protocolProfileBehavior":{"disabledSystemHeaders":{"content-type":true},"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"timestamp\": \"2024-11-07T14:20:12.000+00:00\",\n  \"operation\": \"update\",\n  \"ticket\": {\n    \"ticket_id\": \"abcd12345\",\n    \"ticket_number\": \"123456\",\n    \"opened_at\": \"2024-11-07T14:20:12.000+00:00\",\n    \"updated_at\": \"2024-11-07T14:20:12.000+00:00\",\n    \"closed_at\": null,\n    \"party_size\": 3,\n    \"order_type\": \"Order in\",\n    \"order_items\": [\n      {\n        \"id\": \"12345\",\n        \"name\": \"Cioppino\",\n        \"price\": 1200,\n        \"quantity\": 1,\n        \"sent_at\": \"2023-04-21T01:12:12.000+00:00\",\n        \"status\": \"sent\",\n        \"item\": {\n          \"id\": \"100\",\n          \"name\": \"Cioppino\",\n          \"price\": 1200,\n          \"categories\": [\n                    {\n                    \"id\": \"99\",\n                    \"name\": \"SEAFOOD\",\n                    \"level\": 2,\n                    \"parent_menu_category\": {\n                        \"id\": \"16\",\n                        \"name\": \"MAINS\",\n                        \"level\": 1,\n                        \"parent_menu_category\": {\n                            \"id\": \"1\",\n                            \"name\": \"FOOD\",\n                            \"level\": 0\n                    }\n                }\n            }\n        ],\n          \"open\": false\n        },\n        \"modifiers\": [],\n        \"server_note\": null\n      },\n      {\n        \"id\": \"15754\",\n        \"name\": \"French Fries\",\n        \"price\": 700,\n        \"quantity\": 2,\n        \"sent_at\": \"2018-07-26T14:10:12.000+00:00\",\n        \"status\": \"sent\",\n        \"item\": {\n          \"id\": \"110\",\n          \"name\": \"French Fries\",\n          \"price\": 350,\n          \"categories\": [\n                    {\n                    \"id\": \"98\",\n                    \"name\": \"EXTRAS\",\n                    \"level\": 2,\n                    \"parent_menu_category\": {\n                        \"id\": \"15\",\n                        \"name\": \"SIDES\",\n                        \"level\": 1,\n                        \"parent_menu_category\": {\n                            \"id\": \"1\",\n                            \"name\": \"FOOD\",\n                            \"level\": 0\n                    }\n                }\n            }\n        ],\n          \"open\": false\n        },\n        \"modifiers\": [],\n        \"server_note\": null\n      }\n    ],\n    \"check_total\": {\n      \"items_total\": 1900,\n      \"tax\": 190,\n      \"service_charges\": 0,\n      \"other_charges\": 0,\n      \"menu_items\": 2,\n      \"discount\": 0,\n      \"sub_total\": 1900,\n      \"total\": 2090,\n      \"tip\": 0,\n      \"due\": 2090,\n      \"paid_amount\": 0\n    },\n    \"payment_info\": [],\n    \"revenue_center\": {\n      \"id\": \"112\",\n      \"name\": \"Dine-In\"\n    },\n    \"tables\": {\n      \"id\": \"121\",\n      \"name\": \"1\",\n      \"seats\": 2\n    },\n    \"check_links\": null,\n    \"employee\": {\n      \"id\": \"21382\",\n      \"firstname\": \"Trevor\",\n      \"lastname\": \"Parsons\"\n    },\n    \"notes\": null,\n    \"table_status\": \"entree\",\n    \"reservation_id\": \"60482a12-ce23-46e6-a41d-f16e922ced5c\",\n    \"is_open\": true,\n    \"void\": false\n  }\n}"},"url":"{{base-url}}/pos/locations/{{rid}}/tickets/","description":"<p><strong>Request headers:</strong></p>\n<ul>\n<li><p>Content</p>\n<ul>\n<li><p>Content-Encoding: gzip and zipped content (Preferred)</p>\n</li>\n<li><p>Content-Type: application/json (Supported)</p>\n</li>\n</ul>\n</li>\n<li><p>Authorization: bearer</p>\n</li>\n</ul>\n<p><strong>Response:</strong> application/json</p>\n<p>This API is the most crucial for the OpenTable POS Integration, as it powers most of the functionality. It's important to note that while some attributes are considered optional from a technical perspective,all attributes are required for the integration to work properly.</p>\n<p>API support:</p>\n<ul><li><div>POST ticket within an envelope with a delivery timestamp</div></li><li><div>Payload file size limit of 1 MB</div></li><li><div>UTC format required for all times within the tickets and the batch payload</div></li><li><div>Currency format:<a href=\"https://stripe.com/docs/currencies#zero-decimal\">https://stripe.com/docs/currencies#zero-decimal</a></div></li><li><div>API is asynchronous for faster performance</div></li></ul>\n\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>timestamp</code></td>\n<td>String (ISO 8601 with Zone, UTC)</td>\n<td>Delivery time of payload.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>operation</code></td>\n<td>String</td>\n<td>Accepted values are “add” and “update”</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>sequence_id</code></td>\n<td>Integer</td>\n<td>A monotonically increasing unique number that can be used for pagination/iteration when retrieving data.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>ticket</code></td>\n<td>Object</td>\n<td>See ticket</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"ticket\"><strong>ticket</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>ticket_id</code></td>\n<td>String</td>\n<td>Universally unique ID generated by the POS system.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>ticket_number</code></td>\n<td>String</td>\n<td>The assigned ticket number.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>opened_at</code></td>\n<td>String  <br />(ISO 8601 with Zone)</td>\n<td>Time when the ticket is opened.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>String  <br />(ISO 8601 with Zone)</td>\n<td>Time when the ticket is updated. Used to compare to previous iterations.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>closed_at</code></td>\n<td>String  <br />(ISO 8601 with Zone)</td>\n<td>Time when the ticket is closed.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>Integer</td>\n<td>Number of guests.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>order_type</code></td>\n<td>String</td>\n<td>Service type. E.g. “order in”, “take out”, “delivery”, “prepaid”, “family meal”.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>order_items</code></td>\n<td>Array</td>\n<td>Details of menu orders and items.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>check_total</code></td>\n<td>Object</td>\n<td>Total currency amount for all items.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>payment_info</code></td>\n<td>Array</td>\n<td>Payment information</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>revenue_center</code></td>\n<td>Object</td>\n<td>Revenue center</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>tables</code></td>\n<td>Object</td>\n<td>Table characteristics</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>check_links</code></td>\n<td>Object</td>\n<td>Association and type of link between checks such as split check parent &amp; merged check destination.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>employee</code></td>\n<td>Object</td>\n<td>Employee ID and/or name associated with ticket.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>reservation_id</code></td>\n<td>String</td>\n<td>Unique OpenTable for Restaurants reservation ID.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td>String</td>\n<td>Check notes visible to the diner on the printed check.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>table_status</code></td>\n<td>String</td>\n<td>Table status defined by the POS vendor. Values accepted include \"drinks\", \"appetizer\", \"entree\", \"dessert\", \"course_1\" ,\"course_2\", \"course_3\", \"course_4\", \"course_5\", \"course_6\", \"course_7\", \"course_8\", \"course_9\" ,\"course_10\", \"course_11\", \"course_12\", \"post_meal_drinks\", \"bottle_service\", \"paid\".  <br />  <br />Statuses are forward-moving only, with one of each status allowed per reservation.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>is_open</code></td>\n<td>Boolean</td>\n<td>Ticket is open = “true”.  <br />  <br />Ticket is closed = “false”.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>void</code></td>\n<td>Boolean</td>\n<td>Ticket is voided = “true”.  <br />Ticket is not voided = “false”.</td>\n<td>Optional</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"order_items\"><strong>order_items</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Universally unique ID generated by the POS system.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Item name. E.g. “California Burrito”.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>Total price of the item by quantity of item, expressed in USD cents. E.g. $2.13 = “213”.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>Quantity of the item.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>sent_at</code></td>\n<td>String  <br />  <br />(ISO 8601  <br />  <br />with Zone)</td>\n<td>Time the order is sent to the kitchen.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>Status of the item. E.g. “held”, “sent”, “fired”, “ready”. ticket table_status will not trigger if = “held”.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>item</code></td>\n<td>Object</td>\n<td>Menu item from which item is created. See item below</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>modifiers</code></td>\n<td>Array</td>\n<td>Item modifiers.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>server_note</code></td>\n<td>String</td>\n<td>Server entered note regarding the item.</td>\n<td>Optional</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"item\"><strong>item</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Unique item ID.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Item name. E.g. “California Burrito”.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>Price of item, expressed in USD cents. E.g. $2.13 = “213”.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>categories</code></td>\n<td>Array</td>\n<td>Categories to which item is associated for reporting and status. (Do not include POS UI menu organization groups here.)</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>open</code></td>\n<td>Boolean</td>\n<td>Ad hoc manually created item by the server = “true”.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>course</code></td>\n<td>Integer</td>\n<td>Course number for the item. E.g. “Course 1”, “Course 2”, etc.</td>\n<td>Optional</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"modifiers\"><strong>modifiers</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Unique modifier ID.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Name of the modifier.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>Price of the modifier.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>Quantity of modifier.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>item</code></td>\n<td>Object</td>\n<td>Menu item from which modifier is derived.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>open</code></td>\n<td>Boolean</td>\n<td>Ad hoc manually created modifier by the server = “true”.</td>\n<td>Optio<strong>nal</strong></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"check_total\"><strong>check_total</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>items_total</code></td>\n<td>Integer</td>\n<td>Sum of all item prices (pre-tax).</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>tax</code></td>\n<td>Integer</td>\n<td>Tax total.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>tip</code></td>\n<td>Integer</td>\n<td>Tip total.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>paid_amount</code></td>\n<td>Integer</td>\n<td>Amount paid.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>other_charges</code></td>\n<td>Integer</td>\n<td>Additional charges, surcharges, and fees.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>menu_items</code></td>\n<td>Integer</td>\n<td>Count of menu items.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>due</code></td>\n<td>Integer</td>\n<td>Remaining balance.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>discount</code></td>\n<td>Integer</td>\n<td>Discount applied to order total before tax.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>service_charges</code></td>\n<td>Integer</td>\n<td>Service charges of the ticket.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>sub_total</code></td>\n<td>Integer</td>\n<td>Total before tax: (items_total + other_charges - discounts).</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>total</code></td>\n<td>Integer</td>\n<td>The order total: (sub_total + service_charges + tax)</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"payment_info\"><strong>payment_info</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>amount</code></td>\n<td>Integer</td>\n<td>Total paid, before tips.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>tip</code></td>\n<td>Integer</td>\n<td>Tip paid.</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>String</td>\n<td>Type of payment accepted. E.g. “cash”, “credit card”, “gift card”, “house account”, “delivery service”, “other”.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>Currency  <br />  <br />(ISO 4217 currency code)</td>\n<td>Payment currency.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>paid_at</code></td>\n<td>String  <br />  <br />(ISO 8601 with Zone)</td>\n<td>Date and time of payment.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"revenue_center\"><strong>revenue_center</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Revenue center ID.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Revenue center name.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"tables\"><strong>tables</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Unique table ID in the POS.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Table name in POS (must exactly match the table name in OpenTable for Restaurants).</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>seats</code></td>\n<td>Integer</td>\n<td>Number of seats at the table.</td>\n<td>Optional</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"check_links\"><strong>check_links</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>link_ticket_id</code></td>\n<td>String</td>\n<td>Link to the ticket ID with an association.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>association_type</code></td>\n<td>String</td>\n<td>Definition of the link. E.g. “split check parent”, “merged check destination”.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"employee\"><strong>employee</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Employee ID.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>firstname</code></td>\n<td>String</td>\n<td>Employee first name.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>lastname</code></td>\n<td>String</td>\n<td>Employee last name.</td>\n<td>Optional</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["pos","locations","{{rid}}","tickets",""],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"38a75a90-aa4c-42b9-b429-adea9c6a14f6","name":"200","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Content-Encoding","value":"application/gzip","type":"text","disabled":true},{"key":"Authorization","value":"Bearer token","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"timestamp\": \"2024-11-07T14:20:12.000+00:00\",\n  \"operation\": \"update\",\n  \"ticket\": {\n    \"ticket_id\": \"abcd12345\",\n    \"ticket_number\": \"123456\",\n    \"opened_at\": \"2024-11-07T14:20:12.000+00:00\",\n    \"updated_at\": \"2024-11-07T14:20:12.000+00:00\",\n    \"closed_at\": null,\n    \"party_size\": 3,\n    \"order_type\": \"Order in\",\n    \"order_items\": [\n      {\n        \"id\": \"12345\",\n        \"name\": \"Cioppino\",\n        \"price\": 1200,\n        \"quantity\": 1,\n        \"sent_at\": \"2023-04-21T01:12:12.000+00:00\",\n        \"status\": \"sent\",\n        \"item\": {\n          \"id\": \"100\",\n          \"name\": \"Cioppino\",\n          \"price\": 1200,\n          \"categories\": [\n                    {\n                    \"id\": \"99\",\n                    \"name\": \"SEAFOOD\",\n                    \"level\": 2,\n                    \"parent_menu_category\": {\n                        \"id\": \"16\",\n                        \"name\": \"MAINS\",\n                        \"level\": 1,\n                        \"parent_menu_category\": {\n                            \"id\": \"1\",\n                            \"name\": \"FOOD\",\n                            \"level\": 0\n                    }\n                }\n            }\n        ],\n          \"open\": false\n        },\n        \"modifiers\": [],\n        \"server_note\": null\n      },\n      {\n        \"id\": \"15754\",\n        \"name\": \"French Fries\",\n        \"price\": 700,\n        \"quantity\": 2,\n        \"sent_at\": \"2018-07-26T14:10:12.000+00:00\",\n        \"status\": \"sent\",\n        \"item\": {\n          \"id\": \"110\",\n          \"name\": \"French Fries\",\n          \"price\": 350,\n          \"categories\": [\n                    {\n                    \"id\": \"98\",\n                    \"name\": \"EXTRAS\",\n                    \"level\": 2,\n                    \"parent_menu_category\": {\n                        \"id\": \"15\",\n                        \"name\": \"SIDES\",\n                        \"level\": 1,\n                        \"parent_menu_category\": {\n                            \"id\": \"1\",\n                            \"name\": \"FOOD\",\n                            \"level\": 0\n                    }\n                }\n            }\n        ],\n          \"open\": false\n        },\n        \"modifiers\": [],\n        \"server_note\": null\n      }\n    ],\n    \"check_total\": {\n      \"items_total\": 1900,\n      \"tax\": 190,\n      \"service_charges\": 0,\n      \"other_charges\": 0,\n      \"menu_items\": 2,\n      \"discount\": 0,\n      \"sub_total\": 1900,\n      \"total\": 2090,\n      \"tip\": 0,\n      \"due\": 2090,\n      \"paid_amount\": 0\n    },\n    \"payment_info\": [],\n    \"revenue_center\": {\n      \"id\": \"112\",\n      \"name\": \"Dine-In\"\n    },\n    \"tables\": {\n      \"id\": \"121\",\n      \"name\": \"1\",\n      \"seats\": 2\n    },\n    \"check_links\": null,\n    \"employee\": {\n      \"id\": \"21382\",\n      \"firstname\": \"Trevor\",\n      \"lastname\": \"Parsons\"\n    },\n    \"notes\": null,\n    \"table_status\": \"entree\",\n    \"reservation_id\": \"60482a12-ce23-46e6-a41d-f16e922ced5c\",\n    \"is_open\": true,\n    \"void\": false\n  }\n}"},"url":"{{base-url}}/pos/locations/{{rid}}/tickets/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"9f8f8d73-e2f9-4d54-8801-fc6e32c58e37"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"fa4fcfc3-ee2b-402c-ae61-b451b214d979"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"pdp"},{"key":"X-OT-UriTemplate","value":"/pdp/writeback/v2/pos/direct/rid/{id}/check"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 21 Feb 2025 02:11:16 GMT"},{"key":"Content-Length","value":"110"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"itemStatus\": [\n        {\n            \"itemId\": \"abcd12345:2024-11-07\",\n            \"status\": \"Processing\"\n        }\n    ],\n    \"totalItems\": 1,\n    \"totalProcessedItems\": 1\n}"}],"_postman_id":"119fa4c7-f03a-4805-875e-761971cd5328"},{"name":"POS Fetch Restaurants API","id":"ed6dda93-77f1-4b56-b6e9-e0207faace58","protocolProfileBehavior":{"disabledSystemHeaders":{},"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer [token]","type":"text"}],"url":"{{base-url}}/pos/restaurants","description":"<p><strong>Request headers:</strong></p>\n<ul>\n<li><p>Content-Type: application/json</p>\n</li>\n<li><p>Authorization: bearer</p>\n</li>\n</ul>\n<p>This is used for a POS Partner to know if a restaurant is available or online on the OpenTable partnership. This would be used after Onboarding to maintain an accurate list of restaurants. This will be considered optional functionality for the POS Partner.</p>\n","urlObject":{"path":["pos","restaurants"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"0c00dbac-b108-4cba-9900-7dd26ae58653","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer [token]","type":"text"}],"url":"{{base-url}}/pos/restaurants"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"8cc11712-7674-4a96-9bfc-f751060671f0"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"5f9f6a89-304b-4154-8099-6af169716afb"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"posRestaurantService"},{"key":"X-OT-UriTemplate","value":"/posRestaurantService/api/v1/pos/restaurants/all"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 21 Feb 2025 02:14:56 GMT"},{"key":"Content-Length","value":"217"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"ak_bmsc=3463BA8A2F5F898E431053FB11A4FC81~000000000000000000000000000000~YAAQrMgwFzVFvxSVAQAAeVpJJhqT4Q+RrwCMj6eV9YZ73di5fgE47UgzVvn5/Dj7JmO3MdDssZ1Es52ACr6QuguhqG9rakimmHM4CGWMuhrug8m41vdiT8Nq+EgNkb0MsSNgtEF57YplW/pGm3fvP5brV8anMVe8cU9+26gYbmv+IIxIU+ns2n4atOARAabg3Q6/39lJv0u68WbhTutL8R6hgbZRbfpkLCyonbQZL6+sA7bHj+2W61KirChF5M/IUM1uo+QcQsbiEWW1ybajDV3K+CBz9QK24YU8TpCruubKI2PPPtmUplAZsN23rw5WnSpMp5Y04qtml8MojOeOpNK2gcxxiN/FzVAbyvQ=; Domain=.opentable.com; Path=/; Expires=Fri, 21 Feb 2025 04:14:56 GMT; Max-Age=7200"}],"cookie":[],"responseTime":null,"body":"{\n    \"pos_restaurants\": [\n        {\n            \"rid\": 1234567,\n            \"restaurant_name\": \"Vogel's Bistro\",\n            \"source_location_id\": \"1234567\",\n            \"pos_type\": \"podbrand\",\n            \"status\": \"enabled\",\n            \"source_location_status\": \"online\",\n            \"datetime_of_first_check\": \"2023-11-28T02:46:00Z\",\n            \"datetime_of_last_check\": \"2025-02-11T17:41:00Z\"\n        }\n    ],\n    \"total\": 1\n}"}],"_postman_id":"ed6dda93-77f1-4b56-b6e9-e0207faace58"},{"name":"POS Status API","id":"688d75fe-5a31-482c-aafc-04999ef3911e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"partner\": {\n    \"status\": \"online\",\n    \"cancel_reason\": null,\n    \"date_modified_utc\": \"2024-10-18T19:00:18.3878552Z\"\n  },\n  \"system_clock_time\": \"2024-10-18T19:00:18.3878552Z\"\n}"},"url":"{{base-url}}/pos/restaurants/{{rid}}/location/status","description":"<p>An OT endpoint called by the POS partner per restaurant to provide a “heartbeat” status update of the restaurant’s integration status and local system clock time to check for drift. OpenTable expects the POS partner to send a status update per restaurant every 5 minutes.</p>\n<p>This API is required for On-Premise and Hybrid Integrations, but it is optional for Cloud-Based Integrations.</p>\n<p>Note: Depending on the POS partner, this endpoint is also utilized during a restaurant’s initial onboarding process. It is also utilized by the POS partner if a restaurant’s cancellation of POS integration is initiated on the POS partner’s end by sending as Cancelled.</p>\n","urlObject":{"path":["pos","restaurants","{{rid}}","location","status"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"2de652f9-e5e6-44df-948e-e365a241600e","name":"200","originalRequest":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"partner\": {\n    \"status\": \"online\",\n    \"cancel_reason\": null,\n    \"date_modified_utc\": \"2024-10-18T19:00:18.3878552Z\"\n  },\n  \"system_clock_time\": \"2024-10-18T19:00:18.3878552Z\"\n}"},"url":"{{base-url}}/pos/restaurants/{{rid}}/location/status"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"204ab155-7805-4133-9bca-a2ef28926238"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"48d30d4d-31e0-42ea-be51-e9f1df61efea"},{"key":"X-OT-Backend","value":"posRestaurantService"},{"key":"X-OT-UriTemplate","value":"/posRestaurantService/api/v1/pos/restaurants/{id}/location/status"},{"key":"Content-Type","value":"text/plain;charset=utf-8"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Fri, 21 Feb 2025 03:22:48 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=4C55DCB38640892E7FBA1B7C6BC60581~YAAQVGrcF3f+tvqUAQAAH3+HJhpPSsz8ItXJmmVPpEYjyDcTyKMJwB4rCQcLyXkZkvc6ephzaEfv07Cins4aBhIRrz0mOO/DStyU7+lB/NcFk13G5+PEEhQMxn3DgHjA2ITBSqUZyurjm+4sVZjlahF5oJrE2GTCWMnE3DJ8lvk/ry5u5lLI67+HvPphDkwT9iL8Rlv0krNBhQtZ5gx556uMNmkQPGBA3MD0ETUcubtPN+JnXtPiiTYeQNjDuashT4F+~1; Domain=.opentable.com; Path=/; Expires=Fri, 21 Feb 2025 05:19:59 GMT; Max-Age=7031; Secure"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"688d75fe-5a31-482c-aafc-04999ef3911e"},{"name":"POS Bootstrap API","id":"95c9fd58-9062-4d81-ace6-a11d2174d75a","protocolProfileBehavior":{"disabledSystemHeaders":{"content-type":true},"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"timestamp\": \"2024-11-07T14:20:12.000+00:00\",\n  \"operation\": \"update\",\n  \"ticket\": {\n    \"ticket_id\": \"abcd12345\",\n    \"ticket_number\": \"123456\",\n    \"opened_at\": \"2024-11-07T14:20:12.000+00:00\",\n    \"updated_at\": \"2024-11-07T14:20:12.000+00:00\",\n    \"closed_at\": null,\n    \"party_size\": 3,\n    \"order_type\": \"Order in\",\n    \"order_items\": [\n      {\n        \"id\": \"12345\",\n        \"name\": \"Cioppino\",\n        \"price\": 1200,\n        \"quantity\": 1,\n        \"sent_at\": \"2023-04-21T01:12:12.000+00:00\",\n        \"status\": \"sent\",\n        \"item\": {\n          \"id\": \"100\",\n          \"name\": \"Cioppino\",\n          \"price\": 1200,\n          \"categories\": [\n                    {\n                    \"id\": \"99\",\n                    \"name\": \"SEAFOOD\",\n                    \"level\": 2,\n                    \"parent_menu_category\": {\n                        \"id\": \"16\",\n                        \"name\": \"MAINS\",\n                        \"level\": 1,\n                        \"parent_menu_category\": {\n                            \"id\": \"1\",\n                            \"name\": \"FOOD\",\n                            \"level\": 0\n                    }\n                }\n            }\n        ],\n          \"open\": false\n        },\n        \"modifiers\": [],\n        \"server_note\": null\n      }\n    ],\n    \"check_total\": {\n      \"items_total\": 1200,\n      \"tax\": 120,\n      \"service_charges\": 0,\n      \"other_charges\": 0,\n      \"menu_items\": 1,\n      \"discount\": 0,\n      \"sub_total\": 1200,\n      \"total\": 1320,\n      \"tip\": 0,\n      \"due\": 1320,\n      \"paid_amount\": 0\n    },\n    \"payment_info\": [],\n    \"revenue_center\": {\n      \"id\": \"112\",\n      \"name\": \"Dine-In\"\n    },\n    \"tables\": {\n      \"id\": \"121\",\n      \"name\": \"1\",\n      \"seats\": 2\n    },\n    \"check_links\": null,\n    \"employee\": {\n      \"id\": \"21382\",\n      \"firstname\": \"Trevor\",\n      \"lastname\": \"Parsons\"\n    },\n    \"notes\": null,\n    \"table_status\": \"entree\",\n    \"reservation_id\": null,\n    \"is_open\": true,\n    \"void\": false\n  }\n}"},"url":"{{base-url}}/v1/pos/restaurants/{{rid}}/tickets?updated_from={{YYYY-MM-DDThh:mm:ss.sssZ}}&updated_to={{YYYY-MM-DDThh:mm:ss.sssZ}}&limit={{limit}}","description":"<ul><li><div>POST ticket within an envelope with a delivery timestamp</div></li><li><div>Payload file size limit of 1 MB</div></li><li><div>UTC format required for all times within the tickets and the batch payload</div></li><li><div>Currency format:<a href=\"https://stripe.com/docs/currencies#zero-decimal\">https://stripe.com/docs/currencies#zero-decimal</a></div></li><li><div>API is asynchronous for faster performance</div></li></ul>\n\n<h3 id=\"bootstrap-api\">Bootstrap API</h3>\n<p><strong>URL:</strong> /v1/pos/restaurants/{{rid}}/tickets</p>\n<ul>\n<li><p>Content</p>\n<ul>\n<li><p>Content-Encoding: gzip and zipped content (Preferred)</p>\n</li>\n<li><p>Content-Type: application/json (Supported)</p>\n</li>\n</ul>\n</li>\n<li><p>Authorization: bearer</p>\n</li>\n</ul>\n<p><strong>Response:</strong> application/json</p>\n<p>API support:</p>\n<ul>\n<li><p>GET ticket within an envelope with a delivery timestamp</p>\n</li>\n<li><p>UTC format required for all timestamps within the tickets and the batch payload</p>\n</li>\n<li><p>Currency format: <a href=\"https://stripe.com/docs/currencies#zero-decimal\">https://stripe.com/docs/currencies#zero-decimal</a></p>\n</li>\n</ul>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Maximum results returned</td>\n</tr>\n<tr>\n<td><code>updated_from</code></td>\n<td>string</td>\n<td>Lower boundary of the ticket date/time range (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>). (UTC time)</td>\n</tr>\n<tr>\n<td><code>updated_to</code></td>\n<td>string</td>\n<td>Upper boundary of the ticket date/time range (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>). (UTC time)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>timestamp</code></td>\n<td>String (ISO 8601 with Zone, UTC)</td>\n<td>Delivery time of payload.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>Integer</td>\n<td>Maximum results returned</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>Integer</td>\n<td>Number of results to be skipped</td>\n</tr>\n<tr>\n<td><code>next_page_url</code></td>\n<td>URL</td>\n<td>URL of the next page of the return to help with pagination.</td>\n</tr>\n<tr>\n<td><code>ticket</code></td>\n<td>Object</td>\n<td>See ticket</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"ticket\"><strong>ticket</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>ticket_id</code></td>\n<td>String</td>\n<td>Universally unique ID generated by the POS system.</td>\n</tr>\n<tr>\n<td><code>ticket_number</code></td>\n<td>String</td>\n<td>The assigned ticket number.</td>\n</tr>\n<tr>\n<td><code>opened_at</code></td>\n<td>String  <br />(ISO 8601 with Zone)</td>\n<td>Time when the ticket is opened.</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>String  <br />(ISO 8601 with Zone)</td>\n<td>Time when the ticket is updated. Used to compare to previous iterations.</td>\n</tr>\n<tr>\n<td><code>closed_at</code></td>\n<td>String  <br />(ISO 8601 with Zone)</td>\n<td>Time when the ticket is closed.</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>Integer</td>\n<td>Number of guests.</td>\n</tr>\n<tr>\n<td><code>order_type</code></td>\n<td>String</td>\n<td>Service type. E.g. “order in”, “take out”, “delivery”, “prepaid”, “family meal”.</td>\n</tr>\n<tr>\n<td><code>order_items</code></td>\n<td>Array</td>\n<td>Details of menu orders and items.</td>\n</tr>\n<tr>\n<td><code>check_total</code></td>\n<td>Object</td>\n<td>Total currency amount for all items.</td>\n</tr>\n<tr>\n<td><code>payment_info</code></td>\n<td>Array</td>\n<td>Payment information</td>\n</tr>\n<tr>\n<td><code>revenue_center</code></td>\n<td>Object</td>\n<td>Revenue center</td>\n</tr>\n<tr>\n<td><code>tables</code></td>\n<td>Object</td>\n<td>Table characteristics</td>\n</tr>\n<tr>\n<td><code>check_links</code></td>\n<td>Object</td>\n<td>Association and type of link between checks such as split check parent &amp; merged check destination.</td>\n</tr>\n<tr>\n<td><code>employee</code></td>\n<td>Object</td>\n<td>Employee ID and/or name associated with ticket.</td>\n</tr>\n<tr>\n<td><code>guest</code></td>\n<td>Object</td>\n<td>Unique guest identifier for this OpenTable location.</td>\n</tr>\n<tr>\n<td><code>reservation_id</code></td>\n<td>String</td>\n<td>Unique OpenTable for Restaurants reservation ID.</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td>String</td>\n<td>Check notes visible to the diner on the printed check.</td>\n</tr>\n<tr>\n<td><code>table_status</code></td>\n<td>String</td>\n<td>Table status defined by the POS vendor. Values accepted include “appetizer”, “entree”, “dessert”, “paid”.  <br />  <br />Statuses are forward-moving only, with one of each status allowed per reservation.</td>\n</tr>\n<tr>\n<td><code>is_open</code></td>\n<td>Boolean</td>\n<td>Ticket is open = “true”.  <br />  <br />Ticket is closed = “false”.</td>\n</tr>\n<tr>\n<td><code>void</code></td>\n<td>Boolean</td>\n<td>Ticket is voided = “true”.  <br />Ticket is not voided = “false”.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"order_items\"><strong>order_items</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Universally unique ID generated by the POS system.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Item name. E.g. “California Burrito”.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>Total price of the item by quantity of item, expressed in USD cents. E.g. $2.13 = “213”.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>Quantity of the item.</td>\n</tr>\n<tr>\n<td><code>sent_at</code></td>\n<td>String  <br />  <br />(ISO 8601  <br />  <br />with Zone)</td>\n<td>Time the order is sent to the kitchen.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>Status of the item. E.g. “held”, “sent”, “fired”, “ready”. ticket table_status will not trigger if = “held”.</td>\n</tr>\n<tr>\n<td><code>item</code></td>\n<td>Object</td>\n<td>Menu item from which item is created. See item below</td>\n</tr>\n<tr>\n<td><code>modifiers</code></td>\n<td>Array</td>\n<td>Item modifiers.</td>\n</tr>\n<tr>\n<td><code>server_note</code></td>\n<td>String</td>\n<td>Server entered note regarding the item.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"item\"><strong>item</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong><code>id</code></strong></td>\n<td>String</td>\n<td>Unique item ID.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Item name. E.g. “California Burrito”.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>Price of item, expressed in USD cents. E.g. $2.13 = “213”.</td>\n</tr>\n<tr>\n<td><code>categories</code></td>\n<td>Array</td>\n<td>Categories to which item is associated for reporting and status. (Do not include POS UI menu organization groups here.)</td>\n</tr>\n<tr>\n<td><code>open</code></td>\n<td>Boolean</td>\n<td>Ad hoc manually created item by the server = “true”.</td>\n</tr>\n<tr>\n<td><code>course</code></td>\n<td>Integer</td>\n<td>Course number for the item. E.g. “Course 1”, “Course 2”, etc.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"modifiers\"><strong>modifiers</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Unique modifier ID.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Name of the modifier.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Integer</td>\n<td>Price of the modifier.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>Quantity of modifier.</td>\n</tr>\n<tr>\n<td><code>item</code></td>\n<td>Object</td>\n<td>Menu item from which modifier is derived.</td>\n</tr>\n<tr>\n<td><code>open</code></td>\n<td>Boolean</td>\n<td>Ad hoc manually created modifier by the server = “true”.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"check_total\"><strong>check_total</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>items_total</code></td>\n<td>Integer</td>\n<td>Sum of all item prices (pre-tax).</td>\n</tr>\n<tr>\n<td><code>tax</code></td>\n<td>Integer</td>\n<td>Tax total.</td>\n</tr>\n<tr>\n<td><code>tip</code></td>\n<td>Integer</td>\n<td>Tip total.</td>\n</tr>\n<tr>\n<td><code>paid_amount</code></td>\n<td>Integer</td>\n<td>Amount paid.</td>\n</tr>\n<tr>\n<td><code>other_charges</code></td>\n<td>Integer</td>\n<td>Additional charges, surcharges, and fees.</td>\n</tr>\n<tr>\n<td><code>menu_items</code></td>\n<td>Integer</td>\n<td>Count of menu items.</td>\n</tr>\n<tr>\n<td><code>due</code></td>\n<td>Integer</td>\n<td>Remaining balance.</td>\n</tr>\n<tr>\n<td><code>discount</code></td>\n<td>Integer</td>\n<td>Discount applied to order total before tax.</td>\n</tr>\n<tr>\n<td><code>service_charges</code></td>\n<td>Integer</td>\n<td>Service charges of the ticket.</td>\n</tr>\n<tr>\n<td><code>sub_total</code></td>\n<td>Integer</td>\n<td>Total before tax: (items_total + other_charges - discounts).</td>\n</tr>\n<tr>\n<td><code>total</code></td>\n<td>Integer</td>\n<td>The order total: (sub_total + service_charges + tax)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"payment_info\"><strong>payment_info</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>amount</code></td>\n<td>Integer</td>\n<td>Total paid, before tips.</td>\n</tr>\n<tr>\n<td><code>tip</code></td>\n<td>Integer</td>\n<td>Tip paid.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>String</td>\n<td>Type of payment accepted. E.g. “cash”, “credit card”, “gift card”, “house account”, “delivery service”, “other”.</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td>Currency  <br />  <br />(ISO 4217 currency code)</td>\n<td>Payment currency.</td>\n</tr>\n<tr>\n<td><code>paid_at</code></td>\n<td>String  <br />  <br />(ISO 8601 with Zone)</td>\n<td>Date and time of payment.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"revenue_center\"><strong>revenue_center</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Revenue center ID.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Revenue center name.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"tables\"><strong>tables</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Table name in POS (must exactly match the table name in OpenTable for Restaurants).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"employee\"><strong>employee</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Employee ID.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>firstname</code></td>\n<td>String</td>\n<td>Employee first name.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>lastname</code></td>\n<td>String</td>\n<td>Employee last name.</td>\n<td>Optional</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"guest\"><strong>guest</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Data Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Unique guest identifier for this OpenTable location.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error Responses</h3>\n<p><strong>Response:</strong> application/json</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status code</strong></th>\n<th><strong>Details</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200 OK</td>\n<td>Ok</td>\n</tr>\n<tr>\n<td>404 Not Found</td>\n<td>Restaurant not provisioned for POS Integration</td>\n</tr>\n<tr>\n<td>400 Bad Request</td>\n<td></td>\n</tr>\n<tr>\n<td>402 Unauthorized</td>\n<td>Restaurant not provisioned for POS Integration</td>\n</tr>\n<tr>\n<td>415 Unsupported Media Type</td>\n<td></td>\n</tr>\n<tr>\n<td>500 Internal server error</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","pos","restaurants","{{rid}}","tickets"],"host":["{{base-url}}"],"query":[{"key":"updated_from","value":"{{YYYY-MM-DDThh:mm:ss.sssZ}}"},{"key":"updated_to","value":"{{YYYY-MM-DDThh:mm:ss.sssZ}}"},{"key":"limit","value":"{{limit}}"}],"variable":[]}},"response":[{"id":"40518596-c121-480f-8034-6a5e251ca296","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Content-Encoding","value":"application/gzip","type":"text","disabled":true},{"key":"Authorization","value":"Bearer ","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"timestamp\": \"2024-11-07T14:20:12.000+00:00\",\n  \"operation\": \"update\",\n  \"ticket\": {\n    \"ticket_id\": \"abcd12345\",\n    \"ticket_number\": \"123456\",\n    \"opened_at\": \"2024-11-07T14:20:12.000+00:00\",\n    \"updated_at\": \"2024-11-07T14:20:12.000+00:00\",\n    \"closed_at\": null,\n    \"party_size\": 3,\n    \"order_type\": \"Order in\",\n    \"order_items\": [\n      {\n        \"id\": \"12345\",\n        \"name\": \"Cioppino\",\n        \"price\": 1200,\n        \"quantity\": 1,\n        \"sent_at\": \"2023-04-21T01:12:12.000+00:00\",\n        \"status\": \"sent\",\n        \"item\": {\n          \"id\": \"100\",\n          \"name\": \"Cioppino\",\n          \"price\": 1200,\n          \"categories\": [\n                    {\n                    \"id\": \"99\",\n                    \"name\": \"SEAFOOD\",\n                    \"level\": 2,\n                    \"parent_menu_category\": {\n                        \"id\": \"16\",\n                        \"name\": \"MAINS\",\n                        \"level\": 1,\n                        \"parent_menu_category\": {\n                            \"id\": \"1\",\n                            \"name\": \"FOOD\",\n                            \"level\": 0\n                    }\n                }\n            }\n        ],\n          \"open\": false\n        },\n        \"modifiers\": [],\n        \"server_note\": null\n      }\n    ],\n    \"check_total\": {\n      \"items_total\": 1200,\n      \"tax\": 120,\n      \"service_charges\": 0,\n      \"other_charges\": 0,\n      \"menu_items\": 1,\n      \"discount\": 0,\n      \"sub_total\": 1200,\n      \"total\": 1320,\n      \"tip\": 0,\n      \"due\": 1320,\n      \"paid_amount\": 0\n    },\n    \"payment_info\": [],\n    \"revenue_center\": {\n      \"id\": \"112\",\n      \"name\": \"Dine-In\"\n    },\n    \"tables\": {\n      \"id\": \"121\",\n      \"name\": \"1\",\n      \"seats\": 2\n    },\n    \"check_links\": null,\n    \"employee\": {\n      \"id\": \"21382\",\n      \"firstname\": \"Trevor\",\n      \"lastname\": \"Parsons\"\n    },\n    \"notes\": null,\n    \"table_status\": \"entree\",\n    \"reservation_id\": null,\n    \"is_open\": true,\n    \"void\": false\n  }\n}"},"url":{"raw":"{{base-url}}/v1/pos/restaurants/{{rid}}/tickets?updated_from={{YYYY-MM-DDThh:mm:ss.sssZ}}&updated_to={{YYYY-MM-DDThh:mm:ss.sssZ}}&limit={{limit}}","host":["{{base-url}}"],"path":["v1","pos","restaurants","{{rid}}","tickets"],"query":[{"key":"updated_from","value":"{{YYYY-MM-DDThh:mm:ss.sssZ}}"},{"key":"updated_to","value":"{{YYYY-MM-DDThh:mm:ss.sssZ}}"},{"key":"limit","value":"{{limit}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"946d230e-3b22-430c-b49b-0bb9df77578a"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"c10bb83f-de4c-4a91-bf8e-b72c3d956443"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"posDataService"},{"key":"X-OT-UriTemplate","value":"/posDataService/api/v1/pos/restaurants/{id}/tickets"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 21 Feb 2025 02:23:45 GMT"},{"key":"Content-Length","value":"860"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2025-02-21T02:23:45.921434493Z\",\n    \"limit\": 10,\n    \"offset\": 0,\n    \"next_page_url\": null,\n    \"tickets\": [\n        {\n            \"ticket\": {\n                \"ticket_id\": \"abcd12345\",\n                \"ticket_number\": \"123456\",\n                \"opened_at\": \"2024-11-08T14:56:12.000Z\",\n                \"updated_at\": \"2024-11-08T15:10:34.366Z\",\n                \"party_size\": 3,\n                \"order_type\": \"Order in\",\n                \"order_items\": [\n                    {\n                        \"id\": \"12345\",\n                        \"name\": \"Cioppino\",\n                        \"price\": 1200,\n                        \"quantity\": 1,\n                        \"sent_at\": \"2023-04-21T01:12:12.000Z\",\n                        \"status\": \"sent\",\n                        \"item\": {\n                            \"id\": \"100\",\n                            \"name\": \"Cioppino\",\n                            \"price\": 1200,\n                            \"categories\": [\n                                {\n                                    \"id\": \"99\",\n                                    \"level\": 2,\n                                    \"name\": \"SEAFOOD\",\n                                    \"parent_menu_category\": {\n                                        \"id\": \"16\",\n                                        \"level\": 1,\n                                        \"name\": \"MAINS\",\n                                        \"parent_menu_category\": {\n                                            \"id\": \"1\",\n                                            \"level\": 0,\n                                            \"name\": \"FOOD\"\n                                        }\n                                    }\n                                }\n                            ]\n                        },\n                        \"modifiers\": []\n                    },\n                    {\n                        \"id\": \"15754\",\n                        \"name\": \"French Fries\",\n                        \"price\": 700,\n                        \"quantity\": 2,\n                        \"sent_at\": \"2018-07-26T14:10:12.000Z\",\n                        \"status\": \"sent\",\n                        \"item\": {\n                            \"id\": \"110\",\n                            \"name\": \"French Fries\",\n                            \"price\": 350,\n                            \"categories\": [\n                                {\n                                    \"id\": \"98\",\n                                    \"level\": 2,\n                                    \"name\": \"EXTRAS\",\n                                    \"parent_menu_category\": {\n                                        \"id\": \"15\",\n                                        \"level\": 1,\n                                        \"name\": \"SIDES\",\n                                        \"parent_menu_category\": {\n                                            \"id\": \"1\",\n                                            \"level\": 0,\n                                            \"name\": \"FOOD\"\n                                        }\n                                    }\n                                }\n                            ]\n                        },\n                        \"modifiers\": []\n                    }\n                ],\n                \"check_total\": {\n                    \"items_total\": 1900,\n                    \"tax\": 190,\n                    \"tip\": 0,\n                    \"paid_amount\": 0,\n                    \"other_charges\": 0,\n                    \"due\": 2090,\n                    \"discount\": 0,\n                    \"service_charges\": 0,\n                    \"sub_total\": 1900,\n                    \"total\": 2090\n                },\n                \"payment_info\": [],\n                \"revenue_center\": {\n                    \"id\": \"112\",\n                    \"name\": \"Dine-In\"\n                },\n                \"tables\": {\n                    \"name\": \"1\"\n                },\n                \"employee\": {\n                    \"id\": \"21382\",\n                    \"firstname\": \"Trevor\",\n                    \"lastname\": \"Parsons\"\n                },\n                \"reservation_id\": \"db36e1d7-5b7f-4237-ba18-2064b3374fae\",\n                \"is_open\": true,\n                \"void\": false\n            }\n        },\n        {\n            \"ticket\": {\n                \"ticket_id\": \"abcd12346\",\n                \"ticket_number\": \"12347\",\n                \"opened_at\": \"2024-11-12T18:35:12.000Z\",\n                \"updated_at\": \"2024-11-12T18:37:32.200Z\",\n                \"party_size\": 3,\n                \"order_type\": \"Order in\",\n                \"order_items\": [\n                    {\n                        \"id\": \"12345\",\n                        \"name\": \"Cioppino\",\n                        \"price\": 1200,\n                        \"quantity\": 1,\n                        \"sent_at\": \"2023-04-21T01:12:12.000Z\",\n                        \"status\": \"sent\",\n                        \"item\": {\n                            \"id\": \"100\",\n                            \"name\": \"Cioppino\",\n                            \"price\": 1200,\n                            \"categories\": [\n                                {\n                                    \"id\": \"99\",\n                                    \"level\": 2,\n                                    \"name\": \"SEAFOOD\",\n                                    \"parent_menu_category\": {\n                                        \"id\": \"16\",\n                                        \"level\": 1,\n                                        \"name\": \"MAINS\",\n                                        \"parent_menu_category\": {\n                                            \"id\": \"1\",\n                                            \"level\": 0,\n                                            \"name\": \"FOOD\"\n                                        }\n                                    }\n                                }\n                            ]\n                        },\n                        \"modifiers\": []\n                    },\n                    {\n                        \"id\": \"15754\",\n                        \"name\": \"French Fries\",\n                        \"price\": 700,\n                        \"quantity\": 2,\n                        \"sent_at\": \"2018-07-26T14:10:12.000Z\",\n                        \"status\": \"sent\",\n                        \"item\": {\n                            \"id\": \"110\",\n                            \"name\": \"French Fries\",\n                            \"price\": 350,\n                            \"categories\": [\n                                {\n                                    \"id\": \"98\",\n                                    \"level\": 2,\n                                    \"name\": \"EXTRAS\",\n                                    \"parent_menu_category\": {\n                                        \"id\": \"15\",\n                                        \"level\": 1,\n                                        \"name\": \"SIDES\",\n                                        \"parent_menu_category\": {\n                                            \"id\": \"1\",\n                                            \"level\": 0,\n                                            \"name\": \"FOOD\"\n                                        }\n                                    }\n                                }\n                            ]\n                        },\n                        \"modifiers\": []\n                    }\n                ],\n                \"check_total\": {\n                    \"items_total\": 1900,\n                    \"tax\": 190,\n                    \"tip\": 0,\n                    \"paid_amount\": 0,\n                    \"other_charges\": 0,\n                    \"due\": 2090,\n                    \"discount\": 0,\n                    \"service_charges\": 0,\n                    \"sub_total\": 1900,\n                    \"total\": 2090\n                },\n                \"payment_info\": [],\n                \"revenue_center\": {\n                    \"id\": \"112\",\n                    \"name\": \"Dine-In\"\n                },\n                \"tables\": {\n                    \"name\": \"1\"\n                },\n                \"employee\": {\n                    \"id\": \"21382\",\n                    \"firstname\": \"Trevor\",\n                    \"lastname\": \"Parsons\"\n                },\n                \"guest\": {\n                    \"id\": \"1360462d-d01e-41f5-a620-aed7f29c4f27\"\n                },\n                \"reservation_id\": \"6b5d6fee-d268-4ea1-a318-c8bad8a25b1e\",\n                \"is_open\": true,\n                \"void\": false\n            }\n        },\n        {\n            \"ticket\": {\n                \"ticket_id\": \"abcd12345\",\n                \"ticket_number\": \"123456\",\n                \"opened_at\": \"2024-11-18T17:56:12.000Z\",\n                \"updated_at\": \"2024-11-18T18:03:48.236Z\",\n                \"party_size\": 3,\n                \"order_type\": \"Order in\",\n                \"order_items\": [\n                    {\n                        \"id\": \"12345\",\n                        \"name\": \"Cioppino\",\n                        \"price\": 1200,\n                        \"quantity\": 1,\n                        \"sent_at\": \"2023-04-21T01:12:12.000Z\",\n                        \"status\": \"sent\",\n                        \"item\": {\n                            \"id\": \"100\",\n                            \"name\": \"Cioppino\",\n                            \"price\": 1200,\n                            \"categories\": [\n                                {\n                                    \"id\": \"99\",\n                                    \"level\": 2,\n                                    \"name\": \"SEAFOOD\",\n                                    \"parent_menu_category\": {\n                                        \"id\": \"16\",\n                                        \"level\": 1,\n                                        \"name\": \"MAINS\",\n                                        \"parent_menu_category\": {\n                                            \"id\": \"1\",\n                                            \"level\": 0,\n                                            \"name\": \"FOOD\"\n                                        }\n                                    }\n                                }\n                            ]\n                        },\n                        \"modifiers\": []\n                    },\n                    {\n                        \"id\": \"15754\",\n                        \"name\": \"French Fries\",\n                        \"price\": 700,\n                        \"quantity\": 2,\n                        \"sent_at\": \"2018-07-26T14:10:12.000Z\",\n                        \"status\": \"sent\",\n                        \"item\": {\n                            \"id\": \"110\",\n                            \"name\": \"French Fries\",\n                            \"price\": 350,\n                            \"categories\": [\n                                {\n                                    \"id\": \"98\",\n                                    \"level\": 2,\n                                    \"name\": \"EXTRAS\",\n                                    \"parent_menu_category\": {\n                                        \"id\": \"15\",\n                                        \"level\": 1,\n                                        \"name\": \"SIDES\",\n                                        \"parent_menu_category\": {\n                                            \"id\": \"1\",\n                                            \"level\": 0,\n                                            \"name\": \"FOOD\"\n                                        }\n                                    }\n                                }\n                            ]\n                        },\n                        \"modifiers\": []\n                    }\n                ],\n                \"check_total\": {\n                    \"items_total\": 1900,\n                    \"tax\": 190,\n                    \"tip\": 0,\n                    \"paid_amount\": 0,\n                    \"other_charges\": 0,\n                    \"due\": 2090,\n                    \"discount\": 0,\n                    \"service_charges\": 0,\n                    \"sub_total\": 1900,\n                    \"total\": 2090\n                },\n                \"payment_info\": [],\n                \"revenue_center\": {\n                    \"id\": \"112\",\n                    \"name\": \"Dine-In\"\n                },\n                \"tables\": {\n                    \"name\": \"1\"\n                },\n                \"employee\": {\n                    \"id\": \"21382\",\n                    \"firstname\": \"Trevor\",\n                    \"lastname\": \"Parsons\"\n                },\n                \"reservation_id\": \"e3819c0a-b5c5-4bcd-b3ca-3eca89a19f92\",\n                \"is_open\": true,\n                \"void\": false\n            }\n        },\n        {\n            \"ticket\": {\n                \"ticket_id\": \"abcd12345\",\n                \"ticket_number\": \"123456\",\n                \"opened_at\": \"2024-11-07T14:20:12.000Z\",\n                \"updated_at\": \"2025-02-21T02:18:55.374Z\",\n                \"party_size\": 3,\n                \"order_type\": \"Order in\",\n                \"order_items\": [\n                    {\n                        \"id\": \"12345\",\n                        \"name\": \"Cioppino\",\n                        \"price\": 1200,\n                        \"quantity\": 1,\n                        \"sent_at\": \"2023-04-21T01:12:12.000Z\",\n                        \"status\": \"sent\",\n                        \"item\": {\n                            \"id\": \"100\",\n                            \"name\": \"Cioppino\",\n                            \"price\": 1200,\n                            \"categories\": [\n                                {\n                                    \"id\": \"99\",\n                                    \"level\": 2,\n                                    \"name\": \"SEAFOOD\",\n                                    \"parent_menu_category\": {\n                                        \"id\": \"16\",\n                                        \"level\": 1,\n                                        \"name\": \"MAINS\",\n                                        \"parent_menu_category\": {\n                                            \"id\": \"1\",\n                                            \"level\": 0,\n                                            \"name\": \"FOOD\"\n                                        }\n                                    }\n                                }\n                            ]\n                        },\n                        \"modifiers\": []\n                    }\n                ],\n                \"check_total\": {\n                    \"items_total\": 1200,\n                    \"tax\": 120,\n                    \"tip\": 0,\n                    \"paid_amount\": 0,\n                    \"other_charges\": 0,\n                    \"due\": 1320,\n                    \"discount\": 0,\n                    \"service_charges\": 0,\n                    \"sub_total\": 1200,\n                    \"total\": 1320\n                },\n                \"payment_info\": [],\n                \"revenue_center\": {\n                    \"id\": \"112\",\n                    \"name\": \"Dine-In\"\n                },\n                \"tables\": {\n                    \"name\": \"1\"\n                },\n                \"employee\": {\n                    \"id\": \"21382\",\n                    \"firstname\": \"Trevor\",\n                    \"lastname\": \"Parsons\"\n                },\n                \"is_open\": true,\n                \"void\": false\n            }\n        }\n    ]\n}"}],"_postman_id":"95c9fd58-9062-4d81-ace6-a11d2174d75a"}],"id":"6fd35119-f22d-4e05-a5c1-25f6bb6f463f","description":"<p>This section provides details related to OT’s POS API in which the POS partner writes to, allowing its relevant POS check data to be shared with OT. Additional endpoints allow for the POS partner to receive details on all RIDs’ associated with its POS integration and deliver POS current menu data to OT</p>\n","_postman_id":"6fd35119-f22d-4e05-a5c1-25f6bb6f463f"},{"name":"Reservation Webhook v3 Copper","item":[{"name":"Reservation Webhook v3 Copper","id":"983d0378-6cff-4f46-a989-2276bde66e35","protocolProfileBehavior":{"disabledSystemHeaders":{},"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Bearer or Bearer [token]","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\"10\"],\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"origin\": \"Web\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"server\": \"John Doe\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": 5000,\r\n\t\"totalRefunded\": 0,\r\n\t\"currency\": \"USD\",\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": \"Paid\"\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url","description":"<p>A list of all OpenTable restaurant records specific to the POS partner.</p>\n","urlObject":{"protocol":"https","host":["partner","supplied","webhook","url"],"query":[],"variable":[]}},"response":[{"id":"8cc07193-b734-4d33-928f-cd0b34ef19bc","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer [token]","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\"10\"],\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"origin\": \"Web\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"server\": \"John Doe\",\r\n  \"added_to_waitlist\": null,\r\n  \"added_to_waitlist_utc\": null,\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": 5000,\r\n\t\"totalRefunded\": 0,\r\n\t\"currency\": \"USD\",\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": \"Paid\"\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"8cc11712-7674-4a96-9bfc-f751060671f0"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"5f9f6a89-304b-4154-8099-6af169716afb"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"posRestaurantService"},{"key":"X-OT-UriTemplate","value":"/posRestaurantService/api/v1/pos/restaurants/all"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 21 Feb 2025 02:14:56 GMT"},{"key":"Content-Length","value":"217"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"ak_bmsc=3463BA8A2F5F898E431053FB11A4FC81~000000000000000000000000000000~YAAQrMgwFzVFvxSVAQAAeVpJJhqT4Q+RrwCMj6eV9YZ73di5fgE47UgzVvn5/Dj7JmO3MdDssZ1Es52ACr6QuguhqG9rakimmHM4CGWMuhrug8m41vdiT8Nq+EgNkb0MsSNgtEF57YplW/pGm3fvP5brV8anMVe8cU9+26gYbmv+IIxIU+ns2n4atOARAabg3Q6/39lJv0u68WbhTutL8R6hgbZRbfpkLCyonbQZL6+sA7bHj+2W61KirChF5M/IUM1uo+QcQsbiEWW1ybajDV3K+CBz9QK24YU8TpCruubKI2PPPtmUplAZsN23rw5WnSpMp5Y04qtml8MojOeOpNK2gcxxiN/FzVAbyvQ=; Domain=.opentable.com; Path=/; Expires=Fri, 21 Feb 2025 04:14:56 GMT; Max-Age=7200"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"983d0378-6cff-4f46-a989-2276bde66e35"}],"id":"92b6f2e6-76df-4387-abc9-c6d6771c5332","description":"<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The Reservation Webhook API provides real-time updates about changes in reservation status via webhooks. These updates enable restaurants to seamlessly integrate reservation management into their systems. The webhooks send a detailed JSON payload containing reservation attributes whenever a reservation status changes.</p>\n<p>To access Guest Data, please use the <code>guest</code> attribute to call the guest endpoint in Sync API. For more information about Sync API and other available data points via the GET query, please refer to the Sync API - Copper section of this Portal.</p>\n<h2 id=\"data-delivery-method\"><strong>Data Delivery Method</strong></h2>\n<h3 id=\"webhook-implementation\"><strong>Webhook Implementation</strong></h3>\n<p>Webhooks are triggered on any change in reservation status. A POST request is sent to the specified endpoint with the payload data.</p>\n<h4 id=\"configuring-your-endpoint\"><strong>Configuring Your Endpoint</strong></h4>\n<ul>\n<li><p>Endpoint URL: Provide an URL where webhook data will be delivered.</p>\n<ul>\n<li><strong>Webhook URL must use https and port 443</strong></li>\n</ul>\n</li>\n<li><p>Authentication: Basic or bearer token is required to verify authenticity of request</p>\n</li>\n<li><p>Event Handling: Ensure your system handles retries in case of delivery failures.</p>\n</li>\n</ul>\n<h3 id=\"webhook-security--validation-requirements\">Webhook Security &amp; Validation Requirements</h3>\n<p>To ensure secure and reliable integrations, all webhook endpoints must comply with the following requirements:</p>\n<h4 id=\"1-redirect-handling\">1. Redirect Handling</h4>\n<p>Webhook endpoints must not rely on HTTP redirects.</p>\n<ul>\n<li><p>Requests that result in a redirect (3xx responses) will be blocked</p>\n</li>\n<li><p>The configured endpoint must be the final destination URL</p>\n</li>\n<li><p>Ensure your endpoint responds directly without forwarding</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"2-url-schema-validation\">2. URL Schema Validation</h4>\n<p>Only approved URL schemas are supported for webhook endpoints:</p>\n<ul>\n<li><strong><code>https://</code></strong> — Required for all external endpoints</li>\n</ul>\n<p>Any other schema (e.g., <code>http://</code>, <code>ftp://</code>) will be rejected.</p>\n<hr />\n<h4 id=\"3-private-network-restrictions\">3. Private Network Restrictions</h4>\n<p>External webhook endpoints must resolve to publicly accessible IP addresses.</p>\n<ul>\n<li><p>Endpoints resolving to private or reserved IP ranges will be blocked</p>\n</li>\n<li><p>This includes (but is not limited to):</p>\n<ul>\n<li><p><code>10.x.x.x</code></p>\n</li>\n<li><p><code>172.16.x.x – 172.31.x.x</code></p>\n</li>\n<li><p><code>192.168.x.x</code></p>\n</li>\n</ul>\n</li>\n</ul>\n<p>This restriction helps prevent misconfiguration and protects against unintended access to internal infrastructure.</p>\n<hr />\n<h4 id=\"summary\">Summary</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Requirement</th>\n<th>Enforcement Behavior</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Redirects (3xx responses)</td>\n<td>Blocked</td>\n</tr>\n<tr>\n<td>Non-HTTPS schemas</td>\n<td>Rejected</td>\n</tr>\n<tr>\n<td>Private IP resolution</td>\n<td>Blocked</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h4 id=\"implementation-guidance\">Implementation Guidance</h4>\n<ul>\n<li><p>Always provide a fully qualified, final destination HTTPS endpoint</p>\n</li>\n<li><p>Verify DNS resolution points to a public IP address</p>\n</li>\n<li><p>Avoid intermediary routing layers that introduce redirects</p>\n</li>\n</ul>\n<h4 id=\"retry-logic\"><strong>Retry Logic</strong></h4>\n<p>Webhook delivery uses an exponential backoff strategy. After three failed attempts, the webhook is marked as undeliverable.</p>\n<h2 id=\"attributes\"><strong>Attributes</strong></h2>\n<p>The webhook payload will not include the same attributes as available in the GET query. To get the additional attributes not delivered in the webhook, Sync API reservataions endpoint will need to be called. Please see the Sync API Copper Reservations API v2 documention for full list of additional attributes.</p>\n<p>OpenTable reserves the right to update the data sent via the webhook with additional attributes. POS partner should build their ingestion of the webhook to accept any new additional attributes in the future. Partner can choose to process or ignore the additional attributes.</p>\n<p>The webhook payload includes the following attributes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>A globally unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>string</td>\n<td>A fully qualified URL for the reservation.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this reservation is associated with.</td>\n</tr>\n<tr>\n<td><code>sequence_id</code></td>\n<td>integer</td>\n<td>Sequential identifier for the reservation record within OpenTable systems.</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>string</td>\n<td>The unique guest identifier for the restaurant.</td>\n</tr>\n<tr>\n<td><code>guest</code></td>\n<td>string</td>\n<td>A fully qualified URL for the guest associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>integer</td>\n<td>A confirmation ID for the reservation.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>The current state of the reservation. States are: NotConfirmed, LeftMessage, WrongNumber, NoAnswer, Confirmed, Late, Partially Arrived, AllArrived, Partially Seated, Seated, Appetizer, Entree, Dessert, CheckDropped, Paid, Cleared, BusTable, Done, NoShow, Cancelled, AssumedSeated, AssumedDone.</td>\n</tr>\n<tr>\n<td><code>table_number</code></td>\n<td>array</td>\n<td>The table number(s) assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>created_date</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (local time).</td>\n</tr>\n<tr>\n<td><code>scheduled_time</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>The number of guests in the reservation.</td>\n</tr>\n<tr>\n<td><code>visit_tags</code></td>\n<td>array</td>\n<td>Visit tags that were applied to the reservation by the restaurant (custom or default).</td>\n</tr>\n<tr>\n<td><code>origin</code></td>\n<td>string</td>\n<td>The origin source of the reservation (e.g., <code>Phone</code>, <code>Web, Walk-in</code>).</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>seated_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (local time).</td>\n</tr>\n<tr>\n<td><code>done_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (local time)</td>\n</tr>\n<tr>\n<td><code>scheduled_time_utc</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>guest_request</code></td>\n<td>string</td>\n<td>The special requests entered by the diner when making their reservation.</td>\n</tr>\n<tr>\n<td><code>venue_notes</code></td>\n<td>string</td>\n<td>Notes entered by the venue regarding the reservation.</td>\n</tr>\n<tr>\n<td><code>opentable_notes</code></td>\n<td>string</td>\n<td>The details of the special offer selected by the diner.</td>\n</tr>\n<tr>\n<td><code>table_category</code></td>\n<td>string</td>\n<td>The table type, or seating option, for the reservation. Options are: “hightop,bar,counter,outdoor”. Note: If the attribute is ‘null’, the table_category will be the “default” attribute.</td>\n</tr>\n<tr>\n<td><code>seated_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (UTC time).</td>\n</tr>\n<tr>\n<td><code>done_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (UTC time)</td>\n</tr>\n<tr>\n<td><code>created_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (UTC time).</td>\n</tr>\n<tr>\n<td><code>updated_at_utc</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>server</code></td>\n<td>string</td>\n<td>The server assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>arrived_time</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived.. (local time).</td>\n</tr>\n<tr>\n<td><code>arrived_time_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived.  <br />(UTC time).</td>\n</tr>\n<tr>\n<td><code>deposit_details</code></td>\n<td>object</td>\n<td>Details of any deposit made. Includes totalPaid, totalRefunded, currency, currencyDenominator, and status (e.g., Paid, FullRefund).</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"92b6f2e6-76df-4387-abc9-c6d6771c5332"},{"name":"Reservation Statuses / States","item":[],"id":"59bf1634-4a47-4ae6-a14e-87f8742ef1e2","description":"<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>State</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>NotConfirmed</td>\n<td>Default state upon creation of reservation.</td>\n<td>Expected</td>\n</tr>\n<tr>\n<td>LeftMessage</td>\n<td>A reservation confirmation message was left for the party.</td>\n<td>Expected</td>\n</tr>\n<tr>\n<td>WrongNumber</td>\n<td>Phone number listed in the reservation is incorrect.</td>\n<td>Expected</td>\n</tr>\n<tr>\n<td>NoAnswer</td>\n<td>Ho one answered the phone when guest was called.</td>\n<td>Expected</td>\n</tr>\n<tr>\n<td>Late</td>\n<td>The party is running late.</td>\n<td>Expected</td>\n</tr>\n<tr>\n<td>Confirmed</td>\n<td>The party has confirmed its reservation.</td>\n<td>Expected</td>\n</tr>\n<tr>\n<td>PartiallyArrived</td>\n<td>Some, but not all, of the guests in the party have arrived but not yet been seated.</td>\n<td>InHouse</td>\n</tr>\n<tr>\n<td>AllArrived</td>\n<td>All guests in the party have arrived but not yet been seated.</td>\n<td>InHouse</td>\n</tr>\n<tr>\n<td>PartiallySeated</td>\n<td>Some, but not all, of the guests in the party have been seated.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>Seated</td>\n<td>The party has been seated.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>Appetizer</td>\n<td>The party is on the appetizer course of the meal.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>Entree</td>\n<td>The party is on the entree course of the meal.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>Dessert</td>\n<td>The party is on the dessert course of the meal.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>Cleared</td>\n<td>when a table is cleared of all plates and glasses and ready to reset.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>CheckDropped</td>\n<td>The party has been presented with the check.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>Paid</td>\n<td>The party has paid the check.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>BusTable</td>\n<td>The party has finished dining but the table still needs to be cleared and reset.</td>\n<td>Seated</td>\n</tr>\n<tr>\n<td>Done</td>\n<td>The party has finished dining, the table has been cleared and reset and is ready for a new party.</td>\n<td>Done</td>\n</tr>\n<tr>\n<td>AssumedSeated</td>\n<td>The reservation was never seated, cancelled, or marked a no-show and has been automatically transitioned to a seated status.</td>\n<td>Assumed Seated</td>\n</tr>\n<tr>\n<td>AssumedDone</td>\n<td>The party was seated but never marked done and has been automatically transitioned to a done status.</td>\n<td>AssumedDone</td>\n</tr>\n<tr>\n<td>Cancelled</td>\n<td>The reservation was cancelled by either the guest or OpenTable for Restaurants user.</td>\n<td>Cancelled</td>\n</tr>\n<tr>\n<td>NoShow</td>\n<td>The reservation was not cancelled and the guest did not inform that it would not honor its reservation.</td>\n<td>NoShow</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"59bf1634-4a47-4ae6-a14e-87f8742ef1e2"}],"id":"69e2188f-d1dd-4811-b425-f9834622220d","description":"<h1 id=\"overview\"><strong>Overview</strong></h1>\n<p>POS Integration allows restaurants to connect their table and reservation data with their point-of-sale (POS) check data, in real time.</p>\n<p>With OpenTable POS Integration, restaurants can connect table and reservation data with your point-of-sale system (POS) for a smoother-running, faster-turning, front of house. The POS integration gives restaurants valuable insights into guests’ spend, helps status tables, and highlights your revenue from each diner.</p>\n<h1 id=\"available-scenarios-for-a-standard-bi-directional-integration\"><strong>Available Scenarios for a Standard Bi-Directional Integration</strong></h1>\n<h3 id=\"connecting-a-check-to-reservations\"><strong>Connecting a Check to Reservations</strong></h3>\n<p>The first, and most important step in the OpenTable POS Integration is connecting a check to a reservation. We strive to connect all reservations to their respective checks on the POS. We connect checks to reservations via Table Matching.</p>\n<h3 id=\"automated-table-statuses\"><strong>Automated Table Statuses</strong></h3>\n<p>This feature allows for tables to be automatically updated in OpenTable as menu items are added and fired, allowing the hosts to better understand when the next table may become available. By default, the system will allow show/status Paid.</p>\n<p><strong>Additional table statuses include:</strong></p>\n<ul>\n<li><p>Drinks</p>\n</li>\n<li><p>Appetizer</p>\n</li>\n<li><p>Entree</p>\n</li>\n<li><p>Dessert</p>\n</li>\n<li><p>Course 1 through 12</p>\n</li>\n<li><p>Post Meal Drinks</p>\n</li>\n<li><p>Bottle Service</p>\n</li>\n</ul>\n<p><a href=\"https://support.opentable.com/s/article/GuestCenter-POS-Integration-Automatic-Course-Status?language=en_US\"><b>This OpenTable support article </b></a> <strong>details the feature.</strong></p>\n<h3 id=\"check-order-details\"><strong>Check Order Details</strong></h3>\n<p>Check Order details are available for the diner and the restaurant.</p>\n<p>For Restaurants:</p>\n<p>This allows the restaurant to view checks on the reservation card via the iPad app. You can also navigate to the guest history tab to view POS check details.</p>\n<p>This includes:</p>\n<ul>\n<li><p>Total Spend, including subtotal, tax</p>\n</li>\n<li><p>Tip Amount</p>\n</li>\n<li><p>Ordered Menu items</p>\n</li>\n<li><p>Server Name</p>\n</li>\n<li><p>Date and Time of POS Check</p>\n</li>\n<li><p>POS Check Number</p>\n</li>\n</ul>\n<img src=\"https://content.pstmn.io/ecba85b5-2d01-4f7a-b661-31b7979f6598/aW1hZ2UucG5n\" width=\"478\" height=\"379\" />\n\n<h3 id=\"displaying-guest-data-on-pos-bidirectional\">Displaying guest data on POS (bidirectional)</h3>\n<p>As a POS partner, checks can now include or display the guest profile &amp; reservation profile from OpenTable on the POS. This information can be acted upon by a server, and can include dietary restrictions &amp; special events. Reservation Webhooks will send the reservation details via Sync API and retrieve any additional necessary details.</p>\n<h3 id=\"reporting\">Reporting</h3>\n<p>Restaurants can dive deeper into their diners' spending as it relates to a diners' lifetime, a specific time frame, or specific reservations. This can better help restaurants identify their regulars and VIPs.</p>\n<p>Report Options include:</p>\n<ul>\n<li><p><strong>Guest Frequency Report</strong> → Available details include: Total Spend, Tip Spend, Lifetime Total Spend, and Lifetime Tip Spend across a defined date range</p>\n</li>\n<li><p><strong>Reservation Report</strong> → Available details include: Total Spend (specific to a single reservation)</p>\n</li>\n<li><p><strong>Guest Spend Tracking</strong> → Available details include: Lifetime Spend and Lifetime per Cover Spend</p>\n</li>\n</ul>\n<h3 id=\"shift-revenue-tracking\">Shift Revenue Tracking</h3>\n<p>With POS integration, restaurants can view the restaurant's revenue and check averages within the current shift or a past one. This allows restaurants to compare revenue week-over-week and adjust planning accordingly.</p>\n<h2 id=\"eligibility-and-technical-requirements\">Eligibility and Technical Requirements</h2>\n<p>OpenTable POS Integration is available only to approved partners that have signed the applicable paperwork and agreed to the terms and conditions. Also note before a POS partner is approved, there will be a Quality Assurance process to ensure the integration is successful.</p>\n<p>Furthermore, in order to provide users with the intended real-time experience, OT requires the POS partner to provide check updates to OT in as near real-time as possible. All ticket updates should be received by OT no later than 30 seconds after the event occurs in the restaurant’s POS system.</p>\n<p>Along with the onboarding, OpenTable requires a QA process to ensure correct functionality.</p>\n<ul>\n<li><p>OpenTable will set up a test account for the POS Partner with the correct timezone.</p>\n</li>\n<li><p>The POS Partner should download the OpenTable software on an iPad to access the system and view the integration in action</p>\n</li>\n<li><p>OpenTable and the POS Partner will hold scheduled calls during the QA process</p>\n</li>\n<li><p>We will provide a <a href=\"https://docs.google.com/spreadsheets/d/1zDzWK278LgzisD1stO395pLCP8sePjyqoHX_UsGu0ic\">QA Document</a> to allow the POS Partner to test the functionality. To begin testing, the Ticket API must return code 200 and the POS Company must send us table information</p>\n</li>\n<li><p>As an additional option, OpenTable can set up an external Slack Channel to answer any ad hoc questions or comments</p>\n</li>\n<li><p>Once both parties feel comfortable with the integration, a handful of restaurants will be identified and used to test the integration in a live environment before rolling out completely.</p>\n</li>\n</ul>\n<h3 id=\"partner-authorization\">Partner Authorization</h3>\n<p>OpenTable POS API Integration is a cloud-based interface. Authorization to access resources on the OpenTable platform will be granted to partners on a single API key basis.</p>\n<p>On-premise systems accessing OpenTable resources must make API requests through an authorized cloud gateway (middle layer or proxy) between the calling client and OpenTable server endpoints. OpenTable POS Integration API is bi-directional and does not directly interfere with on-premise (non-cloud) systems.</p>\n<h2 id=\"developer-details\">Developer Details</h2>\n<h3 id=\"technical-overview\">Technical Overview</h3>\n<h3 id=\"data-flows\">Data Flows</h3>\n<ul>\n<li><p>Reservation and guest data flow from OpenTable</p>\n</li>\n<li><p>Check data flows from POS.</p>\n</li>\n</ul>\n<p>Within these two flows, real-time events include the POS partner sending POS check events to OpenTable. And, OpenTable sending reservation events to the POS partner, as seen in the following visual:</p>\n<img src=\"https://content.pstmn.io/3ca9abc3-ae01-49ff-b12b-68a0996a060b/aW1hZ2UucG5n\" width=\"493\" height=\"373\" />\n\n<h3 id=\"retry-policy\">Retry Policy</h3>\n<ul>\n<li><p>Real-time events are considered stale after 1 minute since its last update.</p>\n</li>\n<li><p>If OpenTable fails to deliver a message to the POS partner within the 1 minute window, the event is dropped.</p>\n</li>\n<li><p>For retries in publishing events to the POS partner OpenTable will retry a total of 3 times, with a 1-second interval, before dropping the event completely.</p>\n</li>\n</ul>\n<p>If anything was missed after the 3 retries, the check bootstrapping can be leveraged at the end of the night.</p>\n<h3 id=\"sequence-id\">Sequence ID</h3>\n<p>A sequence ID is a unique identifier attributed to each publishing reservation event, in each of the event entities.</p>\n<p>Sequence ID is based on a sequence of numbers that monotonically increase for each restaurant every time a reservation event occurs for that restaurant.</p>\n<ul>\n<li><p>Allows the POS partner to detect when an event has been missed from the real-time system.</p>\n</li>\n<li><p>Allows the POS partner to identify which events are more current if update events arrive out of order for the same object.</p>\n</li>\n<li><p>Allows the POS partner to synchronize between real-time events and the API data to ensure all events have been recovered.</p>\n</li>\n</ul>\n<p>Due to the nature of distributed systems, it cannot be guaranteed that sequence IDs will be published in order. However, by looking at the sequence ID it should be assumed that a higher ID is more current than a lower ID for the same reservation. Hence, if an event with a higher sequence ID is sent first, and an event with lower ID is sent after for the same reservation, then the event with the lower ID should be ignored.</p>\n<h3 id=\"missed-events\">Missed Events</h3>\n<p>In case of a missed event, the POS partner can use our <a href=\"https://dev.opentable.com/partner-portal/documentation#sync-reservations-api-v2\">Sync API</a> to pull any necessary historical data to request a bootstrap of all reservation states for a particular restaurant for a particular day.</p>\n<p>See <a href=\"https://dev.opentable.com/partner-portal/documentation#system-resiliency-and-recovery\">System Resiliency and Recovery</a> for details on retrieving missed events.</p>\n<h3 id=\"check-events\">Check Events</h3>\n<p>The POS partner publishes POS check events to OT in order to power <a href=\"https://dev.opentable.com/partner-portal/documentation#automated-table-statuses\">real-time table statusing</a> in OpenTable for Restaurants and provide data analytic capabilities in OpenTable for Restaurants reporting suite. There are two mechanisms that will be key to ensuring this behavior:</p>\n<ol>\n<li><p>A monotonically-increasing sequence ID is sent along with every POS check event. This sequence ID will reset at the beginning of the restaurant's business day to allow it to be unique per day per restaurant.</p>\n</li>\n<li><p>A bootstrap API that takes in an OpenTable Restaurant ID (“RID”), updated_from, and updated_to parameters, and returns a full bootstrap of the restaurant's POS checks between the updated_from and updated_to time frames. The POS partner is expected to store POS checks for a minimum of 7 days.</p>\n</li>\n</ol>\n<p>OT consumes POS check events in the following fashion:</p>\n<ol>\n<li><p>Each event is received via REST hooks.</p>\n</li>\n<li><p>Events with lower sequence IDs than previously received sequence IDs related to the same POS check are dropped. Higher sequence IDs are processed in real-time.</p>\n</li>\n<li><p>Periodically calls the bootstrap API to obtain the latest sequence ID and POS checks.</p>\n</li>\n<li><p>Verifies each POS check event received from the bootstrap API has been processed. If not, reprocesses the missing POS check event.</p>\n</li>\n</ol>\n<h3 id=\"matching-opentable-reservations-to-pos-checks\">Matching OpenTable Reservations to POS Checks</h3>\n<p>When the POS partner receives an OpenTable for Restaurants reservation event from OT noting that a reservation has been seated in OpenTable for Restaurants, the POS partner either automatically creates a new POS check for that reservation, or visually identifies to the POS user there is an associated OpenTable for Restaurants party at the corresponding table. The POS partner also sends all POS check events to OT, with the option of including the OpenTable for Restaurants reservation_id value if known at the time, allowing OT to confidently match the POS check with the OpenTable for Restaurants reservation.</p>\n<p>Secondary to that, OT also runs its matching algorithm, which includes:</p>\n<ul>\n<li><p>An exact match of table number between the POS check and OpenTable for Restaurants table</p>\n</li>\n<li><p>The POS check is created no earlier than 30 minutes before and no later than 60 minutes after the OpenTable for Restaurants reservation’s scheduled time</p>\n</li>\n</ul>\n<p>OT’s secondary matching algorithm runs in the background in order to allow OT to audit and compare its results with the POS partner’s process. In the scenario that automatic POS check creation functionality has been disabled on the POS partner side, OT’s matching algorithm will step in as the primary matching process.</p>\n<h3 id=\"table-course-statuses\">Table Course Statuses</h3>\n<p>OpenTable provides functionality to facilitate course statusing. The functionality can be achieved one of 2 ways.</p>\n<p>Ideal approach:</p>\n<ol>\n<li>Based on categorization of menu items within the POS software, as applicable the POS partner explicitly sends a <em>‘table_status’</em> value _(\"drinks\", \"appetizer\", \"entree\", \"dessert\", \"course_1\" ,\"course_2\", \"course_3\", \"course_4\", \"course_5\", \"course_6\", \"course_7\", \"course_8\", \"course_9\" ,\"course_10\", \"course_11\", \"course_12\", \"post_meal_drinks\", \"bottle_service\", \"paid\")_with each ticket iteration based on ordered items.</li>\n</ol>\n<p>Alternate, less ideal approach:</p>\n<ol>\n<li><p>Using the POS partner’s menu item categories derived from the _‘ticket’_object, the OpenTable for Restaurants user is presented with an interface to map the various POS menu categories to either Appetizer, Entree, or Dessert.</p>\n</li>\n<li><p>OpenTable for Restaurants will adhere to the user designated mappings in determining when ordered POS menu items trigger OpenTable for Restaurants course status updates.</p>\n</li>\n</ol>\n<p>Note: Automatic course status updates are progressive in nature, meaning they only move forward in a chronological sense. E.g if a OpenTable for Restaurants user manually updates a seated reservation’s table status to Dessert and later the server orders entrees in the POS, OpenTable for Restaurants will not regress through the meal by updating the reservation’s table status to Entree; the Dessert course status will persist.</p>\n<h3 id=\"paid-status\">Paid Status</h3>\n<p>The <em>“Paid”</em> table status will be applied to a seated OpenTable for Restaurants reservation when either the POS partner provides a value of <em>“paid”</em> on the POS ticket’s <em>‘table_status’</em> attribute, or <em>‘due’</em> attribute’s value equals zero (after having previously accrued a positive value).</p>\n<p>For OpenTable for Restaurants reservations matched to split POS checks, OT will update the OpenTable for Restaurants reservation’s table status to _“Paid”_only when all split checks belonging to the reservation have a table_status value of <em>“paid”</em> or have a due value of zero.</p>\n<h3 id=\"system-resiliency-and-recovery-for-on-premise-and-hybrid\">System Resiliency and Recovery for On-Premise and Hybrid</h3>\n<p>For On-Premise or Hybrid Integrations, OpenTable can provide a _“heartbeat”_endpoint that returns a list of all relevant RIDs and their latest sequence IDs. A 200 status code response indicates that OT’s system is successfully processing, while the body response with the sequence IDs will allow the POS partner to detect if it has missed any reservation events. This endpoint can be queried as often as desired to meet the POS partner’s need of maintaining consistency.</p>\n","_postman_id":"69e2188f-d1dd-4811-b425-f9834622220d"},{"name":"Private Dining API","item":[{"name":"Directory API","item":[{"name":"APIs","item":[{"name":"Directory API","id":"5e32bb61-d234-4264-afcb-9911e662ab8a","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{"host":true,"user-agent":true,"accept":true,"accept-encoding":true,"connection":true}},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/sync/directory?limit=10","description":"<h1 id=\"opentable-directory-api-documentation\"><strong>OpenTable Directory API Documentation</strong></h1>\n<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The Directory API gives approved developers the ability to acquire and synchronize restaurants that are visible as search results on the OpenTable website. The Directory API is only available to our Consumer Partners and is not offered to our Restaurant Partners.</p>\n<hr />\n<h2 id=\"endpoint\"><strong>Endpoint</strong></h2>\n<p><strong>URL:</strong> {{base-url}}/sync/directory</p>\n<p><strong>Method:</strong> GET</p>\n<h3 id=\"query-parameters\"><strong>Query Parameters</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>The OpenTable restaurant ID.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>The API will only return restaurants that exist in the specified country.</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>The starting point for pagination. Default is 0.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>The maximum number of guests to return per request. Default is 1000.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-attributes\"><strong>Response Attributes</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td>total_items</td>\n<td>integer</td>\n<td>Number of total records returned from the API call.</td>\n</tr>\n<tr>\n<td>items</td>\n<td>array</td>\n<td>An array of restaurant attributes containing detailed information about each restaurant.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"restaurant-object-attributes\"><strong>Restaurant Object Attributes</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this directory refers to. This field will only be present for restaurants that are members of the OpenTable network.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>The name of the restaurant.</td>\n</tr>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>The address of the restaurant.</td>\n</tr>\n<tr>\n<td>address2</td>\n<td>string</td>\n<td>The second address line of the restaurant.</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>The city in which the restaurant is located.</td>\n</tr>\n<tr>\n<td>state</td>\n<td>array</td>\n<td>The state or province in which the restaurant is located.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>The country in which the restaurant is located.</td>\n</tr>\n<tr>\n<td>latitude</td>\n<td>string</td>\n<td>The latitude of the restaurant.</td>\n</tr>\n<tr>\n<td>longitude</td>\n<td>string</td>\n<td>The longitude of the restaurant.</td>\n</tr>\n<tr>\n<td>postal_code</td>\n<td>integer</td>\n<td>The zip code or postal code for the restaurant.</td>\n</tr>\n<tr>\n<td>phone_number</td>\n<td>string</td>\n<td>The restaurant phone number.</td>\n</tr>\n<tr>\n<td>metro_name</td>\n<td>string</td>\n<td>The area of the city in which the restaurant is located.</td>\n</tr>\n<tr>\n<td>reservation_url</td>\n<td>string</td>\n<td>Restaurant ID-based reservation page URL.</td>\n</tr>\n<tr>\n<td>profile_url</td>\n<td>string</td>\n<td>Restaurant ID-based profile page URL.</td>\n</tr>\n<tr>\n<td>natural_reservation_url</td>\n<td>array</td>\n<td>Natural language-based reservation page URL.</td>\n</tr>\n<tr>\n<td>natural_profile_url</td>\n<td>string</td>\n<td>Natural language-based profile page URL.</td>\n</tr>\n<tr>\n<td>profile_photo</td>\n<td>array</td>\n<td>Array containing profile photos in different sizes.</td>\n</tr>\n<tr>\n<td>is_restaurant_in_group</td>\n<td>boolean</td>\n<td>Set to true when the restaurant is a member of the restaurant group associated with the partner.</td>\n</tr>\n<tr>\n<td>aggregate_score</td>\n<td>string</td>\n<td>Aggregate score of the restaurant.</td>\n</tr>\n<tr>\n<td>price_quartile</td>\n<td>string</td>\n<td>Qualitative pricing of the restaurant, measured in \"$\". Maximum \"$$$$\".</td>\n</tr>\n<tr>\n<td>review_count</td>\n<td>integer</td>\n<td>Number of reviews that the restaurant has.</td>\n</tr>\n<tr>\n<td>category</td>\n<td>string</td>\n<td>Food categories.</td>\n</tr>\n<tr>\n<td>hours</td>\n<td>string</td>\n<td>Operating hours of the restaurant represented as a string in HTML format.</td>\n</tr>\n<tr>\n<td>hours_raw</td>\n<td>array</td>\n<td>Operating hours of the restaurant represented as an array. Includes: \"name\" (shift name), \"shiftStarts\" (start time, HH:MM 24-hour), \"shiftEnds\" (end time, HH:MM 24-hour), and \"days\" (applicable weekdays). Each shift is detailed individually.</td>\n</tr>\n<tr>\n<td>private_dining</td>\n<td>object</td>\n<td>Details information about private dining space for the restaurant. If \"enabled_with_active_spaces\" the restaurant can accept Private Dining Leads</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"profile_photo-array\"><strong>Profile_Photo Array</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>A unique identifier for the image.</td>\n</tr>\n<tr>\n<td>sizes</td>\n<td>array</td>\n<td>Array of different sized profile photos. Values can include: small, xsmall, legacy, wide-xlarge, large, xlarge, wide-large, medium, wide-mlarge, wide-medium, huge, wide-huge, wide-small, wide-smedium.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"profile_photo-size-array\"><strong>Profile_Photo Size Array</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>url</td>\n<td>string</td>\n<td>URL link to the sized photo in JPG format.</td>\n</tr>\n<tr>\n<td>width</td>\n<td>integer</td>\n<td>Width of the photo in pixels.</td>\n</tr>\n<tr>\n<td>height</td>\n<td>integer</td>\n<td>Height of the photo in pixels.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-response-for-directory\"><strong>Error Response for Directory</strong></h3>\n<h3 id=\"error-messaging\"><strong>Error Messaging</strong></h3>\n<p>The error response details returned by the Directory API collection is in the below format. When reporting issues with the API, always provide the OT-RequestId (requestid from the error body and located in the response header) to allow OpenTable to uniquely identify a specific req<strong>uest.</strong></p>\n","urlObject":{"path":["sync","directory"],"host":["{{base-url}}"],"query":[{"key":"limit","value":"10"}],"variable":[]}},"response":[{"id":"c39b48c6-3cb0-4643-b293-e9dd8f798383","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/sync/directory?limit=10","host":["{{base-url}}"],"path":["sync","directory"],"query":[{"key":"limit","value":"10"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[],"cookie":[],"responseTime":null,"body":"{\n    \"total_items\": 60895,\n    \"offset\": 0,\n    \"limit\": 10,\n    \"items\": [\n        {\n            \"rid\": 10,\n            \"name\": \"Harris'\",\n            \"address\": \"2100 Van Ness Avenue\",\n            \"address2\": \"\",\n            \"city\": \"San Francisco\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.7950668\",\n            \"longitude\": \"-122.4229237\",\n            \"postal_code\": \"94109\",\n            \"phone_number\": \"4156731888\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/10\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/10\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/harris-san-francisco\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/harris-san-francisco\",\n            \"profile_photo\": {\n                \"id\": 79882553,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/3/79882553.png\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/3/79882553.png\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/3/79882553.png\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/3/79882553.png\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/3/79882553.png\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/3/79882553.png\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/3/79882553.png\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/3/79882553.png\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/3/79882553.png\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/3/79882553.png\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/3/79882553.png\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/3/79882553.png\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/3/79882553.png\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/3/79882553.png\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.800\",\n            \"price_quartile\": \"$$$$\",\n            \"review_count\": 5864,\n            \"category\": [\n                \"Steakhouse\",\n                \"American\",\n                \"Steak\"\n            ],\n            \"hours\": \"Sun 5:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"openingtimes\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 24,\n            \"name\": \"INDO Restaurant & Lounge\",\n            \"address\": \"3295 El Camino Real\",\n            \"address2\": \"\",\n            \"city\": \"Palo Alto\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.4209159\",\n            \"longitude\": \"-122.1369480\",\n            \"postal_code\": \"94306\",\n            \"phone_number\": \"+16504947168\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/24\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/24\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/indo-restaurant-and-lounge-palo-alto\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/indo-restaurant-and-lounge-palo-alto\",\n            \"profile_photo\": {\n                \"id\": 26286947,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod/26286947/5/small.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/5/26286947.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/5/26286947.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/5/26286947.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod/26286947/5/large.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/5/26286947.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/5/26286947.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod/26286947/5/medium.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/5/26286947.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/5/26286947.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod/26286947/5/huge.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/5/26286947.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/5/26286947.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/5/26286947.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.700\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 1163,\n            \"category\": [\n                \"Asian\",\n                \"Southeast Asian\",\n                \"Indonesian\"\n            ],\n            \"hours\": \"Lunch\\n<br />Daily 11:00 am–2:00 pm\\n<br />Dinner\\n<br />Daily 5:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:00\",\n                    \"shiftEnds\": \"14:00\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"sun\",\n                        \"mon\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"sun\",\n                        \"mon\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 33,\n            \"name\": \"Wildfire - Chicago\",\n            \"address\": \"159 West Erie St.\",\n            \"address2\": \"\",\n            \"city\": \"Chicago\",\n            \"state\": \"IL\",\n            \"country\": \"US\",\n            \"latitude\": \"41.8937860\",\n            \"longitude\": \"-87.6334978\",\n            \"postal_code\": \"60654\",\n            \"phone_number\": \"3127879000\",\n            \"metro_name\": \"Chicago / Illinois\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/33\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/33\",\n            \"natural_reservation_url\": \"http://www.opentable.com/wildfire-chicago\",\n            \"natural_profile_url\": \"http://www.opentable.com/wildfire-chicago\",\n            \"profile_photo\": {\n                \"id\": 23682457,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod/23682457/1/small.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/1/23682457.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/1/23682457.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/1/23682457.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod/23682457/1/large.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/1/23682457.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/1/23682457.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod/23682457/1/medium.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/1/23682457.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/1/23682457.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod/23682457/1/huge.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/1/23682457.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/1/23682457.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/1/23682457.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.400\",\n            \"price_quartile\": \"$$\",\n            \"review_count\": 8416,\n            \"category\": [\n                \"American\",\n                \"Steak\",\n                \"Seafood\"\n            ],\n            \"hours\": \"Mon–Thu, Sun 4:00 pm–8:30 pm\\n<br />Fri, Sat 4:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"openingtimes\",\n                    \"shiftStarts\": \"16:00\",\n                    \"shiftEnds\": \"20:30\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"sun\"\n                    ]\n                },\n                {\n                    \"name\": \"openingtimes\",\n                    \"shiftStarts\": \"16:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"fri\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 47,\n            \"name\": \"Shaw's Crab House & Oyster Bar - Chicago\",\n            \"address\": \"21 East Hubbard St.\",\n            \"address2\": \"\",\n            \"city\": \"Chicago\",\n            \"state\": \"IL\",\n            \"country\": \"US\",\n            \"latitude\": \"41.8899100\",\n            \"longitude\": \"-87.6274230\",\n            \"postal_code\": \"60611\",\n            \"phone_number\": \"3125272722\",\n            \"metro_name\": \"Chicago / Illinois\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/47\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/47\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/shaws-crab-house-and-oyster-bar-chicago-chicago\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/shaws-crab-house-and-oyster-bar-chicago-chicago\",\n            \"profile_photo\": {\n                \"id\": 68954757,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/2/68954757.png\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/2/68954757.png\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/2/68954757.png\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/2/68954757.png\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/2/68954757.png\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/2/68954757.png\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/2/68954757.png\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/2/68954757.png\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/2/68954757.png\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/2/68954757.png\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/2/68954757.png\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/2/68954757.png\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/2/68954757.png\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/2/68954757.png\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.800\",\n            \"price_quartile\": \"$$$$\",\n            \"review_count\": 14734,\n            \"category\": [\n                \"Seafood\",\n                \"American\",\n                \"Sushi\"\n            ],\n            \"hours\": \"Lunch\\n<br />Daily 11:30 am–3:00 pm\\n<br />Dinner\\n<br />Mon–Thu, Sun 3:00 pm–9:00 pm\\n<br />Fri, Sat 3:00 pm–10:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:30\",\n                    \"shiftEnds\": \"15:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"15:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"sun\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"15:00\",\n                    \"shiftEnds\": \"22:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:30\",\n                    \"shiftEnds\": \"15:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 101,\n            \"name\": \"Alcala\",\n            \"address\": \"246 East 44th Street\",\n            \"address2\": \"\",\n            \"city\": \"New York\",\n            \"state\": \"NY\",\n            \"country\": \"US\",\n            \"latitude\": \"40.7511146\",\n            \"longitude\": \"-73.9717761\",\n            \"postal_code\": \"10017\",\n            \"phone_number\": \"2123701866\",\n            \"metro_name\": \"New York City\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/101\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/101\",\n            \"natural_reservation_url\": \"http://www.opentable.com/alcala\",\n            \"natural_profile_url\": \"http://www.opentable.com/alcala\",\n            \"profile_photo\": {\n                \"id\": 47526468,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod1/47526468/2/small.png\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/2/47526468.png\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/2/47526468.png\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/2/47526468.png\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod1/47526468/2/large.png\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/2/47526468.png\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/2/47526468.png\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod1/47526468/2/medium.png\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/2/47526468.png\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/2/47526468.png\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod1/47526468/2/huge.png\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/2/47526468.png\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/2/47526468.png\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/2/47526468.png\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.400\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 617,\n            \"category\": [\n                \"Spanish\",\n                \"Latin / Spanish\",\n                \"Comfort Food\"\n            ],\n            \"hours\": \"Lunch\\n<br />Mon–Fri 12:00 pm–4:30 pm\\n<br />Dinner\\n<br />Mon–Fri 5:00 pm–11:00 pm\\n<br />Sat, Sun 5:30 pm–11:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"12:00\",\n                    \"shiftEnds\": \"16:30\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"23:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:30\",\n                    \"shiftEnds\": \"23:00\",\n                    \"days\": [\n                        \"sun\",\n                        \"sat\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": false\n            }\n        },\n        {\n            \"rid\": 112,\n            \"name\": \"Marin\",\n            \"address\": \"1101 4th Ave.\",\n            \"address2\": \"\",\n            \"city\": \"Seattle\",\n            \"state\": \"WA\",\n            \"country\": \"US\",\n            \"latitude\": \"47.6069535\",\n            \"longitude\": \"-122.3340941\",\n            \"postal_code\": \"98101\",\n            \"phone_number\": \"+12066247755\",\n            \"metro_name\": \"Seattle / Eastern Washington\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/112\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/112\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/marin-seattle\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/marin-seattle\",\n            \"profile_photo\": {\n                \"id\": 79033572,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/4/79033572.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/4/79033572.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/4/79033572.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/4/79033572.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/4/79033572.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/4/79033572.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/4/79033572.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/4/79033572.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/4/79033572.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/4/79033572.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/4/79033572.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/4/79033572.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/4/79033572.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/4/79033572.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.300\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 30,\n            \"category\": [\n                \"Mediterranean\",\n                \"American\",\n                \"Contemporary American\"\n            ],\n            \"hours\": \"Breakfast\\n<br />Mon–Fri 7:00 am–10:00 am\\n<br />Bar\\n<br />Sat, Sun 7:00 am–10:00 pm\\n<br />Brunch\\n<br />Sat, Sun 8:00 am–2:00 pm\\n<br />Lunch\\n<br />Mon–Fri 11:00 am–2:00 pm\\n<br />Happy Hour\\n<br />Daily 3:00 pm–5:00 pm\\n<br />Dinner\\n<br />Daily 5:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"breakfast\",\n                    \"shiftStarts\": \"07:00\",\n                    \"shiftEnds\": \"10:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"fri\",\n                        \"wed\",\n                        \"thu\"\n                    ]\n                },\n                {\n                    \"name\": \"brunch\",\n                    \"shiftStarts\": \"08:00\",\n                    \"shiftEnds\": \"14:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                },\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:00\",\n                    \"shiftEnds\": \"14:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"happyhour\",\n                    \"shiftStarts\": \"15:00\",\n                    \"shiftEnds\": \"17:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"sun\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"sat\",\n                        \"sun\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"bar\",\n                    \"shiftStarts\": \"07:00\",\n                    \"shiftEnds\": \"22:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 130,\n            \"name\": \"Boulevard\",\n            \"address\": \"1 Mission St.\",\n            \"address2\": \"\",\n            \"city\": \"San Francisco\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.7932194\",\n            \"longitude\": \"-122.3929750\",\n            \"postal_code\": \"94105\",\n            \"phone_number\": \"+14155436084\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/130\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/130\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/boulevard-san-francisco\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/boulevard-san-francisco\",\n            \"profile_photo\": {\n                \"id\": 51634215,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod1/51634215/2/small.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/2/51634215.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/2/51634215.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/2/51634215.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod1/51634215/2/large.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/2/51634215.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/2/51634215.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod1/51634215/2/medium.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/2/51634215.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/2/51634215.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod1/51634215/2/huge.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/2/51634215.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/2/51634215.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/2/51634215.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.900\",\n            \"price_quartile\": \"$$$$\",\n            \"review_count\": 9311,\n            \"category\": [\n                \"Californian\",\n                \"Contemporary French / American\",\n                \"Contemporary American\"\n            ],\n            \"hours\": \"Bar\\n<br />Mon–Sat 5:00 pm–9:30 pm\\n<br />Dinner\\n<br />Mon–Sat 5:15 pm–9:30 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:15\",\n                    \"shiftEnds\": \"21:30\",\n                    \"days\": [\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"wed\",\n                        \"tue\",\n                        \"mon\"\n                    ]\n                },\n                {\n                    \"name\": \"bar\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:30\",\n                    \"days\": [\n                        \"wed\",\n                        \"tue\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"mon\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        },\n        {\n            \"rid\": 141,\n            \"name\": \"ANZU\",\n            \"address\": \"222 Mason St.\",\n            \"address2\": \"\",\n            \"city\": \"San Francisco\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.7860081\",\n            \"longitude\": \"-122.4092959\",\n            \"postal_code\": \"94102\",\n            \"phone_number\": \"+14153941100\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/141\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/141\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/anzu-san-francisco\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/anzu-san-francisco\",\n            \"profile_photo\": {\n                \"id\": 92081614,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/1/92081614.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/1/92081614.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/1/92081614.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/1/92081614.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/1/92081614.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/1/92081614.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/1/92081614.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/1/92081614.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/1/92081614.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/1/92081614.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/1/92081614.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/1/92081614.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/1/92081614.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/1/92081614.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.100\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 2578,\n            \"category\": [\n                \"Breakfast\",\n                \"Californian\",\n                \"Japanese\"\n            ],\n            \"hours\": \"Breakfast\\n<br />Mon–Fri 6:30 am–10:30 am\\n<br />Sat, Sun 7:00 am–12:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"breakfast\",\n                    \"shiftStarts\": \"06:30\",\n                    \"shiftEnds\": \"10:30\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"breakfast\",\n                    \"shiftStarts\": \"07:00\",\n                    \"shiftEnds\": \"12:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": false\n            }\n        },\n        {\n            \"rid\": 144,\n            \"name\": \"Il Solito\",\n            \"address\": \"627 SW Washington St.\",\n            \"address2\": \"\",\n            \"city\": \"Portland\",\n            \"state\": \"OR\",\n            \"country\": \"US\",\n            \"latitude\": \"45.5206798\",\n            \"longitude\": \"-122.6785073\",\n            \"postal_code\": \"97205\",\n            \"phone_number\": \"+15032281515\",\n            \"metro_name\": \"Portland / Oregon\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/144\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/144\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/il-solito-portland\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/il-solito-portland\",\n            \"profile_photo\": {\n                \"id\": 82056458,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/small/3/82056458.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/3/82056458.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/3/82056458.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/3/82056458.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/large/3/82056458.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/3/82056458.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/3/82056458.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/medium/3/82056458.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/3/82056458.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/3/82056458.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/huge/3/82056458.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/3/82056458.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/3/82056458.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/3/82056458.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.300\",\n            \"price_quartile\": \"$$\",\n            \"review_count\": 1364,\n            \"category\": [\n                \"Breakfast\",\n                \"Contemporary Italian\",\n                \"Northwest\"\n            ],\n            \"hours\": \"Breakfast\\n<br />Mon–Fri 7:00 am–11:00 am\\n<br />Brunch\\n<br />Sat, Sun 8:00 am–2:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"breakfast\",\n                    \"shiftStarts\": \"07:00\",\n                    \"shiftEnds\": \"11:00\",\n                    \"days\": [\n                        \"mon\",\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\"\n                    ]\n                },\n                {\n                    \"name\": \"brunch\",\n                    \"shiftStarts\": \"08:00\",\n                    \"shiftEnds\": \"14:00\",\n                    \"days\": [\n                        \"sat\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": false\n            }\n        },\n        {\n            \"rid\": 147,\n            \"name\": \"Birk's\",\n            \"address\": \"3955 Freedom Circle\",\n            \"address2\": \"\",\n            \"city\": \"Santa Clara\",\n            \"state\": \"CA\",\n            \"country\": \"US\",\n            \"latitude\": \"37.3854527\",\n            \"longitude\": \"-121.9728830\",\n            \"postal_code\": \"95054\",\n            \"phone_number\": \"4089806400\",\n            \"metro_name\": \"San Francisco Bay Area\",\n            \"reservation_url\": \"http://www.opentable.com/restaurant/profile/147\",\n            \"profile_url\": \"http://www.opentable.com/restaurant/profile/147\",\n            \"natural_reservation_url\": \"http://www.opentable.com/r/birks-santa-clara\",\n            \"natural_profile_url\": \"http://www.opentable.com/r/birks-santa-clara\",\n            \"profile_photo\": {\n                \"id\": 25175460,\n                \"sizes\": {\n                    \"small\": {\n                        \"url\": \"https://images.otstatic.com/prod/25175460/1/small.jpg\",\n                        \"width\": 160,\n                        \"height\": 160\n                    },\n                    \"xsmall\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xsmall/1/25175460.jpg\",\n                        \"width\": 105,\n                        \"height\": 105\n                    },\n                    \"legacy\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/legacy/1/25175460.jpg\",\n                        \"width\": 208,\n                        \"height\": 208\n                    },\n                    \"wide-xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-xlarge/1/25175460.jpg\",\n                        \"width\": 752,\n                        \"height\": 423\n                    },\n                    \"large\": {\n                        \"url\": \"https://images.otstatic.com/prod/25175460/1/large.jpg\",\n                        \"width\": 640,\n                        \"height\": 640\n                    },\n                    \"xlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/xlarge/1/25175460.jpg\",\n                        \"width\": 752,\n                        \"height\": 752\n                    },\n                    \"wide-large\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-large/1/25175460.jpg\",\n                        \"width\": 640,\n                        \"height\": 360\n                    },\n                    \"medium\": {\n                        \"url\": \"https://images.otstatic.com/prod/25175460/1/medium.jpg\",\n                        \"width\": 320,\n                        \"height\": 320\n                    },\n                    \"wide-mlarge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-mlarge/1/25175460.jpg\",\n                        \"width\": 480,\n                        \"height\": 270\n                    },\n                    \"wide-medium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-medium/1/25175460.jpg\",\n                        \"width\": 320,\n                        \"height\": 180\n                    },\n                    \"huge\": {\n                        \"url\": \"https://images.otstatic.com/prod/25175460/1/huge.jpg\",\n                        \"width\": 1280,\n                        \"height\": 1280\n                    },\n                    \"wide-huge\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-huge/1/25175460.jpg\",\n                        \"width\": 1280,\n                        \"height\": 720\n                    },\n                    \"wide-small\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-small/1/25175460.jpg\",\n                        \"width\": 160,\n                        \"height\": 90\n                    },\n                    \"wide-smedium\": {\n                        \"url\": \"https://resizer.otstatic.com/v2/photos/wide-smedium/1/25175460.jpg\",\n                        \"width\": 240,\n                        \"height\": 135\n                    }\n                }\n            },\n            \"is_restaurant_in_group\": false,\n            \"aggregate_score\": \"4.700\",\n            \"price_quartile\": \"$$$\",\n            \"review_count\": 3715,\n            \"category\": [\n                \"American\",\n                \"Steakhouse\",\n                \"Steak\"\n            ],\n            \"hours\": \"Lunch\\n<br />Mon–Fri 11:00 am–2:30 pm\\n<br />Happy Hour\\n<br />Mon–Fri 3:30 pm–6:00 pm\\n<br />Sat 5:00 pm–7:00 pm\\n<br />Dinner\\n<br />Daily 5:00 pm–9:00 pm\",\n            \"hours_raw\": [\n                {\n                    \"name\": \"lunch\",\n                    \"shiftStarts\": \"11:00\",\n                    \"shiftEnds\": \"14:30\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"mon\"\n                    ]\n                },\n                {\n                    \"name\": \"happyhour\",\n                    \"shiftStarts\": \"15:30\",\n                    \"shiftEnds\": \"18:00\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"mon\"\n                    ]\n                },\n                {\n                    \"name\": \"happyhour\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"19:00\",\n                    \"days\": [\n                        \"sat\"\n                    ]\n                },\n                {\n                    \"name\": \"dinner\",\n                    \"shiftStarts\": \"17:00\",\n                    \"shiftEnds\": \"21:00\",\n                    \"days\": [\n                        \"tue\",\n                        \"wed\",\n                        \"thu\",\n                        \"fri\",\n                        \"sat\",\n                        \"mon\",\n                        \"sun\"\n                    ]\n                }\n            ],\n            \"private_dining\": {\n                \"enabled_with_active_spaces\": true\n            }\n        }\n    ]\n}"},{"id":"18121810-bd49-41ff-b24b-223305234a6a","name":"401","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/sync/directory?limit=10","host":["{{base-url}}"],"path":["sync","directory"],"query":[{"key":"limit","value":"10"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"1800b854-25d4-42a7-b046-92449c438ed5"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"C0133B2B-924E-44C9-9FB1-4A838792C041"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"10"},{"key":"Content-Length","value":"91"},{"key":"Date","value":"Wed, 22 Jan 2025 20:46:56 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": [\n        {\n            \"message\": \"invalid_token\"\n        }\n    ],\n    \"requestid\": \"1800b854-25d4-42a7-b046-92449c438ed5\"\n}"}],"_postman_id":"5e32bb61-d234-4264-afcb-9911e662ab8a"}],"id":"93d6655e-d66e-4197-b61f-eb3bf9f4edd4","description":"<p>The Directory API gives approved developers the ability to acquire and synchronize restaurants that are visible as search results on the OpenTable website. The Directory API is only available to our Consumer Partners and is not offered to our Restaurant Partners.</p>\n","_postman_id":"93d6655e-d66e-4197-b61f-eb3bf9f4edd4"}],"id":"95b88800-c1a1-4ab0-80ba-d79f17a1f54b","_postman_id":"95b88800-c1a1-4ab0-80ba-d79f17a1f54b","description":""},{"name":"Private Dining Lead API","item":[{"name":"POST Lead","id":"335d6553-c51a-4f1c-8088-d6d8e9f1a96c","protocolProfileBehavior":{"disableBodyPruning":true,"disabledSystemHeaders":{}},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"user@example.com\",\n  \"phoneNumber\": \"1 123 123 1234\",\n  \"eventDate\": \"2027-01-01\",\n  \"eventTime\": \"18:30\",\n  \"partySize\": 100, \n  \"eventType\": \"Anniversary\",\n  \"flexibleDate\": true\n}","options":{"raw":{"language":"json"}}},"url":"((base-url}}/v1/privatedining/restaurant/{{RID}}/leads","description":"<h1 id=\"api-path\">API Path</h1>\n<p>/v1/privatedining/restaurant/{{RID}}/leads</p>\n<p>Method: POST</p>\n<h2 id=\"eligibility-rules\">Eligibility Rules</h2>\n<ul>\n<li><p>Access is <strong>restricted to restaurant IDs (RIDs) with an active Private Dining subscription</strong></p>\n</li>\n<li><p>Requests for ineligible RIDs will be rejected</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<h3 id=\"path-parameters\">Path Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>OpenTable restaurant ID used to route the lead to the correct venue</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"request-body-json\">Request Body (JSON)</h3>\n<h4 id=\"required-fields\">Required Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>firstName</code></td>\n<td>string</td>\n<td>Guest first name</td>\n</tr>\n<tr>\n<td><code>lastName</code></td>\n<td>string</td>\n<td>Guest last name</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Guest email address. Must be a valid email format (business rule validation enforced)</td>\n</tr>\n<tr>\n<td><code>phoneNumber</code></td>\n<td>string</td>\n<td>Guest phone number</td>\n</tr>\n<tr>\n<td><code>eventDate</code></td>\n<td>string (<code>yyyy-mm-dd</code>)</td>\n<td>Event date. <strong>Must be a future date</strong></td>\n</tr>\n<tr>\n<td><code>eventTime</code></td>\n<td>string (<code>HH:mm</code>, 24-hour)</td>\n<td>Event time</td>\n</tr>\n<tr>\n<td><code>partySize</code></td>\n<td>number</td>\n<td>Number of guests. Minimum value is <code>1</code></td>\n</tr>\n<tr>\n<td><code>eventType</code></td>\n<td>string (enum)</td>\n<td>Type of event</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h4 id=\"eventtype-enum-values\"><code>eventType</code> Enum Values</h4>\n<ul>\n<li><p><code>Anniversary</code></p>\n</li>\n<li><p><code>BabyShower</code></p>\n</li>\n<li><p><code>BarMitzvah</code></p>\n</li>\n<li><p><code>Birthday</code></p>\n</li>\n<li><p><code>BridalWeddingShower</code></p>\n</li>\n<li><p><code>CharityEvent</code></p>\n</li>\n<li><p><code>Class</code></p>\n</li>\n<li><p><code>CocktailParty</code></p>\n</li>\n<li><p><code>Conference</code></p>\n</li>\n<li><p><code>CorporateEvent</code></p>\n</li>\n<li><p><code>DinnerParty</code></p>\n</li>\n<li><p><code>Engagement</code></p>\n</li>\n<li><p><code>FilmingLocation</code></p>\n</li>\n<li><p><code>Fundraiser</code></p>\n</li>\n<li><p><code>Graduation</code></p>\n</li>\n<li><p><code>HolidayEvent</code></p>\n</li>\n<li><p><code>LaunchParty</code></p>\n</li>\n<li><p><code>Meeting</code></p>\n</li>\n<li><p><code>Other</code></p>\n</li>\n<li><p><code>PrivateDining</code></p>\n</li>\n<li><p><code>RehearsalDinner</code></p>\n</li>\n<li><p><code>SocialEvent</code></p>\n</li>\n<li><p><code>SpecialOccasion</code></p>\n</li>\n<li><p><code>WeddingReception</code></p>\n</li>\n</ul>\n<hr />\n<h4 id=\"optional-fields\">Optional Fields</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>flexibleDate</code></td>\n<td>boolean</td>\n<td>Set to <code>true</code> if the event date is flexible or not yet fixed</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes--validation-rules\">Notes &amp; Validation Rules</h2>\n<ul>\n<li><p><code>eventDate</code> must be in the future</p>\n</li>\n<li><p><code>eventTime</code> must use <strong>24-hour format</strong></p>\n</li>\n<li><p><code>email</code> is validated for proper format</p>\n</li>\n<li><p><code>partySize</code> must be ≥ 1</p>\n</li>\n<li><p>Requests for RIDs without an active Private Dining subscription will fail</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","privatedining","restaurant","{{RID}}","leads"],"host":["((base-url}}"],"query":[],"variable":[]}},"response":[{"id":"e7a9244b-d9be-4dcc-8216-9c48894887ee","name":"201","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"user@example.com\",\n  \"phoneNumber\": \"1 123 123 1234\",\n  \"eventDate\": \"2027-01-01\",\n  \"eventTime\": \"18:30\",\n  \"partySize\": 100, \n  \"eventType\": \"Anniversary\",\n  \"flexibleDate\": true\n}","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v1/privatedining/restaurant/{{rid}}/leads"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"7ea6fbf7-b273-4975-871f-38dabb5fd521"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"A3F69561-F1A9-4CE7-A12B-B607730100D1"},{"key":"OT-SessionID","value":"6a76dacf-2665-4d95-adcc-1567e97315b5"},{"key":"Content-Type","value":"text/plain;charset=utf-8"},{"key":"X-OT-Backend","value":"eventDiningPartner"},{"key":"X-OT-UriTemplate","value":"/eventDiningPartner/api/v1/privatedining/restaurant/{rid}/leads"},{"key":"Content-Length","value":"24"},{"key":"Date","value":"Wed, 21 Jan 2026 21:23:06 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"bm_sv=A80D4E0A20858200B33816024925E972~YAAQiJs+F8P/p86bAQAAXJBw4h559yHEqGnzP3fHYj7VQJ4ye6uvRIrw6ijcA7NCWXnOWvhH+RIjPC8ACnD4gRy0/W9Cz5/VsXl1NRxL8v7sYVW+ksXbznemi4+VIG/FJVzt6zntLupXFLSLPORL6xg6uGzPJQ3tuTmyMSP8mytS5pJoQh75ttdZjsiDrQFcyDNQbi4Fjb2RdwQXN889uBKydEchfAu9DVmXQovoiJSo7nl7c9gT9GmJv7F/ZKnnPi2p~1; Domain=.opentable.com; Path=/; Expires=Wed, 21 Jan 2026 23:17:48 GMT; Max-Age=6882; SameSite=None; Secure"}],"cookie":[],"responseTime":null,"body":"697143ba23a07a71d1c3cf51"}],"_postman_id":"335d6553-c51a-4f1c-8088-d6d8e9f1a96c"}],"id":"74f25183-cc63-46dc-94d2-f589e92481cc","description":"<h1 id=\"overview\">Overview</h1>\n<p>The Private Dining Lead API allows partners to create and submit private dining inquiries on behalf of guests directly to an OpenTable restaurant. Each lead is routed using the OpenTable restaurant ID (RID), ensuring the request reaches the correct venue and its private dining team.  </p>\n<p>This endpoint is designed to support high-value event inquiries such as celebrations, corporate events, and group dining, helping restaurants capture demand beyond standard reservations.  </p>\n<p>Posting leads is restricted to restaurants with an active Private Dining subscription.</p>\n","_postman_id":"74f25183-cc63-46dc-94d2-f589e92481cc"}],"id":"dbc7034b-5595-485c-92be-3d3f1786e676","description":"<h1 id=\"private-dining-leads-api\">Private Dining Leads API</h1>\n<p>The <strong>Private Dining Leads API</strong> allows partners to programmatically submit private dining (PD) inquiries to <strong>participating OpenTable restaurants</strong>. This integration is designed for partners who capture private dining demand in their own products and want to route qualified leads directly into OpenTable’s restaurant workflows.</p>\n<p>Because <strong>not all restaurants support private dining</strong>, partners must first use OpenTable’s <strong>Directory API</strong> to identify which restaurants have private dining enabled before attempting to post a lead.</p>\n<h2 id=\"overview\">Overview</h2>\n<p>At a high level, the Private Dining Leads integration follows a two-step flow:</p>\n<ol>\n<li><p><strong>Discover PD-enabled restaurants via Directory</strong></p>\n<ul>\n<li><p>Call the <strong>Directory API</strong> to retrieve restaurant metadata for the markets and partners you support.</p>\n</li>\n<li><p>Use the <strong>private dining–related attribute</strong> in the response to determine whether a given restaurant has private dining enabled.</p>\n</li>\n<li><p>Only restaurants flagged as <strong>PD-enabled</strong> are eligible to receive private dining leads.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>Submit private dining leads for eligible restaurants</strong></p>\n<ul>\n<li><p>For restaurants identified as PD-enabled, submit inquiries using the <strong>Private Dining Lead submission endpoint</strong>.</p>\n</li>\n<li><p>The lead payload should include the guest’s contact details and event requirements as defined by the endpoint’s schema.</p>\n</li>\n<li><p>OpenTable will route the lead to the selected restaurant so they can review and respond through their existing tools.</p>\n</li>\n</ul>\n</li>\n</ol>\n<h3 id=\"important-considerations\">Important considerations</h3>\n<ul>\n<li><p><strong>PD availability is not universal</strong><br />  Many restaurants in the Directory do <strong>not</strong> have private dining enabled. Integrations <strong>must</strong> respect the PD-enabled attribute to avoid submitting leads to ineligible restaurants.</p>\n</li>\n<li><p><strong>Limited PD-specific metadata in Directory</strong><br />  The Directory response <strong>does not currently expose private dining–specific details</strong> (such as room names, capacities, or minimums); it only indicates whether private dining is enabled. Partners should collect the necessary event details from guests in their own UI and pass them through the lead submission endpoint.</p>\n</li>\n<li><p><strong>Decoupled discovery and lead submission</strong><br />  Discovery (Directory) and lead submission (Private Dining Leads) are <strong>separate APIs</strong>. A typical integration will:</p>\n<ul>\n<li><p>Periodically sync or query Directory to understand which restaurants accept private dining leads.</p>\n</li>\n<li><p>Store and use restaurant identifiers from Directory when posting leads to ensure they are routed correctly.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p>This design allows partners to build flexible experiences for guests while ensuring that private dining leads are only sent to restaurants that are ready to handle them through OpenTable.</p>\n","_postman_id":"dbc7034b-5595-485c-92be-3d3f1786e676"},{"name":"Reviews API","item":[{"name":"Get Review Data","id":"7f91da43-0df5-483a-b370-5e66010e1633","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/v1/partnerreviews/allreviews?Rid=1038007&NumberOfReviews=5","description":"<h2 id=\"overview\">Overview</h2>\n<p>This specific endpoint allows partners to obtain all the reviews by Restaurant and Date or count. You can query a single <code>RID</code> or multiple <code>RIDs</code>, if multiple, comma separated.</p>\n<p>Endpoint:</p>\n<p><strong>URL:</strong> <a href=\"https://platform.opentable.com/v1/partnerreviews/allreviews\">https://platform.opentable.com/v1/partnerreviews/allreviews</a></p>\n<p><strong>Method:</strong> GET</p>\n<h3 id=\"query-parameters\"><strong>Query Parameters</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type or Value</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>RID \\\\\\\\\\\\\\*required</code></td>\n<td>String</td>\n<td>Unique identifier for a restaurant (provided by OpenTable). Only one RID can be queried at a time.</td>\n</tr>\n<tr>\n<td><code>NumberOfReviews</code></td>\n<td>Integer</td>\n<td>The maximum number of reviews to return.</td>\n</tr>\n<tr>\n<td><code>StartDate</code></td>\n<td>String</td>\n<td>ISO 8601 start date for filtering.</td>\n</tr>\n<tr>\n<td><code>EndDate</code></td>\n<td>String</td>\n<td>ISO 8601 end date for filtering.</td>\n</tr>\n<tr>\n<td><code>DateFilter</code></td>\n<td>String</td>\n<td>Field to filter by. Available values: <code>submissionDateTimeUtc</code>, <code>dinedOnDateTimeUtc</code>, <code>lastActivityDateTimeUtc</code>, <code>lastModifiedDateTimeUtc</code>.</td>\n</tr>\n<tr>\n<td><code>SortBy</code></td>\n<td>String</td>\n<td>Field to sort by. Available values: <code>submissionDateTimeUtc</code>, <code>lastActivityDateTimeUtc</code>, <code>dinedOnDateTimeUtc</code>.</td>\n</tr>\n<tr>\n<td><code>SortOrder</code></td>\n<td>String</td>\n<td>Sorting order. Available values: <code>descending</code>, <code>ascending</code>.</td>\n</tr>\n<tr>\n<td><code>IncludeRatingsOnly</code></td>\n<td>Boolean</td>\n<td>If <code>true</code>, includes reviews with only ratings.</td>\n</tr>\n<tr>\n<td><code>OverallRating</code></td>\n<td>String</td>\n<td>List of rating values to filter (valid values: <code>1-5</code>).</td>\n</tr>\n<tr>\n<td><code>SkipReviews</code></td>\n<td>Integer</td>\n<td>Number of reviews to skip for pagination.</td>\n</tr>\n<tr>\n<td><code>WithReplies</code></td>\n<td>Boolean</td>\n<td>If <code>true</code>, includes review replies.</td>\n</tr>\n<tr>\n<td><code>SimplifiedModerationStates</code></td>\n<td>String</td>\n<td>Filter reviews by moderation status. Options: <code>Approved</code>, <code>Rejected</code>, <code>Pending</code>.</td>\n</tr>\n<tr>\n<td><code>HasDinerReplies</code></td>\n<td>Boolean</td>\n<td>Filter reviews based on whether they have diner replies.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"parameters\"><strong>Parameters</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type or Value</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Rid \\\\\\\\\\\\\\*required</code></td>\n<td>String</td>\n<td>List of Restaurant IDs to retrieve.</td>\n</tr>\n<tr>\n<td><code>NumberOfReviews</code></td>\n<td>Integer</td>\n<td>The maximum number of reviews to return.</td>\n</tr>\n<tr>\n<td><code>StartDate</code></td>\n<td>String</td>\n<td>ISO 8601 date for the start of the date range to include in the date filter.</td>\n</tr>\n<tr>\n<td><code>EndDate</code></td>\n<td>String</td>\n<td>ISO 8601 date for the end of the date range to include in the date filter.</td>\n</tr>\n<tr>\n<td><code>DateFilter</code></td>\n<td>String</td>\n<td>Date field to filter on. Available values: <code>submissionDateTimeUtc</code>, <code>dinedOnDateTimeUtc</code>, <code>lastActivityDateTimeUtc</code>, <code>lastModifiedDateTimeUtc</code>.</td>\n</tr>\n<tr>\n<td><code>SortBy</code></td>\n<td>String</td>\n<td>Choose which date field to sort by given the sort order. Available values: <code>submissionDateTimeUtc</code>, <code>lastActivityDateTimeUtc</code>, <code>dinedOnDateTimeUtc</code>.</td>\n</tr>\n<tr>\n<td><code>SortOrder</code></td>\n<td>String</td>\n<td>Available values: <code>descending</code>, <code>ascending</code>.</td>\n</tr>\n<tr>\n<td><code>IncludeRatingsOnly</code></td>\n<td>Boolean</td>\n<td>Normally, only reviews with review text are included. Specify <code>true</code> to return reviews with ratings only as well.</td>\n</tr>\n<tr>\n<td><code>OverallRating</code></td>\n<td>String</td>\n<td>A list of values for the overall rating of reviews to be retrieved. Valid values are <code>1-5</code>.</td>\n</tr>\n<tr>\n<td><code>SkipReviews</code></td>\n<td>Integer ($int32)</td>\n<td>The number of reviews to skip – provides paging.</td>\n</tr>\n<tr>\n<td><code>WithReplies</code></td>\n<td>Boolean</td>\n<td>Specify whether review replies should be included with each review. Will return <code>true</code> or <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>SimplifiedModerationStates</code></td>\n<td>String</td>\n<td>Specify the simplified moderation state to filter the review list on. Options: <code>Approved</code>, <code>Rejected</code>, <code>Pending</code>.</td>\n</tr>\n<tr>\n<td><code>HasDinerReplies</code></td>\n<td>Boolean</td>\n<td>Specify whether to filter reviews that do or do not have review replies.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"attributes\"><strong>Attributes</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type or Value</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>CountryCode</code></td>\n<td>String</td>\n<td>The country in which the restaurant is located.</td>\n</tr>\n<tr>\n<td><code>CustomerName</code></td>\n<td>String</td>\n<td>Name of the reviewer.</td>\n</tr>\n<tr>\n<td><code>CustomerNickname</code></td>\n<td>String</td>\n<td>Nickname provided by the reviewer.</td>\n</tr>\n<tr>\n<td><code>CustomerEmailAddress</code></td>\n<td>String</td>\n<td>Email address of the reviewer.</td>\n</tr>\n<tr>\n<td><code>DomainId</code></td>\n<td>Integer</td>\n<td>Identifier of the domain where the reservation was booked.</td>\n</tr>\n<tr>\n<td><code>Featured</code></td>\n<td>Boolean</td>\n<td>Indicates if the review is featured by the restaurant (deprecated, always returns <code>false</code>).</td>\n</tr>\n<tr>\n<td><code>Locale</code></td>\n<td>String</td>\n<td>The language code of the restaurant, as an IETF language tag.</td>\n</tr>\n<tr>\n<td><code>Language</code></td>\n<td>String</td>\n<td>Language of the review.</td>\n</tr>\n<tr>\n<td><code>MetroId</code></td>\n<td>Integer</td>\n<td>Identifier of the metro the restaurant is located in.</td>\n</tr>\n<tr>\n<td><code>ModerationState</code></td>\n<td>Integer</td>\n<td>Status of moderation in numeric value. <code>APPROVED=2</code>, <code>REJECTED=5</code>, <code>PENDING=8</code>.</td>\n</tr>\n<tr>\n<td><code>SimplifiedModerationState</code></td>\n<td>String</td>\n<td>Simplified status of the review. Values: <code>Approved</code>, <code>Rejected</code>, <code>Pending</code>.</td>\n</tr>\n<tr>\n<td><code>Rating</code></td>\n<td>Object[Integer]</td>\n<td>Object detailing the rating by category: Overall, Food, Service, Ambience, Value, Noise (values <code>1-5</code>).</td>\n</tr>\n<tr>\n<td><code>Recommended</code></td>\n<td>Boolean</td>\n<td>Indicates if the reviewer recommended the restaurant.</td>\n</tr>\n<tr>\n<td><code>RestaurantComment</code></td>\n<td>String</td>\n<td>Non-public note from the reviewer to the restaurant (does not appear on OpenTable.com).</td>\n</tr>\n<tr>\n<td><code>RestaurantId</code></td>\n<td>Integer</td>\n<td>Unique identifier for the restaurant this review is associated with.</td>\n</tr>\n<tr>\n<td><code>DinedDateTime</code></td>\n<td>String</td>\n<td>Date and time at which the guest dined at the restaurant (local time).</td>\n</tr>\n<tr>\n<td><code>ReservationId</code></td>\n<td>Integer</td>\n<td>Unique identifier of the reservation for this restaurant.</td>\n</tr>\n<tr>\n<td><code>ReviewId</code></td>\n<td>String</td>\n<td>Unique identifier of the review.</td>\n</tr>\n<tr>\n<td><code>ReviewText</code></td>\n<td>String</td>\n<td>Text of the review left by the reviewer.</td>\n</tr>\n<tr>\n<td><code>ReviewTitle</code></td>\n<td>String</td>\n<td>Title of the review.</td>\n</tr>\n<tr>\n<td><code>ReviewType</code></td>\n<td>Integer</td>\n<td>Type of review; will always be <code>0</code> when coming from OpenTable.</td>\n</tr>\n<tr>\n<td><code>SubmissionDateTimeUtc</code></td>\n<td>String</td>\n<td>Date and time when the guest submitted the review, expressed in Zulu (Z) time (<code>YYYY-MM-DDThh:mm:ssZ</code>).</td>\n</tr>\n<tr>\n<td><code>CustomQuestions</code></td>\n<td>Object</td>\n<td>Additional responses to custom questions (e.g., <code>Occasion</code>, <code>DiningOccasion</code>).</td>\n</tr>\n<tr>\n<td><code>NeighborhoodId</code></td>\n<td>Integer</td>\n<td>Identifier of the neighborhood the restaurant is located in.</td>\n</tr>\n<tr>\n<td><code>GpId</code></td>\n<td>Integer</td>\n<td>Unique OpenTable identifier of the guest.</td>\n</tr>\n<tr>\n<td><code>LastModifiedDateTimeUtc</code></td>\n<td>String</td>\n<td>Date and time when the review was last modified (Zulu time).</td>\n</tr>\n<tr>\n<td><code>TagVotes</code></td>\n<td>String</td>\n<td>Deprecated field, will return <code>null</code>.</td>\n</tr>\n<tr>\n<td><code>Helpfulness</code></td>\n<td>List of Objects</td>\n<td>Score of the helpfulness of the review.</td>\n</tr>\n<tr>\n<td><code>UpdatedByDinerDateTimeUtc</code></td>\n<td>String</td>\n<td>Date and time when the review was last modified by the reviewer (Zulu time).</td>\n</tr>\n<tr>\n<td><code>IsDraft</code></td>\n<td>Boolean</td>\n<td>Indicates if the review is a draft (<code>true</code> or <code>false</code>).</td>\n</tr>\n<tr>\n<td><code>Categories</code></td>\n<td>List of Objects</td>\n<td>List of review categories selected by the reviewer.</td>\n</tr>\n<tr>\n<td><code>DinerInitials</code></td>\n<td>String</td>\n<td>Initials of the reviewer.</td>\n</tr>\n<tr>\n<td><code>DinerMetroId</code></td>\n<td>Integer</td>\n<td>Metro identifier of the reviewer’s dining metro.</td>\n</tr>\n<tr>\n<td><code>DinerIsVip</code></td>\n<td>Boolean</td>\n<td>Reviewer’s OpenTable VIP status (<code>true</code> or <code>false</code>).</td>\n</tr>\n<tr>\n<td><code>Photos</code></td>\n<td>Object</td>\n<td>Details about any uploaded images in the review.</td>\n</tr>\n<tr>\n<td><code>OriginalSubmissionDateTimeUtc</code></td>\n<td>String</td>\n<td>Date and time when the guest originally submitted the review (Zulu time).</td>\n</tr>\n<tr>\n<td><code>ResponseLink</code></td>\n<td>String</td>\n<td>URL to view the review and post responses (requires OpenTable for Restaurants login).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"categories\"><strong>Categories</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type or Value</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Id</code></td>\n<td>String</td>\n<td>Category identifier.</td>\n</tr>\n<tr>\n<td><code>Label</code></td>\n<td>String</td>\n<td>Category label.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"photos\"><strong>Photos</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type or Value</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Type</code></td>\n<td>String</td>\n<td>File type of photo uploaded.</td>\n</tr>\n<tr>\n<td><code>Key</code></td>\n<td>String</td>\n<td>OpenTable identifier of photo.</td>\n</tr>\n<tr>\n<td><code>Caption</code></td>\n<td>String</td>\n<td>Caption of the photo written by the reviewer.</td>\n</tr>\n<tr>\n<td><code>ShowCaption</code></td>\n<td>Boolean</td>\n<td>Indicates if a caption is shown. Will return <code>true</code> or <code>false</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h1 id=\"category-key\"><strong>Category Key</strong></h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Label</strong></th>\n<th><strong>Diner Choice Category</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Brunch</code></td>\n<td>Great for brunch</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>BusinessMeals</code></td>\n<td>Good for business meals</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>Charming</code></td>\n<td>Charming</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>ChildFriendly</code></td>\n<td>Kid-friendly</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>DogFriendly</code></td>\n<td>Dog-friendly</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>Fancy</code></td>\n<td>Fancy</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>Foodies</code></td>\n<td>Innovative</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>GlutenFree</code></td>\n<td>Gluten-free-friendly</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>GreatBeer</code></td>\n<td>Great for craft beers</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>HandcraftedCocktails</code></td>\n<td>Great for creative cocktails</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>HappyHour</code></td>\n<td>Great for happy hour</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>Healthy</code></td>\n<td>Healthy</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>HotSpot</code></td>\n<td>Hot spot</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>LiveMusic</code></td>\n<td>Great for live music</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>NeighborhoodGem</code></td>\n<td>Neighborhood gem</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>NotableWineList</code></td>\n<td>Great for fine wines</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>OutdoorDining</code></td>\n<td>Great for outdoor dining</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>Romance</code></td>\n<td>Romantic</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>Groups</code></td>\n<td>Good for Groups</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>ScenicView</code></td>\n<td>Great for scenic views</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>SpecialOccasions</code></td>\n<td>Good for special occasions</td>\n<td>true</td>\n</tr>\n<tr>\n<td><code>Vegan</code></td>\n<td>Vegan-friendly</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>VegetarianOptions</code></td>\n<td>Vegetarian-friendly</td>\n<td>false</td>\n</tr>\n<tr>\n<td><code>VibrantBarScene</code></td>\n<td>Lively</td>\n<td>true</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","partnerreviews","allreviews"],"host":["{{base-url}}"],"query":[{"key":"Rid","value":"1038007"},{"key":"NumberOfReviews","value":"5"}],"variable":[]}},"response":[{"id":"04127fa1-2906-4b41-95dc-ae40a003c13e","name":"Get Review Data","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v1/partnerreviews/allreviews?Rid=1038007&NumberOfReviews=5","host":["{{base-url}}"],"path":["v1","partnerreviews","allreviews"],"query":[{"key":"Rid","value":"1038007"},{"key":"NumberOfReviews","value":"5"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"b95819c7-0526-48f9-bbd1-72c9538da708"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"AA6570AF-C0A1-4E9B-8AF8-449B1AA5E400"},{"key":"OT-SessionID","value":"c61452f0-f111-43ea-b11b-a5bc19ec8770"},{"key":"Content-Type","value":"application/vnd.reviews.v4+json; charset=utf-8"},{"key":"ot-endpoint","value":"getpartnerallreviewsforrids-v1"},{"key":"ot-referringservice","value":"reviews-api"},{"key":"X-OT-Backend","value":"reviews"},{"key":"X-OT-UriTemplate","value":"/reviews/partner/v1/allreviews?{Rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 28 Feb 2025 18:40:05 GMT"},{"key":"Content-Length","value":"1344"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"TotalCount\": 16,\n    \"Reviews\": [\n        {\n            \"CountryCode\": \"US\",\n            \"CustomerName\": null,\n            \"CustomerNickname\": \"OTSEC\",\n            \"CustomerEmailAddress\": null,\n            \"DomainId\": 1,\n            \"Featured\": false,\n            \"Locale\": \"en-US\",\n            \"Language\": \"en\",\n            \"MetroId\": 1,\n            \"ModerationState\": 2,\n            \"SimplifiedModerationState\": \"APPROVED\",\n            \"Rating\": {\n                \"Overall\": 5,\n                \"Food\": 5,\n                \"Service\": 5,\n                \"Ambience\": 5,\n                \"Value\": 5,\n                \"Noise\": 2\n            },\n            \"Recommended\": true,\n            \"RestaurantComment\": \"\",\n            \"RestaurantId\": 1038007,\n            \"DinedDateTime\": \"2024-11-15T19:30:00-08:00\",\n            \"ReservationId\": 1730789203,\n            \"ReviewId\": \"OT-1038007-2144-170223310557\",\n            \"ReviewText\": \"This is the best restaurant I've ever been to. Best \\\"mici\\\" I've ever had in my life\",\n            \"ReviewTitle\": null,\n            \"ReviewType\": 0,\n            \"SubmissionDateTimeUtc\": \"2024-11-27T12:20:33Z\",\n            \"CustomQuestions\": null,\n            \"NeighborhoodId\": 10331,\n            \"GpId\": 170223310557,\n            \"LastModifiedDateTimeUtc\": \"2024-11-27T12:20:33Z\",\n            \"TagVotes\": null,\n            \"Helpfulness\": {\n                \"Up\": 0,\n                \"Down\": 0,\n                \"Score\": 0\n            },\n            \"UpdatedByDinerDateTimeUtc\": null,\n            \"IsDraft\": false,\n            \"Categories\": [\n                {\n                    \"Id\": \"Fancy\",\n                    \"Label\": \"Fancy\"\n                },\n                {\n                    \"Id\": \"GreatBeer\",\n                    \"Label\": \"Great for craft beers\"\n                },\n                {\n                    \"Id\": \"ChildFriendly\",\n                    \"Label\": \"Kid-friendly\"\n                }\n            ],\n            \"DinerInitials\": \"O\",\n            \"DinerMetroId\": 1,\n            \"DinerIsVip\": false,\n            \"Photos\": [\n                {\n                    \"Type\": \"Dff\",\n                    \"Key\": \"70726782\",\n                    \"Caption\": \"\",\n                    \"ShowCaption\": true\n                },\n                {\n                    \"Type\": \"Dff\",\n                    \"Key\": \"70726781\",\n                    \"Caption\": \"\",\n                    \"ShowCaption\": true\n                }\n            ],\n            \"OriginalSubmissionDateTimeUtc\": \"2024-11-27T12:20:33.0000000Z\",\n            \"ResponseLink\": \"https://guestcenter.opentable.com/admin/reviews/1038007/reviews\"\n        },\n        {\n            \"CountryCode\": \"US\",\n            \"CustomerName\": null,\n            \"CustomerNickname\": \"OTSEC\",\n            \"CustomerEmailAddress\": null,\n            \"DomainId\": 1,\n            \"Featured\": false,\n            \"Locale\": \"en-US\",\n            \"Language\": \"en\",\n            \"MetroId\": 1,\n            \"ModerationState\": 2,\n            \"SimplifiedModerationState\": \"APPROVED\",\n            \"Rating\": {\n                \"Overall\": 5,\n                \"Food\": 5,\n                \"Service\": 5,\n                \"Ambience\": 5,\n                \"Value\": 5,\n                \"Noise\": 1\n            },\n            \"Recommended\": true,\n            \"RestaurantComment\": \"\",\n            \"RestaurantId\": 1038007,\n            \"DinedDateTime\": \"2024-11-14T00:30:00-08:00\",\n            \"ReservationId\": 1728525632,\n            \"ReviewId\": \"OT-1038007-2141-170223310557\",\n            \"ReviewText\": \"Best Bistro I've been to! Highly encourage everyone to try it!\",\n            \"ReviewTitle\": null,\n            \"ReviewType\": 0,\n            \"SubmissionDateTimeUtc\": \"2024-11-27T09:28:13Z\",\n            \"CustomQuestions\": null,\n            \"NeighborhoodId\": 10331,\n            \"GpId\": 170223310557,\n            \"LastModifiedDateTimeUtc\": \"2024-11-27T09:28:14Z\",\n            \"TagVotes\": null,\n            \"Helpfulness\": {\n                \"Up\": 0,\n                \"Down\": 0,\n                \"Score\": 0\n            },\n            \"UpdatedByDinerDateTimeUtc\": \"2024-11-27T09:28:13.8250000Z\",\n            \"IsDraft\": false,\n            \"Categories\": [\n                {\n                    \"Id\": \"NeighborhoodGem\",\n                    \"Label\": \"Neighborhood gem\"\n                },\n                {\n                    \"Id\": \"Brunch\",\n                    \"Label\": \"Great for brunch\"\n                },\n                {\n                    \"Id\": \"HappyHour\",\n                    \"Label\": \"Great for happy hour\"\n                }\n            ],\n            \"DinerInitials\": \"O\",\n            \"DinerMetroId\": 1,\n            \"DinerIsVip\": false,\n            \"Photos\": [\n                {\n                    \"Type\": \"Dff\",\n                    \"Key\": \"70725511\",\n                    \"Caption\": \"Best mici I've ever had!\",\n                    \"ShowCaption\": true\n                }\n            ],\n            \"OriginalSubmissionDateTimeUtc\": \"2024-11-27T09:25:58.0000000Z\",\n            \"ResponseLink\": \"https://guestcenter.opentable.com/admin/reviews/1038007/reviews\"\n        },\n        {\n            \"CountryCode\": \"US\",\n            \"CustomerName\": null,\n            \"CustomerNickname\": \"MVogel\",\n            \"CustomerEmailAddress\": null,\n            \"DomainId\": 1,\n            \"Featured\": false,\n            \"Locale\": \"en-US\",\n            \"Language\": \"en\",\n            \"MetroId\": 1,\n            \"ModerationState\": 2,\n            \"SimplifiedModerationState\": \"APPROVED\",\n            \"Rating\": {\n                \"Overall\": 5,\n                \"Food\": 5,\n                \"Service\": 3,\n                \"Ambience\": 3,\n                \"Value\": 3,\n                \"Noise\": 2\n            },\n            \"Recommended\": null,\n            \"RestaurantComment\": null,\n            \"RestaurantId\": 1038007,\n            \"DinedDateTime\": \"2023-10-31T15:30:00-07:00\",\n            \"ReservationId\": 1516826622,\n            \"ReviewId\": \"OT-1038007-1507-110098955131\",\n            \"ReviewText\": \"I love this place!!!! It’s amazing. Great food and service!\",\n            \"ReviewTitle\": null,\n            \"ReviewType\": 0,\n            \"SubmissionDateTimeUtc\": \"2024-01-25T20:50:05Z\",\n            \"CustomQuestions\": null,\n            \"NeighborhoodId\": 10331,\n            \"GpId\": 110098955131,\n            \"LastModifiedDateTimeUtc\": \"2024-03-06T11:43:54Z\",\n            \"TagVotes\": null,\n            \"Helpfulness\": {\n                \"Up\": 0,\n                \"Down\": 0,\n                \"Score\": 0\n            },\n            \"UpdatedByDinerDateTimeUtc\": null,\n            \"IsDraft\": false,\n            \"Categories\": null,\n            \"DinerInitials\": \"MV\",\n            \"DinerMetroId\": 52,\n            \"DinerIsVip\": true,\n            \"Photos\": [],\n            \"OriginalSubmissionDateTimeUtc\": \"2024-01-25T20:50:05.0000000Z\",\n            \"ResponseLink\": \"https://guestcenter.opentable.com/admin/reviews/1038007/reviews\"\n        },\n        {\n            \"CountryCode\": \"US\",\n            \"CustomerName\": null,\n            \"CustomerNickname\": \"MVogel\",\n            \"CustomerEmailAddress\": null,\n            \"DomainId\": 1,\n            \"Featured\": false,\n            \"Locale\": \"en-US\",\n            \"Language\": \"en\",\n            \"MetroId\": 1,\n            \"ModerationState\": 2,\n            \"SimplifiedModerationState\": \"APPROVED\",\n            \"Rating\": {\n                \"Overall\": 5,\n                \"Food\": 5,\n                \"Service\": 5,\n                \"Ambience\": 4,\n                \"Value\": 5,\n                \"Noise\": 1\n            },\n            \"Recommended\": null,\n            \"RestaurantComment\": null,\n            \"RestaurantId\": 1038007,\n            \"DinedDateTime\": \"2024-01-18T14:15:00-08:00\",\n            \"ReservationId\": 1561464267,\n            \"ReviewId\": \"OT-1038007-1607-110098955131\",\n            \"ReviewText\": \"Loved it! Would go back for the truffle pizza everyday if I could\",\n            \"ReviewTitle\": null,\n            \"ReviewType\": 0,\n            \"SubmissionDateTimeUtc\": \"2024-01-25T20:46:05Z\",\n            \"CustomQuestions\": null,\n            \"NeighborhoodId\": 10331,\n            \"GpId\": 110098955131,\n            \"LastModifiedDateTimeUtc\": \"2024-01-25T20:46:05Z\",\n            \"TagVotes\": null,\n            \"Helpfulness\": {\n                \"Up\": 0,\n                \"Down\": 0,\n                \"Score\": 0\n            },\n            \"UpdatedByDinerDateTimeUtc\": null,\n            \"IsDraft\": false,\n            \"Categories\": null,\n            \"DinerInitials\": \"MV\",\n            \"DinerMetroId\": 52,\n            \"DinerIsVip\": true,\n            \"Photos\": [],\n            \"OriginalSubmissionDateTimeUtc\": \"2024-01-25T20:46:05.0000000Z\",\n            \"ResponseLink\": \"https://guestcenter.opentable.com/admin/reviews/1038007/reviews\"\n        },\n        {\n            \"CountryCode\": \"US\",\n            \"CustomerName\": null,\n            \"CustomerNickname\": \"MVogel\",\n            \"CustomerEmailAddress\": null,\n            \"DomainId\": 1,\n            \"Featured\": false,\n            \"Locale\": \"en-US\",\n            \"Language\": \"en\",\n            \"MetroId\": 1,\n            \"ModerationState\": 2,\n            \"SimplifiedModerationState\": \"APPROVED\",\n            \"Rating\": {\n                \"Overall\": 5,\n                \"Food\": 5,\n                \"Service\": 3,\n                \"Ambience\": 2,\n                \"Value\": 1,\n                \"Noise\": 4\n            },\n            \"Recommended\": true,\n            \"RestaurantComment\": \"\",\n            \"RestaurantId\": 1038007,\n            \"DinedDateTime\": \"2023-02-15T19:00:00-08:00\",\n            \"ReservationId\": 1375829965,\n            \"ReviewId\": \"OT-1038007-1306-110098955131\",\n            \"ReviewText\": \"Test review for reviews API. Trying to reach character limit\",\n            \"ReviewTitle\": null,\n            \"ReviewType\": 0,\n            \"SubmissionDateTimeUtc\": \"2023-07-11T17:16:02Z\",\n            \"CustomQuestions\": {\n                \"intentToReturn\": false\n            },\n            \"NeighborhoodId\": 10331,\n            \"GpId\": 110098955131,\n            \"LastModifiedDateTimeUtc\": \"2024-11-13T15:20:11Z\",\n            \"TagVotes\": null,\n            \"Helpfulness\": {\n                \"Up\": 1,\n                \"Down\": 0,\n                \"Score\": 1\n            },\n            \"UpdatedByDinerDateTimeUtc\": \"2023-07-11T17:16:02.9870000Z\",\n            \"IsDraft\": false,\n            \"Categories\": [\n                {\n                    \"Id\": \"Romance\",\n                    \"Label\": \"Romantic\"\n                }\n            ],\n            \"DinerInitials\": \"MV\",\n            \"DinerMetroId\": 52,\n            \"DinerIsVip\": true,\n            \"Photos\": [],\n            \"OriginalSubmissionDateTimeUtc\": \"2023-03-21T02:01:41.0000000Z\",\n            \"ResponseLink\": \"https://guestcenter.opentable.com/admin/reviews/1038007/reviews\"\n        }\n    ]\n}"}],"_postman_id":"7f91da43-0df5-483a-b370-5e66010e1633"},{"name":"Get Review Summary","id":"a198087e-c9dc-40c5-9bfe-14667675e6cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{base-url}}/v1/partnerreviews/restaurantreviewsummary?Rids=1038007","description":"<h2 id=\"overview\">Overview:</h2>\n<p>This API allows you to retrieve a summary for a given Restaurant Id filtered with the given parameters for the past 120 days.</p>\n<p>Endpoint:</p>\n<p><strong>URL:</strong> {{base-url}}/v1/partnerreviews/restaurantreviewsummary<br /><strong>Method:</strong> GET</p>\n<h2 id=\"parameters\"><strong>Parameters</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Rids</code></td>\n<td><code>string</code></td>\n<td>Single <code>RID</code> or List of <code>RIDs</code>. If multiple <code>RIDs</code>, comma separated.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<p>Here is the formatted version of your data into tables:</p>\n<h3 id=\"attributes\"><strong>Attributes</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>RestaurantReviewSummaries</td>\n<td>array</td>\n<td>Restaurant review summary details by RID.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"restaurant-review-summaries\"><strong>Restaurant Review Summaries</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Rid</td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this reservation is associated with.</td>\n</tr>\n<tr>\n<td>Ratings</td>\n<td>array</td>\n<td>Details of rating summary of all reviews.</td>\n</tr>\n<tr>\n<td>RatingOnlyReviewRatings</td>\n<td>array</td>\n<td>Details of rating summary of rating-only reviews.</td>\n</tr>\n<tr>\n<td>CategoryDistribution</td>\n<td>array</td>\n<td>List of review categories and counts selected by reviewer.</td>\n</tr>\n<tr>\n<td>TotalNumberOfReviews</td>\n<td>integer</td>\n<td>Total number of reviews within the look-back period.</td>\n</tr>\n<tr>\n<td>AllTimeTextReviewCount</td>\n<td>integer</td>\n<td>All-time count of reviews with text.</td>\n</tr>\n<tr>\n<td>ShowReviews</td>\n<td>boolean</td>\n<td>This value has been deprecated. Expected answer is true.</td>\n</tr>\n<tr>\n<td>StartDateUtc</td>\n<td>string</td>\n<td>The date and time of the look-back period, expressed in Zulu (Z) time (YYYY-MM-DDThh:mm:ssZ).</td>\n</tr>\n<tr>\n<td>Awards</td>\n<td>array</td>\n<td>List of Diner’s Choice categories and counts awarded to the restaurant.</td>\n</tr>\n<tr>\n<td>RestaurantName</td>\n<td>string</td>\n<td>Name of restaurant.</td>\n</tr>\n<tr>\n<td>Locale</td>\n<td>string</td>\n<td>The language code of the restaurant, as an IETF language tag.</td>\n</tr>\n<tr>\n<td>LookBackDays</td>\n<td>integer</td>\n<td>Number of days in the look-back period.</td>\n</tr>\n<tr>\n<td>RatingBasedOn</td>\n<td>string</td>\n<td>This will equal RecentReviews, AllTime, or NoReviews depending on the review count.</td>\n</tr>\n<tr>\n<td>VerifiedReviews</td>\n<td>boolean</td>\n<td>Indicates if the reviews summarized are verified (true or false).</td>\n</tr>\n<tr>\n<td>ResponseLink</td>\n<td>string</td>\n<td>A URL to view the review and post responses (requires OpenTable for Restaurants login).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"ratings\"><strong>Ratings</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>OverallRatingsDistribution</td>\n<td>object</td>\n<td>Rating distribution of review score.</td>\n</tr>\n<tr>\n<td>DinersRecommendations</td>\n<td>object</td>\n<td>Count and recommendation status.</td>\n</tr>\n<tr>\n<td>Count</td>\n<td>integer</td>\n<td>Total counts of reviews within the look-back period.</td>\n</tr>\n<tr>\n<td>Overall</td>\n<td>object</td>\n<td>Rating average and count of all reviews.</td>\n</tr>\n<tr>\n<td>Food</td>\n<td>object</td>\n<td>Rating average and count of food scores.</td>\n</tr>\n<tr>\n<td>Service</td>\n<td>object</td>\n<td>Rating average and count of service scores.</td>\n</tr>\n<tr>\n<td>Ambience</td>\n<td>object</td>\n<td>Rating average and count of ambience scores.</td>\n</tr>\n<tr>\n<td>Value</td>\n<td>object</td>\n<td>Rating average and count of value scores.</td>\n</tr>\n<tr>\n<td>Noise</td>\n<td>object</td>\n<td>Rating average and count of noise scores (1-4: Do not recall, Quiet, Moderate, Energetic).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"ratingonlyreviewratings\"><strong>RatingOnlyReviewRatings</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>OverallRatingsDistribution</td>\n<td>object</td>\n<td>Rating distribution of rating-only reviews.</td>\n</tr>\n<tr>\n<td>DinersRecommendations</td>\n<td>object</td>\n<td>Count and recommendation status of rating-only reviews.</td>\n</tr>\n<tr>\n<td>Count</td>\n<td>integer</td>\n<td>Total counts of rating-only reviews.</td>\n</tr>\n<tr>\n<td>Overall</td>\n<td>object</td>\n<td>Rating average and count of rating-only reviews.</td>\n</tr>\n<tr>\n<td>Food</td>\n<td>object</td>\n<td>Rating average and count of food scores.</td>\n</tr>\n<tr>\n<td>Service</td>\n<td>object</td>\n<td>Rating average and count of service scores.</td>\n</tr>\n<tr>\n<td>Ambience</td>\n<td>object</td>\n<td>Rating average and count of ambience scores.</td>\n</tr>\n<tr>\n<td>Value</td>\n<td>object</td>\n<td>Rating average and count of value scores.</td>\n</tr>\n<tr>\n<td>Noise</td>\n<td>object</td>\n<td>Rating average and count of noise scores (1-4: Do not recall, Quiet, Moderate, Energetic).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"category-distribution\"><strong>Category Distribution</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Name</td>\n<td>integer</td>\n<td>Category name.</td>\n</tr>\n<tr>\n<td>Count</td>\n<td>integer</td>\n<td>Total count of category.</td>\n</tr>\n<tr>\n<td>Key</td>\n<td>integer</td>\n<td>Category label.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"awards\"><strong>Awards</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Name</td>\n<td>integer</td>\n<td>Category name.</td>\n</tr>\n<tr>\n<td>Count</td>\n<td>integer</td>\n<td>Total count of category.</td>\n</tr>\n<tr>\n<td>Key</td>\n<td>integer</td>\n<td>Category label.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"overall-ratings-distribution\"><strong>Overall Ratings Distribution</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Rating</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>integer</td>\n<td>Count of rating 1. (1-5 scale, 1 being the lowest, 5 the highest).</td>\n</tr>\n<tr>\n<td>2</td>\n<td>integer</td>\n<td>Count of rating 2.</td>\n</tr>\n<tr>\n<td>3</td>\n<td>integer</td>\n<td>Count of rating 3.</td>\n</tr>\n<tr>\n<td>4</td>\n<td>integer</td>\n<td>Count of rating 4.</td>\n</tr>\n<tr>\n<td>5</td>\n<td>integer</td>\n<td>Count of rating 5.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"diners-recommendations\"><strong>Diners Recommendations</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Count</td>\n<td>integer</td>\n<td>Total count of diner recommendations.</td>\n</tr>\n<tr>\n<td>Yes</td>\n<td>integer</td>\n<td>Total number of Yes counts.</td>\n</tr>\n<tr>\n<td>No</td>\n<td>integer</td>\n<td>Total number of No counts.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"overall-ratings\"><strong>Overall Ratings</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Rating</td>\n<td>integer</td>\n<td>Average score of the overall rating.</td>\n</tr>\n<tr>\n<td>Count</td>\n<td>integer</td>\n<td>Total count of overall rating scores.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"noise-ratings\"><strong>Noise Ratings</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Rating</td>\n<td>integer</td>\n<td>Rating average and count of noise scores. (1-4: Do not recall, Quiet, Moderate, Energetic).</td>\n</tr>\n<tr>\n<td>Count</td>\n<td>integer</td>\n<td>Total count of overall rating scores.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","partnerreviews","restaurantreviewsummary"],"host":["{{base-url}}"],"query":[{"key":"Rids","value":"1038007"}],"variable":[]}},"response":[{"id":"93925ce8-2584-4cff-be9e-7b1dc1bbbe24","name":"Get Review Summary","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{base-url}}/v1/partnerreviews/restaurantreviewsummary?Rids=1038007","host":["{{base-url}}"],"path":["v1","partnerreviews","restaurantreviewsummary"],"query":[{"key":"Rids","value":"1038007"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"e9995b53-e4d6-4d33-82e4-887fcabb0934"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"AA6570AF-C0A1-4E9B-8AF8-449B1AA5E400"},{"key":"OT-SessionID","value":"0250bd11-07ad-496e-945a-c89899798e61"},{"key":"Content-Type","value":"application/vnd.reviews.v4+json; charset=utf-8"},{"key":"ot-endpoint","value":"getpartnersummariesbyridsv1-v1"},{"key":"ot-referringservice","value":"reviews-api"},{"key":"X-OT-Backend","value":"reviews"},{"key":"X-OT-UriTemplate","value":"/reviews/partner/v1/restaurantreviewsummary?{Rids}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 28 Feb 2025 19:14:55 GMT"},{"key":"Content-Length","value":"734"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"RestaurantReviewSummaries\": [\n        {\n            \"Rid\": 1038007,\n            \"Ratings\": {\n                \"OverallRatingsDistribution\": {\n                    \"1\": 0,\n                    \"2\": 0,\n                    \"3\": 0,\n                    \"4\": 0,\n                    \"5\": 15\n                },\n                \"DinersRecommendations\": {\n                    \"Count\": 5,\n                    \"Yes\": 5,\n                    \"No\": 0\n                },\n                \"Count\": 15,\n                \"Overall\": {\n                    \"Rating\": 5,\n                    \"Count\": 15\n                },\n                \"Food\": {\n                    \"Rating\": 4.9,\n                    \"Count\": 15\n                },\n                \"Service\": {\n                    \"Rating\": 4.5,\n                    \"Count\": 15\n                },\n                \"Ambience\": {\n                    \"Rating\": 4.5,\n                    \"Count\": 15\n                },\n                \"Value\": {\n                    \"Rating\": 4.5,\n                    \"Count\": 15\n                },\n                \"Noise\": {\n                    \"Rating\": 2,\n                    \"Count\": 15\n                }\n            },\n            \"RatingOnlyReviewRatings\": {\n                \"OverallRatingsDistribution\": {\n                    \"1\": 0,\n                    \"2\": 0,\n                    \"3\": 0,\n                    \"4\": 0,\n                    \"5\": 4\n                },\n                \"DinersRecommendations\": {\n                    \"Count\": 0,\n                    \"Yes\": 0,\n                    \"No\": 0\n                },\n                \"Count\": 4,\n                \"Overall\": {\n                    \"Rating\": 5,\n                    \"Count\": 4\n                },\n                \"Food\": {\n                    \"Rating\": 5,\n                    \"Count\": 4\n                },\n                \"Service\": {\n                    \"Rating\": 5,\n                    \"Count\": 4\n                },\n                \"Ambience\": {\n                    \"Rating\": 5,\n                    \"Count\": 4\n                },\n                \"Value\": {\n                    \"Rating\": 5,\n                    \"Count\": 4\n                },\n                \"Noise\": {\n                    \"Rating\": 3,\n                    \"Count\": 4\n                }\n            },\n            \"CategoryDistribution\": [\n                {\n                    \"Name\": \"Great for brunch\",\n                    \"Count\": 2,\n                    \"Key\": \"Brunch\"\n                },\n                {\n                    \"Name\": \"Romantic\",\n                    \"Count\": 2,\n                    \"Key\": \"Romance\"\n                },\n                {\n                    \"Name\": \"Kid-friendly\",\n                    \"Count\": 1,\n                    \"Key\": \"ChildFriendly\"\n                },\n                {\n                    \"Name\": \"Fancy\",\n                    \"Count\": 1,\n                    \"Key\": \"Fancy\"\n                },\n                {\n                    \"Name\": \"Great for craft beers\",\n                    \"Count\": 1,\n                    \"Key\": \"GreatBeer\"\n                },\n                {\n                    \"Name\": \"Great for happy hour\",\n                    \"Count\": 1,\n                    \"Key\": \"HappyHour\"\n                },\n                {\n                    \"Name\": \"Healthy\",\n                    \"Count\": 1,\n                    \"Key\": \"Healthy\"\n                },\n                {\n                    \"Name\": \"Neighborhood gem\",\n                    \"Count\": 1,\n                    \"Key\": \"NeighborhoodGem\"\n                },\n                {\n                    \"Name\": \"Great for outdoor dining\",\n                    \"Count\": 1,\n                    \"Key\": \"OutdoorDining\"\n                },\n                {\n                    \"Name\": \"Good for special occasions\",\n                    \"Count\": 1,\n                    \"Key\": \"SpecialOccasions\"\n                }\n            ],\n            \"TotalNumberOfReviews\": 15,\n            \"AllTimeTextReviewCount\": 11,\n            \"ShowReviews\": true,\n            \"StartDateUtc\": \"2024-10-31T00:00:00Z\",\n            \"Awards\": [\n                {\n                    \"Key\": \"MostBooked\",\n                    \"LocationType\": \"Metro\",\n                    \"Name\": \"Most Booked\",\n                    \"Type\": \"DinersChoice_MostBooked\",\n                    \"DisplayPriority\": 0,\n                    \"Location\": \"Demoland (US)\",\n                    \"LocationId\": 1\n                },\n                {\n                    \"Key\": \"MostBooked\",\n                    \"LocationType\": \"Macro\",\n                    \"Name\": \"Most Booked\",\n                    \"Type\": \"DinersChoice_MostBooked\",\n                    \"DisplayPriority\": 1,\n                    \"Location\": \"Demoland\",\n                    \"LocationId\": 40\n                }\n            ],\n            \"RestaurantName\": \"Vogel's Bistro\",\n            \"Locale\": \"en-us\",\n            \"LookBackDays\": 120,\n            \"RatingBasedOn\": \"AllTime\",\n            \"VerifiedReviews\": true,\n            \"ResponseLink\": \"https://guestcenter.opentable.com/admin/reviews/1038007/reviews\"\n        }\n    ]\n}"}],"_postman_id":"a198087e-c9dc-40c5-9bfe-14667675e6cc"},{"name":"Post Review Response","id":"5445480c-d291-449d-8f47-69d71750364b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"Message\": \"Thank you for choosing Vogel'\\''s Bistro to celebrate your anniversary and for submitting your 5 star review. We looking forward to serving you again soon\",\n  \"From\": \"Restaurant\",\n  \"Name\": \"Matt V\",\n  \"IsPublic\": true,\n  \"ReplyingToReplyId\": \"\",\n  \"ReplyToEmail\": \"matt@vogelsbistro.com\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v1/partnerreviews/reviewreplies/OT-1038007-2141-170223310557?rid=1038007","description":"<h1 id=\"reviews-response-api-documentation\">Reviews Response API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The <strong>Reviews API POST Endpoint</strong> allows partners to respond to OpenTable diner reviews for a specific Restaurant ID (<strong>RID</strong>). Note that OpenTable reviews can only be posted by confirmed seated diners.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL:</strong> {{base-url}} /v1/partnerreviews/reviewreplies/{reviewId}<br /><strong>Method:</strong> POST</p>\n<hr />\n<h2 id=\"request-parameters\"><strong>Request Parameters</strong></h2>\n<h3 id=\"path-parameters\"><strong>Path Parameters</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>reviewId</td>\n<td>string</td>\n<td>Yes</td>\n<td>Unique identifier of the review.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\"><strong>Query Parameters</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rid</td>\n<td>integer ($int32)</td>\n<td>Yes</td>\n<td>Restaurant Identifier.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-case-sensitive\"><strong>Request Body</strong> (Case-Sensitive)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Message</td>\n<td>string</td>\n<td>Yes</td>\n<td>The response body; the message sent to the reviewer.</td>\n</tr>\n<tr>\n<td>From</td>\n<td>string</td>\n<td>Yes</td>\n<td>Should always be <strong>\"Restaurant\"</strong>.</td>\n</tr>\n<tr>\n<td>Name</td>\n<td>string</td>\n<td>No</td>\n<td>Name of the respondent (typically the restaurant's name).</td>\n</tr>\n<tr>\n<td>IsPublic</td>\n<td>boolean</td>\n<td>Yes</td>\n<td><strong>true</strong>: Message is posted on OpenTable.com (only one allowed). <strong>false</strong>: Message is sent privately to the reviewer (multiple messages allowed).</td>\n</tr>\n<tr>\n<td>ReplyingToReplyId</td>\n<td>string</td>\n<td>No</td>\n<td>Used for private responses (<code>IsPublic=false</code>) when replying to a specific response.</td>\n</tr>\n<tr>\n<td>ReplyToEmail</td>\n<td>string</td>\n<td>No</td>\n<td>The reviewer's email address.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v1","partnerreviews","reviewreplies","OT-1038007-2141-170223310557"],"host":["{{base-url}}"],"query":[{"key":"rid","value":"1038007"}],"variable":[]}},"response":[{"id":"da1c2bfc-098a-42df-a0f0-78ab9a7f2933","name":"Post Review Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"Message\": \"Thank you for choosing Vogel'\\''s Bistro to celebrate your anniversary and for submitting your 5 star review. We looking forward to serving you again soon\",\n  \"From\": \"Restaurant\",\n  \"Name\": \"Matt V\",\n  \"IsPublic\": true,\n  \"ReplyingToReplyId\": \"\",\n  \"ReplyToEmail\": \"matt@vogelsbistro.com\"\n}\n","options":{"raw":{"language":"json"}}},"url":{"raw":"{{base-url}}/v1/partnerreviews/reviewreplies/OT-1038007-2141-170223310557?rid=1038007","host":["{{base-url}}"],"path":["v1","partnerreviews","reviewreplies","OT-1038007-2141-170223310557"],"query":[{"key":"rid","value":"1038007"}]}},"status":"Accepted","code":202,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"f23a4148-ad1f-480f-a9c4-b288d3648eaa"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"AA6570AF-C0A1-4E9B-8AF8-449B1AA5E400"},{"key":"OT-SessionID","value":"85a31d02-9ee7-43e7-b2dc-9a7e977166af"},{"key":"Content-Type","value":"application/vnd.reviews.v4+json; charset=utf-8"},{"key":"ot-endpoint","value":"post-v1"},{"key":"ot-referringservice","value":"reviews-api"},{"key":"X-OT-Backend","value":"reviews"},{"key":"X-OT-UriTemplate","value":"/reviews/partner/v1/reviewreplies/{reviewId}?{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 28 Feb 2025 19:54:23 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"ReplyId\": \"59751b7cd6c943e181300a4722d9134a\",\n    \"ResponseDateTimeUtc\": \"2025-02-28T19:54:23Z\",\n    \"Message\": \"Thank you for choosing Vogel'''s Bistro to celebrate your anniversary and for submitting your 5 star review. We looking forward to serving you again soon\",\n    \"From\": \"Restaurant\",\n    \"RestaurantId\": 1038007,\n    \"ReviewId\": \"OT-1038007-2141-170223310557\",\n    \"ReplyToEmail\": \"matt@vogelsbistro.com\",\n    \"Name\": \"Matt V\",\n    \"ModerationState\": \"PENDING\",\n    \"Language\": null,\n    \"IsPublic\": true,\n    \"ReplyingToReplyId\": \"\"\n}"}],"_postman_id":"5445480c-d291-449d-8f47-69d71750364b"}],"id":"dc64efbb-b2db-4b5b-81c8-0b58eb0a73a7","description":"<h2 id=\"overview\">Overview</h2>\n<p>The OpenTable Reviews API provides partners access to diner reviews for restaurants. Reviews are only posted by confirmed seated diners, ensuring authenticity. This API enables retrieval of all reviews for a specific restaurant and provides summary statistics.</p>\n<p>These reviews are also exposed on the OpenTable profile page for each restaurant.</p>\n","_postman_id":"dc64efbb-b2db-4b5b-81c8-0b58eb0a73a7"},{"name":"Sync APIs","item":[{"name":"Copper","item":[{"name":"Copper Reservations API v2","id":"2367d26e-8ef0-435e-b855-3cac768a3eca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid={{rid1}}","description":"<h1 id=\"overview\">Overview</h1>\n<p>The Reservation API provides detailed data about restaurant reservations and allows applications to filter and retrieve records based on various parameters. This endpoint is designed to support restaurant management systems and third-party applications in obtaining accurate and timely reservation data.</p>\n<hr />\n<h3 id=\"api-endpoint\">API Endpoint</h3>\n<p><strong>URL</strong>: <code>https://platform.opentable.com/sync/v2/reservations</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>string</td>\n<td>A unique identifier, per RID, for a guest. This is represented in the payload attribute with the removal of the leading RID designation. I.e., if the payload returned, “guest_id”: “214390-5b0ed185cdff96138419db0f”, the query parameter to isolate all records for the specific guest would be ?rid=214390&amp;guest_id=5b0ed185cdff96138419db0f.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>string</td>\n<td>Filter results by confirmation ID.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>Filter results by reservation state (e.g., <code>Done</code>, <code>Seated</code>, <code>Cancelled</code>).</td>\n</tr>\n<tr>\n<td><code>scheduled_time_from</code></td>\n<td>string</td>\n<td>Lower boundary of the reservation scheduled date/time range in local time(ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss</code>). (local time)</td>\n</tr>\n<tr>\n<td><code>scheduled_time_to</code></td>\n<td>string</td>\n<td>Upper boundary of the reservation scheduled date/time range in local time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss</code>). (local time)</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Retrieve reservations updated after a specific date/time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>) using the <code>updated_at_utc</code> timestamp (UTC time)</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Number of results per request. Default is 1000, maximum number available for return is 2000.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Number of results to skip. Use for pagination.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>boolean</td>\n<td>Indicates if there are additional pages of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>string or null</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>An array of reservation objects containing detailed information about each reservation.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-payload\">Response Payload</h3>\n<p>The response includes metadata about the paginated results, followed by an array of reservation objects.</p>\n<hr />\n<h3 id=\"reservation-object-attributes\">Reservation Object Attributes</h3>\n<hr />\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td>href</td>\n<td>string (URL)</td>\n<td>Fully qualified URL for the reservation.</td>\n</tr>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>Unique identifier for the restaurant.</td>\n</tr>\n<tr>\n<td>sequence_id</td>\n<td>integer</td>\n<td>Internal reservation identifier.</td>\n</tr>\n<tr>\n<td>guest_id</td>\n<td>string</td>\n<td>Unique identifier for the guest.</td>\n</tr>\n<tr>\n<td>guest</td>\n<td>string (URL)</td>\n<td>URL reference to the guest.</td>\n</tr>\n<tr>\n<td>confirmation_id</td>\n<td>integer</td>\n<td>Reservation confirmation number.</td>\n</tr>\n<tr>\n<td>state</td>\n<td>string</td>\n<td>Current reservation status.</td>\n</tr>\n<tr>\n<td>table_number</td>\n<td>array[string]</td>\n<td>Assigned table number or numbers.</td>\n</tr>\n<tr>\n<td>created_date</td>\n<td>datetime</td>\n<td>Reservation creation timestamp in local time.</td>\n</tr>\n<tr>\n<td>scheduled_time</td>\n<td>datetime</td>\n<td>Scheduled reservation time in local time.</td>\n</tr>\n<tr>\n<td>party_size</td>\n<td>integer</td>\n<td>Number of guests in the party.</td>\n</tr>\n<tr>\n<td>visit_tags</td>\n<td>array[string]</td>\n<td>Visit tags applied to the reservation.</td>\n</tr>\n<tr>\n<td>origin</td>\n<td>string</td>\n<td>Reservation origin, such as Web, Walk-in, or Phone.</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>datetime</td>\n<td>Last updated timestamp in local time.</td>\n</tr>\n<tr>\n<td>seated_time</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as seated in local time.</td>\n</tr>\n<tr>\n<td>done_time</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as done in local time.</td>\n</tr>\n<tr>\n<td>pos_data.check_ids</td>\n<td>array[string]</td>\n<td>Nested object. POS check identifiers associated with the reservation.</td>\n</tr>\n<tr>\n<td>pos_data.pos_sub_total</td>\n<td>integer</td>\n<td>Nested object. POS subtotal amount.</td>\n</tr>\n<tr>\n<td>pos_data.pos_tax</td>\n<td>integer</td>\n<td>Nested object. POS tax amount.</td>\n</tr>\n<tr>\n<td>pos_data.pos_tip</td>\n<td>integer</td>\n<td>Nested object. POS tip amount.</td>\n</tr>\n<tr>\n<td>pos_data.pos_total_spend</td>\n<td>integer</td>\n<td>Nested object. POS total spend amount.</td>\n</tr>\n<tr>\n<td>scheduled_time_utc</td>\n<td>datetime</td>\n<td>Scheduled reservation time in UTC.</td>\n</tr>\n<tr>\n<td>guest_request</td>\n<td>string</td>\n<td>Special request entered by the guest.</td>\n</tr>\n<tr>\n<td>venue_notes</td>\n<td>string, nullable</td>\n<td>Notes entered by the restaurant on the reservation.</td>\n</tr>\n<tr>\n<td>opentable_notes</td>\n<td>string</td>\n<td>OpenTable notes or special offer details associated with the reservation.</td>\n</tr>\n<tr>\n<td>table_category</td>\n<td>string, nullable</td>\n<td>Table type or seating option for the reservation.</td>\n</tr>\n<tr>\n<td>seated_time_utc</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as seated in UTC.</td>\n</tr>\n<tr>\n<td>done_time_utc</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as done in UTC.</td>\n</tr>\n<tr>\n<td>updated_at_utc</td>\n<td>datetime</td>\n<td>Last updated timestamp in UTC.</td>\n</tr>\n<tr>\n<td>server</td>\n<td>string, nullable</td>\n<td>Server assigned to the reservation.</td>\n</tr>\n<tr>\n<td>arrived_time</td>\n<td>datetime</td>\n<td>Time the diner was checked in, in local time.</td>\n</tr>\n<tr>\n<td>arrived_time_utc</td>\n<td>datetime</td>\n<td>Time the diner was checked in, in UTC.</td>\n</tr>\n<tr>\n<td>currency_code</td>\n<td>string, nullable</td>\n<td>Restaurant currency code used with POS values.</td>\n</tr>\n<tr>\n<td>currency_denominator</td>\n<td>integer</td>\n<td>Denominator used to calculate currency amounts.</td>\n</tr>\n<tr>\n<td>experience_details.experience_id</td>\n<td>integer</td>\n<td>Nested object. Unique identifier for the experience.</td>\n</tr>\n<tr>\n<td>experience_details.experience_title</td>\n<td>string</td>\n<td>Nested object. Experience title.</td>\n</tr>\n<tr>\n<td>experience_details.experience_description</td>\n<td>string</td>\n<td>Nested object. Experience description.</td>\n</tr>\n<tr>\n<td>experience_details.subtotalAmount</td>\n<td>integer</td>\n<td>Nested object. Experience subtotal amount.</td>\n</tr>\n<tr>\n<td>experience_details.add_ons</td>\n<td>array, nullable</td>\n<td>Nested object. Experience add-ons.</td>\n</tr>\n<tr>\n<td>experience_details.addon_subtotal_amount</td>\n<td>integer</td>\n<td>Nested object. Add-on subtotal amount.</td>\n</tr>\n<tr>\n<td>experience_details.diner_payment_status</td>\n<td>string, nullable</td>\n<td>Nested object. Diner payment status.</td>\n</tr>\n<tr>\n<td>experience_details.service_fee_amount</td>\n<td>integer</td>\n<td>Nested object. Service fee amount.</td>\n</tr>\n<tr>\n<td>experience_details.taxes_amount</td>\n<td>integer</td>\n<td>Nested object. Tax amount.</td>\n</tr>\n<tr>\n<td>experience_details.tip_amount</td>\n<td>integer</td>\n<td>Nested object. Tip amount.</td>\n</tr>\n<tr>\n<td>experience_details.total_amount</td>\n<td>integer</td>\n<td>Nested object. Total amount.</td>\n</tr>\n<tr>\n<td>experience_details.experience_type</td>\n<td>string</td>\n<td>Nested object. Experience type.</td>\n</tr>\n<tr>\n<td>experience_details.experience_details</td>\n<td>string</td>\n<td>Nested object. Detailed experience information.</td>\n</tr>\n<tr>\n<td>experience_details.experience_cost</td>\n<td>integer</td>\n<td>Nested object. Base experience cost.</td>\n</tr>\n<tr>\n<td>experience_details.experience_add_on_cost</td>\n<td>integer</td>\n<td>Nested object. Experience add-on cost.</td>\n</tr>\n<tr>\n<td>experience_details.experience_prepayment_status</td>\n<td>string, nullable</td>\n<td>Nested object. Experience prepayment status.</td>\n</tr>\n<tr>\n<td>experience_details.experience_service_charges</td>\n<td>integer</td>\n<td>Nested object. Experience service charges.</td>\n</tr>\n<tr>\n<td>experience_details.experience_tax</td>\n<td>integer</td>\n<td>Nested object. Experience tax amount.</td>\n</tr>\n<tr>\n<td>experience_details.experience_gratuity</td>\n<td>integer</td>\n<td>Nested object. Experience gratuity amount.</td>\n</tr>\n<tr>\n<td>experience_details.experience_total_cost</td>\n<td>integer</td>\n<td>Nested object. Total experience cost.</td>\n</tr>\n<tr>\n<td>experience_details.price_type</td>\n<td>string</td>\n<td>Nested object. Experience pricing model.</td>\n</tr>\n<tr>\n<td>experience_details.price_details[].price_id</td>\n<td>integer</td>\n<td>Nested array object. Price identifier.</td>\n</tr>\n<tr>\n<td>experience_details.price_details[].price_name</td>\n<td>string, nullable</td>\n<td>Nested array object. Price name.</td>\n</tr>\n<tr>\n<td>experience_details.price_details[].price_per_guest</td>\n<td>integer</td>\n<td>Nested array object. Price per guest.</td>\n</tr>\n<tr>\n<td>experience_details.price_details[].number_of_guests</td>\n<td>integer</td>\n<td>Nested array object. Number of guests for that price.</td>\n</tr>\n<tr>\n<td>deposit.total_paid</td>\n<td>integer, nullable</td>\n<td>Nested object. Total deposit paid.</td>\n</tr>\n<tr>\n<td>deposit.total_refunded</td>\n<td>integer, nullable</td>\n<td>Nested object. Total deposit refunded.</td>\n</tr>\n<tr>\n<td>deposit.currency</td>\n<td>string</td>\n<td>Nested object. Deposit currency.</td>\n</tr>\n<tr>\n<td>deposit.currency_denominator</td>\n<td>integer</td>\n<td>Nested object. Deposit currency denominator.</td>\n</tr>\n<tr>\n<td>deposit.status</td>\n<td>string, nullable</td>\n<td>Nested object. Deposit status.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","reservations"],"host":["{{base-url}}"],"query":[{"disabled":true,"key":"state","value":"Done"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid1}}"}],"variable":[]}},"response":[{"id":"cba963b2-9df6-4fd7-844c-8a9f767cb141","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","reservations"],"query":[{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"81f3d2ce-e200-46bd-b37a-0a409dfe30f9"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"f87ee1d1-bb2c-448c-959b-215b2f1a4183"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Tue, 15 Oct 2024 06:10:14 GMT"},{"key":"Content-Length","value":"1991"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n  \"hasNextPage\": false,\n  \"nextPageUrl\": null,\n  \"offset\": 0,\n  \"limit\": 1000,\n  \"items\": [\n    {\n       \"id\": \"188878-49bcffdf-0476-4464-9bd0-66e87dc289de\",\n       \"href\": \"https://platform.opentable.com/sync/v2/reservations/188878-49bcffdf-0476-4464-9bd0-66e87dc289de\",\n       \"rid\": 188878,\n       \"sequence_id\": 86941,\n       \"guest_id\": \"188878-05a8f2a2-3428-4000-9867-ca82795cb365\",\n       \"guest\": \"https://platform.opentable.com/sync/v2/guests/188878-05a8f2a2-3428-4000-9867-ca82795cb365\",\n       \"confirmation_id\": 15989,\n       \"state\": \"Cancelled\",\n       \"table_number\": [\n                \"80\"\n        ],\n        \"created_date\": \"2025-01-09T06:31:39\",\n        \"scheduled_time\": \"2025-02-14T19:30:00\",\n        \"party_size\": 2,\n        \"visit_tags\": [\n                \"gc:service/date\"\n        ],\n        \"origin\": \"Web\",\n        \"updated_at\": \"2025-02-06T14:00:36\",\n        \"seated_time\": null,\n        \"done_time\": null,\n        \"pos_data\": {\n            \"check_ids\": null,\n            \"pos_sub_total\": null,\n            \"pos_tax\": null,\n            \"pos_tip\": null,                \n            \"pos_total_spend\": null\n        },\n        \"scheduled_time_utc\": \"2025-02-14T08:30:00Z\",\n        \"guest_request\": \"\",\n        \"venue_notes\": null,\n        \"opentable_notes\": \"\",\n        \"table_category\": null,\n        \"seated_time_utc\": null,\n        \"done_time_utc\": null,\n        \"created_date_utc\": \"2025-01-08T19:31:39Z\",\n        \"updated_at_utc\": \"2025-02-06T03:00:36Z\",\n        \"server\": null,\n        \"arrived_time\": null,\n        \"arrived_time_utc\": null,\n        \"currency_code\": null,\n        \"currency_denominator\": 100,\n        \"experience_details\": {\n            \"experience_id\": 324887,\n            \"experience_title\": \"Michelin Pizza  Dinner\",\n            \"experience_description\": \"Enjoy an amazing evening with the best pizza, that has won 3 Michelin stars.\",\n            \"subtotalAmount\": 20000,\n            \"add_ons\": [\n                {\n                    \"ItemID\": \"946651ee-4252-4e3d-945f-eafb6f252b86\",\n                    \"Quantity\": 1,\n                    \"Price\": 5000,\n                    \"LineTotal\": 5000,\n                    \"LineSubtotalWithTaxes\": 5500,\n                    \"TaxAmount\": 500,\n                    \"Name\": \"Truffle add On\",\n                    \"Description\": \"Add truffles to one pizza\\n\",\n                    \"CurrencyDenominator\": 0,\n                    \"Taxes\": [\n                        {\n                            \"TaxID\": 1,\n                            \"Label\": \"Tax\",\n                            \"TaxPercent\": 10.0,\n                            \"TaxOnItemAmount\": 500\n                        }\n                    ]\n                }\n            ],\n            \"addon_subtotal_amount\": 5500,\n            \"diner_payment_status\": null,\n            \"service_fee_amount\": 2000,\n            \"taxes_amount\": 2200,\n            \"tip_amount\": 2000,\n            \"total_amount\": 26200\n        },\n        \"deposit\": {\n            \"total_paid\": 5000,\n            \"total_refunded\": null,\n            \"currency\": null,\n            \"currency_denominator\": 100,\n            \"status\": \"paid\"\n        }\n    }\n  ]\n}"},{"id":"11740bea-8426-41c6-b2aa-520f80bc9784","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid=1234","host":["{{base-url}}"],"path":["sync","v2","reservations"],"query":[{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"1234"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"9f66f48f-1e52-4191-ac4d-0fab0bbd54b8"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"b59c8488-e57c-4cbf-84c3-939db7f0aaa2"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"134"},{"key":"Date","value":"Tue, 15 Oct 2024 06:10:54 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T06:10:54.939+0000\",\n    \"path\": \"/sync/v2/reservations\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"11117c11\"\n}"}],"_postman_id":"2367d26e-8ef0-435e-b855-3cac768a3eca"},{"name":"Copper Guests API v2","id":"c52a5f41-7c54-4c32-bf1f-7486f0b58a8b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/guests?limit={{limit}}&offset={{offset}}&rid={{rid1}}","description":"<h1 id=\"opentable-guest-sync-api-documentation\">OpenTable Guest Sync API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The OpenTable Guest Sync API allows users to retrieve detailed information about guest profiles associated with a restaurant.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/sync/v2/guests</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Retrieve guests updated after a specific date/time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>) using the <code>updated_at_utc</code> timestamp (UTC time)</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting point for pagination. Default is <code>0</code>.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of guests to return per request. Default is <code>1000</code>, maximum number available for return is <code>2000</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>boolean</td>\n<td>Indicates if there are additional pages of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>string</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>An array of guest objects containing detailed information about each guest.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"guest-object-attributes\">Guest Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for the guest by restaurant.</td>\n</tr>\n<tr>\n<td>href</td>\n<td>string (URL)</td>\n<td>Fully qualified URL for the guest.</td>\n</tr>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>Unique identifier for the restaurant associated with the guest.</td>\n</tr>\n<tr>\n<td>sequence_id</td>\n<td>integer</td>\n<td>Internal OpenTable identifier for the guest record.</td>\n</tr>\n<tr>\n<td>gpid</td>\n<td>string</td>\n<td>Unique OpenTable identifier for the guest.</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array[string]</td>\n<td>Guest tags applied to the diner profile.</td>\n</tr>\n<tr>\n<td>birth_date.name</td>\n<td>string</td>\n<td>Nested object. Label for the birth date field.</td>\n</tr>\n<tr>\n<td>birth_date.year</td>\n<td>integer</td>\n<td>Nested object. Birth year.</td>\n</tr>\n<tr>\n<td>birth_date.month</td>\n<td>integer</td>\n<td>Nested object. Birth month.</td>\n</tr>\n<tr>\n<td>birth_date.day</td>\n<td>integer</td>\n<td>Nested object. Birth day.</td>\n</tr>\n<tr>\n<td>anniversary_date.name</td>\n<td>string</td>\n<td>Nested object. Label for the anniversary date field.</td>\n</tr>\n<tr>\n<td>anniversary_date.year</td>\n<td>integer</td>\n<td>Nested object. Anniversary year.</td>\n</tr>\n<tr>\n<td>anniversary_date.month</td>\n<td>integer</td>\n<td>Nested object. Anniversary month.</td>\n</tr>\n<tr>\n<td>anniversary_date.day</td>\n<td>integer</td>\n<td>Nested object. Anniversary day.</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>datetime</td>\n<td>Last updated timestamp in local time.</td>\n</tr>\n<tr>\n<td>forgotten</td>\n<td>boolean</td>\n<td>Indicates whether the guest requested to have their data forgotten.</td>\n</tr>\n<tr>\n<td>archived</td>\n<td>boolean</td>\n<td>Indicates whether the guest profile is archived.</td>\n</tr>\n<tr>\n<td>company_name</td>\n<td>string, nullable</td>\n<td>Company name associated with the guest.</td>\n</tr>\n<tr>\n<td>created_date</td>\n<td>datetime</td>\n<td>Timestamp when the guest profile was created in local time.</td>\n</tr>\n<tr>\n<td>updated_at_utc</td>\n<td>datetime</td>\n<td>Last updated timestamp in UTC.</td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string</td>\n<td>Restaurant-entered diner identity information.</td>\n</tr>\n<tr>\n<td>notes_special_relationship</td>\n<td>string</td>\n<td>Restaurant-entered information about the guest’s special relationship to the restaurant, chef, or group.</td>\n</tr>\n<tr>\n<td>notes_food_and_drink</td>\n<td>string</td>\n<td>Restaurant-entered food and drink preferences or dietary notes.</td>\n</tr>\n<tr>\n<td>notes_seating</td>\n<td>string</td>\n<td>Restaurant-entered seating preferences.</td>\n</tr>\n<tr>\n<td>created_date_utc</td>\n<td>datetime</td>\n<td>Timestamp when the guest profile was created in UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response-for-guests\">Error Response for Guests</h2>\n<h3 id=\"error-messaging\">Error Messaging</h3>\n<p>The error response DTO returned by the Sync API collections are in the below format. When reporting issues, always provide the OT-RequestId (located in the response header) to allow OpenTable to uniquely identify a specific request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>PARAMETER</th>\n<th>DESCRIPTION</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>timestamp</strong>  <br /><code>integer</code></td>\n<td>The unix time stamp of the error.</td>\n</tr>\n<tr>\n<td><strong>path</strong>  <br /><code>string</code></td>\n<td>The end path of the API you are calling.</td>\n</tr>\n<tr>\n<td><strong>status</strong>  <br /><code>integer</code></td>\n<td>The numerical 3 digit code associated to the error. E.g., 400, 404, 409.</td>\n</tr>\n<tr>\n<td><strong>error</strong>  <br /><code>string</code></td>\n<td>The descriptive phrase associated to the error. E.g., Bad Request, Unauthorized, Not Found.</td>\n</tr>\n<tr>\n<td><strong>message</strong>  <br /><code>string</code></td>\n<td>A short user-readable description of the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","guests"],"host":["{{base-url}}"],"query":[{"disabled":true,"key":"email_optin","value":"{{trueorfalse}}"},{"disabled":true,"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid1}}"}],"variable":[]}},"response":[{"id":"aa256ab6-2301-4bea-abf1-debb54aa59d5","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","disabled":true},{"key":"Authorization","value":"bearer [Access Token]","disabled":true},{"key":"Cache-Control","value":"no-cache","disabled":true}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"a05ce3ed-0058-403b-b7fc-cc3b2a3a4311"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"217"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:38:28 GMT"},{"key":"Content-Length","value":"395"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"hasNextPage\": false,\n    \"nextPageUrl\": null,\n    \"offset\": 0,\n    \"limit\": 1000,\n    \"items\": [\n        {\n            \"id\": \"1038007-325478b0-a2e8-4632-a856-7c35cd135a3e\",\n            \"href\": \"https://platform.otqa.com/sync/v2/guests/1038007-325478b0-a2e8-4632-a856-7c35cd135a3e\",\n            \"rid\": 1038007,\n            \"sequence_id\": 838,\n            \"gpid\": \"170193493817\",\n            \"tags\": [\n                \"gc:diet/no_red_meat\",\n                \"gc:profile/investor\",\n                \"gc:diet/vegetarian\",\n                \"gc:profile/regular\",\n                \"gc:profile/blogger\",\n                \"gc:service/alert_manager\"\n            ],\n            \"birth_date\": null,\n            \"anniversary_date\": {\n                \"name\": \"anniversary\",\n                \"year\": 0,\n                \"month\": 10,\n                \"day\": 13\n            },\n            \"updated_at\": \"2023-08-10T09:25:39\",\n            \"forgotten\": false,\n            \"archived\": false,\n            \"company_name\": \"\",\n            \"created_date\": \"2023-06-05T13:12:44\",\n            \"updated_at_utc\": \"2023-08-10T16:25:39Z\",\n            \"notes\": null,\n            \"notes_special_relationship\": null,\n            \"notes_food_and_drink\": null,\n            \"notes_seating\": null,\n            \"created_date_utc\": \"2023-06-05T20:12:44Z\"\n        }\n    ]\n}"},{"id":"26a1d389-466f-412e-ad8f-4cc1026f2e0c","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"bbf348f6-37e0-45ed-9f83-b2cc6fd35877"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"97913951-9eea-4707-96a2-b96e17b6fe68"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"128"},{"key":"Date","value":"Tue, 15 Oct 2024 04:49:44 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T04:49:44.787+0000\",\n    \"path\": \"/sync/v2/guests\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"3b6f9d3f\"\n}"}],"_postman_id":"c52a5f41-7c54-4c32-bf1f-7486f0b58a8b"},{"name":"Copper Reservation Webhook","id":"0a4321d8-7055-4669-a186-345a8fd695d0","protocolProfileBehavior":{"disabledSystemHeaders":{},"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Bearer or Bearer [token]","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\r\n    \"10\"\r\n  ],\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"server\": \"John Doe\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"origin\": \"Web\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"experience_details\": {\r\n      \"experience_id\": 324887,\r\n      \"experience_title\": \"Michelin Pizza  Dinner\",\r\n      \"experience_description\": \"Enjoy an amazing evening with the best pizza, that has won 3 Michelin stars.\",\r\n      \"subtotalAmount\": 20000,\r\n      \"add_ons\": [\r\n      {\r\n          \"ItemID\": \"946651ee-4252-4e3d-945f-eafb6f252b86\",\r\n          \"Quantity\": 1,\r\n          \"Price\": 5000,\r\n          \"LineTotal\": 5000,\r\n          \"LineSubtotalWithTaxes\": 5500,\r\n          \"TaxAmount\": 500,\r\n          \"Name\": \"Truffle add On\",\r\n          \"Description\": \"Add truffles to one pizza\\n\",\r\n          \"CurrencyDenominator\": 0,\r\n          \"Taxes\": [\r\n              {\r\n                  \"TaxID\": 1,\r\n                  \"Label\": \"Tax\",\r\n                  \"TaxPercent\": 10.0,\r\n                  \"TaxOnItemAmount\": 500\r\n              }\r\n          ]\r\n                }\r\n      ],\r\n      \"addon_subtotal_amount\": 5500,\r\n      \"diner_payment_status\": null,\r\n      \"service_fee_amount\": 2000,\r\n      \"taxes_amount\": 2200,\r\n      \"tip_amount\": 2000,\r\n      \"total_amount\": 26200\r\n  },\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": null,\r\n\t\"totalRefunded\": null,\r\n\t\"currency\": null,\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": null\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url","description":"<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The Reservation Webhook API provides real-time updates about changes in reservation status via webhooks. These updates enable restaurants to seamlessly integrate reservation management into their systems. The webhooks send a detailed JSON payload containing reservation attributes whenever a reservation status changes.</p>\n<p>To access Guest Data, please use the <code>guest</code> attribute to call the guest endpoint in Sync API. For more information about Sync API and other available data points via the GET query, please refer to the Sync API tier section of this Portal.</p>\n<h3 id=\"change-log\"><strong>Change Log</strong></h3>\n<p>**** The v3 version of the webhook, released in February 2025 ****</p>\n<h2 id=\"data-delivery-method\"><strong>Data Delivery Method</strong></h2>\n<h3 id=\"webhook-implementation\"><strong>Webhook Implementation</strong></h3>\n<p>Webhooks are triggered on any change in reservation status. A POST request is sent to the specified endpoint with the payload data.</p>\n<h4 id=\"configuring-your-endpoint\"><strong>Configuring Your Endpoint</strong></h4>\n<ul>\n<li><p>Endpoint URL: Provide an URL where webhook data will be delivered.</p>\n<ul>\n<li><strong>Webhook URL must use https and port 443</strong></li>\n</ul>\n</li>\n<li><p>Authentication: Basic or bearer token is required to verify authenticity of request</p>\n</li>\n<li><p>Event Handling: Ensure your system handles retries in case of delivery failures.</p>\n</li>\n</ul>\n<h3 id=\"webhook-security--validation-requirements\">Webhook Security &amp; Validation Requirements</h3>\n<p>To ensure secure and reliable integrations, all webhook endpoints must comply with the following requirements:</p>\n<h4 id=\"1-redirect-handling\">1. Redirect Handling</h4>\n<p>Webhook endpoints must not rely on HTTP redirects.</p>\n<ul>\n<li><p>Requests that result in a redirect (3xx responses) will be blocked</p>\n</li>\n<li><p>The configured endpoint must be the final destination URL</p>\n</li>\n<li><p>Ensure your endpoint responds directly without forwarding</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"2-url-schema-validation\">2. URL Schema Validation</h4>\n<p>Only approved URL schemas are supported for webhook endpoints:</p>\n<ul>\n<li><strong><code>https://</code></strong> — Required for all external endpoints</li>\n</ul>\n<p>Any other schema (e.g., <code>http://</code>, <code>ftp://</code>) will be rejected.</p>\n<hr />\n<h4 id=\"3-private-network-restrictions\">3. Private Network Restrictions</h4>\n<p>External webhook endpoints must resolve to publicly accessible IP addresses.</p>\n<ul>\n<li><p>Endpoints resolving to private or reserved IP ranges will be blocked</p>\n</li>\n<li><p>This includes (but is not limited to):</p>\n<ul>\n<li><p><code>10.x.x.x</code></p>\n</li>\n<li><p><code>172.16.x.x – 172.31.x.x</code></p>\n</li>\n<li><p><code>192.168.x.x</code></p>\n</li>\n</ul>\n</li>\n</ul>\n<p>This restriction helps prevent misconfiguration and protects against unintended access to internal infrastructure.</p>\n<hr />\n<h4 id=\"summary\">Summary</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Requirement</th>\n<th>Enforcement Behavior</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Redirects (3xx responses)</td>\n<td>Blocked</td>\n</tr>\n<tr>\n<td>Non-HTTPS schemas</td>\n<td>Rejected</td>\n</tr>\n<tr>\n<td>Private IP resolution</td>\n<td>Blocked</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h4 id=\"implementation-guidance\">Implementation Guidance</h4>\n<ul>\n<li><p>Always provide a fully qualified, final destination HTTPS endpoint</p>\n</li>\n<li><p>Verify DNS resolution points to a public IP address</p>\n</li>\n<li><p>Avoid intermediary routing layers that introduce redirects</p>\n</li>\n</ul>\n<h4 id=\"retry-logic\"><strong>Retry Logic</strong></h4>\n<p>Webhook delivery uses an exponential backoff strategy. After three failed attempts, the webhook is marked as undeliverable.</p>\n<h2 id=\"attributes\"><strong>Attributes</strong></h2>\n<p>The webhook payload will not include the same attributes as available in the GET query. To get the additional attributes not delivered in the webhook, Sync API reservataions endpoint will need to be called. Please see the Sync API Copper Reservations API v2 documention for full list of additional attributes.</p>\n<p>OpenTable reserves the right to update the data sent via the webhook with additional attributes. POS partner should build their ingestion of the webhook to accept any new additional attributes in the future. Partner can choose to process or ignore the additional attributes.</p>\n<p>The webhook payload includes the following attributes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>sequence_id</code></td>\n<td>integer</td>\n<td>Sequential identifier for the reservation record within OpenTable systems.</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>string</td>\n<td>The unique guest identifier for the restaurant.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>integer</td>\n<td>A confirmation ID for the reservation.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>The current state of the reservation. States are: NotConfirmed, LeftMessage, WrongNumber, NoAnswer, Confirmed, Late, PartiallyArrived, AllArrived, PartiallySeated, Seated, Appetizer, Entree, Dessert, CheckDropped, Paid, Cleared, BusTable, Done, NoShow, Cancelled, AssumedSeated, AssumedDone.</td>\n</tr>\n<tr>\n<td><code>table_number</code></td>\n<td>array</td>\n<td>The table number(s) assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>scheduled_time</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>The number of guests in the reservation.</td>\n</tr>\n<tr>\n<td><code>server</code></td>\n<td>string</td>\n<td>The server assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>updated_at_utc</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>A globally unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>string</td>\n<td>A fully qualified URL for the reservation.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this reservation is associated with.</td>\n</tr>\n<tr>\n<td><code>guest</code></td>\n<td>string</td>\n<td>A fully qualified URL for the guest associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>created_date</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (local time).</td>\n</tr>\n<tr>\n<td><code>visit_tags</code></td>\n<td>array</td>\n<td>Visit tags that were applied to the reservation by the restaurant (custom or default).</td>\n</tr>\n<tr>\n<td><code>seated_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (local time).</td>\n</tr>\n<tr>\n<td><code>done_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (local time)</td>\n</tr>\n<tr>\n<td><code>scheduled_time_utc</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>guest_request</code></td>\n<td>string</td>\n<td>The special requests entered by the diner when making their reservation.</td>\n</tr>\n<tr>\n<td><code>venue_notes</code></td>\n<td>string</td>\n<td>Notes entered by the venue regarding the reservation.</td>\n</tr>\n<tr>\n<td><code>opentable_notes</code></td>\n<td>string</td>\n<td>The details of the special offer selected by the diner.</td>\n</tr>\n<tr>\n<td><code>table_category</code></td>\n<td>string</td>\n<td>The table type, or seating option, for the reservation. Options are: “hightop,bar,counter,outdoor”. Note: If the attribute is ‘null’, the table_category will be the “default” attribute.</td>\n</tr>\n<tr>\n<td><code>seated_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (UTC time).</td>\n</tr>\n<tr>\n<td><code>done_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (UTC time)</td>\n</tr>\n<tr>\n<td><code>created_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (UTC time).</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>origin</code></td>\n<td>string</td>\n<td>The origin source of the reservation (e.g., <code>Phone</code>, <code>Web, Walk-in</code>).</td>\n</tr>\n<tr>\n<td><code>arrived_time</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived. (local time).</td>\n</tr>\n<tr>\n<td><code>arrived_time_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived. (UTC time).</td>\n</tr>\n<tr>\n<td><code>experience_details</code></td>\n<td>object</td>\n<td>Experience details object including the following details: experience_id (integer),experience_title (string), experience_description (string), subtotalAmount (integer), add_ons (array [ItemID (string), Quantity (integer), Price (integer), LineTotal (integer), LineSubtotalWithTaxes (integer), TaxAmount (integer), Name (string), Description (string), CurrencyDenominator (integer), Taxes (array [TaxID (integer), Label (string), TaxPercent (integer), TaxOnItemAmount (integer)])]), addon_subtotal_amount (integer), diner_payment_status (string), service_fee_amount (integer), taxes_amount (integer), tip_amount (integer), total_amount (integer).</td>\n</tr>\n<tr>\n<td><code>deposit_details</code></td>\n<td>object</td>\n<td>Details of any deposit made. Includes totalPaid, totalRefunded, currency, currencyDenominator, and status (e.g., Paid, FullRefund).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","host":["partner","supplied","webhook","url"],"query":[],"variable":[]}},"response":[{"id":"f629a702-f9fb-45a1-bb84-0a6e697b434d","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer [token]","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\r\n    \"10\"\r\n  ],\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"server\": \"John Doe\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"origin\": \"Web\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"experience_details\": {\r\n      \"experience_id\": 324887,\r\n      \"experience_title\": \"Michelin Pizza  Dinner\",\r\n      \"experience_description\": \"Enjoy an amazing evening with the best pizza, that has won 3 Michelin stars.\",\r\n      \"subtotalAmount\": 20000,\r\n      \"add_ons\": [\r\n      {\r\n          \"ItemID\": \"946651ee-4252-4e3d-945f-eafb6f252b86\",\r\n          \"Quantity\": 1,\r\n          \"Price\": 5000,\r\n          \"LineTotal\": 5000,\r\n          \"LineSubtotalWithTaxes\": 5500,\r\n          \"TaxAmount\": 500,\r\n          \"Name\": \"Truffle add On\",\r\n          \"Description\": \"Add truffles to one pizza\\n\",\r\n          \"CurrencyDenominator\": 0,\r\n          \"Taxes\": [\r\n              {\r\n                  \"TaxID\": 1,\r\n                  \"Label\": \"Tax\",\r\n                  \"TaxPercent\": 10.0,\r\n                  \"TaxOnItemAmount\": 500\r\n              }\r\n          ]\r\n                }\r\n      ],\r\n      \"addon_subtotal_amount\": 5500,\r\n      \"diner_payment_status\": null,\r\n      \"service_fee_amount\": 2000,\r\n      \"taxes_amount\": 2200,\r\n      \"tip_amount\": 2000,\r\n      \"total_amount\": 26200\r\n  },\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": null,\r\n\t\"totalRefunded\": null,\r\n\t\"currency\": null,\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": null\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"8cc11712-7674-4a96-9bfc-f751060671f0"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"5f9f6a89-304b-4154-8099-6af169716afb"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"posRestaurantService"},{"key":"X-OT-UriTemplate","value":"/posRestaurantService/api/v1/pos/restaurants/all"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 21 Feb 2025 02:14:56 GMT"},{"key":"Content-Length","value":"217"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"ak_bmsc=3463BA8A2F5F898E431053FB11A4FC81~000000000000000000000000000000~YAAQrMgwFzVFvxSVAQAAeVpJJhqT4Q+RrwCMj6eV9YZ73di5fgE47UgzVvn5/Dj7JmO3MdDssZ1Es52ACr6QuguhqG9rakimmHM4CGWMuhrug8m41vdiT8Nq+EgNkb0MsSNgtEF57YplW/pGm3fvP5brV8anMVe8cU9+26gYbmv+IIxIU+ns2n4atOARAabg3Q6/39lJv0u68WbhTutL8R6hgbZRbfpkLCyonbQZL6+sA7bHj+2W61KirChF5M/IUM1uo+QcQsbiEWW1ybajDV3K+CBz9QK24YU8TpCruubKI2PPPtmUplAZsN23rw5WnSpMp5Y04qtml8MojOeOpNK2gcxxiN/FzVAbyvQ=; Domain=.opentable.com; Path=/; Expires=Fri, 21 Feb 2025 04:14:56 GMT; Max-Age=7200"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"0a4321d8-7055-4669-a186-345a8fd695d0"}],"id":"4b72c023-6026-44ff-825a-8b1f1100786a","_postman_id":"4b72c023-6026-44ff-825a-8b1f1100786a","description":""},{"name":"Gold","item":[{"name":"Gold Guests API v2","id":"67b9bfbd-5af1-42a1-9673-6b34e588db80","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/guests?limit={{limit}}&offset={{offset}}&rid={{rid2}}","description":"<h1 id=\"opentable-guest-sync-api-documentation\">OpenTable Guest Sync API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The OpenTable Guest Sync API allows users to retrieve detailed information about guest profiles associated with a restaurant.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/sync/v2/guests</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>email_optin</code></td>\n<td>boolean</td>\n<td>List searches to guests that have the email optin flag set to true or false</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Retrieve guests updated after a specific date/time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>) using the <code>updated_at_utc</code> timestamp (UTC time)</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting point for pagination. Default is <code>0</code>.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of guests to return per request. Default is <code>1000</code>, maximum number available for return is <code>2000</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>boolean</td>\n<td>Indicates if there are additional pages of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>string</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>An array of guest objects containing detailed information about each guest.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"guest-object-attributes\">Guest Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for the guest by restaurant.</td>\n</tr>\n<tr>\n<td>href</td>\n<td>string (URL)</td>\n<td>Fully qualified URL for the guest.</td>\n</tr>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>Unique identifier for the restaurant associated with the guest.</td>\n</tr>\n<tr>\n<td>sequence_id</td>\n<td>integer</td>\n<td>Internal OpenTable identifier for the guest record.</td>\n</tr>\n<tr>\n<td>gpid</td>\n<td>string</td>\n<td>Unique OpenTable identifier for the guest.</td>\n</tr>\n<tr>\n<td>first_name</td>\n<td>string</td>\n<td>Guest first name.</td>\n</tr>\n<tr>\n<td>last_name</td>\n<td>string</td>\n<td>Guest last name.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Primary email address associated with the guest.</td>\n</tr>\n<tr>\n<td>email_optin</td>\n<td>boolean</td>\n<td>Indicates whether the guest has opted into email marketing.</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>string</td>\n<td>Primary phone number associated with the guest.</td>\n</tr>\n<tr>\n<td>phone_type</td>\n<td>string</td>\n<td>Type of phone number, such as mobile, home, or work.</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array[string]</td>\n<td>Guest tags applied to the diner profile.</td>\n</tr>\n<tr>\n<td>birth_date.name</td>\n<td>string</td>\n<td>Nested object. Label for the birth date field.</td>\n</tr>\n<tr>\n<td>birth_date.year</td>\n<td>integer</td>\n<td>Nested object. Birth year.</td>\n</tr>\n<tr>\n<td>birth_date.month</td>\n<td>integer</td>\n<td>Nested object. Birth month.</td>\n</tr>\n<tr>\n<td>birth_date.day</td>\n<td>integer</td>\n<td>Nested object. Birth day.</td>\n</tr>\n<tr>\n<td>anniversary_date.name</td>\n<td>string</td>\n<td>Nested object. Label for the anniversary date field.</td>\n</tr>\n<tr>\n<td>anniversary_date.year</td>\n<td>integer</td>\n<td>Nested object. Anniversary year.</td>\n</tr>\n<tr>\n<td>anniversary_date.month</td>\n<td>integer</td>\n<td>Nested object. Anniversary month.</td>\n</tr>\n<tr>\n<td>anniversary_date.day</td>\n<td>integer</td>\n<td>Nested object. Anniversary day.</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>datetime</td>\n<td>Last updated timestamp in local time.</td>\n</tr>\n<tr>\n<td>forgotten</td>\n<td>boolean</td>\n<td>Indicates whether the guest requested to have their data forgotten.</td>\n</tr>\n<tr>\n<td>archived</td>\n<td>boolean</td>\n<td>Indicates whether the guest profile is archived.</td>\n</tr>\n<tr>\n<td>primary_guest</td>\n<td>string (URL), nullable</td>\n<td>URL of the primary guest when this guest record is archived.</td>\n</tr>\n<tr>\n<td>address</td>\n<td>object, nullable</td>\n<td>Nested object. Guest address information.</td>\n</tr>\n<tr>\n<td>mail_opted_in</td>\n<td>boolean</td>\n<td>Indicates whether the guest opted into physical mail.</td>\n</tr>\n<tr>\n<td>company_name</td>\n<td>string, nullable</td>\n<td>Company name associated with the guest.</td>\n</tr>\n<tr>\n<td>phone_numbers[].label</td>\n<td>string</td>\n<td>Nested array object. Phone label.</td>\n</tr>\n<tr>\n<td>phone_numbers[].number</td>\n<td>string</td>\n<td>Nested array object. Phone number.</td>\n</tr>\n<tr>\n<td>phone_numbers[].country_code</td>\n<td>string</td>\n<td>Nested array object. Country code.</td>\n</tr>\n<tr>\n<td>phone_numbers[].primary</td>\n<td>boolean</td>\n<td>Nested array object. Indicates whether this is the primary phone number.</td>\n</tr>\n<tr>\n<td>created_date</td>\n<td>datetime</td>\n<td>Timestamp when the guest profile was created in local time.</td>\n</tr>\n<tr>\n<td>updated_at_utc</td>\n<td>datetime</td>\n<td>Last updated timestamp in UTC.</td>\n</tr>\n<tr>\n<td>marketing_opted_out</td>\n<td>boolean</td>\n<td>Indicates whether the guest opted out of OpenTable marketing/data sharing beyond operational needs.</td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string</td>\n<td>Restaurant-entered diner identity information.</td>\n</tr>\n<tr>\n<td>notes_special_relationship</td>\n<td>string</td>\n<td>Restaurant-entered information about the guest’s special relationship to the restaurant, chef, or group.</td>\n</tr>\n<tr>\n<td>notes_food_and_drink</td>\n<td>string</td>\n<td>Restaurant-entered food and drink preferences or dietary notes.</td>\n</tr>\n<tr>\n<td>notes_seating</td>\n<td>string</td>\n<td>Restaurant-entered seating preferences.</td>\n</tr>\n<tr>\n<td>created_date_utc</td>\n<td>datetime</td>\n<td>Timestamp when the guest profile was created in UTC.</td>\n</tr>\n<tr>\n<td>date_last_visit</td>\n<td>datetime</td>\n<td>Most recent visit timestamp in local time.</td>\n</tr>\n<tr>\n<td>date_first_visit</td>\n<td>datetime</td>\n<td>First recorded visit timestamp in local time.</td>\n</tr>\n<tr>\n<td>date_last_visit_utc</td>\n<td>datetime</td>\n<td>Most recent visit timestamp in UTC.</td>\n</tr>\n<tr>\n<td>date_first_visit_utc</td>\n<td>datetime</td>\n<td>First recorded visit timestamp in UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"error-response-for-guests\">Error Response for Guests</h2>\n<h3 id=\"error-messaging\">Error Messaging</h3>\n<p>The error response DTO returned by the Sync API collections are in the below format. When reporting issues, always provide the OT-RequestId (located in the response header) to allow OpenTable to uniquely identify a specific request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>PARAMETER</th>\n<th>DESCRIPTION</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>timestamp</strong>  <br /><code>integer</code></td>\n<td>The unix time stamp of the error.</td>\n</tr>\n<tr>\n<td><strong>path</strong>  <br /><code>string</code></td>\n<td>The end path of the API you are calling.</td>\n</tr>\n<tr>\n<td><strong>status</strong>  <br /><code>integer</code></td>\n<td>The numerical 3 digit code associated to the error. E.g., 400, 404, 409.</td>\n</tr>\n<tr>\n<td><strong>error</strong>  <br /><code>string</code></td>\n<td>The descriptive phrase associated to the error. E.g., Bad Request, Unauthorized, Not Found.</td>\n</tr>\n<tr>\n<td><strong>message</strong>  <br /><code>string</code></td>\n<td>A short user-readable description of the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","guests"],"host":["{{base-url}}"],"query":[{"disabled":true,"key":"email_optin","value":"{{trueorfalse}}"},{"disabled":true,"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid2}}"}],"variable":[]}},"response":[{"id":"cd2f9d48-f332-4e4a-a9e0-bffac06d0980","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","disabled":true},{"key":"Authorization","value":"bearer [Access Token]","disabled":true},{"key":"Cache-Control","value":"no-cache","disabled":true}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"a05ce3ed-0058-403b-b7fc-cc3b2a3a4311"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"217"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:38:28 GMT"},{"key":"Content-Length","value":"395"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"hasNextPage\": false,\n    \"nextPageUrl\": null,\n    \"offset\": 0,\n    \"limit\": 1000,\n    \"items\": [\n        {\n            \"id\": \"1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"href\": \"https://platform.otqa.com/sync/v2/guests/1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"rid\": 1234567,\n            \"sequence_id\": 1,\n            \"gpid\": null,\n            \"first_name\": \"John\",\n            \"last_name\": \"Doe\",\n            \"email\": \"john.doe@email.com\",\n            \"email_optin\": true,\n            \"phone\": \"2125555555\",\n            \"phone_type\": \"Mobile\",\n            \"tags\": null,\n            \"birth_date\": null,\n            \"anniversary_date\": null,\n            \"updated_at\": \"2024-12-20T08:09:19\",\n            \"forgotten\": false,\n            \"archived\": false,\n            \"primary_guest\": null,\n            \"address\": null,\n            \"mail_opted_in\": false,\n            \"company_name\": null,\n            \"phone_numbers\": [\n                {\n                    \"label\": \"Mobile\",\n                    \"number\": \"2125555555\",\n                    \"country_code\": \"1\",\n                    \"primary\": true\n                }\n            ],\n            \"created_date\": \"2024-12-20T08:09:19\",\n            \"updated_at_utc\": \"2024-12-20T16:09:19Z\",\n            \"marketing_opted_out\": false,\n            \"notes\": null,\n            \"notes_special_relationship\": null,\n            \"notes_food_and_drink\": null,\n            \"notes_seating\": null,\n            \"created_date_utc\": \"2024-12-20T16:09:19Z\",\n            \"date_last_visit\": \"2024-12-20T05:00:00\",\n            \"date_first_visit\": \"2024-12-20T05:00:00\",\n            \"date_last_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"date_first_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"is_hidden\": false\n        }\n    ]\n}"},{"id":"8916d831-ac1c-4cce-9c18-2d0e6c4b582e","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"bbf348f6-37e0-45ed-9f83-b2cc6fd35877"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"97913951-9eea-4707-96a2-b96e17b6fe68"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"128"},{"key":"Date","value":"Tue, 15 Oct 2024 04:49:44 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T04:49:44.787+0000\",\n    \"path\": \"/sync/v2/guests\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"3b6f9d3f\"\n}"}],"_postman_id":"67b9bfbd-5af1-42a1-9673-6b34e588db80"},{"name":"Gold Reservations API v2","id":"daee43f4-1c0f-4686-a211-6aca2a13ac23","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid={{rid2}}","description":"<h1 id=\"overview\">Overview</h1>\n<p>The Reservation API provides detailed data about restaurant reservations and allows applications to filter and retrieve records based on various parameters. This endpoint is designed to support restaurant management systems and third-party applications in obtaining accurate and timely reservation data.</p>\n<hr />\n<h3 id=\"api-endpoint\">API Endpoint</h3>\n<p><strong>URL</strong>: <code>https://platform.opentable.com/sync/v2/reservations</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>string</td>\n<td>A unique identifier, per RID, for a guest. This is represented in the payload attribute with the removal of the leading RID designation. I.e., if the payload returned, “guest_id”: “214390-5b0ed185cdff96138419db0f”, the query parameter to isolate all records for the specific guest would be ?rid=214390&amp;guest_id=5b0ed185cdff96138419db0f.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>string</td>\n<td>Filter results by confirmation ID.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>Filter results by reservation state (e.g., <code>Done</code>, <code>Seated</code>, <code>Cancelled</code>).</td>\n</tr>\n<tr>\n<td><code>scheduled_time_from</code></td>\n<td>string</td>\n<td>Lower boundary of the reservation scheduled date/time range in local time(ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss</code>). (local time)</td>\n</tr>\n<tr>\n<td><code>scheduled_time_to</code></td>\n<td>string</td>\n<td>Upper boundary of the reservation scheduled date/time range in local time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss</code>). (local time)</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Retrieve reservations updated after a specific date/time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>) using the <code>updated_at_utc</code> timestamp (UTC time)</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Number of results per request. Default is 1000, maximum number available for return is 2000.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Number of results to skip. Use for pagination.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>boolean</td>\n<td>Indicates if there are additional pages of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>string</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>An array of reservation objects containing detailed information about each reservation.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-payload\">Response Payload</h3>\n<p>The response includes metadata about the paginated results, followed by an array of reservation objects.</p>\n<hr />\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td>href</td>\n<td>string (URL)</td>\n<td>Fully qualified URL for the reservation.</td>\n</tr>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>Unique identifier for the restaurant.</td>\n</tr>\n<tr>\n<td>sequence_id</td>\n<td>integer</td>\n<td>Internal reservation identifier.</td>\n</tr>\n<tr>\n<td>guest_id</td>\n<td>string</td>\n<td>Unique identifier for the guest.</td>\n</tr>\n<tr>\n<td>guest</td>\n<td>string (URL)</td>\n<td>URL reference to the guest.</td>\n</tr>\n<tr>\n<td>confirmation_id</td>\n<td>integer</td>\n<td>Reservation confirmation number.</td>\n</tr>\n<tr>\n<td>state</td>\n<td>string</td>\n<td>Current reservation status.</td>\n</tr>\n<tr>\n<td>table_number</td>\n<td>array[string]</td>\n<td>Assigned table number or numbers.</td>\n</tr>\n<tr>\n<td>created_date</td>\n<td>datetime</td>\n<td>Reservation creation timestamp in local time.</td>\n</tr>\n<tr>\n<td>scheduled_time</td>\n<td>datetime</td>\n<td>Scheduled reservation time in local time.</td>\n</tr>\n<tr>\n<td>party_size</td>\n<td>integer</td>\n<td>Number of guests in the party.</td>\n</tr>\n<tr>\n<td>visit_tags</td>\n<td>array[string]</td>\n<td>Visit tags applied to the reservation.</td>\n</tr>\n<tr>\n<td>origin</td>\n<td>string</td>\n<td>Reservation origin, such as Web, Walk-in, or Phone.</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>datetime</td>\n<td>Last updated timestamp in local time.</td>\n</tr>\n<tr>\n<td>seated_time</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as seated in local time.</td>\n</tr>\n<tr>\n<td>done_time</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as done in local time.</td>\n</tr>\n<tr>\n<td>scheduled_time_utc</td>\n<td>datetime</td>\n<td>Scheduled reservation time in UTC.</td>\n</tr>\n<tr>\n<td>marketing_opted_out</td>\n<td>boolean</td>\n<td>Indicates whether the diner opted out of marketing or data sharing beyond operational needs.</td>\n</tr>\n<tr>\n<td>guest_request</td>\n<td>string</td>\n<td>Special request entered by the guest.</td>\n</tr>\n<tr>\n<td>venue_notes</td>\n<td>string, nullable</td>\n<td>Notes entered by the restaurant on the reservation.</td>\n</tr>\n<tr>\n<td>opentable_notes</td>\n<td>string</td>\n<td>OpenTable notes or special offer details associated with the reservation.</td>\n</tr>\n<tr>\n<td>table_category</td>\n<td>string, nullable</td>\n<td>Table type or seating option for the reservation.</td>\n</tr>\n<tr>\n<td>seated_time_utc</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as seated in UTC.</td>\n</tr>\n<tr>\n<td>done_time_utc</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as done in UTC.</td>\n</tr>\n<tr>\n<td>created_date_utc</td>\n<td>datetime</td>\n<td>Reservation creation timestamp in UTC.</td>\n</tr>\n<tr>\n<td>updated_at_utc</td>\n<td>datetime</td>\n<td>Last updated timestamp in UTC.</td>\n</tr>\n<tr>\n<td>server</td>\n<td>string, nullable</td>\n<td>Server assigned to the reservation.</td>\n</tr>\n<tr>\n<td>referrer</td>\n<td>object, nullable</td>\n<td>Nested object. Referrer details associated with the reservation.</td>\n</tr>\n<tr>\n<td>added_to_waitlist</td>\n<td>datetime, nullable</td>\n<td>Time the record was added to the waitlist in local time.</td>\n</tr>\n<tr>\n<td>added_to_waitlist_utc</td>\n<td>datetime, nullable</td>\n<td>Time the record was added to the waitlist in UTC.</td>\n</tr>\n<tr>\n<td>arrived_time</td>\n<td>datetime</td>\n<td>Time the diner was checked in, in local time.</td>\n</tr>\n<tr>\n<td>arrived_time_utc</td>\n<td>datetime</td>\n<td>Time the diner was checked in, in UTC.</td>\n</tr>\n<tr>\n<td>currency_code</td>\n<td>string, nullable</td>\n<td>Restaurant currency code used with POS values.</td>\n</tr>\n<tr>\n<td>currency_denominator</td>\n<td>integer</td>\n<td>Denominator used to calculate currency amounts.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","reservations"],"host":["{{base-url}}"],"query":[{"disabled":true,"key":"state","value":"Done"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid2}}"}],"variable":[]}},"response":[{"id":"e9898f45-5047-4dc7-832f-74ba8efdf2f9","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","reservations"],"query":[{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"81f3d2ce-e200-46bd-b37a-0a409dfe30f9"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"f87ee1d1-bb2c-448c-959b-215b2f1a4183"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Tue, 15 Oct 2024 06:10:14 GMT"},{"key":"Content-Length","value":"1991"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n  \"hasNextPage\": false,\n  \"nextPageUrl\": null,\n  \"offset\": 0,\n  \"limit\": 1000,\n  \"items\": [\n    {\n      \"id\": \"1234567-49bcffdf-0476-4464-9bd0-66e87dc289de\",\n      \"href\": \"https://platform.opentable.com/sync/v2/reservations/1234567-49bcffdf-0476-4464-9bd0-66e87dc289de\",\n      \"rid\": 1234567,\n      \"sequence_id\": 86941,\n      \"guest_id\": \"1234567-05a8f2a2-3428-4000-9867-ca82795cb365\",\n      \"guest\": \"https://platform.opentable.com/sync/v2/guests/1234567-05a8f2a2-3428-4000-9867-ca82795cb365\",\n            \"confirmation_id\": 15989,\n            \"state\": \"Cancelled\",\n            \"table_number\": [\n                \"80\"\n            ],\n            \"created_date\": \"2025-01-09T06:31:39\",\n            \"scheduled_time\": \"2025-02-14T19:30:00\",\n            \"party_size\": 2,\n            \"visit_tags\": [\n                \"gc:service/date\"\n            ],\n            \"origin\": \"Web\",\n            \"updated_at\": \"2025-02-06T14:00:36\",\n            \"seated_time\": null,\n            \"done_time\": null,\n            \"pos_data\": {\n                \"check_ids\": null,\n                \"pos_sub_total\": null,\n                \"pos_tax\": null,\n                \"pos_tip\": null,\n                \"pos_total_spend\": null\n            },\n            \"scheduled_time_utc\": \"2025-02-14T08:30:00Z\",\n            \"marketing_opted_out\": false,\n            \"guest_request\": \"\",\n            \"venue_notes\": null,\n            \"opentable_notes\": \"\",\n            \"table_category\": null,\n            \"seated_time_utc\": null,\n            \"done_time_utc\": null,\n            \"created_date_utc\": \"2025-01-08T19:31:39Z\",\n            \"updated_at_utc\": \"2025-02-06T03:00:36Z\",\n            \"server\": null,\n            \"referrer\": null,\n            \"added_to_waitlist\": null,\n            \"added_to_waitlist_utc\": null,\n            \"arrived_time\": null,\n            \"arrived_time_utc\": null,\n            \"currency_code\": null,\n            \"currency_denominator\": 100\n    }\n  ]\n}"},{"id":"00a6a111-7ae7-42fc-a0fc-30e4524b1d4f","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid=1234","host":["{{base-url}}"],"path":["sync","v2","reservations"],"query":[{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"1234"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"9f66f48f-1e52-4191-ac4d-0fab0bbd54b8"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"b59c8488-e57c-4cbf-84c3-939db7f0aaa2"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"134"},{"key":"Date","value":"Tue, 15 Oct 2024 06:10:54 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T06:10:54.939+0000\",\n    \"path\": \"/sync/v2/reservations\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"11117c11\"\n}"}],"_postman_id":"daee43f4-1c0f-4686-a211-6aca2a13ac23"},{"name":"Gold Reservation Webhook","id":"7dda167c-2237-4550-a059-f02357f93ebb","protocolProfileBehavior":{"disabledSystemHeaders":{},"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Bearer or Bearer [token]","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\r\n    \"10\"\r\n  ],\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"server\": \"John Doe\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"origin\": \"Web\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": null,\r\n\t\"totalRefunded\": null,\r\n\t\"currency\": null,\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": null\r\n  },\r\n  \"referrer\": {\r\n    \"company\": \"Concierge Company ABC\",\r\n    \"id\": \"19999999940618\",\r\n    \"first_name\": \"Connie\",\r\n    \"last_name\": \"Concierge\",\r\n    \"email\": \"cconcierge@conciergeabc.com\",\r\n    \"phone\": \"8335551212\"\r\n  },\r\n  \"added_to_waitlist\": null,\r\n  \"added_to_waitlist_utc\": null\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url","description":"<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The Reservation Webhook API provides real-time updates about changes in reservation status via webhooks. These updates enable restaurants to seamlessly integrate reservation management into their systems. The webhooks send a detailed JSON payload containing reservation attributes whenever a reservation status changes.</p>\n<p>To access Guest Data, please use the <code>guest</code> attribute to call the guest endpoint in Sync API. For more information about Sync API and other available data points via the GET query, please refer to the Sync API tier section of this Portal.</p>\n<h3 id=\"change-log\"><strong>Change Log</strong></h3>\n<p>**** The v3 version of the webhook, released in February 2025 ****</p>\n<h2 id=\"data-delivery-method\"><strong>Data Delivery Method</strong></h2>\n<h3 id=\"webhook-implementation\"><strong>Webhook Implementation</strong></h3>\n<p>Webhooks are triggered on any change in reservation status. A POST request is sent to the specified endpoint with the payload data.</p>\n<h4 id=\"configuring-your-endpoint\"><strong>Configuring Your Endpoint</strong></h4>\n<ul>\n<li><p>Endpoint URL: Provide an URL where webhook data will be delivered.</p>\n<ul>\n<li><strong>Webhook URL must use https and port 443</strong></li>\n</ul>\n</li>\n<li><p>Authentication: Basic or bearer token is required to verify authenticity of request</p>\n</li>\n<li><p>Event Handling: Ensure your system handles retries in case of delivery failures.</p>\n</li>\n</ul>\n<h3 id=\"webhook-security--validation-requirements\">Webhook Security &amp; Validation Requirements</h3>\n<p>To ensure secure and reliable integrations, all webhook endpoints must comply with the following requirements:</p>\n<h4 id=\"1-redirect-handling\">1. Redirect Handling</h4>\n<p>Webhook endpoints must not rely on HTTP redirects.</p>\n<ul>\n<li><p>Requests that result in a redirect (3xx responses) will be blocked</p>\n</li>\n<li><p>The configured endpoint must be the final destination URL</p>\n</li>\n<li><p>Ensure your endpoint responds directly without forwarding</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"2-url-schema-validation\">2. URL Schema Validation</h4>\n<p>Only approved URL schemas are supported for webhook endpoints:</p>\n<ul>\n<li><strong><code>https://</code></strong> — Required for all external endpoints</li>\n</ul>\n<p>Any other schema (e.g., <code>http://</code>, <code>ftp://</code>) will be rejected.</p>\n<hr />\n<h4 id=\"3-private-network-restrictions\">3. Private Network Restrictions</h4>\n<p>External webhook endpoints must resolve to publicly accessible IP addresses.</p>\n<ul>\n<li><p>Endpoints resolving to private or reserved IP ranges will be blocked</p>\n</li>\n<li><p>This includes (but is not limited to):</p>\n<ul>\n<li><p><code>10.x.x.x</code></p>\n</li>\n<li><p><code>172.16.x.x – 172.31.x.x</code></p>\n</li>\n<li><p><code>192.168.x.x</code></p>\n</li>\n</ul>\n</li>\n</ul>\n<p>This restriction helps prevent misconfiguration and protects against unintended access to internal infrastructure.</p>\n<hr />\n<h4 id=\"summary\">Summary</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Requirement</th>\n<th>Enforcement Behavior</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Redirects (3xx responses)</td>\n<td>Blocked</td>\n</tr>\n<tr>\n<td>Non-HTTPS schemas</td>\n<td>Rejected</td>\n</tr>\n<tr>\n<td>Private IP resolution</td>\n<td>Blocked</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h4 id=\"implementation-guidance\">Implementation Guidance</h4>\n<ul>\n<li><p>Always provide a fully qualified, final destination HTTPS endpoint</p>\n</li>\n<li><p>Verify DNS resolution points to a public IP address</p>\n</li>\n<li><p>Avoid intermediary routing layers that introduce redirects</p>\n</li>\n</ul>\n<h4 id=\"retry-logic\"><strong>Retry Logic</strong></h4>\n<p>Webhook delivery uses an exponential backoff strategy. After three failed attempts, the webhook is marked as undeliverable.</p>\n<h2 id=\"attributes\"><strong>Attributes</strong></h2>\n<p>The webhook payload will not include the same attributes as available in the GET query. To get the additional attributes not delivered in the webhook, Sync API reservations endpoint will need to be called. Please see the Sync API Reservations v2 documentation for full list of additional attributes.</p>\n<p>OpenTable reserves the right to update the data sent via the webhook with additional attributes. POS partner should build their ingestion of the webhook to accept any new additional attributes in the future. Partner can choose to process or ignore the additional attributes.</p>\n<p>The webhook payload includes the following attributes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>sequence_id</code></td>\n<td>integer</td>\n<td>Sequential identifier for the reservation record within OpenTable systems.</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>string</td>\n<td>The unique guest identifier for the restaurant.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>integer</td>\n<td>A confirmation ID for the reservation.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>The current state of the reservation. States are: NotConfirmed, LeftMessage, WrongNumber, NoAnswer, Confirmed, Late, PartiallyArrived, AllArrived, PartiallySeated, Seated, Appetizer, Entree, Dessert, CheckDropped, Paid, Cleared, BusTable, Done, NoShow, Cancelled, AssumedSeated, AssumedDone.</td>\n</tr>\n<tr>\n<td><code>table_number</code></td>\n<td>array</td>\n<td>The table number(s) assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>scheduled_time</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>The number of guests in the reservation.</td>\n</tr>\n<tr>\n<td><code>server</code></td>\n<td>string</td>\n<td>The server assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>updated_at_utc</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>A globally unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>string</td>\n<td>A fully qualified URL for the reservation.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this reservation is associated with.</td>\n</tr>\n<tr>\n<td><code>guest</code></td>\n<td>string</td>\n<td>A fully qualified URL for the guest associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>created_date</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (local time).</td>\n</tr>\n<tr>\n<td><code>visit_tags</code></td>\n<td>array</td>\n<td>Visit tags that were applied to the reservation by the restaurant (custom or default).</td>\n</tr>\n<tr>\n<td><code>seated_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (local time).</td>\n</tr>\n<tr>\n<td><code>done_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (local time)</td>\n</tr>\n<tr>\n<td><code>scheduled_time_utc</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>guest_request</code></td>\n<td>string</td>\n<td>The special requests entered by the diner when making their reservation.</td>\n</tr>\n<tr>\n<td><code>venue_notes</code></td>\n<td>string</td>\n<td>Notes entered by the venue regarding the reservation.</td>\n</tr>\n<tr>\n<td><code>opentable_notes</code></td>\n<td>string</td>\n<td>The details of the special offer selected by the diner.</td>\n</tr>\n<tr>\n<td><code>table_category</code></td>\n<td>string</td>\n<td>The table type, or seating option, for the reservation. Options are: “hightop,bar,counter,outdoor”. Note: If the attribute is ‘null’, the table_category will be the “default” attribute.</td>\n</tr>\n<tr>\n<td><code>seated_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (UTC time).</td>\n</tr>\n<tr>\n<td><code>done_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (UTC time)</td>\n</tr>\n<tr>\n<td><code>created_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (UTC time).</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>origin</code></td>\n<td>string</td>\n<td>The origin source of the reservation (e.g., <code>Phone</code>, <code>Web, Walk-in</code>).</td>\n</tr>\n<tr>\n<td><code>arrived_time</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived. (local time).</td>\n</tr>\n<tr>\n<td><code>arrived_time_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived. (UTC time).</td>\n</tr>\n<tr>\n<td><code>deposit_details</code></td>\n<td>object</td>\n<td>Details of any deposit made. Includes totalPaid, totalRefunded, currency, currencyDenominator, and status (e.g., Paid, FullRefund).</td>\n</tr>\n<tr>\n<td><code>referrer</code></td>\n<td>list of objects</td>\n<td>The information associated to the referrer, or commonly the concierge, associated to a reservation. company: name of the company of the referrer (string), id: unique ID of the referrer in the OpenTable system (string), first_name: the first name of the referrer (string), last_name: the last name of the referrer (string), email: the email address of the referrer (string), phone: the phone number of the referrer (string).</td>\n</tr>\n<tr>\n<td><code>added_to_waitlist</code></td>\n<td>string</td>\n<td>Timestamp of when a record was added to the waitlist. If the record was not added, the value will be null. (local time).</td>\n</tr>\n<tr>\n<td><code>added_to_waitlist_utc</code></td>\n<td>string</td>\n<td>Timestamp of when a record was added to the waitlist. If the record was not added, the value will be null. (UTC time).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","host":["partner","supplied","webhook","url"],"query":[],"variable":[]}},"response":[{"id":"14e6a5d7-fc02-4466-9ff7-c18d9dc89ee2","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer [token]","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\r\n    \"10\"\r\n  ],\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"server\": \"John Doe\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"origin\": \"Web\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": null,\r\n\t\"totalRefunded\": null,\r\n\t\"currency\": null,\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": null\r\n  },\r\n  \"referrer\": {\r\n    \"company\": \"Concierge Company ABC\",\r\n    \"id\": \"19999999940618\",\r\n    \"first_name\": \"Connie\",\r\n    \"last_name\": \"Concierge\",\r\n    \"email\": \"cconcierge@conciergeabc.com\",\r\n    \"phone\": \"8335551212\"\r\n  },\r\n  \"added_to_waitlist\": null,\r\n  \"added_to_waitlist_utc\": null\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"8cc11712-7674-4a96-9bfc-f751060671f0"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"5f9f6a89-304b-4154-8099-6af169716afb"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"posRestaurantService"},{"key":"X-OT-UriTemplate","value":"/posRestaurantService/api/v1/pos/restaurants/all"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 21 Feb 2025 02:14:56 GMT"},{"key":"Content-Length","value":"217"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"ak_bmsc=3463BA8A2F5F898E431053FB11A4FC81~000000000000000000000000000000~YAAQrMgwFzVFvxSVAQAAeVpJJhqT4Q+RrwCMj6eV9YZ73di5fgE47UgzVvn5/Dj7JmO3MdDssZ1Es52ACr6QuguhqG9rakimmHM4CGWMuhrug8m41vdiT8Nq+EgNkb0MsSNgtEF57YplW/pGm3fvP5brV8anMVe8cU9+26gYbmv+IIxIU+ns2n4atOARAabg3Q6/39lJv0u68WbhTutL8R6hgbZRbfpkLCyonbQZL6+sA7bHj+2W61KirChF5M/IUM1uo+QcQsbiEWW1ybajDV3K+CBz9QK24YU8TpCruubKI2PPPtmUplAZsN23rw5WnSpMp5Y04qtml8MojOeOpNK2gcxxiN/FzVAbyvQ=; Domain=.opentable.com; Path=/; Expires=Fri, 21 Feb 2025 04:14:56 GMT; Max-Age=7200"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"7dda167c-2237-4550-a059-f02357f93ebb"}],"id":"87c5f456-92f6-4dd4-b90b-2b9446da8ff8","_postman_id":"87c5f456-92f6-4dd4-b90b-2b9446da8ff8","description":""},{"name":"Platinum","item":[{"name":"Platinum Guests API v2","id":"9f359a15-d0a1-467d-a7ba-d70761372344","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/guests?limit={{limit}}&offset={{offset}}&rid={{rid3}}","description":"<h1 id=\"opentable-guest-sync-api-documentation\">OpenTable Guest Sync API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>These APIs give approved restaurant developers the ability to acquire and consume guest data. The Sync API is currently not included in the public developer program. Inquiries sent to our team will be considered on a case by case basis.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/sync/v2/guests</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>email_optin</code></td>\n<td>boolean</td>\n<td>List searches to guests that have the email optin flag set to true or false</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Retrieve guests updated after a specific date/time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>) using the <code>updated_at_utc</code> timestamp (UTC time)</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting point for pagination. Default is <code>0</code>.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of guests to return per request. Default is <code>1000</code>, maximum number available for return is <code>2000</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>boolean</td>\n<td>Indicates if there are additional pages of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>string</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>An array of guest objects containing detailed information about each guest.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"guest-object-attributes\">Guest Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for the guest by restaurant.</td>\n</tr>\n<tr>\n<td>href</td>\n<td>string (URL)</td>\n<td>Fully qualified URL for the guest.</td>\n</tr>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>Unique identifier for the restaurant associated with the guest.</td>\n</tr>\n<tr>\n<td>sequence_id</td>\n<td>integer</td>\n<td>Internal OpenTable identifier for the guest record.</td>\n</tr>\n<tr>\n<td>gpid</td>\n<td>string</td>\n<td>Unique OpenTable identifier for the guest.</td>\n</tr>\n<tr>\n<td>first_name</td>\n<td>string</td>\n<td>Guest first name.</td>\n</tr>\n<tr>\n<td>last_name</td>\n<td>string</td>\n<td>Guest last name.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Primary email address associated with the guest.</td>\n</tr>\n<tr>\n<td>email_optin</td>\n<td>boolean</td>\n<td>Indicates whether the guest has opted into email marketing.</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>string</td>\n<td>Primary phone number associated with the guest.</td>\n</tr>\n<tr>\n<td>phone_type</td>\n<td>string</td>\n<td>Type of phone number, such as mobile, home, or work.</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array[string]</td>\n<td>Guest tags applied to the diner profile.</td>\n</tr>\n<tr>\n<td>birth_date.name</td>\n<td>string</td>\n<td>Nested object. Label for the birth date field.</td>\n</tr>\n<tr>\n<td>birth_date.year</td>\n<td>integer</td>\n<td>Nested object. Birth year.</td>\n</tr>\n<tr>\n<td>birth_date.month</td>\n<td>integer</td>\n<td>Nested object. Birth month.</td>\n</tr>\n<tr>\n<td>birth_date.day</td>\n<td>integer</td>\n<td>Nested object. Birth day.</td>\n</tr>\n<tr>\n<td>anniversary_date.name</td>\n<td>string</td>\n<td>Nested object. Label for the anniversary date field.</td>\n</tr>\n<tr>\n<td>anniversary_date.year</td>\n<td>integer</td>\n<td>Nested object. Anniversary year.</td>\n</tr>\n<tr>\n<td>anniversary_date.month</td>\n<td>integer</td>\n<td>Nested object. Anniversary month.</td>\n</tr>\n<tr>\n<td>anniversary_date.day</td>\n<td>integer</td>\n<td>Nested object. Anniversary day.</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>datetime</td>\n<td>Last updated timestamp in local time.</td>\n</tr>\n<tr>\n<td>forgotten</td>\n<td>boolean</td>\n<td>Indicates whether the guest requested to have their data forgotten.</td>\n</tr>\n<tr>\n<td>archived</td>\n<td>boolean</td>\n<td>Indicates whether the guest profile is archived.</td>\n</tr>\n<tr>\n<td>primary_guest</td>\n<td>string (URL), nullable</td>\n<td>URL of the primary guest when this guest record is archived.</td>\n</tr>\n<tr>\n<td>address</td>\n<td>object, nullable</td>\n<td>Nested object. Guest address information.</td>\n</tr>\n<tr>\n<td>mail_opted_in</td>\n<td>boolean</td>\n<td>Indicates whether the guest opted into physical mail.</td>\n</tr>\n<tr>\n<td>company_name</td>\n<td>string, nullable</td>\n<td>Company name associated with the guest.</td>\n</tr>\n<tr>\n<td>phone_numbers[].label</td>\n<td>string</td>\n<td>Nested array object. Phone label.</td>\n</tr>\n<tr>\n<td>phone_numbers[].number</td>\n<td>string</td>\n<td>Nested array object. Phone number.</td>\n</tr>\n<tr>\n<td>phone_numbers[].country_code</td>\n<td>string</td>\n<td>Nested array object. Country code.</td>\n</tr>\n<tr>\n<td>phone_numbers[].primary</td>\n<td>boolean</td>\n<td>Nested array object. Indicates whether this is the primary phone number.</td>\n</tr>\n<tr>\n<td>created_date</td>\n<td>datetime</td>\n<td>Timestamp when the guest profile was created in local time.</td>\n</tr>\n<tr>\n<td>updated_at_utc</td>\n<td>datetime</td>\n<td>Last updated timestamp in UTC.</td>\n</tr>\n<tr>\n<td>marketing_opted_out</td>\n<td>boolean</td>\n<td>Indicates whether the guest opted out of OpenTable marketing/data sharing beyond operational needs.</td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string</td>\n<td>Restaurant-entered diner identity information.</td>\n</tr>\n<tr>\n<td>notes_special_relationship</td>\n<td>string</td>\n<td>Restaurant-entered information about the guest’s special relationship to the restaurant, chef, or group.</td>\n</tr>\n<tr>\n<td>notes_food_and_drink</td>\n<td>string</td>\n<td>Restaurant-entered food and drink preferences or dietary notes.</td>\n</tr>\n<tr>\n<td>notes_seating</td>\n<td>string</td>\n<td>Restaurant-entered seating preferences.</td>\n</tr>\n<tr>\n<td>created_date_utc</td>\n<td>datetime</td>\n<td>Timestamp when the guest profile was created in UTC.</td>\n</tr>\n<tr>\n<td>date_last_visit</td>\n<td>datetime</td>\n<td>Most recent visit timestamp in local time.</td>\n</tr>\n<tr>\n<td>date_first_visit</td>\n<td>datetime</td>\n<td>First recorded visit timestamp in local time.</td>\n</tr>\n<tr>\n<td>date_email_opt_in_opt_out</td>\n<td>datetime, nullable</td>\n<td>Timestamp of when the email_optin value last changed in local time.</td>\n</tr>\n<tr>\n<td>date_last_visit_utc</td>\n<td>datetime</td>\n<td>Most recent visit timestamp in UTC.</td>\n</tr>\n<tr>\n<td>date_first_visit_utc</td>\n<td>datetime</td>\n<td>First recorded visit timestamp in UTC.</td>\n</tr>\n<tr>\n<td>date_email_opt_in_opt_out_utc</td>\n<td>datetime, nullable</td>\n<td>Timestamp of when the email_optin value last changed in UTC.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response-for-guests\">Error Response for Guests</h2>\n<h3 id=\"error-messaging\">Error Messaging</h3>\n<p>The error response DTO returned by the Sync API collections are in the below format. When reporting issues, always provide the OT-RequestId (located in the response header) to allow OpenTable to uniquely identify a specific request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>PARAMETER</th>\n<th>DESCRIPTION</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>timestamp</strong>  <br /><code>integer</code></td>\n<td>The unix time stamp of the error.</td>\n</tr>\n<tr>\n<td><strong>path</strong>  <br /><code>string</code></td>\n<td>The end path of the API you are calling.</td>\n</tr>\n<tr>\n<td><strong>status</strong>  <br /><code>integer</code></td>\n<td>The numerical 3 digit code associated to the error. E.g., 400, 404, 409.</td>\n</tr>\n<tr>\n<td><strong>error</strong>  <br /><code>string</code></td>\n<td>The descriptive phrase associated to the error. E.g., Bad Request, Unauthorized, Not Found.</td>\n</tr>\n<tr>\n<td><strong>message</strong>  <br /><code>string</code></td>\n<td>A short user-readable description of the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","guests"],"host":["{{base-url}}"],"query":[{"disabled":true,"key":"email_optin","value":"{{trueorfalse}}"},{"disabled":true,"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid3}}"}],"variable":[]}},"response":[{"id":"e00d5034-38a6-4f0e-9534-06391074a5d6","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","disabled":true},{"key":"Authorization","value":"bearer [Access Token]","disabled":true},{"key":"Cache-Control","value":"no-cache","disabled":true}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"a05ce3ed-0058-403b-b7fc-cc3b2a3a4311"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"217"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:38:28 GMT"},{"key":"Content-Length","value":"395"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"hasNextPage\": false,\n    \"nextPageUrl\": null,\n    \"offset\": 0,\n    \"limit\": 1000,\n    \"items\": [\n        {\n            \"id\": \"1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"href\": \"https://platform.otqa.com/sync/v2/guests/1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"rid\": 1234567,\n            \"sequence_id\": 1,\n            \"gpid\": null,\n            \"first_name\": \"John\",\n            \"last_name\": \"Doe\",\n            \"email\": \"john.doe@email.com\",\n            \"email_optin\": true,\n            \"phone\": \"2125555555\",\n            \"phone_type\": \"Mobile\",\n            \"tags\": null,\n            \"birth_date\": null,\n            \"anniversary_date\": null,\n            \"updated_at\": \"2024-12-20T08:09:19\",\n            \"forgotten\": false,\n            \"archived\": false,\n            \"primary_guest\": null,\n            \"address\": null,\n            \"mail_opted_in\": false,\n            \"company_name\": null,\n            \"phone_numbers\": [\n                {\n                    \"label\": \"Mobile\",\n                    \"number\": \"2125555555\",\n                    \"country_code\": \"1\",\n                    \"primary\": true\n                }\n            ],\n            \"created_date\": \"2024-12-20T08:09:19\",\n            \"updated_at_utc\": \"2024-12-20T16:09:19Z\",\n            \"marketing_opted_out\": false,\n            \"notes\": null,\n            \"notes_special_relationship\": null,\n            \"notes_food_and_drink\": null,\n            \"notes_seating\": null,\n            \"created_date_utc\": \"2024-12-20T16:09:19Z\",\n            \"date_last_visit\": \"2025-01-12T15:00:00\",\n            \"date_first_visit\": \"2024-12-20T05:00:00\",\n            \"date_email_opt_in_opt_out\": \"2024-12-20T05:00:00\",            \n            \"date_last_visit_utc\": \"2025-01-12T23:00:00Z\",\n            \"date_first_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"date_email_opt_in_opt_out_utc\": \"2024-12-20T13:00:00Z\",\n            \"sms_opt_in\": null,                        \n            \"is_hidden\": false\n        }\n    ]\n}"},{"id":"f308f2d7-8759-4ae3-98aa-60ce3b5be8c7","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"bbf348f6-37e0-45ed-9f83-b2cc6fd35877"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"97913951-9eea-4707-96a2-b96e17b6fe68"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"128"},{"key":"Date","value":"Tue, 15 Oct 2024 04:49:44 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T04:49:44.787+0000\",\n    \"path\": \"/sync/v2/guests\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"3b6f9d3f\"\n}"}],"_postman_id":"9f359a15-d0a1-467d-a7ba-d70761372344"},{"name":"Platinum Reservations API v2","id":"5f393549-78b6-4a9b-a839-144b895b5ebb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid={{rid3}}","description":"<h1 id=\"overview\">Overview</h1>\n<p>The Reservation API provides detailed data about restaurant reservations and allows applications to filter and retrieve records based on various parameters. This endpoint is designed to support restaurant management systems and third-party applications in obtaining accurate and timely reservation data.</p>\n<hr />\n<h3 id=\"api-endpoint\">API Endpoint</h3>\n<p><strong>URL</strong>: <code>https://platform.opentable.com/sync/v2/reservations</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>string</td>\n<td>A unique identifier, per RID, for a guest. This is represented in the payload attribute with the removal of the leading RID designation. I.e., if the payload returned, “guest_id”: “214390-5b0ed185cdff96138419db0f”, the query parameter to isolate all records for the specific guest would be ?rid=214390&amp;guest_id=5b0ed185cdff96138419db0f.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>string</td>\n<td>Filter results by confirmation ID.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>Filter results by reservation state (e.g., <code>Done</code>, <code>Seated</code>, <code>Cancelled</code>).</td>\n</tr>\n<tr>\n<td><code>scheduled_time_from</code></td>\n<td>string</td>\n<td>Lower boundary of the reservation scheduled date/time range in local time(ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss</code>). (local time)</td>\n</tr>\n<tr>\n<td><code>scheduled_time_to</code></td>\n<td>string</td>\n<td>Upper boundary of the reservation scheduled date/time range in local time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss</code>). (local time)</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Retrieve reservations updated after a specific date/time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>) using the <code>updated_at_utc</code> timestamp (UTC time)</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Number of results per request. Default is 1000, maximum number available for return is 2000.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Number of results to skip. Use for pagination.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>hasNextPage</td>\n<td>boolean</td>\n<td>Indicates whether additional pages of results are available.</td>\n</tr>\n<tr>\n<td>nextPageUrl</td>\n<td>string</td>\n<td>null</td>\n</tr>\n<tr>\n<td>offset</td>\n<td>integer</td>\n<td>Result offset used for pagination.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Max number of items requested/returned per page.</td>\n</tr>\n<tr>\n<td>items</td>\n<td>array</td>\n<td>List of reservations.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"reservation-object-attributes\">Reservation (object) attributes</h2>\n<hr />\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attribute</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td>href</td>\n<td>string (URL)</td>\n<td>Fully qualified URL for the reservation.</td>\n</tr>\n<tr>\n<td>rid</td>\n<td>integer</td>\n<td>Unique identifier for the restaurant.</td>\n</tr>\n<tr>\n<td>sequence_id</td>\n<td>integer</td>\n<td>Internal reservation identifier.</td>\n</tr>\n<tr>\n<td>guest_id</td>\n<td>string</td>\n<td>Unique identifier for the guest.</td>\n</tr>\n<tr>\n<td>guest</td>\n<td>string (URL)</td>\n<td>URL reference to the guest.</td>\n</tr>\n<tr>\n<td>confirmation_id</td>\n<td>integer</td>\n<td>Reservation confirmation number.</td>\n</tr>\n<tr>\n<td>state</td>\n<td>string</td>\n<td>Current reservation status.</td>\n</tr>\n<tr>\n<td>table_number</td>\n<td>array[string]</td>\n<td>Assigned table number or numbers.</td>\n</tr>\n<tr>\n<td>created_date</td>\n<td>datetime</td>\n<td>Reservation creation timestamp in local time.</td>\n</tr>\n<tr>\n<td>scheduled_time</td>\n<td>datetime</td>\n<td>Scheduled reservation time in local time.</td>\n</tr>\n<tr>\n<td>party_size</td>\n<td>integer</td>\n<td>Number of guests in the party.</td>\n</tr>\n<tr>\n<td>visit_tags</td>\n<td>array[string]</td>\n<td>Visit tags applied to the reservation.</td>\n</tr>\n<tr>\n<td>origin</td>\n<td>string</td>\n<td>Reservation origin, such as Web, Walk-in, or Phone.</td>\n</tr>\n<tr>\n<td>updated_at</td>\n<td>datetime</td>\n<td>Last updated timestamp in local time.</td>\n</tr>\n<tr>\n<td>seated_time</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as seated in local time.</td>\n</tr>\n<tr>\n<td>done_time</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as done in local time.</td>\n</tr>\n<tr>\n<td>pos_data.check_ids</td>\n<td>array[string]</td>\n<td>Nested object. POS check identifiers associated with the reservation.</td>\n</tr>\n<tr>\n<td>pos_data.pos_sub_total</td>\n<td>integer</td>\n<td>Nested object. POS subtotal amount.</td>\n</tr>\n<tr>\n<td>pos_data.pos_tax</td>\n<td>integer</td>\n<td>Nested object. POS tax amount.</td>\n</tr>\n<tr>\n<td>pos_data.pos_tip</td>\n<td>integer</td>\n<td>Nested object. POS tip amount.</td>\n</tr>\n<tr>\n<td>pos_data.pos_total_spend</td>\n<td>integer</td>\n<td>Nested object. POS total spend amount.</td>\n</tr>\n<tr>\n<td>scheduled_time_utc</td>\n<td>datetime</td>\n<td>Scheduled reservation time in UTC.</td>\n</tr>\n<tr>\n<td>marketing_opted_out</td>\n<td>boolean</td>\n<td>Indicates whether the diner opted out of marketing or data sharing beyond operational needs.</td>\n</tr>\n<tr>\n<td>guest_request</td>\n<td>string</td>\n<td>Special request entered by the guest.</td>\n</tr>\n<tr>\n<td>venue_notes</td>\n<td>string, nullable</td>\n<td>Notes entered by the restaurant on the reservation.</td>\n</tr>\n<tr>\n<td>opentable_notes</td>\n<td>string</td>\n<td>OpenTable notes or special offer details associated with the reservation.</td>\n</tr>\n<tr>\n<td>table_category</td>\n<td>string, nullable</td>\n<td>Table type or seating option for the reservation.</td>\n</tr>\n<tr>\n<td>seated_time_utc</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as seated in UTC.</td>\n</tr>\n<tr>\n<td>done_time_utc</td>\n<td>datetime, nullable</td>\n<td>Time the reservation was marked as done in UTC.</td>\n</tr>\n<tr>\n<td>created_date_utc</td>\n<td>datetime</td>\n<td>Reservation creation timestamp in UTC.</td>\n</tr>\n<tr>\n<td>updated_at_utc</td>\n<td>datetime</td>\n<td>Last updated timestamp in UTC.</td>\n</tr>\n<tr>\n<td>server</td>\n<td>string, nullable</td>\n<td>Server assigned to the reservation.</td>\n</tr>\n<tr>\n<td>referrer</td>\n<td>object, nullable</td>\n<td>Nested object. Referrer details associated with the reservation.</td>\n</tr>\n<tr>\n<td>added_to_waitlist</td>\n<td>datetime, nullable</td>\n<td>Time the record was added to the waitlist in local time.</td>\n</tr>\n<tr>\n<td>added_to_waitlist_utc</td>\n<td>datetime, nullable</td>\n<td>Time the record was added to the waitlist in UTC.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Email address of the guest.</td>\n</tr>\n<tr>\n<td>sms_opt_in</td>\n<td>boolean, nullable</td>\n<td>Indicates whether the diner opted into SMS.</td>\n</tr>\n<tr>\n<td>arrived_time</td>\n<td>datetime</td>\n<td>Time the diner was checked in, in local time.</td>\n</tr>\n<tr>\n<td>arrived_time_utc</td>\n<td>datetime</td>\n<td>Time the diner was checked in, in UTC.</td>\n</tr>\n<tr>\n<td>quoted_wait_time</td>\n<td>integer</td>\n<td>Quoted wait time in minutes.</td>\n</tr>\n<tr>\n<td>online_source</td>\n<td>string</td>\n<td>Source of reservation if it originated online.</td>\n</tr>\n<tr>\n<td>discovery_type</td>\n<td>string</td>\n<td>Indicates whether the booking was direct or discovery-based.</td>\n</tr>\n<tr>\n<td>partner</td>\n<td>string, nullable</td>\n<td>Booking partner name if reservation was made via a third party on the OpenTable network.</td>\n</tr>\n<tr>\n<td>campaign_details</td>\n<td>string, nullable</td>\n<td>Campaign metadata.</td>\n</tr>\n<tr>\n<td>credit_card_status</td>\n<td>string, nullable</td>\n<td>Credit card status for the reservation.</td>\n</tr>\n<tr>\n<td>cancellation_date</td>\n<td>datetime, nullable</td>\n<td>First cancellation timestamp in local time.</td>\n</tr>\n<tr>\n<td>cancellation_date_utc</td>\n<td>datetime, nullable</td>\n<td>First cancellation timestamp in UTC.</td>\n</tr>\n<tr>\n<td>rest_ref_campaign_name</td>\n<td>string</td>\n<td>Restaurant referral campaign name.</td>\n</tr>\n<tr>\n<td>rest_ref_id</td>\n<td>string, nullable</td>\n<td>Restaurant referral campaign identifier.</td>\n</tr>\n<tr>\n<td>rest_ref_source</td>\n<td>string</td>\n<td>Restaurant referral campaign source.</td>\n</tr>\n<tr>\n<td>currency_code</td>\n<td>string, nullable</td>\n<td>Restaurant currency code used with POS values.</td>\n</tr>\n<tr>\n<td>currency_denominator</td>\n<td>integer</td>\n<td>Denominator used to calculate currency amounts.</td>\n</tr>\n<tr>\n<td>experience_details.experience_id</td>\n<td>integer</td>\n<td>Nested object. Unique identifier for the experience.</td>\n</tr>\n<tr>\n<td>experience_details.experience_title</td>\n<td>string</td>\n<td>Nested object. Experience title.</td>\n</tr>\n<tr>\n<td>experience_details.experience_description</td>\n<td>string</td>\n<td>Nested object. Experience description.</td>\n</tr>\n<tr>\n<td>experience_details.subtotalAmount</td>\n<td>integer</td>\n<td>Nested object. Experience subtotal amount.</td>\n</tr>\n<tr>\n<td>experience_details.add_ons</td>\n<td>array, nullable</td>\n<td>Nested object. Experience add-ons.</td>\n</tr>\n<tr>\n<td>experience_details.addon_subtotal_amount</td>\n<td>integer</td>\n<td>Nested object. Add-on subtotal amount.</td>\n</tr>\n<tr>\n<td>experience_details.diner_payment_status</td>\n<td>string, nullable</td>\n<td>Nested object. Diner payment status.</td>\n</tr>\n<tr>\n<td>experience_details.service_fee_amount</td>\n<td>integer</td>\n<td>Nested object. Service fee amount.</td>\n</tr>\n<tr>\n<td>experience_details.taxes_amount</td>\n<td>integer</td>\n<td>Nested object. Tax amount.</td>\n</tr>\n<tr>\n<td>experience_details.tip_amount</td>\n<td>integer</td>\n<td>Nested object. Tip amount.</td>\n</tr>\n<tr>\n<td>experience_details.total_amount</td>\n<td>integer</td>\n<td>Nested object. Total amount.</td>\n</tr>\n<tr>\n<td>experience_details.experience_type</td>\n<td>string</td>\n<td>Nested object. Experience type.</td>\n</tr>\n<tr>\n<td>experience_details.experience_details</td>\n<td>string</td>\n<td>Nested object. Detailed experience information.</td>\n</tr>\n<tr>\n<td>experience_details.experience_cost</td>\n<td>integer</td>\n<td>Nested object. Base experience cost.</td>\n</tr>\n<tr>\n<td>experience_details.experience_add_on_cost</td>\n<td>integer</td>\n<td>Nested object. Experience add-on cost.</td>\n</tr>\n<tr>\n<td>experience_details.experience_prepayment_status</td>\n<td>string, nullable</td>\n<td>Nested object. Experience prepayment status.</td>\n</tr>\n<tr>\n<td>experience_details.experience_service_charges</td>\n<td>integer</td>\n<td>Nested object. Experience service charges.</td>\n</tr>\n<tr>\n<td>experience_details.experience_tax</td>\n<td>integer</td>\n<td>Nested object. Experience tax amount.</td>\n</tr>\n<tr>\n<td>experience_details.experience_gratuity</td>\n<td>integer</td>\n<td>Nested object. Experience gratuity amount.</td>\n</tr>\n<tr>\n<td>experience_details.experience_total_cost</td>\n<td>integer</td>\n<td>Nested object. Total experience cost.</td>\n</tr>\n<tr>\n<td>experience_details.price_type</td>\n<td>string</td>\n<td>Nested object. Experience pricing model.</td>\n</tr>\n<tr>\n<td>experience_details.price_details[].price_id</td>\n<td>integer</td>\n<td>Nested array object. Price identifier.</td>\n</tr>\n<tr>\n<td>experience_details.price_details[].price_name</td>\n<td>string, nullable</td>\n<td>Nested array object. Price name.</td>\n</tr>\n<tr>\n<td>experience_details.price_details[].price_per_guest</td>\n<td>integer</td>\n<td>Nested array object. Price per guest.</td>\n</tr>\n<tr>\n<td>experience_details.price_details[].number_of_guests</td>\n<td>integer</td>\n<td>Nested array object. Number of guests for that price.</td>\n</tr>\n<tr>\n<td>deposit.total_paid</td>\n<td>integer, nullable</td>\n<td>Nested object. Total deposit paid.</td>\n</tr>\n<tr>\n<td>deposit.total_refunded</td>\n<td>integer, nullable</td>\n<td>Nested object. Total deposit refunded.</td>\n</tr>\n<tr>\n<td>deposit.currency</td>\n<td>string</td>\n<td>Nested object. Deposit currency.</td>\n</tr>\n<tr>\n<td>deposit.currency_denominator</td>\n<td>integer</td>\n<td>Nested object. Deposit currency denominator.</td>\n</tr>\n<tr>\n<td>deposit.status</td>\n<td>string, nullable</td>\n<td>Nested object. Deposit status.</td>\n</tr>\n<tr>\n<td>ot_boost_type</td>\n<td>string</td>\n<td>Type of OpenTable Boost campaign applied.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","reservations"],"host":["{{base-url}}"],"query":[{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid3}}"}],"variable":[]}},"response":[{"id":"c557d360-d95a-4917-911b-5ea9828c8484","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","reservations"],"query":[{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"81f3d2ce-e200-46bd-b37a-0a409dfe30f9"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"f87ee1d1-bb2c-448c-959b-215b2f1a4183"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Tue, 15 Oct 2024 06:10:14 GMT"},{"key":"Content-Length","value":"1991"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n  \"hasNextPage\": false,\n  \"nextPageUrl\": null,\n  \"offset\": 0,\n  \"limit\": 1000,\n  \"items\": [\n    {\n        \"id\": \"188878-49bcffdf-0476-4464-9bd0-66e87dc289de\",\n        \"href\": \"https://platform.opentable.com/sync/v2/reservations/188878-49bcffdf-0476-4464-9bd0-66e87dc289de\",\n        \"rid\": 188878,\n        \"sequence_id\": 86941,\n        \"guest_id\": \"188878-05a8f2a2-3428-4000-9867-ca82795cb365\",\n        \"guest\": \"https://platform.opentable.com/sync/v2/guests/188878-05a8f2a2-3428-4000-9867-ca82795cb365\",\n        \"confirmation_id\": 15989,\n        \"state\": \"Cancelled\",\n        \"table_number\": [\n            \"80\"\n        ],\n        \"created_date\": \"2025-01-09T06:31:39\",\n        \"scheduled_time\": \"2025-02-14T19:30:00\",\n        \"party_size\": 2,\n        \"visit_tags\": [\n            \"gc:service/date\"\n        ],\n        \"origin\": \"Web\",\n        \"updated_at\": \"2025-02-06T14:00:36\",\n        \"seated_time\": null,\n        \"done_time\": null,\n        \"pos_data\": {\n            \"check_ids\": null,\n            \"pos_sub_total\": null,\n            \"pos_tax\": null,\n            \"pos_tip\": null,\n            \"pos_total_spend\": null\n        },\n        \"scheduled_time_utc\": \"2025-02-14T08:30:00Z\",\n        \"marketing_opted_out\": false,\n        \"guest_request\": \"\",\n        \"venue_notes\": null,\n        \"opentable_notes\": \"\",\n        \"table_category\": null,\n        \"seated_time_utc\": null,\n        \"done_time_utc\": null,\n        \"created_date_utc\": \"2025-01-08T19:31:39Z\",\n        \"updated_at_utc\": \"2025-02-06T03:00:36Z\",\n        \"server\": null,\n        \"referrer\": null,\n        \"added_to_waitlist\": null,\n        \"added_to_waitlist_utc\": null,\n        \"email\": \"\",\n        \"sms_opt_in\": null,\n        \"arrived_time\": null,\n        \"arrived_time_utc\": null,\n        \"quoted_wait_time\": 0,\n        \"online_source\": \"Phone/In-house\",\n        \"discovery_type\": null,\n        \"partner\": null,\n        \"campaign_details\": null,\n        \"credit_card_status\": null,\n        \"cancellation_date\": null,\n        \"cancellation_date_utc\": null,\n        \"rest_ref_campaign_name\": null,\n        \"rest_ref_id\": null,\n        \"rest_ref_source\": null,\n        \"currency_code\": null,\n        \"currency_denominator\": 100,\n        \"experience_details\": {\n            \"experience_id\": 324887,\n            \"experience_title\": \"Michelin Pizza  Dinner\",\n            \"experience_description\": \"Enjoy an amazing evening with the best pizza, that has won 3 Michelin stars.\",\n            \"subtotalAmount\": 20000,\n            \"add_ons\": [\n                {\n                    \"ItemID\": \"946651ee-4252-4e3d-945f-eafb6f252b86\",\n                    \"Quantity\": 1,\n                    \"Price\": 5000,\n                    \"LineTotal\": 5000,\n                    \"LineSubtotalWithTaxes\": 5500,\n                    \"TaxAmount\": 500,\n                    \"Name\": \"Truffle add On\",\n                    \"Description\": \"Add truffles to one pizza\\n\",\n                    \"CurrencyDenominator\": 0,\n                    \"Taxes\": [\n                        {\n                            \"TaxID\": 1,\n                            \"Label\": \"Tax\",\n                            \"TaxPercent\": 10.0,\n                            \"TaxOnItemAmount\": 500\n                        }\n                    ]\n                }\n            ],\n            \"addon_subtotal_amount\": 5500,\n            \"diner_payment_status\": null,\n            \"service_fee_amount\": 2000,\n            \"taxes_amount\": 2200,\n            \"tip_amount\": 2000,\n            \"total_amount\": 26200\n        },\n        \"deposit\": {\n            \"total_paid\": null,\n            \"total_refunded\": null,\n            \"currency\": null,\n            \"currency_denominator\": 100,\n            \"status\": null\n        },\n        \"ot_boost_type\": null\n    }, \n}"},{"id":"9ac0cfe4-58e7-4f9f-8ccc-518a8631623b","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/reservations?limit={{limit}}&offset={{offset}}&rid=1234","host":["{{base-url}}"],"path":["sync","v2","reservations"],"query":[{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"1234"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"9f66f48f-1e52-4191-ac4d-0fab0bbd54b8"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"b59c8488-e57c-4cbf-84c3-939db7f0aaa2"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"134"},{"key":"Date","value":"Tue, 15 Oct 2024 06:10:54 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T06:10:54.939+0000\",\n    \"path\": \"/sync/v2/reservations\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"11117c11\"\n}"}],"_postman_id":"5f393549-78b6-4a9b-a839-144b895b5ebb"},{"name":"Platinum Orders API v2","id":"80fb92b6-b53e-4f86-850a-adfd015c6a75","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":"{{base-url}}/sync/v2/pos-data?rid={{rid}}&scheduled_time_from={{scheduled_time_from}}&scheduled_time_to={{scheduled_time_to}}","description":"<h2 id=\"overview\">Overview</h2>\n<p>The POS Data API enables seamless integration between OpenTable and point-of-sale (POS) systems. By leveraging this API, restaurants can access detailed POS data for reservations, including subtotal, tax, tip, total spend, and individual order items. The API supports advanced filtering and pagination for efficient data retrieval.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/sync/v2/pos-data</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"query-parameters\">Query Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>string</td>\n<td>Limit results to a specific restaurant.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>string</td>\n<td>Filter results by confirmation ID.</td>\n</tr>\n<tr>\n<td><code>scheduled_time_from</code></td>\n<td>string</td>\n<td>Lower boundary of reservation scheduled date/time range (format: <code>YYYY-MM-DDThh:mm:ss</code>). (local time) Required</td>\n</tr>\n<tr>\n<td><code>scheduled_time_to</code></td>\n<td>string</td>\n<td>Upper boundary of reservation scheduled date/time range (format: <code>YYYY-MM-DDThh:mm:ss</code>). (local time) Required</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Retrieve orders updated after a specific date/time (ISO 8601 format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>) using the <code>updated_at_utc</code> timestamp (UTC time)</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Number of results per request.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>Number of results to skip.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-body\">Response Body</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>Boolean</td>\n<td>Indicates if there is another page of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>String/Null</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>Integer</td>\n<td>The offset value for the current set of results.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>Integer</td>\n<td>The number of results returned in the response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>Array</td>\n<td>A list of items representing individual transactions.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"item-array\">Item Array</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>Integer</td>\n<td>A unique identifier for the restaurant this order is associated with.</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>String/Null</td>\n<td>Guest ID if available, otherwise null.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>Integer</td>\n<td>Confirmation ID for the transaction.</td>\n</tr>\n<tr>\n<td><code>currency_code</code></td>\n<td>String</td>\n<td>Currency code (e.g., USD).</td>\n</tr>\n<tr>\n<td><code>currency_denominator</code></td>\n<td>Integer</td>\n<td>Denominator for currency conversion.</td>\n</tr>\n<tr>\n<td><code>check_ids</code></td>\n<td>Array[String]</td>\n<td>List of check identifiers associated with the transaction.</td>\n</tr>\n<tr>\n<td><code>pos_sub_total</code></td>\n<td>Integer</td>\n<td>Point-of-sale subtotal before tax and tip.</td>\n</tr>\n<tr>\n<td><code>pos_tax</code></td>\n<td>Integer</td>\n<td>Point-of-sale tax amount.</td>\n</tr>\n<tr>\n<td><code>pos_tip</code></td>\n<td>Integer</td>\n<td>Point-of-sale tip amount.</td>\n</tr>\n<tr>\n<td><code>pos_total_spend</code></td>\n<td>Integer</td>\n<td>Total amount spent including tax and tip.</td>\n</tr>\n<tr>\n<td><code>pos_order_items</code></td>\n<td>Array</td>\n<td>List of order items associated with the transaction.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"pos-order-item-object\">POS Order Item Object</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>String</td>\n<td>Name of the ordered item.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>Integer</td>\n<td>Quantity of the ordered item.</td>\n</tr>\n<tr>\n<td><code>comment</code></td>\n<td>String</td>\n<td>Additional comments about the order item.</td>\n</tr>\n<tr>\n<td><code>price_per_unit</code></td>\n<td>Integer</td>\n<td>Price per unit of the item in minor currency units.</td>\n</tr>\n<tr>\n<td><code>ticket_item_modifiers</code></td>\n<td>String</td>\n<td>Any modifiers applied to the item, if available.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p><strong>Currency Handling:</strong> The <code>currency_denominator</code> represents the smallest currency unit (e.g., cents for USD). Divide monetary values by <code>currency_denominator</code> to get the full amount.</p>\n</li>\n<li><p><strong>Item Uniqueness:</strong> Each <code>id</code> is unique to an individual transaction.</p>\n</li>\n<li><p><strong>Optional Fields:</strong> Fields like <code>guest_id</code>, <code>nextPageUrl</code>, <code>comment</code>, and <code>ticket_item_modifiers</code> can be null, indicating missing data.</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"error-codes\">Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status Code</strong></th>\n<th><strong>Message</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400</code></td>\n<td>Bad Request</td>\n<td>The request is invalid or malformed.</td>\n</tr>\n<tr>\n<td><code>401</code></td>\n<td>Unauthorized</td>\n<td>Invalid or expired access token.</td>\n</tr>\n<tr>\n<td><code>403</code></td>\n<td>Forbidden</td>\n<td>The client does not have permission to access this resource.</td>\n</tr>\n<tr>\n<td><code>404</code></td>\n<td>Not Found</td>\n<td>The requested resource could not be found.</td>\n</tr>\n<tr>\n<td><code>500</code></td>\n<td>Internal Server Error</td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"path":["sync","v2","pos-data"],"host":["{{base-url}}"],"query":[{"key":"rid","value":"{{rid}}"},{"key":"scheduled_time_from","value":"{{scheduled_time_from}}"},{"key":"scheduled_time_to","value":"{{scheduled_time_to}}"}],"variable":[]}},"response":[{"id":"05d3a0ea-365e-4bf4-8216-fc5c86d30513","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base-url}}/sync/v2/pos-data?rid={{rid}}&scheduled_time_from={{scheduled_time_from}}&scheduled_time_to={{scheduled_time_to}}","host":["{{base-url}}"],"path":["sync","v2","pos-data"],"query":[{"key":"rid","value":"{{rid}}"},{"key":"scheduled_time_from","value":"{{scheduled_time_from}}"},{"key":"scheduled_time_to","value":"{{scheduled_time_to}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"fe4e479e-99e4-4144-95cc-fcb75bc3f77c"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"565"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 20 Dec 2024 18:37:32 GMT"},{"key":"Content-Length","value":"264"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"hasNextPage\": false,\n    \"nextPageUrl\": null,\n    \"offset\": 0,\n    \"limit\": 1000,\n    \"items\": [\n        {\n            \"id\": \"1234567-40258624-C992-44A1-A396-2F9A6EF63070\",\n            \"rid\": 1234567,\n            \"guest_id\": \"1234567-0F61AC32-21FB-4BD1-B6CD-745FE14360F2\",\n            \"confirmation_id\": 73734010,\n            \"currency_code\": \"USD\",\n            \"currency_denominator\": 100,\n            \"check_ids\": [\n                \"20240701-30025\"\n            ],\n            \"pos_sub_total\": 8100,\n            \"pos_tax\": 891,\n            \"pos_tip\": 1730,\n            \"pos_total_spend\": 10721,\n            \"pos_order_items\": [\n                {\n                    \"name\": \"NY Strip\",\n                    \"quantity\": 1,\n                    \"comment\": null,\n                    \"price_per_unit\": 6250,\n                    \"ticket_item_modifiers\": null\n                },\n                {\n                    \"name\": \"Btl. Diet Cola\",\n                    \"quantity\": 1,\n                    \"comment\": null,\n                    \"price_per_unit\": 450,\n                    \"ticket_item_modifiers\": null\n                },\n                {\n                    \"name\": \"Glass Merlot\",\n                    \"quantity\": 1,\n                    \"comment\": null,\n                    \"price_per_unit\": 1400,\n                    \"ticket_item_modifiers\": null\n                }\n            ]\n        }\n    ]\n}"},{"id":"2058db46-0c5b-428e-8e67-de6122df6814","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base-url}}/sync/v2/pos-data?rid=1234&scheduled_time_from={{scheduled_time_from}}&scheduled_time_to={{scheduled_time_to}}","host":["{{base-url}}"],"path":["sync","v2","pos-data"],"query":[{"key":"rid","value":"1234"},{"key":"scheduled_time_from","value":"{{scheduled_time_from}}"},{"key":"scheduled_time_to","value":"{{scheduled_time_to}}"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"1acb7911-7ce2-41e5-962a-48983a0512f3"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"61"},{"key":"Content-Length","value":"130"},{"key":"Date","value":"Fri, 20 Dec 2024 18:36:00 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-12-20T18:36:00.073+0000\",\n    \"path\": \"/sync/v2/pos-data\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"556d6d11\"\n}"}],"_postman_id":"80fb92b6-b53e-4f86-850a-adfd015c6a75"},{"name":"Platinum Reservation Webhook","id":"59162776-26ff-448a-839c-2c3b6e23a8d2","protocolProfileBehavior":{"disabledSystemHeaders":{},"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Bearer or Bearer [token]","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\r\n    \"10\"\r\n  ],\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"server\": \"John Doe\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"origin\": \"Web\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": null,\r\n\t\"totalRefunded\": null,\r\n\t\"currency\": null,\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": null\r\n  },\r\n  \"referrer\": {\r\n    \"company\": \"Concierge Company ABC\",\r\n    \"id\": \"19999999940618\",\r\n    \"first_name\": \"Connie\",\r\n    \"last_name\": \"Concierge\",\r\n    \"email\": \"cconcierge@conciergeabc.com\",\r\n    \"phone\": \"8335551212\"\r\n  },\r\n  \"added_to_waitlist\": null,\r\n  \"added_to_waitlist_utc\": null,\r\n  \"sms_opt_in\": null,\r\n  \"quoted_wait_time\": 0,\r\n  \"cancellation_date\": null,\r\n  \"cancellation_date_utc\": null\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url","description":"<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The Reservation Webhook API provides real-time updates about changes in reservation status via webhooks. These updates enable restaurants to seamlessly integrate reservation management into their systems. The webhooks send a detailed JSON payload containing reservation attributes whenever a reservation status changes.</p>\n<p>To access Guest Data, please use the <code>guest</code> attribute to call the guest endpoint in Sync API. For more information about Sync API and other available data points via the GET query, please refer to the Sync API tier section of this Portal.</p>\n<h3 id=\"change-log\"><strong>Change Log</strong></h3>\n<p>**** The v3 version of the webhook, released in February 2025 ****</p>\n<h2 id=\"data-delivery-method\"><strong>Data Delivery Method</strong></h2>\n<h3 id=\"webhook-implementation\"><strong>Webhook Implementation</strong></h3>\n<p>Webhooks are triggered on any change in reservation status. A POST request is sent to the specified endpoint with the payload data.</p>\n<h4 id=\"configuring-your-endpoint\"><strong>Configuring Your Endpoint</strong></h4>\n<ul>\n<li><p>Endpoint URL: Provide an URL where webhook data will be delivered.</p>\n<ul>\n<li><strong>Webhook URL must use https and port 443</strong></li>\n</ul>\n</li>\n<li><p>Authentication:</p>\n<ul>\n<li><p>Basic or bearer token is required to verify authenticity of request</p>\n</li>\n<li><p>Code: Added as path parameter, no authentication mode needed if using this method</p>\n</li>\n</ul>\n</li>\n<li><p>Event Handling: Ensure your system handles retries in case of delivery failures.</p>\n</li>\n</ul>\n<h3 id=\"webhook-security--validation-requirements\">Webhook Security &amp; Validation Requirements</h3>\n<p>To ensure secure and reliable integrations, all webhook endpoints must comply with the following requirements:</p>\n<h4 id=\"1-redirect-handling\">1. Redirect Handling</h4>\n<p>Webhook endpoints must not rely on HTTP redirects.</p>\n<ul>\n<li><p>Requests that result in a redirect (3xx responses) will be blocked</p>\n</li>\n<li><p>The configured endpoint must be the final destination URL</p>\n</li>\n<li><p>Ensure your endpoint responds directly without forwarding</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"2-url-schema-validation\">2. URL Schema Validation</h4>\n<p>Only approved URL schemas are supported for webhook endpoints:</p>\n<ul>\n<li><strong><code>https://</code></strong> — Required for all external endpoints</li>\n</ul>\n<p>Any other schema (e.g., <code>http://</code>, <code>ftp://</code>) will be rejected.</p>\n<hr />\n<h4 id=\"3-private-network-restrictions\">3. Private Network Restrictions</h4>\n<p>External webhook endpoints must resolve to publicly accessible IP addresses.</p>\n<ul>\n<li><p>Endpoints resolving to private or reserved IP ranges will be blocked</p>\n</li>\n<li><p>This includes (but is not limited to):</p>\n<ul>\n<li><p><code>10.x.x.x</code></p>\n</li>\n<li><p><code>172.16.x.x – 172.31.x.x</code></p>\n</li>\n<li><p><code>192.168.x.x</code></p>\n</li>\n</ul>\n</li>\n</ul>\n<p>This restriction helps prevent misconfiguration and protects against unintended access to internal infrastructure.</p>\n<hr />\n<h4 id=\"summary\">Summary</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Requirement</th>\n<th>Enforcement Behavior</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Redirects (3xx responses)</td>\n<td>Blocked</td>\n</tr>\n<tr>\n<td>Non-HTTPS schemas</td>\n<td>Rejected</td>\n</tr>\n<tr>\n<td>Private IP resolution</td>\n<td>Blocked</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h4 id=\"implementation-guidance\">Implementation Guidance</h4>\n<ul>\n<li><p>Always provide a fully qualified, final destination HTTPS endpoint</p>\n</li>\n<li><p>Verify DNS resolution points to a public IP address</p>\n</li>\n<li><p>Avoid intermediary routing layers that introduce redirects</p>\n</li>\n</ul>\n<h4 id=\"retry-logic\"><strong>Retry Logic</strong></h4>\n<p>Webhook delivery uses an exponential backoff strategy. After three failed attempts, the webhook is marked as undeliverable.</p>\n<h2 id=\"attributes\"><strong>Attributes</strong></h2>\n<p>The webhook payload will not include the same attributes as available in the GET query. To get the additional attributes not delivered in the webhook, Sync API reservations endpoint will need to be called. Please see the Sync API Reservations v2 documentation for full list of additional attributes.</p>\n<p>OpenTable reserves the right to update the data sent via the webhook with additional attributes. POS partner should build their ingestion of the webhook to accept any new additional attributes in the future. Partner can choose to process or ignore the additional attributes.</p>\n<p>The webhook payload includes the following attributes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>sequence_id</code></td>\n<td>integer</td>\n<td>Sequential identifier for the reservation record within OpenTable systems.</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>string</td>\n<td>The unique guest identifier for the restaurant.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>integer</td>\n<td>A confirmation ID for the reservation.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>The current state of the reservation. States are: NotConfirmed, LeftMessage, WrongNumber, NoAnswer, Confirmed, Late, PartiallyArrived, AllArrived, PartiallySeated, Seated, Appetizer, Entree, Dessert, CheckDropped, Paid, Cleared, BusTable, Done, NoShow, Cancelled, AssumedSeated, AssumedDone.</td>\n</tr>\n<tr>\n<td><code>table_number</code></td>\n<td>array</td>\n<td>The table number(s) assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>scheduled_time</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>The number of guests in the reservation.</td>\n</tr>\n<tr>\n<td><code>server</code></td>\n<td>string</td>\n<td>The server assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>updated_at_utc</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>A globally unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>string</td>\n<td>A fully qualified URL for the reservation.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this reservation is associated with.</td>\n</tr>\n<tr>\n<td><code>guest</code></td>\n<td>string</td>\n<td>A fully qualified URL for the guest associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>created_date</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (local time).</td>\n</tr>\n<tr>\n<td><code>visit_tags</code></td>\n<td>array</td>\n<td>Visit tags that were applied to the reservation by the restaurant (custom or default).</td>\n</tr>\n<tr>\n<td><code>seated_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (local time).</td>\n</tr>\n<tr>\n<td><code>done_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (local time)</td>\n</tr>\n<tr>\n<td><code>scheduled_time_utc</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>guest_request</code></td>\n<td>string</td>\n<td>The special requests entered by the diner when making their reservation.</td>\n</tr>\n<tr>\n<td><code>venue_notes</code></td>\n<td>string</td>\n<td>Notes entered by the venue regarding the reservation.</td>\n</tr>\n<tr>\n<td><code>opentable_notes</code></td>\n<td>string</td>\n<td>The details of the special offer selected by the diner.</td>\n</tr>\n<tr>\n<td><code>table_category</code></td>\n<td>string</td>\n<td>The table type, or seating option, for the reservation. Options are: “hightop,bar,counter,outdoor”. Note: If the attribute is ‘null’, the table_category will be the “default” attribute.</td>\n</tr>\n<tr>\n<td><code>seated_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (UTC time).</td>\n</tr>\n<tr>\n<td><code>done_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (UTC time)</td>\n</tr>\n<tr>\n<td><code>created_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (UTC time).</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>origin</code></td>\n<td>string</td>\n<td>The origin source of the reservation (e.g., <code>Phone</code>, <code>Web, Walk-in</code>).</td>\n</tr>\n<tr>\n<td><code>arrived_time</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived. (local time).</td>\n</tr>\n<tr>\n<td><code>arrived_time_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived. (UTC time).</td>\n</tr>\n<tr>\n<td><code>deposit_details</code></td>\n<td>object</td>\n<td>Details of any deposit made. Includes totalPaid, totalRefunded, currency, currencyDenominator, and status (e.g., Paid, FullRefund).</td>\n</tr>\n<tr>\n<td><code>referrer</code></td>\n<td>list of objects</td>\n<td>The information associated to the referrer, or commonly the concierge, associated to a reservation. company: name of the company of the referrer (string), id: unique ID of the referrer in the OpenTable system (string), first_name: the first name of the referrer (string), last_name: the last name of the referrer (string), email: the email address of the referrer (string), phone: the phone number of the referrer (string).</td>\n</tr>\n<tr>\n<td><code>added_to_waitlist</code></td>\n<td>string</td>\n<td>Timestamp of when a record was added to the waitlist. If the record was not added, the value will be null. (local time).</td>\n</tr>\n<tr>\n<td><code>added_to_waitlist_utc</code></td>\n<td>string</td>\n<td>Timestamp of when a record was added to the waitlist. If the record was not added, the value will be null. (UTC time).</td>\n</tr>\n<tr>\n<td><code>sms_opt_in</code></td>\n<td>boolean</td>\n<td>If the diner has opted into SMS. True or False (Currently status will be null for all entries).</td>\n</tr>\n<tr>\n<td><code>quoted_wait_time</code></td>\n<td>integer</td>\n<td>Number of minutes quoted for the waitlist by the host.</td>\n</tr>\n<tr>\n<td><code>cancellation_date</code></td>\n<td>string</td>\n<td>Timestamp of when a record was cancelled. If the record was not cancelled, the value will be null. (local time).</td>\n</tr>\n<tr>\n<td><code>cancellation_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when a record was cancelled. If the record was not cancelled, the value will be null. (UTC time).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","host":["partner","supplied","webhook","url"],"query":[],"variable":[]}},"response":[{"id":"7b82cbdc-f18a-44df-9f6b-431a8cbda6b9","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer [token]","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\r\n    \"10\"\r\n  ],\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"server\": \"John Doe\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"origin\": \"Web\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": null,\r\n\t\"totalRefunded\": null,\r\n\t\"currency\": null,\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": null\r\n  },\r\n  \"referrer\": {\r\n    \"company\": \"Concierge Company ABC\",\r\n    \"id\": \"19999999940618\",\r\n    \"first_name\": \"Connie\",\r\n    \"last_name\": \"Concierge\",\r\n    \"email\": \"cconcierge@conciergeabc.com\",\r\n    \"phone\": \"8335551212\"\r\n  },\r\n  \"added_to_waitlist\": null,\r\n  \"added_to_waitlist_utc\": null,\r\n  \"sms_opt_in\": null,\r\n  \"quoted_wait_time\": 0,\r\n  \"cancellation_date\": null,\r\n  \"cancellation_date_utc\": null\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"8cc11712-7674-4a96-9bfc-f751060671f0"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"5f9f6a89-304b-4154-8099-6af169716afb"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"posRestaurantService"},{"key":"X-OT-UriTemplate","value":"/posRestaurantService/api/v1/pos/restaurants/all"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 21 Feb 2025 02:14:56 GMT"},{"key":"Content-Length","value":"217"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"ak_bmsc=3463BA8A2F5F898E431053FB11A4FC81~000000000000000000000000000000~YAAQrMgwFzVFvxSVAQAAeVpJJhqT4Q+RrwCMj6eV9YZ73di5fgE47UgzVvn5/Dj7JmO3MdDssZ1Es52ACr6QuguhqG9rakimmHM4CGWMuhrug8m41vdiT8Nq+EgNkb0MsSNgtEF57YplW/pGm3fvP5brV8anMVe8cU9+26gYbmv+IIxIU+ns2n4atOARAabg3Q6/39lJv0u68WbhTutL8R6hgbZRbfpkLCyonbQZL6+sA7bHj+2W61KirChF5M/IUM1uo+QcQsbiEWW1ybajDV3K+CBz9QK24YU8TpCruubKI2PPPtmUplAZsN23rw5WnSpMp5Y04qtml8MojOeOpNK2gcxxiN/FzVAbyvQ=; Domain=.opentable.com; Path=/; Expires=Fri, 21 Feb 2025 04:14:56 GMT; Max-Age=7200"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"59162776-26ff-448a-839c-2c3b6e23a8d2"}],"id":"c015edbb-4e52-40e9-ae84-59189339e172","_postman_id":"c015edbb-4e52-40e9-ae84-59189339e172","description":""},{"name":"Use Cases","item":[{"name":"Sync API - I would like to consume opted in Emails for my Email Marketing Program","item":[{"name":"Gold Guests API v2","id":"710d89e5-ca7b-435e-a7b7-9741554fc6fc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","description":"<h1 id=\"opentable-guest-sync-api-documentation\">OpenTable Guest Sync API Documentation</h1>\n<h2 id=\"overview\">Overview</h2>\n<p>The OpenTable Guest Sync API allows users to retrieve detailed information about guest profiles associated with a restaurant.</p>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: <code>{{base-url}}/sync/v2/guests</code></p>\n<p><strong>Method:</strong> GET</p>\n<h2 id=\"request-details\">Request Details</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>Value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Content-Type</code></td>\n<td><code>application/json</code></td>\n<td>Specifies that the request body contains JSON data.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td><code>Bearer [AccessToken]</code></td>\n<td>A valid access token for authenticating the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query Parameters:</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique, static identifier for each restaurant. Required</td>\n</tr>\n<tr>\n<td><code>email_optin</code></td>\n<td>boolean</td>\n<td>List searches to guests that have the email optin flag set to true or false</td>\n</tr>\n<tr>\n<td><code>updated_after</code></td>\n<td>string</td>\n<td>Filters guests updated after the specified ISO 8601 timestamp. (UTC time)</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting point for pagination. Default is <code>0</code>.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of guests to return per request. Default is <code>1000</code>, maximum number available for return is <code>2000</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-structure\">Response Structure</h3>\n<p>The response is a JSON object containing metadata about pagination and an array of guest objects.</p>\n<h3 id=\"response-attributes\">Response Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>hasNextPage</code></td>\n<td>boolean</td>\n<td>Indicates if there are additional pages of results.</td>\n</tr>\n<tr>\n<td><code>nextPageUrl</code></td>\n<td>string</td>\n<td>URL for the next page of results, if available.</td>\n</tr>\n<tr>\n<td><code>offset</code></td>\n<td>integer</td>\n<td>The starting offset for the current page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>The maximum number of records returned in this response.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>An array of guest objects containing detailed information about each guest.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"guest-object-attributes\">Guest Object Attributes</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>Unique identifier for the guest by restaurant.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>string</td>\n<td>A fully qualified URL for the guest.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this guest is associated with.</td>\n</tr>\n<tr>\n<td><code>sequence_id</code></td>\n<td>integer</td>\n<td>Sequential identifier for the guest record within OpenTable systems.</td>\n</tr>\n<tr>\n<td><code>gpid</code></td>\n<td>string</td>\n<td>Globally unique OpenTable identifier for the guest.</td>\n</tr>\n<tr>\n<td><code>first_name</code></td>\n<td>string</td>\n<td>The first name of the guest. This field may be empty for guests associated with anonymous, walk-in or in-house reservations.</td>\n</tr>\n<tr>\n<td><code>last_name</code></td>\n<td>string</td>\n<td>The last name of the guest. This field may be empty for guests associated with anonymous, walk-in or in-house reservations.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Guest's email address.</td>\n</tr>\n<tr>\n<td><code>email_optin</code></td>\n<td>boolean</td>\n<td>Indicates if the guest opted into receiving marketing emails from the restaurant. If the value is true then the email may be sent to the user on behalf of the restaurant. If the value is false then the guest should not be sent emails for marketing purposes.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Guest's primary phone number.</td>\n</tr>\n<tr>\n<td><code>phone_type</code></td>\n<td>string</td>\n<td>Type of the primary phone number (e.g., Mobile, Home, Work).</td>\n</tr>\n<tr>\n<td><code>tags</code></td>\n<td>array or null</td>\n<td>Guest tags that have been applied to the diner profile.</td>\n</tr>\n<tr>\n<td><code>birth_date</code></td>\n<td>string or null</td>\n<td>Guest's date of birth, if available.</td>\n</tr>\n<tr>\n<td><code>anniversary_date</code></td>\n<td>string or null</td>\n<td>Guest's anniversary date, if available.</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the guest profile (local time).</td>\n</tr>\n<tr>\n<td><code>forgotten</code></td>\n<td>boolean</td>\n<td>The user has requested to have their diner info forgotten. Partners are responsible for removing the diner’s information from all systems where it may be stored. This is a requirement mandated by EU for compliance with General Data Protection Regulation GDPR.</td>\n</tr>\n<tr>\n<td><code>archived</code></td>\n<td>boolean</td>\n<td>This flag indicates whether the guest is archived. If true, all attributes aside from primary_guest, id and href would be null for this archived guest.</td>\n</tr>\n<tr>\n<td><code>primary_guest</code></td>\n<td>string or null</td>\n<td>This attribute is returned when there is another guest record in the restaurant database that has merged with this record, thus there being data on the main, or primary, record. This attribute will signal the guest_id without the leading RID designation of the primary guest record. Otherwise this attribute is null.</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>string or null</td>\n<td>The address of guest. address_line1 (string), address_line2 (string), city (string), state (string), zip (string), country (string).</td>\n</tr>\n<tr>\n<td><code>mail_opted_in</code></td>\n<td>boolean</td>\n<td>Indicates if the guest opted into physical mail marketing.</td>\n</tr>\n<tr>\n<td><code>company_name</code></td>\n<td>string or null</td>\n<td>Name of the company associated with the guest.</td>\n</tr>\n<tr>\n<td><code>phone_numbers</code></td>\n<td>array</td>\n<td>List of phone numbers associated with the guest, including labels, country codes, and primary flags.</td>\n</tr>\n<tr>\n<td><code>created_date</code></td>\n<td>string</td>\n<td>Timestamp of when the guest profile was created (local time).</td>\n</tr>\n<tr>\n<td><code>updated_at_utc</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the guest profile (UTC time).</td>\n</tr>\n<tr>\n<td><code>marketing_opted_out</code></td>\n<td>boolean</td>\n<td>This flag indicates whether an OpenTable network diner has opted in or out of data sharing for purposes beyond operational needs of the restaurant. A value of ‘true’ means the diner has elected not to have their current profile and reservation history used by the restaurant or 3rd party for any additional marketing purposes. A value of ‘false’ means the diners has consented to data sharing for any use case highlighted in the OpenTable consumer privacy policy.</td>\n</tr>\n<tr>\n<td><code>notes</code></td>\n<td>string or null</td>\n<td>General notes about the guest.</td>\n</tr>\n<tr>\n<td><code>notes_special_relationship</code></td>\n<td>string or null</td>\n<td>Restaurant entered diner information highlighting any association to restaurant, chef or group (ex. friend of chef)</td>\n</tr>\n<tr>\n<td><code>notes_food_and_drink</code></td>\n<td>string or null</td>\n<td>Restaurant entered diner information identifying dietary considerations in service (ex. wife is gluten free)</td>\n</tr>\n<tr>\n<td><code>notes_seating</code></td>\n<td>string or null</td>\n<td>Restaurant entered seating preferences for diner (ex. table 42 when available)</td>\n</tr>\n<tr>\n<td><code>created_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the guest profile was created (UTC time).</td>\n</tr>\n<tr>\n<td><code>date_last_visit</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's most recent visit (local time).</td>\n</tr>\n<tr>\n<td><code>date_first_visit</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's first visit (local time).</td>\n</tr>\n<tr>\n<td><code>date_last_visit_utc</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's most recent visit (UTC time).</td>\n</tr>\n<tr>\n<td><code>date_first_visit_utc</code></td>\n<td>string or null</td>\n<td>Timestamp of the guest's first visit (UTC time).</td>\n</tr>\n<tr>\n<td><code>is_hidden</code></td>\n<td>boolean</td>\n<td>his flag indicates if a guest has been deleted (hidden from the standard guestbook). If true, the guest’s profile has been deleted/hidden from the restaurant’s guestbook.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-response-for-guests\">Error Response for Guests</h2>\n<h3 id=\"error-messaging\">Error Messaging</h3>\n<p>The error response DTO returned by the Sync API collections are in the below format. When reporting issues, always provide the OT-RequestId (located in the response header) to allow OpenTable to uniquely identify a specific request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>PARAMETER</th>\n<th>DESCRIPTION</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>timestamp</strong>  <br /><code>integer</code></td>\n<td>The unix time stamp of the error.</td>\n</tr>\n<tr>\n<td><strong>path</strong>  <br /><code>string</code></td>\n<td>The end path of the API you are calling.</td>\n</tr>\n<tr>\n<td><strong>status</strong>  <br /><code>integer</code></td>\n<td>The numerical 3 digit code associated to the error. E.g., 400, 404, 409.</td>\n</tr>\n<tr>\n<td><strong>error</strong>  <br /><code>string</code></td>\n<td>The descriptive phrase associated to the error. E.g., Bad Request, Unauthorized, Not Found.</td>\n</tr>\n<tr>\n<td><strong>message</strong>  <br /><code>string</code></td>\n<td>A short user-readable description of the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["sync","v2","guests"],"host":["{{base-url}}"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}],"variable":[]}},"response":[{"id":"bc7927fb-0d27-4847-8aa3-ce709892f655","name":"200","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","disabled":true},{"key":"Authorization","value":"bearer [Access Token]","disabled":true},{"key":"Cache-Control","value":"no-cache","disabled":true}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"OT-RequestId","value":"a05ce3ed-0058-403b-b7fc-cc3b2a3a4311"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"ot-anonymousid","value":"1BCCF72D-18C9-4184-A456-517D3FE34A15"},{"key":"Content-Type","value":"application/json"},{"key":"x-envoy-upstream-service-time","value":"217"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Mon, 23 Dec 2024 18:38:28 GMT"},{"key":"Content-Length","value":"395"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"hasNextPage\": false,\n    \"nextPageUrl\": null,\n    \"offset\": 0,\n    \"limit\": 1000,\n    \"items\": [\n        {\n            \"id\": \"1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"href\": \"https://platform.otqa.com/sync/v2/guests/1234567-876a3e1f-5c76-4cf2-b238-b09e44816c92\",\n            \"rid\": 1234567,\n            \"sequence_id\": 1,\n            \"gpid\": null,\n            \"first_name\": \"John\",\n            \"last_name\": \"Doe\",\n            \"email\": \"john.doe@email.com\",\n            \"email_optin\": true,\n            \"phone\": \"2125555555\",\n            \"phone_type\": \"Mobile\",\n            \"tags\": null,\n            \"birth_date\": null,\n            \"anniversary_date\": null,\n            \"updated_at\": \"2024-12-20T08:09:19\",\n            \"forgotten\": false,\n            \"archived\": false,\n            \"primary_guest\": null,\n            \"address\": null,\n            \"mail_opted_in\": false,\n            \"company_name\": null,\n            \"phone_numbers\": [\n                {\n                    \"label\": \"Mobile\",\n                    \"number\": \"2125555555\",\n                    \"country_code\": \"1\",\n                    \"primary\": true\n                }\n            ],\n            \"created_date\": \"2024-12-20T08:09:19\",\n            \"updated_at_utc\": \"2024-12-20T16:09:19Z\",\n            \"marketing_opted_out\": false,\n            \"notes\": null,\n            \"notes_special_relationship\": null,\n            \"notes_food_and_drink\": null,\n            \"notes_seating\": null,\n            \"created_date_utc\": \"2024-12-20T16:09:19Z\",\n            \"date_last_visit\": \"2024-12-20T05:00:00\",\n            \"date_first_visit\": \"2024-12-20T05:00:00\",\n            \"date_last_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"date_first_visit_utc\": \"2024-12-20T13:00:00Z\",\n            \"is_hidden\": false\n        }\n    ]\n}"},{"id":"76a1a587-3ca9-475b-877d-3ce10f81c87a","name":"401","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"bearer [Access Token]"},{"key":"Cache-Control","value":"no-cache"}],"url":{"raw":"{{base-url}}/sync/v2/guests?email_optin={{trueorfalse}}&updated_after={{updated-after}}&limit={{limit}}&offset={{offset}}&rid={{rid}}","host":["{{base-url}}"],"path":["sync","v2","guests"],"query":[{"key":"email_optin","value":"{{trueorfalse}}"},{"key":"updated_after","value":"{{updated-after}}"},{"key":"limit","value":"{{limit}}"},{"key":"offset","value":"{{offset}}"},{"key":"rid","value":"{{rid}}"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"bbf348f6-37e0-45ed-9f83-b2cc6fd35877"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"0D307298-8AEA-4099-A0B5-B92E3E50C86B"},{"key":"OT-SessionID","value":"97913951-9eea-4707-96a2-b96e17b6fe68"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"128"},{"key":"Date","value":"Tue, 15 Oct 2024 04:49:44 GMT"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"timestamp\": \"2024-10-15T04:49:44.787+0000\",\n    \"path\": \"/sync/v2/guests\",\n    \"status\": 401,\n    \"error\": \"Unauthorized\",\n    \"requestId\": \"3b6f9d3f\"\n}"}],"_postman_id":"710d89e5-ca7b-435e-a7b7-9741554fc6fc"}],"id":"bfa1655f-bdfa-4056-b527-fd233d95d40e","description":"<p><strong>As a restauranteur I would like to consume all email addresses that I have stored, that have also been opted in to receive marketing emails.</strong></p>\n<h2 id=\"apis-to-use\">APIs to use:</h2>\n<p>Sync API - Guests</p>\n<h3 id=\"step-1\"><strong>Step 1:</strong></h3>\n<ul>\n<li><p>Perform initial GET query with historical information.</p>\n</li>\n<li><p>Add the <code>email_optin=true</code> parameter.</p>\n</li>\n</ul>\n<h3 id=\"step-2\">Step 2:</h3>\n<ul>\n<li><p>Store the data in your systems. We recommend you store:</p>\n</li>\n<li><p><code>first_name</code></p>\n</li>\n<li><p><code>last_name</code></p>\n</li>\n<li><p><code>email</code></p>\n</li>\n<li><p><code>email_optin</code></p>\n</li>\n<li><p><code>updated_at</code></p>\n</li>\n</ul>\n<h3 id=\"step-3\">Step 3:</h3>\n<ul>\n<li>To keep your data up to date, we recommend using the <code>updated_after</code> parameter and simply storing any new or updated details. This includes new guests as well as updates to existing guests (i.e. possible opt-outs)</li>\n</ul>\n","_postman_id":"bfa1655f-bdfa-4056-b527-fd233d95d40e"},{"name":"Sync API - I would like to consume data around new reservations at moment of booking","item":[{"name":"Reservation Webhook","id":"de29d311-c00e-4da2-abba-fc3ca8621e9e","protocolProfileBehavior":{"disabledSystemHeaders":{},"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Bearer or Bearer [token]","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\r\n    \"10\"\r\n  ],\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"server\": \"John Doe\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"origin\": \"Web\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": null,\r\n\t\"totalRefunded\": null,\r\n\t\"currency\": null,\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": null\r\n  },\r\n  \"referrer\": {\r\n    \"company\": \"Concierge Company ABC\",\r\n    \"id\": \"19999999940618\",\r\n    \"first_name\": \"Connie\",\r\n    \"last_name\": \"Concierge\",\r\n    \"email\": \"cconcierge@conciergeabc.com\",\r\n    \"phone\": \"8335551212\"\r\n  },\r\n  \"added_to_waitlist\": null,\r\n  \"added_to_waitlist_utc\": null\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url","description":"<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The Reservation Webhook API provides real-time updates about changes in reservation status via webhooks. These updates enable restaurants to seamlessly integrate reservation management into their systems. The webhooks send a detailed JSON payload containing reservation attributes whenever a reservation status changes.</p>\n<p>To access Guest Data, please use the <code>guest</code> attribute to call the guest endpoint in Sync API. For more information about Sync API and other available data points via the GET query, please refer to the Sync API tier section of this Portal.</p>\n<h3 id=\"change-log\"><strong>Change Log</strong></h3>\n<p>**** The v3 version of the webhook, released in February 2025 ****</p>\n<h2 id=\"data-delivery-method\"><strong>Data Delivery Method</strong></h2>\n<h3 id=\"webhook-implementation\"><strong>Webhook Implementation</strong></h3>\n<p>Webhooks are triggered on any change in reservation status. A POST request is sent to the specified endpoint with the payload data.</p>\n<h4 id=\"configuring-your-endpoint\"><strong>Configuring Your Endpoint</strong></h4>\n<ul>\n<li><p>Endpoint URL: Provide an URL where webhook data will be delivered.</p>\n<ul>\n<li><strong>Webhook URL must use https and port 443</strong></li>\n</ul>\n</li>\n<li><p>Authentication: Basic or bearer token is required to verify authenticity of request</p>\n</li>\n<li><p>Event Handling: Ensure your system handles retries in case of delivery failures.</p>\n</li>\n</ul>\n<h4 id=\"retry-logic\"><strong>Retry Logic</strong></h4>\n<p>Webhook delivery uses an exponential backoff strategy. After three failed attempts, the webhook is marked as undeliverable.</p>\n<h2 id=\"attributes\"><strong>Attributes</strong></h2>\n<p>The webhook payload will not include the same attributes as available in the GET query. To get the additional attributes not delivered in the webhook, Sync API reservataions endpoint will need to be called. Please see the Sync API Copper Reservations API v2 documention for full list of additional attributes.</p>\n<p>OpenTable reserves the right to update the data sent via the webhook with additional attributes. POS partner should build their ingestion of the webhook to accept any new additional attributes in the future. Partner can choose to process or ignore the additional attributes.</p>\n<p>The webhook payload includes the following attributes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>sequence_id</code></td>\n<td>integer</td>\n<td>Sequential identifier for the reservation record within OpenTable systems.</td>\n</tr>\n<tr>\n<td><code>guest_id</code></td>\n<td>string</td>\n<td>The unique guest identifier for the restaurant.</td>\n</tr>\n<tr>\n<td><code>confirmation_id</code></td>\n<td>integer</td>\n<td>A confirmation ID for the reservation.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>The current state of the reservation. States are: NotConfirmed, LeftMessage, WrongNumber, NoAnswer, Confirmed, Late, Partially Arrived, AllArrived, Partially Seated, Seated, Appetizer, Entree, Dessert, CheckDropped, Paid, Cleared, BusTable, Done, NoShow, Cancelled, AssumedSeated, AssumedDone.</td>\n</tr>\n<tr>\n<td><code>table_number</code></td>\n<td>array</td>\n<td>The table number(s) assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>scheduled_time</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>party_size</code></td>\n<td>integer</td>\n<td>The number of guests in the reservation.</td>\n</tr>\n<tr>\n<td><code>server</code></td>\n<td>string</td>\n<td>The server assigned to the reservation.</td>\n</tr>\n<tr>\n<td><code>updated_at_utc</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>string</td>\n<td>A globally unique identifier for the reservation.</td>\n</tr>\n<tr>\n<td><code>href</code></td>\n<td>string</td>\n<td>A fully qualified URL for the reservation.</td>\n</tr>\n<tr>\n<td><code>rid</code></td>\n<td>integer</td>\n<td>A unique identifier for the restaurant this reservation is associated with.</td>\n</tr>\n<tr>\n<td><code>guest</code></td>\n<td>string</td>\n<td>A fully qualified URL for the guest associated with the reservation.</td>\n</tr>\n<tr>\n<td><code>created_date</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (local time).</td>\n</tr>\n<tr>\n<td><code>visit_tags</code></td>\n<td>array</td>\n<td>Visit tags that were applied to the reservation by the restaurant (custom or default).</td>\n</tr>\n<tr>\n<td><code>seated_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (local time).</td>\n</tr>\n<tr>\n<td><code>done_time</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (local time)</td>\n</tr>\n<tr>\n<td><code>scheduled_time_utc</code></td>\n<td>string</td>\n<td>The scheduled date and time of the reservation (UTC time).</td>\n</tr>\n<tr>\n<td><code>guest_request</code></td>\n<td>string</td>\n<td>The special requests entered by the diner when making their reservation.</td>\n</tr>\n<tr>\n<td><code>venue_notes</code></td>\n<td>string</td>\n<td>Notes entered by the venue regarding the reservation.</td>\n</tr>\n<tr>\n<td><code>opentable_notes</code></td>\n<td>string</td>\n<td>The details of the special offer selected by the diner.</td>\n</tr>\n<tr>\n<td><code>table_category</code></td>\n<td>string</td>\n<td>The table type, or seating option, for the reservation. Options are: “hightop,bar,counter,outdoor”. Note: If the attribute is ‘null’, the table_category will be the “default” attribute.</td>\n</tr>\n<tr>\n<td><code>seated_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Seated</code> (UTC time).</td>\n</tr>\n<tr>\n<td><code>done_time_utc</code></td>\n<td>string</td>\n<td>Timestamp when the reservation state changed to <code>Done</code>. (UTC time)</td>\n</tr>\n<tr>\n<td><code>created_date_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the reservation was created (UTC time).</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp of the last update to the reservation (local time).</td>\n</tr>\n<tr>\n<td><code>origin</code></td>\n<td>string</td>\n<td>The origin source of the reservation (e.g., <code>Phone</code>, <code>Web, Walk-in</code>).</td>\n</tr>\n<tr>\n<td><code>arrived_time</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived. (local time).</td>\n</tr>\n<tr>\n<td><code>arrived_time_utc</code></td>\n<td>string</td>\n<td>Timestamp of when the host checked in the diner and the reservation to the status of arrived or partially arrived. (UTC time).</td>\n</tr>\n<tr>\n<td><code>deposit_details</code></td>\n<td>object</td>\n<td>Details of any deposit made. Includes totalPaid, totalRefunded, currency, currencyDenominator, and status (e.g., Paid, FullRefund).</td>\n</tr>\n<tr>\n<td><code>referrer</code></td>\n<td>list of objects</td>\n<td>The information associated to the referrer, or commonly the concierge, associated to a reservation. company: name of the company of the referrer (string), id: unique ID of the referrer in the OpenTable system (string), first_name: the first name of the referrer (string), last_name: the last name of the referrer (string), email: the email address of the referrer (string), phone: the phone number of the referrer (string).</td>\n</tr>\n<tr>\n<td><code>added_to_waitlist</code></td>\n<td>string</td>\n<td>Timestamp of when a record was added to the waitlist. If the record was not added, the value will be null. (local time).</td>\n</tr>\n<tr>\n<td><code>added_to_waitlist_utc</code></td>\n<td>string</td>\n<td>Timestamp of when a record was added to the waitlist. If the record was not added, the value will be null. (UTC time).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","host":["partner","supplied","webhook","url"],"query":[],"variable":[]}},"response":[{"id":"d937012e-5b57-4ab6-9a34-9a908167ecde","name":"200","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer [token]","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"sequence_id\": 101112,\r\n  \"guest_id\": \"guest-123\",\r\n  \"confirmation_id\": 34567,\r\n  \"state\": \"Confirmed\",\r\n  \"table_number\": [\r\n    \"10\"\r\n  ],\r\n  \"scheduled_time\": \"2024-12-19T19:00:00\",\r\n  \"party_size\": 4,\r\n  \"server\": \"John Doe\",\r\n  \"updated_at_utc\": \"2024-12-19T16:00:00Z\",\r\n  \"id\": \"12345\",\r\n  \"href\": \"https://api.opentable.com/reservations/12345\",\r\n  \"rid\": 6789,\r\n  \"guest\": \"https://api.opentable.com/guests/guest-123\",\r\n  \"created_date\": \"2024-12-19T10:15:30\",\r\n  \"visit_tags\": [\r\n    \"birthday\", \r\n    \"window seating\"\r\n    ],\r\n  \"seated_time\": null,\r\n  \"done_time\": null,\r\n  \"scheduled_time_utc\": \"2024-12-19T23:00:00\",\r\n  \"guest_request\": \"Vegetarian meal\",\r\n  \"venue_notes\": \"VIP customer\",\r\n  \"opentable_notes\": \"10% discount applied\",\r\n  \"table_category\": \"hightop\",\r\n  \"seated_time_utc\": null,\r\n  \"done_time_utc\": null,\r\n  \"created_date_utc\": \"2024-12-19T15:15:30Z\",\r\n  \"updated_at\": \"2024-12-19T11:00:00\",\r\n  \"origin\": \"Web\",\r\n  \"arrived_time\": null,\r\n  \"arrived_time_utc\": null,\r\n  \"deposit_details\": {\r\n\t\"totalPaid\": null,\r\n\t\"totalRefunded\": null,\r\n\t\"currency\": null,\r\n\t\"currencyDenominator\": 100,\r\n\t\"status\": null\r\n  },\r\n  \"referrer\": {\r\n    \"company\": \"Concierge Company ABC\",\r\n    \"id\": \"19999999940618\",\r\n    \"first_name\": \"Connie\",\r\n    \"last_name\": \"Concierge\",\r\n    \"email\": \"cconcierge@conciergeabc.com\",\r\n    \"phone\": \"8335551212\"\r\n  },\r\n  \"added_to_waitlist\": null,\r\n  \"added_to_waitlist_utc\": null\r\n}","options":{"raw":{"language":"json"}}},"url":"https://partner.supplied.webhook.url"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"8cc11712-7674-4a96-9bfc-f751060671f0"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"169A957C-FA57-49D7-A584-29457632A314"},{"key":"OT-SessionID","value":"5f9f6a89-304b-4154-8099-6af169716afb"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"posRestaurantService"},{"key":"X-OT-UriTemplate","value":"/posRestaurantService/api/v1/pos/restaurants/all"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 21 Feb 2025 02:14:56 GMT"},{"key":"Content-Length","value":"217"},{"key":"Connection","value":"keep-alive"},{"key":"Set-Cookie","value":"ak_bmsc=3463BA8A2F5F898E431053FB11A4FC81~000000000000000000000000000000~YAAQrMgwFzVFvxSVAQAAeVpJJhqT4Q+RrwCMj6eV9YZ73di5fgE47UgzVvn5/Dj7JmO3MdDssZ1Es52ACr6QuguhqG9rakimmHM4CGWMuhrug8m41vdiT8Nq+EgNkb0MsSNgtEF57YplW/pGm3fvP5brV8anMVe8cU9+26gYbmv+IIxIU+ns2n4atOARAabg3Q6/39lJv0u68WbhTutL8R6hgbZRbfpkLCyonbQZL6+sA7bHj+2W61KirChF5M/IUM1uo+QcQsbiEWW1ybajDV3K+CBz9QK24YU8TpCruubKI2PPPtmUplAZsN23rw5WnSpMp5Y04qtml8MojOeOpNK2gcxxiN/FzVAbyvQ=; Domain=.opentable.com; Path=/; Expires=Fri, 21 Feb 2025 04:14:56 GMT; Max-Age=7200"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"de29d311-c00e-4da2-abba-fc3ca8621e9e"}],"id":"8eeaead5-573e-4e26-b02c-ffc15a451598","description":"<p>Webhook Flow</p>\n<p><strong>As a restauranteur I would like to receive new reservations into my systems as they are made in real time.</strong></p>\n<h2 id=\"apis-to-use\">APIs to use:</h2>\n<p>Sync API - Reservation Webhook</p>\n<h3 id=\"step-1\"><strong>Step 1:</strong></h3>\n<ul>\n<li><p>Provide OpenTable your https webhook URL that is accessible on port 443 for delivery</p>\n</li>\n<li><p>Provide OpenTable basic or bearer token for authentication</p>\n</li>\n</ul>\n<h3 id=\"step-2\">Step 2:</h3>\n<ul>\n<li><p>Store the data in your systems. We recommend you store:</p>\n</li>\n<li><p><code>scheduled_time</code></p>\n</li>\n<li><p><code>party_size</code></p>\n</li>\n<li><p><code>guest_id</code></p>\n</li>\n<li><p><code>guest</code></p>\n</li>\n<li><p><code>updated_at</code></p>\n</li>\n</ul>\n<p>OpenTable's reservation webhooks are event-driven, meaning they are triggered automatically whenever a reservation is created or updated. Upon these events, OpenTable will send a webhook containing the latest reservation details.</p>\n<p>Please note that the attributes included in the webhook payload may differ from those available via the GET reservation endpoint. If additional details are needed, you can make a follow-up GET request using the provided reservation ID.</p>\n<p>To align with your system requirements, you can choose to selectively process or ignore specific webhook event types.</p>\n","_postman_id":"8eeaead5-573e-4e26-b02c-ffc15a451598"}],"id":"3077d592-f491-468d-a62b-f858e4d54677","description":"<p>Here are some ways our partners use Sync API. These are applicable to both Gold and Platinum tiers.</p>\n","_postman_id":"3077d592-f491-468d-a62b-f858e4d54677"}],"id":"5d2e3a06-fca9-4d01-a17b-e0aa57e4bdf5","description":"<h2 id=\"overview\">Overview</h2>\n<p>Sync API empowers OpenTable restaurants and groups with direct access to raw, real-time guest and reservation data, enabling seamless integration with custom systems and tools. Designed as the API equivalent of exporting data from the OpenTable restaurant system, the Sync API provides the flexibility and precision needed for bespoke data-driven solutions. By delivering unprocessed data at the restaurant (RID) level, Sync API ensures a clear and unaltered view of operational insights without the complexities of group-level associations or pre-configured reporting frameworks.</p>\n<p>Whether your goal is to enhance internal reporting, power personalized email marketing, or integrate data into loyalty, CRM, PMS, or forecasting systems, Sync API is the foundation for building tailored applications. While it doesn’t offer the calculated metrics of OpenTable’s native reporting features, it delivers the raw data necessary to create fully customized reporting and operational workflows. With its focus on real-time data availability, Sync API is an essential tool for restaurants aiming to leverage their data for actionable insights and optimized performance.</p>\n","_postman_id":"5d2e3a06-fca9-4d01-a17b-e0aa57e4bdf5"},{"name":"Profile Content API","item":[{"name":"APIs","item":[{"name":"Post Content","id":"7e72024b-d17a-4767-9e8c-2c025bd94532","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"id\": \"ABC123\",\n    \"name\": \"Casa de Mara\",\n    \"primaryCuisine\": \"Spanish\",\n    \"phone\": \"+13211231234\",\n    \"currency\": \"USD\",\n    \"locale\": \"en-US\",\n    \"website\": \"http://www.casademara.com\",\n    \"timeZone\": \"Eastern\",\n    \"priceBandId\": 2,\n    \"description\": \"Casa de Mara is a charming Spanish restaurant that brings the flavors of the Mediterranean to your table. With fresh seafood, authentic tapas, and rich, traditional paellas, every dish is crafted with passion and the finest ingredients. Enjoy a warm, inviting atmosphere where the spirit of Spain comes alive in every bite.\",\n    \"diningStyle\": \"Fine Dining\",\n    \"dressCode\": \"Smart Casual\",\n    \"privateEventDetails\": \"300 seat event space available\",\n    \"cateringDetails\": \"Offsite catering available\",\n    \"executiveChef\": \"Chef Luis Torres\",\n    \"crossStreet\": \"Puerto Rico Ave\",\n    \"location\": {\n        \"address\": {\n            \"city\": \"San Francisco\",\n            \"street\": \"120 Kearny St Apt 1518042369\",\n            \"country\": \"USA\",\n            \"province\": \"CA\"\n        },\n        \"coordinates\": {\n            \"latitude\": \"37.6915030\",\n            \"longitude\": \"-122.4582610\"\n        },\n        \"neighborhoodName\": \"Kearny St\"\n    },\n    \"profileImage\": {\n        \"url\": \"https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.instagram.com%2Fdarrenandphillip%2Fp%2FCz9gGWVMr2R%2F&psig=AOvVaw0ShB3y1_zXGdBKJtvVJ-rY&ust=1742057047733000&source=images&cd=vfe&opi=89978449&ved=0CBQQjRxqFwoTCODtwLKCiowDFQAAAAAdAAAAABAE\"\n    },\n    \"images\": [],\n    \"tags\": [\n        \"Cocktails\",\n        \"Fireplace\"\n    ],\n    \"openingTimes\": {\n        \"standardOpeningTimes\": {\n            \"FRIDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"MONDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"TUESDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"SATURDAY\": [\n                {\n                    \"end\": \"13:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"THURSDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"WEDNESDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ]\n        }\n    },\n    \"paymentOptions\": [\n        \"AMEX\",\n        \"Visa\",\n        \"MasterCard\"\n    ],\n    \"beverages\": [\n        \"Cocktails\",\n        \"Wine\",\n        \"Full Bar\"\n    ],\n    \"dietaryOptions\": [\n        \"Gluten-free Options\"\n    ],\n    \"smokingOptions\": [\n        \"Non-Smoking\"\n    ],    \n    \"safetyPrecautions\": [\n        \"StaffIsVaccinated\",\n        \"ProhibitSickStaff\"\n    ],\n    \"diversitySpotlightTags\": [\n        \"LGBTQ\",\n        \"Persons with Disabilities\"\n    ]\n}\n","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v2/partnerrestaurants/rid/{{rid}}","description":"<h2 id=\"updating-profile-content\">Updating Profile Content</h2>\n<h2 id=\"overview\">Overview</h2>\n<p>This documentation outlines the process for using the POST API to update Profile content</p>\n<h2 id=\"endpoint\">Endpoint</h2>\n<p><strong>URL</strong>: {{base-endpoint}}/v2/partnerrestaurants/rid/{{RID}}</p>\n<h2 id=\"method-post\"><strong>Method</strong>: POST</h2>\n<p><strong>Path Parameters:</strong></p>\n<ul>\n<li><p><strong>rid (restaurant id):</strong></p>\n<ul>\n<li>This is a static value per restaurant, and will be made available to you by OpenTable. Each restaurant will have its own unique, static value. Required</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"notes\"><strong>Notes:</strong></h2>\n<ul>\n<li><p>Should you not have any data on one of the optional fields, please do not include it</p>\n</li>\n<li><p>If you would like to remove any existing data and leave the field empty, it will append the attribute and delete whatever detail is inside.</p>\n</li>\n<li><p>To modify an existing restaurant, the same endpoint for is used. Partners must supply all required information to successfully modify a restaurant in the OpenTable environment.</p>\n</li>\n</ul>\n<h2 id=\"request-body\">Request Body</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Parameter</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>This is the unique ID the partner has in their environment of the restaurant being onboarded. OpenTable uses “restaurant ID” or “RID” as their unique ID. Required.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>The name of the restaurant, in the submitted locale, as it appears in the partner systems and as it should appear on the OpenTable network.</td>\n</tr>\n<tr>\n<td>primaryCuisine</td>\n<td>string</td>\n<td>The primary cuisine type that will appear on the OpenTable network. Please review the Cuisine table for additional details.</td>\n</tr>\n<tr>\n<td>otherCuisines</td>\n<td>array</td>\n<td>Other cuisine types that will appear on the OpenTable network. Please review the master Cuisine table for additional details.</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>string</td>\n<td>The phone number of the restaurant that will appear on the OpenTable network, submitted with the country code included, in the below format.</td>\n</tr>\n<tr>\n<td>currency</td>\n<td>string</td>\n<td>The currency of the restaurant, in <a href=\"https://en.wikipedia.org/wiki/ISO_4217\">https://en.wikipedia.org/wiki/ISO_4217</a> format.</td>\n</tr>\n<tr>\n<td>locale</td>\n<td>string</td>\n<td>The language code of the restaurant, as an IETF language tag.</td>\n</tr>\n<tr>\n<td>website</td>\n<td>string</td>\n<td>The website of the restaurant.</td>\n</tr>\n<tr>\n<td>timeZone</td>\n<td>string</td>\n<td>Time zone of the restaurant.</td>\n</tr>\n<tr>\n<td>priceBandId</td>\n<td>string</td>\n<td>Values are 1, 2, 3, 4, where 1 = $15 and under, 2 = $16 to $30, 3 = $31 to $50, and 4 = $51 and over. Presently, OpenTable translates all values of 1 to be a value of 2 and in a range of 2 = $30 and under.</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>The description of the restaurant that will appear on the OpenTable network, in the restaurant locale declared in the payload.</td>\n</tr>\n<tr>\n<td>diningStyle</td>\n<td>string</td>\n<td>Details the dining style of the restaurant. Please choose one of the following: Fine Dining, Casual Dining, Home Style, Casual Elegant, Elegant Dining.</td>\n</tr>\n<tr>\n<td>publicTransit</td>\n<td>string</td>\n<td>Details any public transit stops available or near the restaurant location. Maximum 1000 characters, including spaces.</td>\n</tr>\n<tr>\n<td>dressCode</td>\n<td>string</td>\n<td>Details any specific dress code the restaurant enforces. Please choose one of the following: Casual Dress, Jacket Required, Business Casual, Jacket and Tie Required, Formal Attire, Jacket Preferred, Smart Casual, Resort Casual.</td>\n</tr>\n<tr>\n<td>privateEventDetails</td>\n<td>string</td>\n<td>Showcases the restaurant offerings for private event space. Maximum 350 characters, including spaces.</td>\n</tr>\n<tr>\n<td>cateringDetails</td>\n<td>string</td>\n<td>Showcases the restaurant offering for catering. Maximum 350 characters, including spaces. Optional.</td>\n</tr>\n<tr>\n<td>executiveChef</td>\n<td>string</td>\n<td>Name of the executive chef. Optional.</td>\n</tr>\n<tr>\n<td>crossStreet</td>\n<td>string</td>\n<td>The cross street of the restaurant, to help diners find the location. Optional.</td>\n</tr>\n<tr>\n<td>menu</td>\n<td>string</td>\n<td>The URL of the restaurant’s menu. (To send a full menu, you may choose to leverage OpenTable’s Menu API. This will require additional access). Optional.</td>\n</tr>\n<tr>\n<td>profileImage</td>\n<td>object</td>\n<td>A “url” (string) image that will be displayed on the profile page of the restaurant on the OpenTable network. Requirement of Profile Image: JPEG or PNG formats, 1280 X 720 pixels minimum, 10MB Max. Optional.</td>\n</tr>\n<tr>\n<td>images</td>\n<td>array</td>\n<td>Additional images, in the form of a “url” (string, with each image being an object) that will be displayed on the OpenTable network associated with the restaurant. No minimum or maximum requirements. Optional.</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array</td>\n<td>A list of key phrases and descriptive terms that help describe the restaurant and assist with searching for the restaurant on the OpenTable network. Optional.</td>\n</tr>\n<tr>\n<td>openingTimes</td>\n<td>object</td>\n<td>This object contains the “standardOpeningTimes” (string) with each day of the week’s hours of operation. Optional.</td>\n</tr>\n<tr>\n<td>openingTimes → standardOpeningTimes</td>\n<td>object</td>\n<td>Each day of the week (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, as a string) with “start” (string) and “end” (string) times in 24-hour format. Optional.</td>\n</tr>\n<tr>\n<td>paymentOptions</td>\n<td>array</td>\n<td>Payment options available at the restaurant. Please choose one or more of the following: AMEX, Cash Only, Discover, MasterCard, Carte Blanche, Cheque Gourmet, Eurocheque Card, Sodexo Pass, Cash not accepted, Diners Club, JCB, Visa. Optional.</td>\n</tr>\n<tr>\n<td>beverages</td>\n<td>array</td>\n<td>Beverages available at the restaurant. Must be one or more of the following: Beer, Cocktails, Wine, BYO Liquor, Corkage Fee, BYO Wine, Full Bar. Optional.</td>\n</tr>\n<tr>\n<td>dietaryOptions</td>\n<td>array</td>\n<td>Dietary options at the restaurant. Must be one or more of the following: Gluten-free Options, Kosher, Vegan. Optional.</td>\n</tr>\n<tr>\n<td>smokingOptions</td>\n<td>array</td>\n<td>Details what smoking options the restaurant offers. Must be one or more of the following: Indoor Smoking Area, Non-Smoking, Outdoor Smoking Area. Optional.</td>\n</tr>\n<tr>\n<td>diversitySpotlightTags</td>\n<td>array</td>\n<td>Please select any categories your restaurant’s owners/operators identify as. One or more of the following: Asian and Pacific Islander, Black/African American, Latinx or Hispanic, LGBTQ, Middle Eastern, Native/Indigenous, etc. Optional.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Cuisines:</p>\n<p>This is a list of all the available cuisines you can use for Restaurants.</p>\n<ul>\n<li><p>Afghan</p>\n</li>\n<li><p>Afternoon Tea</p>\n</li>\n<li><p>Algerian</p>\n</li>\n<li><p>American</p>\n</li>\n<li><p>Andean</p>\n</li>\n<li><p>Argentinean</p>\n</li>\n<li><p>Asian</p>\n</li>\n<li><p>Australian</p>\n</li>\n<li><p>Austrian</p>\n</li>\n<li><p>Bar / Lounge / Bottle Service</p>\n</li>\n<li><p>Barbecue</p>\n</li>\n<li><p>Basque</p>\n</li>\n<li><p>Balkan Style</p>\n</li>\n<li><p>Beer Garden</p>\n</li>\n<li><p>Bistro</p>\n</li>\n<li><p>Bottle Service</p>\n</li>\n<li><p>Brazilian</p>\n</li>\n<li><p>Brazilian Steakhouse</p>\n</li>\n<li><p>British</p>\n</li>\n<li><p>Brewery</p>\n</li>\n<li><p>British / American</p>\n</li>\n<li><p>Bulgarian</p>\n</li>\n<li><p>Cajun</p>\n</li>\n<li><p>Cambodian</p>\n</li>\n<li><p>Catalan</p>\n</li>\n<li><p>Central Asian</p>\n</li>\n<li><p>Chinese</p>\n</li>\n<li><p>Chinese (Beijing)</p>\n</li>\n<li><p>Chinese (Canton)</p>\n</li>\n<li><p>Chinese (Shanghai)</p>\n</li>\n<li><p>Chinese (Sichuan)</p>\n</li>\n<li><p>Chinese (Taiwan)</p>\n</li>\n<li><p>Contemporary American</p>\n</li>\n<li><p>Contemporary Asian</p>\n</li>\n<li><p>Contemporary British</p>\n</li>\n<li><p>Contemporary Canadian</p>\n</li>\n<li><p>Contemporary European</p>\n</li>\n<li><p>Contemporary French</p>\n</li>\n<li><p>Contemporary French / American</p>\n</li>\n<li><p>Contemporary German</p>\n</li>\n<li><p>Contemporary Italian</p>\n</li>\n<li><p>Contemporary Japanese</p>\n</li>\n<li><p>Contemporary Korean</p>\n</li>\n<li><p>Contemporary Latin</p>\n</li>\n<li><p>Contemporary Mexican</p>\n</li>\n<li><p>Contemporary Southern</p>\n</li>\n<li><p>Contemporary Spanish</p>\n</li>\n<li><p>Contemporary Swedish</p>\n</li>\n<li><p>Contemporary Vegan</p>\n</li>\n<li><p>Continental</p>\n</li>\n<li><p>Creole</p>\n</li>\n<li><p>Creole / Cajun / Southern</p>\n</li>\n<li><p>Creative Japanese</p>\n</li>\n<li><p>Creative Western</p>\n</li>\n<li><p>Cuban</p>\n</li>\n<li><p>Czech</p>\n</li>\n<li><p>Danish</p>\n</li>\n<li><p>Deli</p>\n</li>\n<li><p>Dessert</p>\n</li>\n<li><p>Dim Sum</p>\n</li>\n<li><p>Distillery</p>\n</li>\n<li><p>Dutch</p>\n</li>\n<li><p>East Asian</p>\n</li>\n<li><p>Eastern European</p>\n</li>\n<li><p>Ecuadorian</p>\n</li>\n<li><p>Eritrean</p>\n</li>\n<li><p>Ethiopian</p>\n</li>\n<li><p>European</p>\n</li>\n<li><p>Farm-to-table</p>\n</li>\n<li><p>Filipino</p>\n</li>\n<li><p>Fine cuts</p>\n</li>\n<li><p>French</p>\n</li>\n<li><p>French / American</p>\n</li>\n<li><p>French / Canadian</p>\n</li>\n<li><p>French / Indian</p>\n</li>\n<li><p>French / Japanese</p>\n</li>\n<li><p>Fusion / Eclectic</p>\n</li>\n<li><p>Georgian</p>\n</li>\n<li><p>German</p>\n</li>\n<li><p>Global, International</p>\n</li>\n<li><p>Greek</p>\n</li>\n<li><p>Grill</p>\n</li>\n<li><p>Hawaiian</p>\n</li>\n<li><p>Halal</p>\n</li>\n<li><p>Hibachi</p>\n</li>\n<li><p>Home Cooking</p>\n</li>\n<li><p>Hungarian</p>\n</li>\n<li><p>Icelandic</p>\n</li>\n<li><p>Indian</p>\n</li>\n<li><p>Indonesian / Malaysian</p>\n</li>\n<li><p>International</p>\n</li>\n<li><p>Irish</p>\n</li>\n<li><p>Israeli</p>\n</li>\n<li><p>Italian</p>\n</li>\n<li><p>Izakaya</p>\n</li>\n<li><p>Japanese</p>\n</li>\n<li><p>Japanese Speciality</p>\n</li>\n<li><p>Jugoslavian</p>\n</li>\n<li><p>Kappou</p>\n</li>\n<li><p>Kaiseki</p>\n</li>\n<li><p>Kosher</p>\n</li>\n<li><p>Korean</p>\n</li>\n<li><p>Laotian</p>\n</li>\n<li><p>Latin / Spanish</p>\n</li>\n<li><p>Lebanese</p>\n</li>\n<li><p>Low Country</p>\n</li>\n<li><p>Lounge</p>\n</li>\n<li><p>Mediterranean</p>\n</li>\n<li><p>Mexican</p>\n</li>\n<li><p>Mexican / Southwestern</p>\n</li>\n<li><p>Mexican (Baja Med)</p>\n</li>\n<li><p>Middle Eastern</p>\n</li>\n<li><p>Modern Australian</p>\n</li>\n<li><p>Modern European</p>\n</li>\n<li><p>Modern Tuscan</p>\n</li>\n<li><p>Moroccan</p>\n</li>\n<li><p>Native American</p>\n</li>\n<li><p>Nepali</p>\n</li>\n<li><p>New Zealand</p>\n</li>\n<li><p>Northwest</p>\n</li>\n<li><p>Northwest British</p>\n</li>\n<li><p>Northwest Germany</p>\n</li>\n<li><p>Okonomiyaki</p>\n</li>\n<li><p>Okinawan</p>\n</li>\n<li><p>Organic</p>\n</li>\n<li><p>Ottoman</p>\n</li>\n<li><p>Pacific Rim</p>\n</li>\n<li><p>Pakistani</p>\n</li>\n<li><p>Pan-Asian</p>\n</li>\n<li><p>Panamanian</p>\n</li>\n<li><p>Palestinian</p>\n</li>\n<li><p>Peruvian</p>\n</li>\n<li><p>Persian</p>\n</li>\n<li><p>Pizzeria</p>\n</li>\n<li><p>Polish</p>\n</li>\n<li><p>Prime Rib</p>\n</li>\n<li><p>Puerto Rican</p>\n</li>\n<li><p>Pub</p>\n</li>\n<li><p>Quality Dining</p>\n</li>\n<li><p>Quebec</p>\n</li>\n<li><p>Regional French</p>\n</li>\n<li><p>Regional Italian (Sardinia)</p>\n</li>\n<li><p>Regional Japanese</p>\n</li>\n<li><p>Regional Mexican</p>\n</li>\n<li><p>Regional Mexican (Baja Med)</p>\n</li>\n<li><p>Regional Spanish</p>\n</li>\n<li><p>Regional German (Berlin)</p>\n</li>\n<li><p>Russian</p>\n</li>\n<li><p>Ramen</p>\n</li>\n<li><p>Salads</p>\n</li>\n<li><p>Scandinavian</p>\n</li>\n<li><p>Seafood</p>\n</li>\n<li><p>Serbian</p>\n</li>\n<li><p>Sicilian</p>\n</li>\n<li><p>Soul Food</p>\n</li>\n<li><p>Southern</p>\n</li>\n<li><p>Southern British</p>\n</li>\n<li><p>Southern German</p>\n</li>\n<li><p>Southern Spain</p>\n</li>\n<li><p>Spanish</p>\n</li>\n<li><p>Speakeasy</p>\n</li>\n<li><p>Steak</p>\n</li>\n<li><p>Steakhouse</p>\n</li>\n<li><p>Sushi</p>\n</li>\n<li><p>Swiss</p>\n</li>\n<li><p>Tapas / Small Plates</p>\n</li>\n<li><p>Tempura</p>\n</li>\n<li><p>Teppanyaki</p>\n</li>\n<li><p>Tex-Mex</p>\n</li>\n<li><p>Traditional French</p>\n</li>\n<li><p>Traditional Mexican</p>\n</li>\n<li><p>Turkish</p>\n</li>\n<li><p>Unspecified</p>\n</li>\n<li><p>Uruguayan</p>\n</li>\n<li><p>Vegan</p>\n</li>\n<li><p>Vegetarian</p>\n</li>\n<li><p>Vietnamese</p>\n</li>\n<li><p>Wine Bar</p>\n</li>\n<li><p>Winery</p>\n</li>\n<li><p>Yakitori</p>\n</li>\n<li><p>Yakiniku</p>\n</li>\n<li><p>Yoshoku</p>\n</li>\n<li><p>Yum Cha</p>\n</li>\n</ul>\n","urlObject":{"path":["v2","partnerrestaurants","rid","{{rid}}"],"host":["{{base-url}}"],"query":[],"variable":[]}},"response":[{"id":"aaf77045-fad1-4397-b502-5cac47537c41","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"id\": \"ABC123\",\n    \"name\": \"Casa de Mara\",\n    \"primaryCuisine\": \"Spanish\",\n    \"phone\": \"+13211231234\",\n    \"currency\": \"USD\",\n    \"locale\": \"en-US\",\n    \"website\": \"http://www.casademara.com\",\n    \"timeZone\": \"Eastern\",\n    \"priceBandId\": 2,\n    \"description\": \"Casa de Mara is a charming Spanish restaurant that brings the flavors of the Mediterranean to your table. With fresh seafood, authentic tapas, and rich, traditional paellas, every dish is crafted with passion and the finest ingredients. Enjoy a warm, inviting atmosphere where the spirit of Spain comes alive in every bite.\",\n    \"diningStyle\": \"Fine Dining\",\n    \"dressCode\": \"Smart Casual\",\n    \"privateEventDetails\": \"300 seat event space available\",\n    \"cateringDetails\": \"Offsite catering available\",\n    \"executiveChef\": \"Chef Luis Torres\",\n    \"crossStreet\": \"Puerto Rico Ave\",\n    \"location\": {\n        \"address\": {\n            \"city\": \"San Francisco\",\n            \"street\": \"120 Kearny St Apt 1518042369\",\n            \"country\": \"USA\",\n            \"province\": \"CA\"\n        },\n        \"coordinates\": {\n            \"latitude\": \"37.6915030\",\n            \"longitude\": \"-122.4582610\"\n        },\n        \"neighborhoodName\": \"Kearny St\"\n    },\n    \"profileImage\": {\n        \"url\": \"https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.instagram.com%2Fdarrenandphillip%2Fp%2FCz9gGWVMr2R%2F&psig=AOvVaw0ShB3y1_zXGdBKJtvVJ-rY&ust=1742057047733000&source=images&cd=vfe&opi=89978449&ved=0CBQQjRxqFwoTCODtwLKCiowDFQAAAAAdAAAAABAE\"\n    },\n    \"images\": [],\n    \"tags\": [\n        \"Cocktails\",\n        \"Fireplace\"\n    ],\n    \"openingTimes\": {\n        \"standardOpeningTimes\": {\n            \"FRIDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"MONDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"TUESDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"SATURDAY\": [\n                {\n                    \"end\": \"13:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"THURSDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ],\n            \"WEDNESDAY\": [\n                {\n                    \"end\": \"19:00\",\n                    \"start\": \"07:00\"\n                }\n            ]\n        }\n    },\n    \"paymentOptions\": [\n        \"AMEX\",\n        \"Visa\",\n        \"MasterCard\"\n    ],\n    \"beverages\": [\n        \"Cocktails\",\n        \"Wine\",\n        \"Full Bar\"\n    ],\n    \"dietaryOptions\": [\n        \"Gluten-free Options\"\n    ],\n    \"smokingOptions\": [\n        \"Non-Smoking\"\n    ],    \n    \"safetyPrecautions\": [\n        \"StaffIsVaccinated\",\n        \"ProhibitSickStaff\"\n    ],\n    \"diversitySpotlightTags\": [\n        \"LGBTQ\",\n        \"Persons with Disabilities\"\n    ]\n}\n","options":{"raw":{"language":"json"}}},"url":"{{base-url}}/v2/partnerrestaurants/rid/{{rid}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Accept-Encoding"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"OT-RequestId","value":"de0fa308-6629-491a-84a4-096b402ff1b4"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"OT-AnonymousId","value":"4E8D0094-ED9A-4963-BF15-AE55DF0E6E2A"},{"key":"OT-SessionID","value":"860bc3af-1fb1-46f9-8d22-ac92ef96eb07"},{"key":"Content-Type","value":"application/json"},{"key":"X-OT-Backend","value":"pdp"},{"key":"X-OT-UriTemplate","value":"/pdp/writeback/v3/partnerrestaurants/rid/{rid}"},{"key":"Content-Encoding","value":"gzip"},{"key":"Date","value":"Fri, 14 Mar 2025 16:45:52 GMT"},{"key":"Content-Length","value":"161"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestId\": 90500577,\n    \"itemStatus\": [\n        {\n            \"itemId\": \"ABC123\",\n            \"sequenceId\": 182390420,\n            \"status\": \"Processing\"\n        }\n    ],\n    \"totalItems\": 1,\n    \"totalProcessedItems\": 1,\n    \"created\": \"2025-03-14T16:45:52.575076Z\"\n}"}],"_postman_id":"7e72024b-d17a-4767-9e8c-2c025bd94532"}],"id":"28964b0b-7726-48f8-9354-c00869fad2b8","_postman_id":"28964b0b-7726-48f8-9354-c00869fad2b8","description":""}],"id":"e14c1573-a9f6-4b60-878a-21649cc31b1a","description":"<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The Profile Content API allows certified partners to post profile content for specific restaurants on OpenTable. The Profile Content API is a tool provided by OpenTable that enables certified partners to manage and update profile content for specific restaurants listed on the platform. This API allows partners to directly post and maintain accurate and up-to-date information, ensuring that diners have access to the most relevant details when searching for and selecting restaurants on OpenTable.</p>\n<p>By utilizing the Profile Content API, certified partners can enhance the overall user experience for OpenTable diners, while also helping restaurants maintain a strong and engaging online presence.</p>\n<h2 id=\"how-will-this-impact-restaurants\"><strong>How will this impact restaurants?</strong></h2>\n<p>This API allows partners to update OpenTable restaurant profile details from outside the OpenTable for Restaurants product.</p>\n<p>Note, restaurants will not be able to see when the last content update was pushed via the API. </p>\n<h4 id><img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdl-XwufLDGdI9pcOyCtVfLw1pNXeeyPlTnF9cOjTb0m7U_Tcsh7wfirYEeJnzlNPVziugi4rjNDULBukM2au_XiSadldVzGu8-h3BEr5F6xncRJI61LF0DT0Do7WUJHw2GsPyDG-CimGw1otogtm8LPQ?key=-rVBup94TDIdvnuS5qlBaQ\" alt /></h4>\n<img src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXdw_4powKwVIPPBlvYCET_iVppEEAbO164oGUpvVLaE6azVo-_tGtCyaz85dBZ2btC7rT-MXgdNR-tPZ16Mksof0k3l8K2gfSe2fWVFuouLzn5XJmZQ5OsqalCmh2JF8GbBnMFwXmv-s_SD4_y2CJXDTi8?key=-rVBup94TDIdvnuS5qlBaQ\" alt />\n\n<h2 id=\"change-log\"><strong>Change Log</strong></h2>\n<p>This API was developed and launched in August 2024</p>\n","_postman_id":"e14c1573-a9f6-4b60-878a-21649cc31b1a"},{"name":"API Reference","item":[{"name":"Change Log","item":[{"name":"Online Booking API - Changes to Credit Card processing","item":[],"id":"ac23da24-ec4f-45dd-9df5-27f652cd521b","_postman_id":"ac23da24-ec4f-45dd-9df5-27f652cd521b","description":""},{"name":"Online Booking API v2 now supports Spreedly as a payment processor","item":[],"id":"cbe244b4-98d8-43f3-9d1c-67c812abe135","description":"<h1 id=\"online-booking-api-v2-now-supports-spreedly-as-a-payment-processor\">Online Booking API v2 now supports Spreedly as a payment processor</h1>\n<p>If you are integrating with a restaurant that does <strong>not</strong> use Stripe as its credit card provider, you <strong>must</strong> use Spreedly. Continuing to send Stripe payment details for a non-Stripe restaurant will result in a <strong>Make Reservation</strong> request failure.</p>\n<p>Details of the change are below:</p>\n<p>Spreedly payment support is available exclusively in Booking API Version 2. This enhancement introduces secure tokenization through Spreedly’s payment gateway, affecting the Slot Lock, Make/Change, and Payment Profile endpoints.</p>\n<h2 id=\"affected-endpoints\">Affected Endpoints</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Endpoint</th>\n<th>Method</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Slot Lock</td>\n<td>/v2/booking/{rid}/slotlock</td>\n<td>POST</td>\n<td>Locks a booking slot and returns Spreedly tokenization data.</td>\n</tr>\n<tr>\n<td>Make Reservation</td>\n<td>/v2/booking/{rid}/make</td>\n<td>POST</td>\n<td>Creates a reservation and includes new payment fields.</td>\n</tr>\n<tr>\n<td>Change Reservation</td>\n<td>/v2/booking/{rid}/change</td>\n<td>POST</td>\n<td>Modifies an existing reservation and includes new payment fields.</td>\n</tr>\n<tr>\n<td>Payment Profile</td>\n<td>/v2/booking/{rid}/payment/profile</td>\n<td>GET</td>\n<td>Retrieves Spreedly tokenization credentials for use during the change flow.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"slot-lock-api\"><strong>Slot Lock API</strong></h2>\n<p>Overview</p>\n<p>The Slot Lock response has been extended to include a payment_method object whenever a booking requires Spreedly tokenization.</p>\n<h3 id=\"response-schema\"><strong>Response Schema</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>expires_at</td>\n<td>string (datetime)</td>\n<td>UTC timestamp indicating when the slot lock expires.</td>\n</tr>\n<tr>\n<td>reservation_token</td>\n<td>string</td>\n<td>Encoded reservation token used in subsequent requests.</td>\n</tr>\n<tr>\n<td>privileged_access</td>\n<td>array of string</td>\n<td>List of privileges granted for the locked slot.</td>\n</tr>\n<tr>\n<td>access_rule</td>\n<td>object</td>\n<td>null</td>\n</tr>\n<tr>\n<td>payment_method</td>\n<td>object</td>\n<td>Contains Spreedly tokenization details.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"object-payment_method\"><strong>Object: payment_method</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>paymentProviderType</td>\n<td>string</td>\n<td>Identifier of the payment provider (for example, <code>SPREEDLY</code>).</td>\n</tr>\n<tr>\n<td>tokenizerAuthData</td>\n<td>object</td>\n<td>Authorization data used to authenticate with the payment provider.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"object-tokenizerauthdata\"><strong>Object: tokenizerAuthData</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>nonce</td>\n<td>string</td>\n<td>Single-use identifier used to prevent replay attacks.</td>\n</tr>\n<tr>\n<td>timestamp</td>\n<td>number</td>\n<td>UTC timestamp (in seconds) indicating when the tokenization data was generated.</td>\n</tr>\n<tr>\n<td>certificateToken</td>\n<td>string</td>\n<td>Token representing the client certificate.</td>\n</tr>\n<tr>\n<td>signature</td>\n<td>string</td>\n<td>Cryptographic signature used to verify the authenticity of the payload.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"sample-response\"><strong>Sample Response:</strong></h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n   \"expires_at\": \"2025-10-30T19:45:42\",\n   \"reservation_token\": \"eyJhbGciOiJIUzUxMiJ9...\",\n   \"privileged_access\": [],\n   \"access_rule\": null,\n   \"payment_method\": {\n       \"paymentProviderType\": \"SPREEDLY\",\n       \"tokenizerAuthData\": {\n           \"nonce\": \"77b5d02b-a584-4fd6-ae12-e4af17622799\",\n           \"timestamp\": 1761853243,\n           \"certificateToken\": \"41NRFK9S8B900VZW8KWFZPKFC5\",\n           \"signature\": \"C5/RgDHBWv0CTvhwV+LBSW0j+XEM9I+6nidfqRw60td5vP5...\"\n       }\n   }\n}\n\n</code></pre>\n<h2 id=\"notes\"><strong>Notes</strong></h2>\n<p>The payment_method object holds the necessary details for loading the Spreedly iframe, which allows for the tokenization of credit card information. For more information on Spreedly integration, please refer to <a href=\"https://developer.spreedly.com/docs/iframe-payment-form\">https://developer.spreedly.com/docs/iframe-payment-form</a> .</p>\n<p>Card tokenization can be achieved by directly calling the Spreedly payment_methods.json API, eliminating the need for a Spreedly iframe. Further details are available at <a href=\"https://core.spreedly.com/v1/payment_methods.json\">https://core.spreedly.com/v1/payment_methods.json</a> .</p>\n<p>Partners will require their own Spreedly account to access these pages.</p>\n<h1 id=\"make--change-booking-api\"><strong>Make &amp; Change Booking API</strong></h1>\n<h2 id=\"overview\"><strong>Overview</strong></h2>\n<p>The credit_card substructure has been updated with new Spreedly-specific fields for 3-D Secure (3DS) and tokenized payments.</p>\n<h2 id=\"updated-request-schema-within-the-credit_card-object\"><strong>Updated Request Schema within the credit_card object</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>paymentProviderType</td>\n<td>string</td>\n<td>No</td>\n<td>Specifies the payment provider. Defaults to <code>STRIPE</code> if not provided.</td>\n</tr>\n<tr>\n<td>redirectUrl</td>\n<td>string</td>\n<td>Conditional</td>\n<td>Required for 3DS-authenticated payments. URL used for Spreedly redirection.</td>\n</tr>\n<tr>\n<td>mpiData</td>\n<td>object</td>\n<td>Conditional</td>\n<td>Required for 3DS-authenticated payments. Contains Merchant Plug-in data.</td>\n</tr>\n<tr>\n<td>token</td>\n<td>string</td>\n<td>Yes</td>\n<td>Tokenized payment identifier provided by Spreedly.</td>\n</tr>\n<tr>\n<td>last4</td>\n<td>string</td>\n<td>Yes</td>\n<td>Last four digits of the credit card number.</td>\n</tr>\n<tr>\n<td>paymentMethod</td>\n<td>string</td>\n<td>Yes</td>\n<td>Payment method type (for example, <code>card</code>).</td>\n</tr>\n<tr>\n<td>setupIntent</td>\n<td>string</td>\n<td>Optional</td>\n<td>Identifier for the setup intent, if applicable.</td>\n</tr>\n<tr>\n<td>paymentIntent</td>\n<td>string</td>\n<td>Optional</td>\n<td>Identifier for the payment intent, if applicable.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"object-mpidata\"><strong>Object: mpiData</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>threeDSVersion</td>\n<td>string</td>\n<td>Yes</td>\n<td>Version of 3-D Secure used (for example, <code>1.0</code>, <code>2.1.0</code>).</td>\n</tr>\n<tr>\n<td>eci</td>\n<td>string</td>\n<td>Yes</td>\n<td>Electronic Commerce Indicator (for example, <code>05</code> indicates successful authentication).</td>\n</tr>\n<tr>\n<td>cavv</td>\n<td>string</td>\n<td>Yes</td>\n<td>Cardholder Authentication Verification Value.</td>\n</tr>\n<tr>\n<td>dsTransId</td>\n<td>string</td>\n<td>Yes</td>\n<td>Directory Server Transaction ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"sample-request\"><strong>Sample Request:</strong></h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n   \"paymentProviderType\": \"SPREEDLY\",\n   \"redirectUrl\": \"https://example.com/redirect\",\n   \"mpiData\": {\n       \"threeDSVersion\": \"2.1.0\",\n       \"eci\": \"05\",\n       \"cavv\": \"JSJbzXT6TRQlvZDX+ZdOG4QriE=\",\n       \"dsTransId\": \"aaa65c7b-b0fc-4e71-bd6c-29c87acad489\"\n   },\n   \"token\": \"tok_1234567890\",\n   \"last4\": \"4242\",\n   \"paymentMethod\": \"card\",\n   \"setupIntent\": \"seti_abcdef\",\n   \"paymentIntent\": \"pi_abcdef\"\n}\n\n</code></pre>\n<h2 id=\"notes-1\"><strong>Notes:</strong></h2>\n<ul>\n<li><p>The redirectUrl and mpiData objects appear only in 3DS-authenticated transactions.</p>\n</li>\n<li><p>Non-3DS transactions can omit these fields.</p>\n</li>\n<li><p>Partners are responsible for handling redirect flows post-3DS challenge.</p>\n</li>\n</ul>\n<h1 id=\"payment-profile-api\"><strong>Payment Profile API</strong></h1>\n<h2 id=\"overview-1\"><strong>Overview</strong></h2>\n<p>New Endpoint. Introduced to allow partners to retrieve Spreedly tokenizer credentials during reservation changes. These credentials are typically only issued during the slot lock flow.</p>\n<h2 id=\"endpoint-details\"><strong>Endpoint Details</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Path</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>GET</td>\n<td>/v2/booking/{rid}/payment/profile</td>\n<td>Returns Spreedly tokenizer configuration for the specified restaurant.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response-schema-1\"><strong>Response Schema</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>tokenizerConfig</td>\n<td>object</td>\n<td>Contains payment provider–specific configuration.</td>\n</tr>\n<tr>\n<td>tokenizerConfig.Spreedly</td>\n<td>object</td>\n<td>Spreedly tokenization configuration.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"object-tokenizerconfigspreedly\"><strong>Object: tokenizerConfig.Spreedly</strong></h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>nonce</td>\n<td>string</td>\n<td>Unique single-use identifier used to prevent replay attacks.</td>\n</tr>\n<tr>\n<td>timestamp</td>\n<td>number</td>\n<td>UTC timestamp indicating when the tokenization data was generated.</td>\n</tr>\n<tr>\n<td>certificateToken</td>\n<td>string</td>\n<td>Token representing the client certificate.</td>\n</tr>\n<tr>\n<td>signature</td>\n<td>string</td>\n<td>Cryptographic signature of the tokenization request payload.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes-2\"><strong>Notes:</strong></h2>\n<ul>\n<li><p>Use this endpoint during change flows to fetch fresh Spreedly credentials.</p>\n</li>\n<li><p>The values should be used to re-initialize the tokenization iframe or direct API call.</p>\n</li>\n<li><p>All values (nonce, timestamp, certificateToken, signature) are required to authenticate with Spreedly.</p>\n</li>\n</ul>\n<h2 id=\"sample-response-1\"><strong>Sample Response:</strong></h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n   \"tokenizerConfig\": {\n       \"Spreedly\": {\n           \"timestamp\": 1761865972,\n           \"nonce\": \"a20b195b-c9fc-48df-a945-4aaac69e95f3\",\n           \"certificateToken\": \"41NRFK9S8B900VZW8KWFZPKFC5\",\n           \"signature\": \"G4PPQnQhJcVmbjocimDMNAeSg3TzkHwp7v2Ne0g6hr6+x/gp...\"\n       }\n   }\n}\n\n</code></pre>\n<h1 id=\"error-handling\"><strong>Error Handling</strong></h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Status</th>\n<th>Error Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>INVALID_PAYMENT_DATA</td>\n<td>Payment fields are missing or malformed. Verify the token, nonce, and signature.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>UNAUTHORIZED_PROVIDER</td>\n<td>Spreedly credentials are invalid or have expired.</td>\n</tr>\n<tr>\n<td>403</td>\n<td>ACCESS_DENIED</td>\n<td>The partner is not authorized to use Spreedly for the specified restaurant.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>PAYMENT_VALIDATION_FAILED</td>\n<td>Spreedly tokenization verification failed due to a signature mismatch.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>INTERNAL_ERROR</td>\n<td>An unexpected error occurred in the Partner API or payment gateway.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"versioning--compatibility\"><strong>Versioning &amp; Compatibility</strong></h1>\n<ul>\n<li><p>Applies to: Booking API V2 only</p>\n</li>\n<li><p>Legacy (V1) does not support Spreedly integration</p>\n</li>\n<li><p>Backward compatibility maintained for non-Spreedly bookings</p>\n</li>\n</ul>\n<h1 id=\"references\"><strong>References</strong></h1>\n<p><a href=\"https://developer.spreedly.com/docs/iframe-payment-form\"><b>https://developer.spreedly.com/docs/iframe-payment-form</b></a></p>\n<p><a href=\"https://core.spreedly.com/v1/payment_methods.json\"><b>https://core.spreedly.com/v1/payment_methods.json</b></a></p>\n","_postman_id":"cbe244b4-98d8-43f3-9d1c-67c812abe135"}],"id":"4b3fe755-f25e-4b57-88b2-53dba93e72d2","description":"<h2 id=\"important-notice-as-of-october-6-2025-opentable-will-support-only-tls-13-for-all-api-communication-ensure-your-systems-are-upgraded-to-maintain-secure-connectivity\"><strong>Important Notice:</strong> As of <strong>October 6, 2025</strong>, OpenTable will support <strong>only TLS 1.3</strong> for all API communication. Ensure your systems are upgraded to maintain secure connectivity.</h2>\n","_postman_id":"4b3fe755-f25e-4b57-88b2-53dba93e72d2"},{"name":"Country Codes","item":[],"id":"65fcea29-affd-4d5b-8112-ca8a3221291f","description":"<h2 id=\"country-codes\">Country Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Country Code</th>\n<th>Country Name</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>AF</td>\n<td>Afghanistan</td>\n</tr>\n<tr>\n<td>AL</td>\n<td>Albania</td>\n</tr>\n<tr>\n<td>DZ</td>\n<td>Algeria</td>\n</tr>\n<tr>\n<td>AS</td>\n<td>American Samoa</td>\n</tr>\n<tr>\n<td>AD</td>\n<td>Andorra</td>\n</tr>\n<tr>\n<td>AO</td>\n<td>Angola</td>\n</tr>\n<tr>\n<td>AI</td>\n<td>Anguilla</td>\n</tr>\n<tr>\n<td>AQ</td>\n<td>Antarctica</td>\n</tr>\n<tr>\n<td>AG</td>\n<td>Antigua and Barbuda</td>\n</tr>\n<tr>\n<td>AR</td>\n<td>Argentina</td>\n</tr>\n<tr>\n<td>AM</td>\n<td>Armenia</td>\n</tr>\n<tr>\n<td>AW</td>\n<td>Aruba</td>\n</tr>\n<tr>\n<td>AU</td>\n<td>Australia</td>\n</tr>\n<tr>\n<td>AT</td>\n<td>Austria</td>\n</tr>\n<tr>\n<td>AZ</td>\n<td>Azerbaijan</td>\n</tr>\n<tr>\n<td>BS</td>\n<td>Bahamas</td>\n</tr>\n<tr>\n<td>BH</td>\n<td>Bahrain</td>\n</tr>\n<tr>\n<td>BD</td>\n<td>Bangladesh</td>\n</tr>\n<tr>\n<td>BB</td>\n<td>Barbados</td>\n</tr>\n<tr>\n<td>BY</td>\n<td>Belarus</td>\n</tr>\n<tr>\n<td>BE</td>\n<td>Belgium</td>\n</tr>\n<tr>\n<td>BZ</td>\n<td>Belize</td>\n</tr>\n<tr>\n<td>BJ</td>\n<td>Benin</td>\n</tr>\n<tr>\n<td>BM</td>\n<td>Bermuda</td>\n</tr>\n<tr>\n<td>BT</td>\n<td>Bhutan</td>\n</tr>\n<tr>\n<td>BO</td>\n<td>Bolivia</td>\n</tr>\n<tr>\n<td>BA</td>\n<td>Bosnia and Herzegovina</td>\n</tr>\n<tr>\n<td>BW</td>\n<td>Botswana</td>\n</tr>\n<tr>\n<td>BV</td>\n<td>Bouvet Island</td>\n</tr>\n<tr>\n<td>BR</td>\n<td>Brazil</td>\n</tr>\n<tr>\n<td>BQ</td>\n<td>British Antarctic Territory</td>\n</tr>\n<tr>\n<td>IO</td>\n<td>British Indian Ocean Territory</td>\n</tr>\n<tr>\n<td>VG</td>\n<td>British Virgin Islands</td>\n</tr>\n<tr>\n<td>BN</td>\n<td>Brunei</td>\n</tr>\n<tr>\n<td>BG</td>\n<td>Bulgaria</td>\n</tr>\n<tr>\n<td>BF</td>\n<td>Burkina Faso</td>\n</tr>\n<tr>\n<td>BI</td>\n<td>Burundi</td>\n</tr>\n<tr>\n<td>KH</td>\n<td>Cambodia</td>\n</tr>\n<tr>\n<td>CM</td>\n<td>Cameroon</td>\n</tr>\n<tr>\n<td>CA</td>\n<td>Canada</td>\n</tr>\n<tr>\n<td>CT</td>\n<td>Canton and Enderbury Islands</td>\n</tr>\n<tr>\n<td>CV</td>\n<td>Cape Verde</td>\n</tr>\n<tr>\n<td>KY</td>\n<td>Cayman Islands</td>\n</tr>\n<tr>\n<td>CF</td>\n<td>Central African Republic</td>\n</tr>\n<tr>\n<td>TD</td>\n<td>Chad</td>\n</tr>\n<tr>\n<td>CL</td>\n<td>Chile</td>\n</tr>\n<tr>\n<td>CN</td>\n<td>China</td>\n</tr>\n<tr>\n<td>CX</td>\n<td>Christmas Island</td>\n</tr>\n<tr>\n<td>CC</td>\n<td>Cocos [Keeling] Islands</td>\n</tr>\n<tr>\n<td>CO</td>\n<td>Colombia</td>\n</tr>\n<tr>\n<td>KM</td>\n<td>Comoros</td>\n</tr>\n<tr>\n<td>CG</td>\n<td>Congo - Brazzaville</td>\n</tr>\n<tr>\n<td>CD</td>\n<td>Congo - Kinshasa</td>\n</tr>\n<tr>\n<td>CK</td>\n<td>Cook Islands</td>\n</tr>\n<tr>\n<td>CR</td>\n<td>Costa Rica</td>\n</tr>\n<tr>\n<td>HR</td>\n<td>Croatia</td>\n</tr>\n<tr>\n<td>CU</td>\n<td>Cuba</td>\n</tr>\n<tr>\n<td>CY</td>\n<td>Cyprus</td>\n</tr>\n<tr>\n<td>CZ</td>\n<td>Czech Republic</td>\n</tr>\n<tr>\n<td>CI</td>\n<td>Côte d’Ivoire</td>\n</tr>\n<tr>\n<td>DK</td>\n<td>Denmark</td>\n</tr>\n<tr>\n<td>DJ</td>\n<td>Djibouti</td>\n</tr>\n<tr>\n<td>DM</td>\n<td>Dominica</td>\n</tr>\n<tr>\n<td>DO</td>\n<td>Dominican Republic</td>\n</tr>\n<tr>\n<td>NQ</td>\n<td>Dronning Maud Land</td>\n</tr>\n<tr>\n<td>DD</td>\n<td>East Germany</td>\n</tr>\n<tr>\n<td>EC</td>\n<td>Ecuador</td>\n</tr>\n<tr>\n<td>EG</td>\n<td>Egypt</td>\n</tr>\n<tr>\n<td>SV</td>\n<td>El Salvador</td>\n</tr>\n<tr>\n<td>GQ</td>\n<td>Equatorial Guinea</td>\n</tr>\n<tr>\n<td>ER</td>\n<td>Eritrea</td>\n</tr>\n<tr>\n<td>EE</td>\n<td>Estonia</td>\n</tr>\n<tr>\n<td>ET</td>\n<td>Ethiopia</td>\n</tr>\n<tr>\n<td>FK</td>\n<td>Falkland Islands</td>\n</tr>\n<tr>\n<td>FO</td>\n<td>Faroe Islands</td>\n</tr>\n<tr>\n<td>FJ</td>\n<td>Fiji</td>\n</tr>\n<tr>\n<td>FI</td>\n<td>Finland</td>\n</tr>\n<tr>\n<td>FR</td>\n<td>France</td>\n</tr>\n<tr>\n<td>GF</td>\n<td>French Guiana</td>\n</tr>\n<tr>\n<td>PF</td>\n<td>French Polynesia</td>\n</tr>\n<tr>\n<td>TF</td>\n<td>French Southern Territories</td>\n</tr>\n<tr>\n<td>FQ</td>\n<td>French Southern and Antarctic Territories</td>\n</tr>\n<tr>\n<td>GA</td>\n<td>Gabon</td>\n</tr>\n<tr>\n<td>GM</td>\n<td>Gambia</td>\n</tr>\n<tr>\n<td>GE</td>\n<td>Georgia</td>\n</tr>\n<tr>\n<td>DE</td>\n<td>Germany</td>\n</tr>\n<tr>\n<td>GH</td>\n<td>Ghana</td>\n</tr>\n<tr>\n<td>GI</td>\n<td>Gibraltar</td>\n</tr>\n<tr>\n<td>GR</td>\n<td>Greece</td>\n</tr>\n<tr>\n<td>GL</td>\n<td>Greenland</td>\n</tr>\n<tr>\n<td>GD</td>\n<td>Grenada</td>\n</tr>\n<tr>\n<td>GP</td>\n<td>Guadeloupe</td>\n</tr>\n<tr>\n<td>GU</td>\n<td>Guam</td>\n</tr>\n<tr>\n<td>GT</td>\n<td>Guatemala</td>\n</tr>\n<tr>\n<td>GG</td>\n<td>Guernsey</td>\n</tr>\n<tr>\n<td>GN</td>\n<td>Guinea</td>\n</tr>\n<tr>\n<td>GW</td>\n<td>Guinea-Bissau</td>\n</tr>\n<tr>\n<td>GY</td>\n<td>Guyana</td>\n</tr>\n<tr>\n<td>HT</td>\n<td>Haiti</td>\n</tr>\n<tr>\n<td>HM</td>\n<td>Heard Island and McDonald Islands</td>\n</tr>\n<tr>\n<td>HN</td>\n<td>Honduras</td>\n</tr>\n<tr>\n<td>HK</td>\n<td>Hong Kong SAR China</td>\n</tr>\n<tr>\n<td>HU</td>\n<td>Hungary</td>\n</tr>\n<tr>\n<td>IS</td>\n<td>Iceland</td>\n</tr>\n<tr>\n<td>IN</td>\n<td>India</td>\n</tr>\n<tr>\n<td>ID</td>\n<td>Indonesia</td>\n</tr>\n<tr>\n<td>IR</td>\n<td>Iran</td>\n</tr>\n<tr>\n<td>IQ</td>\n<td>Iraq</td>\n</tr>\n<tr>\n<td>IE</td>\n<td>Ireland</td>\n</tr>\n<tr>\n<td>IM</td>\n<td>Isle of Man</td>\n</tr>\n<tr>\n<td>IL</td>\n<td>Israel</td>\n</tr>\n<tr>\n<td>IT</td>\n<td>Italy</td>\n</tr>\n<tr>\n<td>JM</td>\n<td>Jamaica</td>\n</tr>\n<tr>\n<td>JP</td>\n<td>Japan</td>\n</tr>\n<tr>\n<td>JE</td>\n<td>Jersey</td>\n</tr>\n<tr>\n<td>JT</td>\n<td>Johnston Island</td>\n</tr>\n<tr>\n<td>JO</td>\n<td>Jordan</td>\n</tr>\n<tr>\n<td>KZ</td>\n<td>Kazakhstan</td>\n</tr>\n<tr>\n<td>KE</td>\n<td>Kenya</td>\n</tr>\n<tr>\n<td>KI</td>\n<td>Kiribati</td>\n</tr>\n<tr>\n<td>KW</td>\n<td>Kuwait</td>\n</tr>\n<tr>\n<td>KG</td>\n<td>Kyrgyzstan</td>\n</tr>\n<tr>\n<td>LA</td>\n<td>Laos</td>\n</tr>\n<tr>\n<td>LV</td>\n<td>Latvia</td>\n</tr>\n<tr>\n<td>LB</td>\n<td>Lebanon</td>\n</tr>\n<tr>\n<td>LS</td>\n<td>Lesotho</td>\n</tr>\n<tr>\n<td>LR</td>\n<td>Liberia</td>\n</tr>\n<tr>\n<td>LY</td>\n<td>Libya</td>\n</tr>\n<tr>\n<td>LI</td>\n<td>Liechtenstein</td>\n</tr>\n<tr>\n<td>LT</td>\n<td>Lithuania</td>\n</tr>\n<tr>\n<td>LU</td>\n<td>Luxembourg</td>\n</tr>\n<tr>\n<td>MO</td>\n<td>Macau SAR China</td>\n</tr>\n<tr>\n<td>MK</td>\n<td>Macedonia</td>\n</tr>\n<tr>\n<td>MG</td>\n<td>Madagascar</td>\n</tr>\n<tr>\n<td>MW</td>\n<td>Malawi</td>\n</tr>\n<tr>\n<td>MY</td>\n<td>Malaysia</td>\n</tr>\n<tr>\n<td>MV</td>\n<td>Maldives</td>\n</tr>\n<tr>\n<td>ML</td>\n<td>Mali</td>\n</tr>\n<tr>\n<td>MT</td>\n<td>Malta</td>\n</tr>\n<tr>\n<td>MH</td>\n<td>Marshall Islands</td>\n</tr>\n<tr>\n<td>MQ</td>\n<td>Martinique</td>\n</tr>\n<tr>\n<td>MR</td>\n<td>Mauritania</td>\n</tr>\n<tr>\n<td>MU</td>\n<td>Mauritius</td>\n</tr>\n<tr>\n<td>YT</td>\n<td>Mayotte</td>\n</tr>\n<tr>\n<td>FX</td>\n<td>Metropolitan France</td>\n</tr>\n<tr>\n<td>MX</td>\n<td>Mexico</td>\n</tr>\n<tr>\n<td>FM</td>\n<td>Micronesia</td>\n</tr>\n<tr>\n<td>MI</td>\n<td>Midway Islands</td>\n</tr>\n<tr>\n<td>MD</td>\n<td>Moldova</td>\n</tr>\n<tr>\n<td>MC</td>\n<td>Monaco</td>\n</tr>\n<tr>\n<td>MN</td>\n<td>Mongolia</td>\n</tr>\n<tr>\n<td>ME</td>\n<td>Montenegro</td>\n</tr>\n<tr>\n<td>MS</td>\n<td>Montserrat</td>\n</tr>\n<tr>\n<td>MA</td>\n<td>Morocco</td>\n</tr>\n<tr>\n<td>MZ</td>\n<td>Mozambique</td>\n</tr>\n<tr>\n<td>MM</td>\n<td>Myanmar [Burma]</td>\n</tr>\n<tr>\n<td>NA</td>\n<td>Namibia</td>\n</tr>\n<tr>\n<td>NR</td>\n<td>Nauru</td>\n</tr>\n<tr>\n<td>NP</td>\n<td>Nepal</td>\n</tr>\n<tr>\n<td>NL</td>\n<td>Netherlands</td>\n</tr>\n<tr>\n<td>AN</td>\n<td>Netherlands Antilles</td>\n</tr>\n<tr>\n<td>NT</td>\n<td>Neutral Zone</td>\n</tr>\n<tr>\n<td>NC</td>\n<td>New Caledonia</td>\n</tr>\n<tr>\n<td>NZ</td>\n<td>New Zealand</td>\n</tr>\n<tr>\n<td>NI</td>\n<td>Nicaragua</td>\n</tr>\n<tr>\n<td>NE</td>\n<td>Niger</td>\n</tr>\n<tr>\n<td>NG</td>\n<td>Nigeria</td>\n</tr>\n<tr>\n<td>NU</td>\n<td>Niue</td>\n</tr>\n<tr>\n<td>NF</td>\n<td>Norfolk Island</td>\n</tr>\n<tr>\n<td>KP</td>\n<td>North Korea</td>\n</tr>\n<tr>\n<td>VD</td>\n<td>North Vietnam</td>\n</tr>\n<tr>\n<td>MP</td>\n<td>Northern Mariana Islands</td>\n</tr>\n<tr>\n<td>NO</td>\n<td>Norway</td>\n</tr>\n<tr>\n<td>OM</td>\n<td>Oman</td>\n</tr>\n<tr>\n<td>PC</td>\n<td>Pacific Islands Trust Territory</td>\n</tr>\n<tr>\n<td>PK</td>\n<td>Pakistan</td>\n</tr>\n<tr>\n<td>PW</td>\n<td>Palau</td>\n</tr>\n<tr>\n<td>PS</td>\n<td>Palestinian Territories</td>\n</tr>\n<tr>\n<td>PA</td>\n<td>Panama</td>\n</tr>\n<tr>\n<td>PZ</td>\n<td>Panama Canal Zone</td>\n</tr>\n<tr>\n<td>PG</td>\n<td>Papua New Guinea</td>\n</tr>\n<tr>\n<td>PY</td>\n<td>Paraguay</td>\n</tr>\n<tr>\n<td>YD</td>\n<td>People’s Democratic Republic of Yemen</td>\n</tr>\n<tr>\n<td>PE</td>\n<td>Peru</td>\n</tr>\n<tr>\n<td>PH</td>\n<td>Philippines</td>\n</tr>\n<tr>\n<td>PN</td>\n<td>Pitcairn Islands</td>\n</tr>\n<tr>\n<td>PL</td>\n<td>Poland</td>\n</tr>\n<tr>\n<td>PT</td>\n<td>Portugal</td>\n</tr>\n<tr>\n<td>PR</td>\n<td>Puerto Rico</td>\n</tr>\n<tr>\n<td>QA</td>\n<td>Qatar</td>\n</tr>\n<tr>\n<td>RO</td>\n<td>Romania</td>\n</tr>\n<tr>\n<td>RU</td>\n<td>Russia</td>\n</tr>\n<tr>\n<td>RW</td>\n<td>Rwanda</td>\n</tr>\n<tr>\n<td>RE</td>\n<td>Réunion</td>\n</tr>\n<tr>\n<td>BL</td>\n<td>Saint Barthélemy</td>\n</tr>\n<tr>\n<td>SH</td>\n<td>Saint Helena</td>\n</tr>\n<tr>\n<td>KN</td>\n<td>Saint Kitts and Nevis</td>\n</tr>\n<tr>\n<td>LC</td>\n<td>Saint Lucia</td>\n</tr>\n<tr>\n<td>MF</td>\n<td>Saint Martin</td>\n</tr>\n<tr>\n<td>PM</td>\n<td>Saint Pierre and Miquelon</td>\n</tr>\n<tr>\n<td>VC</td>\n<td>Saint Vincent and the Grenadines</td>\n</tr>\n<tr>\n<td>WS</td>\n<td>Samoa</td>\n</tr>\n<tr>\n<td>SM</td>\n<td>San Marino</td>\n</tr>\n<tr>\n<td>SA</td>\n<td>Saudi Arabia</td>\n</tr>\n<tr>\n<td>SN</td>\n<td>Senegal</td>\n</tr>\n<tr>\n<td>RS</td>\n<td>Serbia</td>\n</tr>\n<tr>\n<td>CS</td>\n<td>Serbia and Montenegro</td>\n</tr>\n<tr>\n<td>SC</td>\n<td>Seychelles</td>\n</tr>\n<tr>\n<td>SL</td>\n<td>Sierra Leone</td>\n</tr>\n<tr>\n<td>SG</td>\n<td>Singapore</td>\n</tr>\n<tr>\n<td>SK</td>\n<td>Slovakia</td>\n</tr>\n<tr>\n<td>SI</td>\n<td>Slovenia</td>\n</tr>\n<tr>\n<td>SB</td>\n<td>Solomon Islands</td>\n</tr>\n<tr>\n<td>SO</td>\n<td>Somalia</td>\n</tr>\n<tr>\n<td>ZA</td>\n<td>South Africa</td>\n</tr>\n<tr>\n<td>GS</td>\n<td>South Georgia and the South Sandwich Islands</td>\n</tr>\n<tr>\n<td>KR</td>\n<td>South Korea</td>\n</tr>\n<tr>\n<td>ES</td>\n<td>Spain</td>\n</tr>\n<tr>\n<td>LK</td>\n<td>Sri Lanka</td>\n</tr>\n<tr>\n<td>SD</td>\n<td>Sudan</td>\n</tr>\n<tr>\n<td>SR</td>\n<td>Suriname</td>\n</tr>\n<tr>\n<td>SJ</td>\n<td>Svalbard and Jan Mayen</td>\n</tr>\n<tr>\n<td>SZ</td>\n<td>Swaziland</td>\n</tr>\n<tr>\n<td>SE</td>\n<td>Sweden</td>\n</tr>\n<tr>\n<td>CH</td>\n<td>Switzerland</td>\n</tr>\n<tr>\n<td>SY</td>\n<td>Syria</td>\n</tr>\n<tr>\n<td>ST</td>\n<td>São Tomé and Príncipe</td>\n</tr>\n<tr>\n<td>TW</td>\n<td>Taiwan</td>\n</tr>\n<tr>\n<td>TJ</td>\n<td>Tajikistan</td>\n</tr>\n<tr>\n<td>TZ</td>\n<td>Tanzania</td>\n</tr>\n<tr>\n<td>TH</td>\n<td>Thailand</td>\n</tr>\n<tr>\n<td>TL</td>\n<td>Timor-Leste</td>\n</tr>\n<tr>\n<td>TG</td>\n<td>Togo</td>\n</tr>\n<tr>\n<td>TK</td>\n<td>Tokelau</td>\n</tr>\n<tr>\n<td>TO</td>\n<td>Tonga</td>\n</tr>\n<tr>\n<td>TT</td>\n<td>Trinidad and Tobago</td>\n</tr>\n<tr>\n<td>TN</td>\n<td>Tunisia</td>\n</tr>\n<tr>\n<td>TR</td>\n<td>Turkey</td>\n</tr>\n<tr>\n<td>TM</td>\n<td>Turkmenistan</td>\n</tr>\n<tr>\n<td>TC</td>\n<td>Turks and Caicos Islands</td>\n</tr>\n<tr>\n<td>TV</td>\n<td>Tuvalu</td>\n</tr>\n<tr>\n<td>UM</td>\n<td>U.S. Minor Outlying Islands</td>\n</tr>\n<tr>\n<td>PU</td>\n<td>U.S. Miscellaneous Pacific Islands</td>\n</tr>\n<tr>\n<td>VI</td>\n<td>U.S. Virgin Islands</td>\n</tr>\n<tr>\n<td>UG</td>\n<td>Uganda</td>\n</tr>\n<tr>\n<td>UA</td>\n<td>Ukraine</td>\n</tr>\n<tr>\n<td>AE</td>\n<td>United Arab Emirates</td>\n</tr>\n<tr>\n<td>UK</td>\n<td>United Kingdom</td>\n</tr>\n<tr>\n<td>US</td>\n<td>United States</td>\n</tr>\n<tr>\n<td>UY</td>\n<td>Uruguay</td>\n</tr>\n<tr>\n<td>UZ</td>\n<td>Uzbekistan</td>\n</tr>\n<tr>\n<td>VU</td>\n<td>Vanuatu</td>\n</tr>\n<tr>\n<td>VA</td>\n<td>Vatican City</td>\n</tr>\n<tr>\n<td>VE</td>\n<td>Venezuela</td>\n</tr>\n<tr>\n<td>VN</td>\n<td>Vietnam</td>\n</tr>\n<tr>\n<td>WK</td>\n<td>Wake Island</td>\n</tr>\n<tr>\n<td>WF</td>\n<td>Wallis and Futuna</td>\n</tr>\n<tr>\n<td>EH</td>\n<td>Western Sahara</td>\n</tr>\n<tr>\n<td>YE</td>\n<td>Yemen</td>\n</tr>\n<tr>\n<td>ZM</td>\n<td>Zambia</td>\n</tr>\n<tr>\n<td>ZW</td>\n<td>Zimbabwe</td>\n</tr>\n<tr>\n<td>AX</td>\n<td>Åland Islands</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"65fcea29-affd-4d5b-8112-ca8a3221291f"}],"id":"5f94ccad-1dc7-4a66-ad9a-bf8cb7d0f080","_postman_id":"5f94ccad-1dc7-4a66-ad9a-bf8cb7d0f080","description":""}]}