openapi: 3.0.3
info:
title: Paytronix Online Ordering API
version: '1.0'
description: >-
The Paytronix Online Ordering API (Open Dining) powers ordering experiences
across in-store, online web, online app, call-in, call-center, and
drive-through order methods. It exposes restaurant/location discovery, menu
retrieval, fuzzy and geospatial search, and order creation, retrieval, and
submission, connecting ordering systems to the broader Paytronix loyalty and
guest engagement platform. This specification was generated from the public
Open Dining documentation at http://docs.opendining.net and the Online
Ordering Resource Center at https://support.opendining.net.
contact:
name: Kin Lane
email: [email protected]
x-generated-from: documentation
x-source-url: http://docs.opendining.net/api/
x-last-validated: '2026-06-03'
servers:
- url: https://api.opendining.net
description: Open Dining Online Ordering API base URL.
tags:
- name: Restaurants
description: Restaurant and location discovery.
- name: Menu Items
description: Menu item retrieval.
- name: Orders
description: Order creation, retrieval, and submission.
- name: Search
description: Geospatial and full-text search across restaurants and menu items.
paths:
/restaurants/{restaurantId}:
get:
operationId: getRestaurant
summary: Get Restaurant
description: Retrieve a single restaurant/location object by its identifier.
tags: [Restaurants]
parameters:
- name: restaurantId
in: path
required: true
description: Restaurant/location identifier.
schema: {type: string}
responses:
'200':
description: Restaurant object.
content:
application/json:
schema:
$ref: '#/components/schemas/Restaurant'
examples:
GetRestaurant200Example:
summary: Default getRestaurant 200 response
x-microcks-default: true
value:
id: 4b96f1bafc9f100ca79231ef
name: Taqueria Downtown
distance: 1.2
coordinates:
lat: 40.0
lon: -81.0
address: 123 Main St
city: Boston
state: MA
postalCode: '02110'
phone: '+16175551234'
website: 'https://example.com'
organizationId: string
imageUrl: string
description: string
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/menuitems/{menuItemId}:
get:
operationId: getMenuItem
summary: Get Menu Item
description: >-
Retrieve a single menu item by identifier, including its prices and
options. Only GET is supported to serve consumer-facing applications.
tags: [Menu Items]
parameters:
- name: menuItemId
in: path
required: true
description: Menu item identifier.
schema: {type: string, example: 4b96f1bafc9f100ca79231ef}
responses:
'200':
description: Menu item object.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuItem'
examples:
GetMenuItem200Example:
summary: Default getMenuItem 200 response
x-microcks-default: true
value:
id: 4b96f1bafc9f100ca79231ef
name: Chicken Burrito
description: 'Grilled chicken, rice, beans, salsa'
imageUrl: string
prices:
- name: Regular
price: 9.50
options:
- name: Add Guacamole
price: 1.50
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/search/restaurants:
get:
operationId: searchRestaurants
summary: Search Restaurants
description: >-
Search restaurants by location and optional full-text query, returning a
count, a results array, and applicable facets.
tags: [Search]
parameters:
- name: lat
in: query
required: true
description: Latitude of the search center.
schema: {type: number, format: double, example: 40}
- name: lon
in: query
required: true
description: Longitude of the search center.
schema: {type: number, format: double, example: -81}
- name: q
in: query
required: false
description: Fuzzy, weighted full-text search query.
schema: {type: string, example: burrito}
- name: name
in: query
required: false
description: Trailing-wildcard search on the business name.
schema: {type: string}
- name: tags
in: query
required: false
description: Space-separated, URL-encoded tags to restrict results by category.
schema: {type: string}
- name: limit
in: query
required: false
description: Maximum number of results (default 10, max 50).
schema: {type: integer, default: 10, maximum: 50}
- name: skip
in: query
required: false
description: Offset for pagination.
schema: {type: integer, default: 0}
- name: sort
in: query
required: false
description: Sort order, by distance (default) or price.
schema: {type: string, enum: [distance, price], default: distance}
- name: show_closed
in: query
required: false
description: When true, include closed restaurants.
schema: {type: boolean, default: false}
responses:
'200':
description: Restaurant search results.
content:
application/json:
schema:
$ref: '#/components/schemas/RestaurantSearchResults'
examples:
SearchRestaurants200Example:
summary: Default searchRestaurants 200 response
x-microcks-default: true
value:
count: 12
results:
- id: 4b96f1bafc9f100ca79231ef
name: Taqueria Downtown
distance: 1.2
coordinates:
lat: 40.0
lon: -81.0
address: 123 Main St
city: Boston
state: MA
postalCode: '02110'
phone: '+16175551234'
website: 'https://example.com'
organizationId: string
imageUrl: string
description: string
facets: {}
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/search/menuitems:
get:
operationId: searchMenuItems
summary: Search Menu Items
description: >-
Search menu items by location and optional full-text query, returning a
count, a results array (each with a prices array), and applicable facets.
tags: [Search]
parameters:
- name: lat
in: query
required: true
description: Latitude of the search center.
schema: {type: number, format: double, example: 40}
- name: lon
in: query
required: true
description: Longitude of the search center.
schema: {type: number, format: double, example: -81}
- name: q
in: query
required: false
description: Fuzzy, weighted full-text search query.
schema: {type: string, example: burrito}
- name: name
in: query
required: false
description: Trailing-wildcard search on the item name.
schema: {type: string}
- name: tags
in: query
required: false
description: Space-separated, URL-encoded tags to restrict results by category.
schema: {type: string}
- name: limit
in: query
required: false
description: Maximum number of results (default 10, max 50).
schema: {type: integer, default: 10, maximum: 50}
- name: skip
in: query
required: false
description: Offset for pagination.
schema: {type: integer, default: 0}
- name: sort
in: query
required: false
description: Sort order, by distance (default) or price.
schema: {type: string, enum: [distance, price], default: distance}
- name: show_closed
in: query
required: false
description: When true, include unavailable items.
schema: {type: boolean, default: false}
responses:
'200':
description: Menu item search results.
content:
application/json:
schema:
$ref: '#/components/schemas/MenuItemSearchResults'
examples:
SearchMenuItems200Example:
summary: Default searchMenuItems 200 response
x-microcks-default: true
value:
count: 34
results:
- id: 4b96f1bafc9f100ca79231ef
name: Chicken Burrito
description: 'Grilled chicken, rice, beans, salsa'
imageUrl: string
prices:
- name: Regular
price: 9.50
options:
- name: Add Guacamole
price: 1.50
facets: {}
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/orders:
post:
operationId: createOrder
summary: Create Order
description: >-
Create a new order for a restaurant, including line items, the customer,
an optional tip, and an optional delivery address.
tags: [Orders]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrderInput'
examples:
CreateOrderRequestExample:
summary: Default createOrder request
x-microcks-default: true
value:
restaurantId: 4b96f1bafc9f100ca79231ef
items:
- menuItemId: 4b96f1bafc9f100ca79231ef
name: Chicken Burrito
quantity: 2
price: 9.50
options:
- name: string
price: 0
customer:
firstName: Jane
lastName: Doe
email: [email protected]
phone: '+16175551234'
orderMethod: online_app
tip: 3.00
deliveryAddress:
address1: 456 Elm St
address2: string
city: Boston
state: MA
postalCode: '02110'
responses:
'201':
description: Order created.
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
examples:
CreateOrder201Example:
summary: Default createOrder 201 response
x-microcks-default: true
value:
id: 5f1c2d3e4a5b6c7d8e9f0a1b
restaurantId: 4b96f1bafc9f100ca79231ef
items:
- menuItemId: 4b96f1bafc9f100ca79231ef
name: Chicken Burrito
quantity: 2
price: 9.50
options:
- name: string
price: 0
customer:
firstName: Jane
lastName: Doe
email: [email protected]
phone: '+16175551234'
orderMethod: online_app
tip: 3.00
total: 22.00
status: submitted
deliveryAddress:
address1: 456 Elm St
address2: string
city: Boston
state: MA
postalCode: '02110'
createdAt: '2026-06-03T12:00:00Z'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/orders/{orderId}:
get:
operationId: getOrder
summary: Get Order
description: Retrieve the details and current status of a given order by its identifier.
tags: [Orders]
parameters:
- name: orderId
in: path
required: true
description: Order identifier.
schema: {type: string}
responses:
'200':
description: Order object.
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
examples:
GetOrder200Example:
summary: Default getOrder 200 response
x-microcks-default: true
value:
id: 5f1c2d3e4a5b6c7d8e9f0a1b
restaurantId: 4b96f1bafc9f100ca79231ef
items:
- menuItemId: 4b96f1bafc9f100ca79231ef
name: Chicken Burrito
quantity: 2
price: 9.50
options:
- name: string
price: 0
customer:
firstName: Jane
lastName: Doe
email: [email protected]
phone: '+16175551234'
orderMethod: online_app
tip: 3.00
total: 22.00
status: submitted
deliveryAddress:
address1: 456 Elm St
address2: string
city: Boston
state: MA
postalCode: '02110'
createdAt: '2026-06-03T12:00:00Z'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
put:
operationId: updateOrder
summary: Update Order
description: Update an existing order, for example to add items or submit it for payment.
tags: [Orders]
parameters:
- name: orderId
in: path
required: true
description: Order identifier.
schema: {type: string}
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrderInput'
examples:
UpdateOrderRequestExample:
summary: Default updateOrder request
x-microcks-default: true
value:
restaurantId: 4b96f1bafc9f100ca79231ef
items:
- menuItemId: 4b96f1bafc9f100ca79231ef
name: Chicken Burrito
quantity: 2
price: 9.50
options:
- name: string
price: 0
customer:
firstName: Jane
lastName: Doe
email: [email protected]
phone: '+16175551234'
orderMethod: online_app
tip: 3.00
deliveryAddress:
address1: 456 Elm St
address2: string
city: Boston
state: MA
postalCode: '02110'
responses:
'200':
description: Updated order object.
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
examples:
UpdateOrder200Example:
summary: Default updateOrder 200 response
x-microcks-default: true
value:
id: 5f1c2d3e4a5b6c7d8e9f0a1b
restaurantId: 4b96f1bafc9f100ca79231ef
items:
- menuItemId: 4b96f1bafc9f100ca79231ef
name: Chicken Burrito
quantity: 2
price: 9.50
options:
- name: string
price: 0
customer:
firstName: Jane
lastName: Doe
email: [email protected]
phone: '+16175551234'
orderMethod: online_app
tip: 3.00
total: 22.00
status: submitted
deliveryAddress:
address1: 456 Elm St
address2: string
city: Boston
state: MA
postalCode: '02110'
createdAt: '2026-06-03T12:00:00Z'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
Coordinates:
type: object
properties:
lat: {type: number, format: double, example: 40.0}
lon: {type: number, format: double, example: -81.0}
Restaurant:
type: object
properties:
id: {type: string, example: 4b96f1bafc9f100ca79231ef}
name: {type: string, example: Taqueria Downtown}
distance: {type: number, example: 1.2}
coordinates: {$ref: '#/components/schemas/Coordinates'}
address: {type: string, example: 123 Main St}
city: {type: string, example: Boston}
state: {type: string, example: MA}
postalCode: {type: string, example: '02110'}
phone: {type: string, example: '+16175551234'}
website: {type: string, example: 'https://example.com'}
organizationId: {type: string}
imageUrl: {type: string}
description: {type: string}
MenuItem:
type: object
properties:
id: {type: string, example: 4b96f1bafc9f100ca79231ef}
name: {type: string, example: Chicken Burrito}
description: {type: string, example: 'Grilled chicken, rice, beans, salsa'}
imageUrl: {type: string}
prices:
type: array
items:
type: object
properties:
name: {type: string, example: Regular}
price: {type: number, example: 9.50}
options:
type: array
items:
type: object
properties:
name: {type: string, example: Add Guacamole}
price: {type: number, example: 1.50}
Facets:
type: object
description: Applicable search facets such as tags for refining a search.
additionalProperties: true
RestaurantSearchResults:
type: object
properties:
count: {type: integer, example: 12}
results:
type: array
items: {$ref: '#/components/schemas/Restaurant'}
facets: {$ref: '#/components/schemas/Facets'}
MenuItemSearchResults:
type: object
properties:
count: {type: integer, example: 34}
results:
type: array
items: {$ref: '#/components/schemas/MenuItem'}
facets: {$ref: '#/components/schemas/Facets'}
OrderItem:
type: object
properties:
menuItemId: {type: string, example: 4b96f1bafc9f100ca79231ef}
name: {type: string, example: Chicken Burrito}
quantity: {type: integer, example: 2}
price: {type: number, example: 9.50}
options:
type: array
items:
type: object
properties:
name: {type: string}
price: {type: number}
Customer:
type: object
properties:
firstName: {type: string, example: Jane}
lastName: {type: string, example: Doe}
email: {type: string, example: [email protected]}
phone: {type: string, example: '+16175551234'}
DeliveryAddress:
type: object
properties:
address1: {type: string, example: 456 Elm St}
address2: {type: string}
city: {type: string, example: Boston}
state: {type: string, example: MA}
postalCode: {type: string, example: '02110'}
OrderInput:
type: object
required: [restaurantId, items, customer]
properties:
restaurantId: {type: string, example: 4b96f1bafc9f100ca79231ef}
items:
type: array
items: {$ref: '#/components/schemas/OrderItem'}
customer: {$ref: '#/components/schemas/Customer'}
orderMethod:
type: string
enum: [in_store, online_web, online_app, call_in, call_center, drive_through]
example: online_app
tip: {type: number, example: 3.00}
deliveryAddress: {$ref: '#/components/schemas/DeliveryAddress'}
Order:
type: object
properties:
id: {type: string, example: 5f1c2d3e4a5b6c7d8e9f0a1b}
restaurantId: {type: string, example: 4b96f1bafc9f100ca79231ef}
items:
type: array
items: {$ref: '#/components/schemas/OrderItem'}
customer: {$ref: '#/components/schemas/Customer'}
orderMethod: {type: string, example: online_app}
tip: {type: number, example: 3.00}
total: {type: number, example: 22.00}
status:
type: string
enum: [created, submitted, paid, in_progress, completed, cancelled]
example: submitted
deliveryAddress: {$ref: '#/components/schemas/DeliveryAddress'}
createdAt: {type: string, format: date-time}