{
  "info": {
    "_postman_id": "44df2bc8-7268-7358-367c-ea7d9b8f5fcb",
    "name": "Apiq — Unified Travel API (1.64.0) — partner — sandbox",
    "description": "Generated from spec/connect-v1.yaml by tools/postman.mjs — do not edit; regenerate.\n\nAudience: ONLY the operations marked x-audience: partner (a non-public realm; the public collection leaves them out).\n\nContract 1.64.0 · API version 2026-09-30 · spec sha256 fb7233c1b4eaa3ce9936e4ec2c4dfd4524957812cb19ce96391c8ac4286da8c6.\n\nBase URL: the SANDBOX server only. Set {{apiKey}} to a sandbox key (mo_test_…): every operation that accepts a key sends it as X-Api-Key. The few that need a signed-in person send Bearer {{accessToken}} (a session from POST /v1/auth/login); the token endpoint uses Basic {{clientId}}:{{apiKey}}.\n\nPrices are Money: integer minor units + an ISO-4217 currency. Branch on ApiErrorResponse.code + retryable, never on HTTP status alone.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-Api-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://apiq-sandbox.tripproagencysites.com",
      "type": "string"
    },
    {
      "key": "accessToken",
      "value": "",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "string"
    },
    {
      "key": "clientId",
      "value": "",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "dining-partner",
      "description": "The restaurant-partner side of dining: guests, point of sale, reservation sync, menus, profiles, reviews and onboarding, for the restaurants a tenant has linked.",
      "item": [
        {
          "name": "CRM: create (or match) a restaurant guest (v1.7.0) — guest",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/guests",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "guests"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`POST /v1/dining/partner/restaurants/{restaurantId}/guests` · operationId `diningPartnerCreateGuest`\n\nExample: A new guest from the partner CRM\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner. Answers the guest id Example Dining assigns, or the existing guest it matched by e-mail or phone.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"Ada\",\n  \"lastName\": \"Example\",\n  \"email\": \"ada@example.test\",\n  \"phoneNumber\": \"+14155550100\",\n  \"partnerGuestId\": \"crm-88231\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: set a guest's loyalty programme standing (v1.7.0) — gold",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/guests/:guestId/loyalty",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "guests",
                ":guestId",
                "loyalty"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "guestId",
                  "value": "gst_7Q2K9",
                  "description": "The guest id Example Dining assigned"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/restaurants/{restaurantId}/guests/{guestId}/loyalty` · operationId `diningPartnerPutGuestLoyalty`\n\nExample: Gold tier, 1,240 points\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"programName\": \"Harbour Rewards\",\n  \"memberId\": \"HR-55120\",\n  \"tier\": \"Gold\",\n  \"points\": 1240,\n  \"pointsToNextTier\": 760,\n  \"expiresOn\": \"2027-06-30\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: list the restaurant's guest tags (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/tags",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "tags"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/restaurants/{restaurantId}/tags` · operationId `diningPartnerListTags`\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: create or rename a guest tag (v1.7.0) — vip",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/tags/:tagId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "tags",
                ":tagId"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "tagId",
                  "value": "tag_vip",
                  "description": "The tag id (the partner chooses it at create)"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/restaurants/{restaurantId}/tags/{tagId}` · operationId `diningPartnerPutTag`\n\nExample: A VIP tag\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"VIP\",\n  \"category\": \"Guest\",\n  \"icon\": \"star\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: delete a guest tag (v1.7.0)",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/tags/:tagId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "tags",
                ":tagId"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "tagId",
                  "value": "tag_vip",
                  "description": "The tag id (the partner chooses it at create)"
                }
              ]
            },
            "description": "`DELETE /v1/dining/partner/restaurants/{restaurantId}/tags/{tagId}` · operationId `diningPartnerDeleteTag`\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: set a guest's tags (v1.7.0) — vip",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/guests/:guestId/tags",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "guests",
                ":guestId",
                "tags"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "guestId",
                  "value": "gst_7Q2K9",
                  "description": "The guest id Example Dining assigned"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/restaurants/{restaurantId}/guests/{guestId}/tags` · operationId `diningPartnerPutGuestTags`\n\nExample: Tag the guest VIP and vegetarian\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner. The body is the full set; a tag not in it is removed.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tagIds\": [\n    \"tag_vip\",\n    \"tag_veg\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: set the insights the host sees for a guest (v1.7.0) — insights",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/guests/:guestId/insights",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "guests",
                ":guestId",
                "insights"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "guestId",
                  "value": "gst_7Q2K9",
                  "description": "The guest id Example Dining assigned"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/restaurants/{restaurantId}/guests/{guestId}/insights` · operationId `diningPartnerPutGuestInsights`\n\nExample: Two insights\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"insights\": [\n    {\n      \"label\": \"Lifetime visits\",\n      \"value\": \"14\"\n    },\n    {\n      \"label\": \"Favourite wine\",\n      \"value\": \"Albarino\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: set a hotel restaurant guest's stay details (v1.7.0) — stay",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/guests/:guestId/properties",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "guests",
                ":guestId",
                "properties"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "guestId",
                  "value": "gst_7Q2K9",
                  "description": "The guest id Example Dining assigned"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/restaurants/{restaurantId}/guests/{guestId}/properties` · operationId `diningPartnerPutGuestProperties`\n\nExample: In-house hotel guest\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"properties\": [\n    {\n      \"name\": \"Harbour Hotel\",\n      \"roomNumber\": \"1204\",\n      \"checkIn\": \"2026-11-11\",\n      \"checkOut\": \"2026-11-14\",\n      \"vip\": true\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: read the status of a guest's photo (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/guests/:guestId/photo",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "guests",
                ":guestId",
                "photo"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "guestId",
                  "value": "gst_7Q2K9",
                  "description": "The guest id Example Dining assigned"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/restaurants/{restaurantId}/guests/{guestId}/photo` · operationId `diningPartnerGetGuestPhotoStatus`\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: upload a guest's photo (v1.7.0) — photo",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/guests/:guestId/photo",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "guests",
                ":guestId",
                "photo"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "guestId",
                  "value": "gst_7Q2K9",
                  "description": "The guest id Example Dining assigned"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/restaurants/{restaurantId}/guests/{guestId}/photo` · operationId `diningPartnerPutGuestPhoto`\n\nExample: A scanned upload\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner. The image is an uploadId from POST /v1/uploads; Example Dining processes it asynchronously (read the status with GET).",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"uploadId\": \"up_01JA7F3K2Q\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "CRM: delete a guest's photo (v1.7.0)",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/guests/:guestId/photo",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "guests",
                ":guestId",
                "photo"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                },
                {
                  "key": "guestId",
                  "value": "gst_7Q2K9",
                  "description": "The guest id Example Dining assigned"
                }
              ]
            },
            "description": "`DELETE /v1/dining/partner/restaurants/{restaurantId}/guests/{guestId}/photo` · operationId `diningPartnerDeleteGuestPhoto`\n\nExample Dining CRM v3 (D2, OD-874). The platform calls Example Dining as the integration partner on behalf of the restaurant the caller is linked to; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Requires dining:partner.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "POS: list checks in a window (bootstrap) (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/pos/tickets?updatedFrom=2026-11-12T00:00:00Z&updatedTo=2026-11-13T00:00:00Z&limit=100&offset=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "pos",
                "tickets"
              ],
              "query": [
                {
                  "key": "updatedFrom",
                  "value": "2026-11-12T00:00:00Z",
                  "disabled": false,
                  "description": "Inclusive lower bound (UTC)"
                },
                {
                  "key": "updatedTo",
                  "value": "2026-11-13T00:00:00Z",
                  "disabled": false,
                  "description": "Exclusive upper bound (UTC)"
                },
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true,
                  "description": "Page size (1-1000); absent = 100"
                },
                {
                  "key": "offset",
                  "value": "0",
                  "disabled": true,
                  "description": "Rows to skip; absent = 0"
                }
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/restaurants/{restaurantId}/pos/tickets` · operationId `diningPartnerListPosTickets`\n\nExample Dining POS API (D2, OD-874): the partner POS reports checks, lists its restaurants and switches a location on or off. Requires dining:partner; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "POS: send a check (v1.7.0) — closedCheck",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/pos/tickets",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "pos",
                "tickets"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`POST /v1/dining/partner/restaurants/{restaurantId}/pos/tickets` · operationId `diningPartnerCreatePosTicket`\n\nExample: A closed check for a party of two\n\nExample Dining POS API (D2, OD-874): the partner POS reports checks, lists its restaurants and switches a location on or off. Requires dining:partner; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ticketId\": \"chk-55012\",\n  \"reservationId\": \"100123-2141\",\n  \"tableNumber\": \"12\",\n  \"covers\": 2,\n  \"openedAt\": \"2026-11-12T03:31:00Z\",\n  \"closedAt\": \"2026-11-12T05:02:00Z\",\n  \"status\": \"CLOSED\",\n  \"subtotal\": {\n    \"amount\": 11800,\n    \"currency\": \"USD\"\n  },\n  \"tax\": {\n    \"amount\": 1020,\n    \"currency\": \"USD\"\n  },\n  \"tip\": {\n    \"amount\": 2360,\n    \"currency\": \"USD\"\n  },\n  \"total\": {\n    \"amount\": 15180,\n    \"currency\": \"USD\"\n  },\n  \"items\": [\n    {\n      \"name\": \"Market fish\",\n      \"quantity\": 2,\n      \"price\": {\n        \"amount\": 3800,\n        \"currency\": \"USD\"\n      }\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "POS: list the restaurants linked to the partner POS (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/pos/restaurants",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "pos",
                "restaurants"
              ]
            },
            "description": "`GET /v1/dining/partner/pos/restaurants` · operationId `diningPartnerListPosRestaurants`\n\nExample Dining POS API (D2, OD-874): the partner POS reports checks, lists its restaurants and switches a location on or off. Requires dining:partner; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "POS: switch a location on or off (v1.7.0) — activate",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/pos/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "pos",
                "status"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`PATCH /v1/dining/partner/restaurants/{restaurantId}/pos/status` · operationId `diningPartnerSetPosLocationStatus`\n\nExample: Activate the location\n\nExample Dining POS API (D2, OD-874): the partner POS reports checks, lists its restaurants and switches a location on or off. Requires dining:partner; a restaurant the caller has not onboarded is 403 PERMISSION_DENIED details.reason RESTAURANT_NOT_LINKED. Also completes a delayed-email POS onboarding: ACTIVE with the partner location id connects the tile.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"ACTIVE\",\n  \"partnerLocationId\": \"LOC-001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Sync: pull reservations (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/sync/reservations?restaurantId=100123&scheduledFrom=2026-11-12T00:00&scheduledTo=2026-11-13T00:00&updatedAfter=2026-11-10T09:00:00Z&limit=100&offset=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "sync",
                "reservations"
              ],
              "query": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "disabled": false,
                  "description": "The restaurant's supplier id (Example Dining rid)"
                },
                {
                  "key": "scheduledFrom",
                  "value": "2026-11-12T00:00",
                  "disabled": true,
                  "description": "Restaurant-local lower bound (yyyy-MM-ddTHH:mm)"
                },
                {
                  "key": "scheduledTo",
                  "value": "2026-11-13T00:00",
                  "disabled": true,
                  "description": "Restaurant-local upper bound"
                },
                {
                  "key": "updatedAfter",
                  "value": "2026-11-10T09:00:00Z",
                  "disabled": true,
                  "description": "Only rows updated after this instant (UTC)"
                },
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true,
                  "description": "Page size (1-1000); absent = 100"
                },
                {
                  "key": "offset",
                  "value": "0",
                  "disabled": true,
                  "description": "Rows to skip; absent = 0"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/sync/reservations` · operationId `diningPartnerSyncReservations`\n\nExample Dining Sync API v2 (D2, OD-874): pull the restaurant's reservations, guests and POS data, paged by limit and offset; read until page.hasMore is false. Requires dining:partner; the restaurant must be linked to the caller.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Sync: pull guests (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/sync/guests?restaurantId=100123&emailOptIn=true&updatedAfter=2026-11-10T09:00:00Z&limit=100&offset=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "sync",
                "guests"
              ],
              "query": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "disabled": false,
                  "description": "The restaurant's supplier id (Example Dining rid)"
                },
                {
                  "key": "emailOptIn",
                  "value": "true",
                  "disabled": true,
                  "description": "Only guests who opted in to e-mail"
                },
                {
                  "key": "updatedAfter",
                  "value": "2026-11-10T09:00:00Z",
                  "disabled": true,
                  "description": "Only rows updated after this instant (UTC)"
                },
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true,
                  "description": "Page size (1-1000); absent = 100"
                },
                {
                  "key": "offset",
                  "value": "0",
                  "disabled": true,
                  "description": "Rows to skip; absent = 0"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/sync/guests` · operationId `diningPartnerSyncGuests`\n\nExample Dining Sync API v2 (D2, OD-874): pull the restaurant's reservations, guests and POS data, paged by limit and offset; read until page.hasMore is false. Requires dining:partner; the restaurant must be linked to the caller.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Sync: pull POS data matched to reservations (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/sync/pos-data?restaurantId=100123&scheduledFrom=2026-11-12T00:00&scheduledTo=2026-11-13T00:00&limit=100&offset=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "sync",
                "pos-data"
              ],
              "query": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "disabled": false,
                  "description": "The restaurant's supplier id (Example Dining rid)"
                },
                {
                  "key": "scheduledFrom",
                  "value": "2026-11-12T00:00",
                  "disabled": false,
                  "description": "Restaurant-local lower bound"
                },
                {
                  "key": "scheduledTo",
                  "value": "2026-11-13T00:00",
                  "disabled": false,
                  "description": "Restaurant-local upper bound"
                },
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true,
                  "description": "Page size (1-1000); absent = 100"
                },
                {
                  "key": "offset",
                  "value": "0",
                  "disabled": true,
                  "description": "Rows to skip; absent = 0"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/sync/pos-data` · operationId `diningPartnerSyncPosData`\n\nExample Dining Sync API v2 (D2, OD-874): pull the restaurant's reservations, guests and POS data, paged by limit and offset; read until page.hasMore is false. Requires dining:partner; the restaurant must be linked to the caller.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Menus: publish the restaurant's menus (v1.7.0) — dinner",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/menus",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "menus"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`POST /v1/dining/partner/restaurants/{restaurantId}/menus` · operationId `diningPartnerPublishMenus`\n\nExample: One structured menu\n\nExample Dining Menus API publish (D2, OD-874). The full set: what is not in the body is unpublished. Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"menus\": [\n    {\n      \"menuId\": \"mnu-dinner\",\n      \"name\": \"Dinner\",\n      \"currency\": \"USD\",\n      \"sections\": [\n        {\n          \"name\": \"Mains\",\n          \"items\": [\n            {\n              \"name\": \"Market fish\",\n              \"description\": \"Daily catch\",\n              \"price\": {\n                \"amount\": 3800,\n                \"currency\": \"USD\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Profile: update the restaurant's profile content (v1.7.0) — profile",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/profile",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "profile"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/restaurants/{restaurantId}/profile` · operationId `diningPartnerUpdateProfileContent`\n\nExample: Description and links\n\nExample Dining Profile Content API (D2, OD-874). Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"description\": \"Seasonal seafood on the waterfront.\",\n  \"cuisines\": [\n    \"Seafood\",\n    \"Californian\"\n  ],\n  \"dressCode\": \"Smart casual\",\n  \"parking\": \"Valet\",\n  \"websiteUrl\": \"https://harbour-table.example.test\",\n  \"menuUrl\": \"https://harbour-table.example.test/menu\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Reviews: list a restaurant's reviews (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/reviews?restaurantId=100123&limit=5",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "reviews"
              ],
              "query": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "disabled": false,
                  "description": "The restaurant's supplier id (Example Dining rid)"
                },
                {
                  "key": "limit",
                  "value": "5",
                  "disabled": true,
                  "description": "How many of the newest reviews (1-100); absent = 20"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/reviews` · operationId `diningPartnerListReviews`\n\nExample Dining Reviews API (D2, OD-874). Requires dining:partner; the restaurant must be linked to the caller.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Reviews: rating summaries for one or more restaurants (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/reviews/summary?restaurantIds=100123,100456",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "reviews",
                "summary"
              ],
              "query": [
                {
                  "key": "restaurantIds",
                  "value": "100123,100456",
                  "disabled": false,
                  "description": "Comma-separated rids (at most 50)"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/reviews/summary` · operationId `diningPartnerGetReviewSummary`\n\nExample Dining Reviews API (D2, OD-874). Requires dining:partner; the restaurant must be linked to the caller.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Reviews: reply to a review (v1.7.0) — thanks",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/reviews/:reviewId/replies?restaurantId=100123",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "reviews",
                ":reviewId",
                "replies"
              ],
              "query": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "disabled": false,
                  "description": "The restaurant's supplier id (Example Dining rid)"
                }
              ],
              "variable": [
                {
                  "key": "reviewId",
                  "value": "OT-100123-2141-1700000001",
                  "description": "Example Dining's review id"
                }
              ]
            },
            "description": "`POST /v1/dining/partner/reviews/{reviewId}/replies` · operationId `diningPartnerReplyToReview`\n\nExample: A public reply\n\nExample Dining Reviews API (D2, OD-874). Requires dining:partner; the restaurant must be linked to the caller. One public reply per review.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"text\": \"Thank you, we hope to see you again soon.\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Directory: the restaurants available to the partner (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/directory?limit=100&offset=0&privateDining=false",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "directory"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true,
                  "description": "Page size (1-1000); absent = 100"
                },
                {
                  "key": "offset",
                  "value": "0",
                  "disabled": true,
                  "description": "Rows to skip; absent = 0"
                },
                {
                  "key": "privateDining",
                  "value": "false",
                  "disabled": true,
                  "description": "Only restaurants that take private-dining leads"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/directory` · operationId `diningPartnerDirectory`\n\nExample Dining Directory API (D2, OD-874), paged by limit and offset. A truncated answer carries warning <SUPPLIER>_DIRECTORY_TRUNCATED. Requires dining:partner.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Private dining: send a lead to a restaurant's private-dining team (v1.7.0) — birthday",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/restaurants/:restaurantId/private-dining/leads",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "restaurants",
                ":restaurantId",
                "private-dining",
                "leads"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`POST /v1/dining/partner/restaurants/{restaurantId}/private-dining/leads` · operationId `diningPartnerCreatePrivateDiningLead`\n\nExample: A birthday dinner for 18\n\nExample Dining Private Dining Lead API (D2, OD-874), for a partner that collects leads itself (an event planner). The guest side of the same call is POST /v1/enquiries. Validated as Example Dining would and sent ONCE; an unanswered call is ACCEPTED with warning <SUPPLIER>_LEAD_UNCONFIRMED and is never re-sent. Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"contact\": {\n    \"firstName\": \"Ada\",\n    \"lastName\": \"Example\",\n    \"email\": \"ada@example.test\",\n    \"phoneNumber\": \"+14155550100\"\n  },\n  \"eventDate\": \"2026-12-12\",\n  \"eventTime\": \"18:30\",\n  \"partySize\": 18,\n  \"eventType\": \"Birthday\",\n  \"flexibleDate\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: OAuth connect start, the authorization URL Example Dining redirects a restaurant to (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/oauth/authorize?redirect_uri=https://ot.example.test/redirect&state=syn-ot-state-0001&client_id=syn-ot-client&code_challenge=<string>&code_challenge_method=S256",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "oauth",
                "authorize"
              ],
              "query": [
                {
                  "key": "redirect_uri",
                  "value": "https://ot.example.test/redirect",
                  "disabled": false,
                  "description": "Example Dining's callback URL"
                },
                {
                  "key": "state",
                  "value": "syn-ot-state-0001",
                  "disabled": false,
                  "description": "Example Dining's opaque state (encoded OTP; rid, origin, partner id)"
                },
                {
                  "key": "client_id",
                  "value": "syn-ot-client",
                  "disabled": true,
                  "description": "The client id the platform issued to Example Dining (standard integrations)"
                },
                {
                  "key": "code_challenge",
                  "value": "<string>",
                  "disabled": true,
                  "description": "PKCE (optional): the S256 challenge; the token exchange then needs code_verifier"
                },
                {
                  "key": "code_challenge_method",
                  "value": "S256",
                  "disabled": true,
                  "description": "PKCE: S256 only"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/onboarding/oauth/authorize` · operationId `diningPartnerOauthStart`\n\nIntegrations Marketplace onboarding (D2, OD-874). Example Dining sends the restaurant's browser here with redirect_uri and state (and client_id for a standard integration). Example Dining's state is EXAMPLEDINING'S: it generates it (an encoded OTP; rid, origin, partner id) and verifies it on its own callback, so the platform stores it with the onboarding and returns it to Example Dining's redirect_uri byte for byte, never altered or re-minted (collection: POS and Standard Onboarding, OAuth Flow). For its OWN leg (this redirect, the platform sign-in and location picker, then the callback below) the platform generates a separate state: opaque, unguessable, single-use, valid 10 minutes, bound to the onboarding session, Example Dining's state and redirect_uri. It travels as the session parameter of the callback and is answered as state in the JSON form. redirect_uri must be one of the Example Dining redirect URIs the platform registered; otherwise 400 VALIDATION details.field redirect_uri and nothing is redirected. A missing Example Dining state is 400 VALIDATION details.field state. PKCE is optional: when Example Dining sends code_challenge (S256) the token exchange then requires code_verifier. Anonymous by design: the state is the binding.",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: OAuth connect callback, back to Example Dining with an authorization code (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/oauth/callback?session=onb_01JB2C3D&locationId=LOC-001",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "oauth",
                "callback"
              ],
              "query": [
                {
                  "key": "session",
                  "value": "onb_01JB2C3D",
                  "disabled": false,
                  "description": "The onboarding session the start bound"
                },
                {
                  "key": "locationId",
                  "value": "LOC-001",
                  "disabled": false,
                  "description": "The partner location the user chose"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/onboarding/oauth/callback` · operationId `diningPartnerOauthCallback`\n\nIntegrations Marketplace onboarding (D2, OD-874). Where the platform sign-in returns once the tenant user has chosen the location. session is the platform's server-generated state from authorize: a missing, unknown, expired, already used or mismatched one (not the session this browser started, or bound to a different redirect_uri) is 400 VALIDATION details.field session, details.reason ONBOARDING_STATE_INVALID, and nothing is redirected or minted. On success the platform spends the state, mints a single-use authorization code (60 s) bound to it, the chosen location and the redirect_uri, and answers 302 to Example Dining's redirect_uri with code and Example Dining's OWN state, unchanged. Example Dining then exchanges the code at POST /v1/dining/partner/onboarding/oauth/token (with code_verifier when it used PKCE).",
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: OAuth token exchange for Example Dining (v1.7.0) — authorizationCode",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/oauth/token",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "oauth",
                "token"
              ]
            },
            "description": "`POST /v1/dining/partner/onboarding/oauth/token` · operationId `diningPartnerOauthToken`\n\nExample: Exchange the code\n\nIntegrations Marketplace onboarding (D2, OD-874). Example Dining exchanges the code from the callback (or a refresh token) for an access token it then uses on the link and validation calls, and learns the location it maps the restaurant to. RFC 6749: the client authenticates with client_id + client_secret (body or HTTP Basic) or PKCE code_verifier; a bad client, code or verifier is 400 VALIDATION details.reason INVALID_GRANT. Tokens are opaque, scoped to the one restaurant link, at most 2 h; the refresh token is single-use and rotates.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"grant_type\": \"authorization_code\",\n  \"code\": \"syn-ot-auth-code-0001\",\n  \"redirect_uri\": \"https://ot.example.test/redirect\",\n  \"client_id\": \"syn-ot-client\",\n  \"client_secret\": \"syn-ot-client-secret-placeholder\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "noauth"
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: the partner locations Example Dining may link a restaurant to (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/locations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "locations"
              ]
            },
            "description": "`GET /v1/dining/partner/onboarding/locations` · operationId `diningPartnerOnboardingLocations`\n\nIntegrations Marketplace onboarding (D2, OD-874). Example Dining's Location API call, made with the access token from the token exchange; answers the locations of the tenant that connected.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: validate a unique identifier (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/identifiers/:partnerIdentifier",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "identifiers",
                ":partnerIdentifier"
              ],
              "variable": [
                {
                  "key": "partnerIdentifier",
                  "value": "LOC-001",
                  "description": "The partner's unique location identifier"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/onboarding/identifiers/{partnerIdentifier}` · operationId `diningPartnerValidateIdentifier`\n\nIntegrations Marketplace onboarding (D2, OD-874). Example Dining's Validation API call in the unique-identifier flow: is this partner identifier a live location of ours, and not already linked elsewhere? 404 NOT_FOUND when it is unknown; 409 CONFLICT details.reason IDENTIFIER_ALREADY_LINKED when another restaurant holds it.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: link a restaurant to a partner location (unique identifier or OAuth) (v1.7.0) — link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/links",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "links"
              ]
            },
            "description": "`POST /v1/dining/partner/onboarding/links` · operationId `diningPartnerLinkLocation`\n\nExample: Link rid 100123 to LOC-001\n\nIntegrations Marketplace onboarding (D2, OD-874). Example Dining's Onboarding API call: from now on the restaurant (rid) is served for the tenant that owns the location. Called with the OAuth access token, or with the integration key in the unique-identifier flow. Idempotent per rid + identifier.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"rid\": \"100123\",\n  \"partner_identifier\": \"LOC-001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: unlink (offboard) a restaurant (v1.7.0) — unlink",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/links/:restaurantId:unlink",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "links",
                ":restaurantId:unlink"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`POST /v1/dining/partner/onboarding/links/{restaurantId}:unlink` · operationId `diningPartnerUnlinkLocation`\n\nExample: Unlink rid 100123\n\nIntegrations Marketplace onboarding (D2, OD-874). Example Dining's Offboarding API call: the restaurant disconnected the integration; the platform stops serving it for the tenant.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"rid\": \"100123\",\n  \"partner_identifier\": \"LOC-001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: read the onboarding status of a restaurant (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/status/:restaurantId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "status",
                ":restaurantId"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`GET /v1/dining/partner/onboarding/status/{restaurantId}` · operationId `diningPartnerGetOnboardingStatus`\n\nIntegrations Marketplace onboarding (D2, OD-874). Whatever channel linked it (OAuth, unique identifier, delayed e-mail). NONE when the restaurant never connected. Requires dining:partner.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: report the delayed-email onboarding status of a restaurant (v1.7.0) — pending",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/status/:restaurantId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "status",
                ":restaurantId"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/onboarding/status/{restaurantId}` · operationId `diningPartnerSetOnboardingStatus`\n\nExample: Setup in progress\n\nIntegrations Marketplace onboarding (D2, OD-874). The delayed-email flow: Example Dining e-mailed the partner a restaurant's connect request; the partner reports PENDING (with the configured step) while it sets up, ACTIVE with its location id to connect the tile, or INACTIVE to offboard. The platform forwards it to Example Dining's integration-status API. Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"PENDING\",\n  \"step\": \"user_request_sent\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Onboarding: report the delayed-email onboarding status of a restaurant (v1.7.0) — active",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/status/:restaurantId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "status",
                ":restaurantId"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/onboarding/status/{restaurantId}` · operationId `diningPartnerSetOnboardingStatus`\n\nExample: Setup done; connect the tile\n\nIntegrations Marketplace onboarding (D2, OD-874). The delayed-email flow: Example Dining e-mailed the partner a restaurant's connect request; the partner reports PENDING (with the configured step) while it sets up, ACTIVE with its location id to connect the tile, or INACTIVE to offboard. The platform forwards it to Example Dining's integration-status API. Requires dining:partner.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"ACTIVE\",\n  \"locationId\": \"LOC-001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Locations: list the tenant's partner locations (v1.7.0)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/locations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "locations"
              ]
            },
            "description": "`GET /v1/dining/partner/locations` · operationId `diningPartnerListLocations`\n\nPartner location management (v1.7.0; PARTNER lane). The partner locations a tenant offers Example Dining to link restaurants to: what the Example Dining-facing GET /v1/dining/partner/onboarding/locations and the identifier validation answer. Until this release the backend read them from credential material; they are now tenant data. Requires dining:partner. Listed at /v1/dining/partner/locations because GET /v1/dining/partner/onboarding/locations is the call Example Dining makes with its OAuth token.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Locations: create or replace the partner location for a restaurant (v1.7.0) — downtown",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/locations/:restaurantId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "locations",
                ":restaurantId"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`PUT /v1/dining/partner/onboarding/locations/{restaurantId}` · operationId `diningPartnerPutLocation`\n\nExample: The downtown location for rid 100123\n\nPartner location management (v1.7.0; PARTNER lane). The partner locations a tenant offers Example Dining to link restaurants to: what the Example Dining-facing GET /v1/dining/partner/onboarding/locations and the identifier validation answer. Until this release the backend read them from credential material; they are now tenant data. Requires dining:partner. Keyed by the Example Dining restaurant id the location serves. partner_identifier must be unique within the tenant; one held by another restaurant of the tenant is 409 CONFLICT details.reason IDENTIFIER_ALREADY_LINKED. Idempotent per body.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"partner_identifier\": \"LOC-001\",\n  \"name\": \"Harbour Table\",\n  \"state\": \"active\",\n  \"address\": {\n    \"line1\": \"1 Pier Way\",\n    \"city\": \"San Francisco\",\n    \"region\": \"CA\",\n    \"postalCode\": \"94105\",\n    \"countryCode\": \"US\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Locations: delete a restaurant's partner location (v1.7.0)",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Mandatory on mutations (03 §7): **48h TTL** (fixed by DR-16, closing OD-01); replay with same body-hash returns the original response with Idempotency-Replayed true; same key + different body is 409 IDEMPOTENCY_CONFLICT; in-flight duplicate is 409 IDEMPOTENCY_IN_PROGRESS."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/v1/dining/partner/onboarding/locations/:restaurantId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "v1",
                "dining",
                "partner",
                "onboarding",
                "locations",
                ":restaurantId"
              ],
              "variable": [
                {
                  "key": "restaurantId",
                  "value": "100123",
                  "description": "The restaurant's supplier id (Example Dining rid), as text"
                }
              ]
            },
            "description": "`DELETE /v1/dining/partner/onboarding/locations/{restaurantId}` · operationId `diningPartnerDeleteLocation`\n\nPartner location management (v1.7.0; PARTNER lane). The partner locations a tenant offers Example Dining to link restaurants to: what the Example Dining-facing GET /v1/dining/partner/onboarding/locations and the identifier validation answer. Until this release the backend read them from credential material; they are now tenant data. Requires dining:partner. A location still linked at Example Dining is 409 CONFLICT details.reason LOCATION_LINKED: unlink (offboard) it first. Unknown is 404.",
            "auth": {
              "type": "apikey",
              "apikey": [
                {
                  "key": "key",
                  "value": "X-Api-Key",
                  "type": "string"
                },
                {
                  "key": "value",
                  "value": "{{apiKey}}",
                  "type": "string"
                },
                {
                  "key": "in",
                  "value": "header",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        }
      ]
    }
  ]
}
