openapi: 3.0.3 info: title: SpotOn Reserve Availability Menu Items API description: The SpotOn Reserve API (powered by SeatNinja) lets partners integrate reservation, waitlist, and guest-management workflows into the SpotOn Reserve product. It supports listing accessible restaurants, checking available reservation times, creating and managing reservations, retrieving wait times, and adding guests to a waitlist. Authentication uses an API key supplied via the x-api-key request header, scoped to specific restaurants. The sandbox environment enforces daily and hourly request quotas; production has no documented rate limit. version: v2 contact: name: SpotOn Reserve Developer Center url: https://developers.spoton.com/reserve/docs/getting-started x-generated-from: documentation x-last-validated: '2026-06-03' servers: - url: https://api.seatninja.com description: Production - url: https://sandbox.seatninja.com description: Sandbox security: - apiKeyAuth: [] tags: - name: Menu Items description: Menu item catalog for a location. paths: /locations/{locationId}/menu-items: get: operationId: listMenuItems summary: SpotOn List Menu Items description: Retrieve all menu items configured for a location. tags: - Menu Items parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: A list of menu items for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/MenuItemCatalog' examples: ListMenuItems200Example: summary: Default listMenuItems 200 response x-microcks-default: true value: - id: abc123 locationId: abc123 deleted: false available: false name: Smoke's Burgers openItem: false reportCategoryId: abc123 standardPriceAmount: '12.50' plu: '12345' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/menu-items/{menuItemId}: get: operationId: getMenuItem summary: SpotOn Get Menu Item description: Retrieve a single menu item by its unique identifier for a location. tags: - Menu Items parameters: - $ref: '#/components/parameters/LocationId' - name: menuItemId in: path required: true description: The unique identifier for the menu item. schema: type: string responses: '200': description: The requested menu item. content: application/json: schema: $ref: '#/components/schemas/MenuItemCatalog' examples: GetMenuItem200Example: summary: Default getMenuItem 200 response x-microcks-default: true value: id: abc123 locationId: abc123 deleted: false available: false name: Smoke's Burgers openItem: false reportCategoryId: abc123 standardPriceAmount: '12.50' plu: '12345' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: responses: Forbidden: description: The API key does not have access to the requested location. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource does not exist. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: The API key is missing or invalid. content: application/json: schema: $ref: '#/components/schemas/Error' ServerError: description: An unexpected server error occurred. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Error: type: object description: A standard error response. properties: message: type: string description: A human-readable description of the error. example: example code: type: string description: A machine-readable error code. example: A1B2 MenuItemCatalog: type: object description: A menu item in a location's catalog. properties: id: type: string description: Unique menu item identifier. example: abc123 locationId: type: string description: Unique location identifier. example: abc123 deleted: type: boolean description: Whether the menu item is marked as deleted. example: false available: type: boolean description: Whether the menu item is available at the location. example: false name: type: string description: Menu item name. example: Smoke's Burgers openItem: type: boolean description: Whether the operator can override the item name at the POS. example: false reportCategoryId: type: string description: Unique report category identifier the item belongs to. example: abc123 standardPriceAmount: type: string description: Standard price of the item in US dollars, as a decimal string. example: '12.50' plu: type: string description: Price look-up (PLU) identifier for the menu item. example: '12345' parameters: LocationId: name: locationId in: path required: true description: The unique identifier for the location. schema: type: string securitySchemes: apiKeyAuth: type: apiKey in: header name: x-api-key description: API key scoped to specific restaurants.