Skip to main content

EPOS Data API (1.0)

Download OpenAPI specification:Download

A proposal Open API spec for OMNI ordering system for a single Location/Account.

Core modules:

  • Tables
  • Areas (prerequisite: tables)
  • Orders (prerequisite: tables)
  • Parties (prerequisite: tables)
  • Reservations (prerequisites: tables & parties)

Tables must be implemented at minimum. Other API modules can generally be implemented independently on top of this, with a small number of fields affected in other modules (for example, if Parties are implemented & the information is known, a partyId should be attached to an Order's dineInDetails)

Areas

List areas

Responses

Response Schema: application/json
Array
id
required
string

Unique ID of the area

name
required
string

User friendly name of the area

waiterIds
Array of strings

Request samples

import http.client

conn = http.client.HTTPSConnection("virtserver.swaggerhub.com")

conn.request("GET", "/DojoPaymentProducts/EPOS-Gateway-API/1.0/v1/areas")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Response samples

Content type
application/json
[
  • {
    }
]

Orders

Create an order

Create an Order on the EPOS

Request Body schema: application/json
required
required
Array of objects

The line items purchased by the customer.

note
string

Order note

object
Array of objects

List of discounts applied to the order

required
object
Array of objects

Taxes applied to the order

object
reference
string

Human readable order id

dojoOrderId
required
string

The Dojo API order id

required
Array of objects
required
Dine In (object) or Collection (object)

Details about the order including the type and the details.

Responses

Response Schema: application/json
id
required
string

Order id

Array of objects

The line items purchased by the customer.

note
string
object
Array of objects

List of discounts applied to the order

Array of objects

Taxes applied to the order

status
required
string
Enum: "New" "Submitted" "Confirmed" "Accepted" "Preparing" "Prepared" "Ready" "Finalized" "Canceled" "Failed"
createdAt
string <date-time>

The creation date, in ISO 8601 UTC format.

updatedAt
string <date-time>

The timestamp of the update date, in ISO 8601 UTC format.

object
Array of objects
payable
boolean

Flag to indicate if the order is able to be paid for.

object
object
reference
string

Human readable order id

object
required
Dine In (object) or Collection (object)

Details about the order including the type and the details.

Request samples

Content type
application/json
{
  • "items": [
    ],
  • "totalAmount": {
    },
  • "dojoOrderId": "string",
  • "payments": [
    ],
  • "details": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "items": [
    ],
  • "note": "string",
  • "customer": {
    },
  • "discounts": [
    ],
  • "taxLines": [
    ],
  • "status": "New",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "totalAmount": {
    },
  • "payments": [
    ],
  • "payable": true,
  • "paidAmount": {
    },
  • "serviceChargeAmount": {
    },
  • "reference": "string",
  • "tipsAmount": {
    },
  • "details": {
    }
}

Get an order by id

path Parameters
orderId
required
string

Responses

Response Schema: application/json
id
required
string

Order id

Array of objects

The line items purchased by the customer.

note
string
object
Array of objects

List of discounts applied to the order

Array of objects

Taxes applied to the order

status
required
string
Enum: "New" "Submitted" "Confirmed" "Accepted" "Preparing" "Prepared" "Ready" "Finalized" "Canceled" "Failed"
createdAt
string <date-time>

The creation date, in ISO 8601 UTC format.

updatedAt
string <date-time>

The timestamp of the update date, in ISO 8601 UTC format.

object
Array of objects
payable
boolean

Flag to indicate if the order is able to be paid for.

object
object
reference
string

Human readable order id

object
required
Dine In (object) or Collection (object)

Details about the order including the type and the details.

Request samples

import http.client

conn = http.client.HTTPSConnection("virtserver.swaggerhub.com")

conn.request("GET", "/DojoPaymentProducts/EPOS-Gateway-API/1.0/v1/orders/%7BorderId%7D")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Response samples

Content type
application/json
{
  • "id": "string",
  • "items": [
    ],
  • "note": "string",
  • "customer": {
    },
  • "discounts": [
    ],
  • "taxLines": [
    ],
  • "status": "New",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "totalAmount": {
    },
  • "payments": [
    ],
  • "payable": true,
  • "paidAmount": {
    },
  • "serviceChargeAmount": {
    },
  • "reference": "string",
  • "tipsAmount": {
    },
  • "details": {
    }
}

Cancel an order by id

Cancel by order id

path Parameters
orderId
required
string

Responses

Response Schema: application/json
id
required
string

Order id

Array of objects

The line items purchased by the customer.

note
string
object
Array of objects

List of discounts applied to the order

Array of objects

Taxes applied to the order

status
required
string
Enum: "New" "Submitted" "Confirmed" "Accepted" "Preparing" "Prepared" "Ready" "Finalized" "Canceled" "Failed"
createdAt
string <date-time>

The creation date, in ISO 8601 UTC format.

updatedAt
string <date-time>

The timestamp of the update date, in ISO 8601 UTC format.

object
Array of objects
payable
boolean

Flag to indicate if the order is able to be paid for.

object
object
reference
string

Human readable order id

object
required
Dine In (object) or Collection (object)

Details about the order including the type and the details.

Request samples

import http.client

conn = http.client.HTTPSConnection("virtserver.swaggerhub.com")

conn.request("DELETE", "/DojoPaymentProducts/EPOS-Gateway-API/1.0/v1/orders/%7BorderId%7D")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Response samples

Content type
application/json
{
  • "id": "string",
  • "items": [
    ],
  • "note": "string",
  • "customer": {
    },
  • "discounts": [
    ],
  • "taxLines": [
    ],
  • "status": "New",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "totalAmount": {
    },
  • "payments": [
    ],
  • "payable": true,
  • "paidAmount": {
    },
  • "serviceChargeAmount": {
    },
  • "reference": "string",
  • "tipsAmount": {
    },
  • "details": {
    }
}

Search orders

Request Body schema: application/json
required
object

Details for an order-in order

payableOnly
boolean

Return only orders where payable=true

object

A cursor for use in pagination.

Responses

Response Schema: application/json
Array of objects
before
string
after
string

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "before": "string",
  • "after": "string"
}

Record Payment

path Parameters
orderId
required
string
Request Body schema: application/json
required
paymentIntentId
required
string
required
object
object

Responses

Response Schema: application/json
id
required
string

Order id

Array of objects

The line items purchased by the customer.

note
string
object
Array of objects

List of discounts applied to the order

Array of objects

Taxes applied to the order

status
required
string
Enum: "New" "Submitted" "Confirmed" "Accepted" "Preparing" "Prepared" "Ready" "Finalized" "Canceled" "Failed"
createdAt
string <date-time>

The creation date, in ISO 8601 UTC format.

updatedAt
string <date-time>

The timestamp of the update date, in ISO 8601 UTC format.

object
Array of objects
payable
boolean

Flag to indicate if the order is able to be paid for.

object
object
reference
string

Human readable order id

object
required
Dine In (object) or Collection (object)

Details about the order including the type and the details.

Request samples

Content type
application/json
{
  • "paymentIntentId": "string",
  • "paidAmount": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "items": [
    ],
  • "note": "string",
  • "customer": {
    },
  • "discounts": [
    ],
  • "taxLines": [
    ],
  • "status": "New",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "totalAmount": {
    },
  • "payments": [
    ],
  • "payable": true,
  • "paidAmount": {
    },
  • "serviceChargeAmount": {
    },
  • "reference": "string",
  • "tipsAmount": {
    },
  • "details": {
    }
}

Parties

Create party

Create a new party in the POS domain.

Request Body schema: application/json
name
string
covers
integer
tableIds
required
Array of strings non-empty
status
string
startTime
required
string <date-time>

When the party was seated. ISO8601 formatted, ms precise.

expectedEndTime
string <date-time>

When the party is expected to leave, if known. ISO8601 formatted, ms precise.

hostNotes
string
guestRequests
string
reservationId
string
object

Information about payments captured pre-arrival to secure the reservation.

Responses

Response Schema: application/json
id
required
string

The EPOS-internal ID for this party. Must be globally unique within the EPOS' domain.

name
string

The human-readable name, typically the name of the lead guest.

covers
integer

The number of covers this party occupies.

tableIds
required
Array of strings non-empty

The set of tables this party is currently sat across.

status
required
string non-empty

An arbitrary description of the party's current status - typically used to show where in their journey the party is, such as "partially arrived", "ordered" or "paying"/"paid".

startTime
required
string <date-time>

The time the party was seated. ISO8601 formatted, millisecond precision.

expectedEndTime
string <date-time>

The time the party is expected to depart, if known. ISO8601 formatted, millisecond precision.

endTime
string <date-time>

The time the party actually departed. ISO8601 formatted, millisecond precision.

hostNotes
string

Host-written notes about the party. Not surfaced to the Guest(s).

guestRequests
string

Guest-written requests for the party. Surfaced to & editable by the Guest(s). May not be edited by the EPOS partner, as this may contain dietary requirements set by the Guest.

reservationId
string

If reservations are implemented & this party has an associated reservation, the ID of the reservation this party corresponds to.

object

Information about payments captured pre-arrival to secure the reservation.

Request samples

Content type
application/json
{
  • "name": "Martin B.",
  • "covers": 4,
  • "tableIds": [
    ],
  • "startTime": "2024-08-12T09:30:00.000Z",
  • "expectedEndTime": "2024-08-12T11:00:00.000Z",
  • "guestRequests": "nut allergy; gluten intolerance; please could we have a table next to a window?",
  • "hostNotes": "called ahead to notify kitchen of dietary requirements - confirm upon arrival",
  • "reservationId": "reservation-2024-08-12-0028",
  • "deposit": {
    }
}

Response samples

Content type
application/json
{
  • "id": "party-2024-08-12-0001",
  • "startTime": "2024-08-12T09:30:00.000Z",
  • "status": "Ordered",
  • "tableIds": [
    ]
}

Search parties

Retrieve the list of known seated parties. By default, this endpoint should exclude parties with endTime set, including them only when completed: true

Request Body schema: application/json
required
object

A cursor for use in pagination.

completed
boolean
tableId
string

Responses

Response Schema: application/json
Array of objects
before
string
after
string

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "before": "string",
  • "after": "string"
}

Get party

Retrieves a specific party.

path Parameters
partyId
required
string

The ID of the party to retrieve.

Responses

Response Schema: application/json
id
required
string

The EPOS-internal ID for this party. Must be globally unique within the EPOS' domain.

name
string

The human-readable name, typically the name of the lead guest.

covers
integer

The number of covers this party occupies.

tableIds
required
Array of strings non-empty

The set of tables this party is currently sat across.

status
required
string non-empty

An arbitrary description of the party's current status - typically used to show where in their journey the party is, such as "partially arrived", "ordered" or "paying"/"paid".

startTime
required
string <date-time>

The time the party was seated. ISO8601 formatted, millisecond precision.

expectedEndTime
string <date-time>

The time the party is expected to depart, if known. ISO8601 formatted, millisecond precision.

endTime
string <date-time>

The time the party actually departed. ISO8601 formatted, millisecond precision.

hostNotes
string

Host-written notes about the party. Not surfaced to the Guest(s).

guestRequests
string

Guest-written requests for the party. Surfaced to & editable by the Guest(s). May not be edited by the EPOS partner, as this may contain dietary requirements set by the Guest.

reservationId
string

If reservations are implemented & this party has an associated reservation, the ID of the reservation this party corresponds to.

object

Information about payments captured pre-arrival to secure the reservation.

Request samples

import http.client

conn = http.client.HTTPSConnection("virtserver.swaggerhub.com")

conn.request("GET", "/DojoPaymentProducts/EPOS-Gateway-API/1.0/v1/parties/%7BpartyId%7D")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Response samples

Content type
application/json
{
  • "id": "party-2024-08-12-0001",
  • "startTime": "2024-08-12T09:30:00.000Z",
  • "status": "Ordered",
  • "tableIds": [
    ]
}

Update party

Sets the party's details to those provided.

path Parameters
partyId
required
string

The ID of the party to update. It is an error for this ID not to match the one in the request body - partners must reject requests with mismatched ID values.

Request Body schema: application/json
id
required
string

The EPOS-internal ID for this party. Must be globally unique within the EPOS' domain.

name
string

The human-readable name, typically the name of the lead guest.

covers
integer

The number of covers this party occupies.

tableIds
required
Array of strings non-empty

The set of tables this party is currently sat across.

status
required
string non-empty

An arbitrary description of the party's current status - typically used to show where in their journey the party is, such as "partially arrived", "ordered" or "paying"/"paid".

startTime
required
string <date-time>

The time the party was seated. ISO8601 formatted, millisecond precision.

expectedEndTime
string <date-time>

The time the party is expected to depart, if known. ISO8601 formatted, millisecond precision.

endTime
string <date-time>

The time the party actually departed. ISO8601 formatted, millisecond precision.

hostNotes
string

Host-written notes about the party. Not surfaced to the Guest(s).

guestRequests
string

Guest-written requests for the party. Surfaced to & editable by the Guest(s). May not be edited by the EPOS partner, as this may contain dietary requirements set by the Guest.

reservationId
string

If reservations are implemented & this party has an associated reservation, the ID of the reservation this party corresponds to.

object

Information about payments captured pre-arrival to secure the reservation.

Responses

Response Schema: application/json
id
required
string

The EPOS-internal ID for this party. Must be globally unique within the EPOS' domain.

name
string

The human-readable name, typically the name of the lead guest.

covers
integer

The number of covers this party occupies.

tableIds
required
Array of strings non-empty

The set of tables this party is currently sat across.

status
required
string non-empty

An arbitrary description of the party's current status - typically used to show where in their journey the party is, such as "partially arrived", "ordered" or "paying"/"paid".

startTime
required
string <date-time>

The time the party was seated. ISO8601 formatted, millisecond precision.

expectedEndTime
string <date-time>

The time the party is expected to depart, if known. ISO8601 formatted, millisecond precision.

endTime
string <date-time>

The time the party actually departed. ISO8601 formatted, millisecond precision.

hostNotes
string

Host-written notes about the party. Not surfaced to the Guest(s).

guestRequests
string

Guest-written requests for the party. Surfaced to & editable by the Guest(s). May not be edited by the EPOS partner, as this may contain dietary requirements set by the Guest.

reservationId
string

If reservations are implemented & this party has an associated reservation, the ID of the reservation this party corresponds to.

object

Information about payments captured pre-arrival to secure the reservation.

Request samples

Content type
application/json
{
  • "id": "party-2024-08-12-0001",
  • "startTime": "2024-08-12T09:30:00.000Z",
  • "status": "Ordered",
  • "tableIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "party-2024-08-12-0001",
  • "startTime": "2024-08-12T09:30:00.000Z",
  • "status": "Ordered",
  • "tableIds": [
    ]
}

Reservations

Create reservation

Create a new reservation in the POS domain.

Request Body schema: application/json
name
required
string
covers
required
integer
startTime
required
string <date-time>

When the reservation is expected to arrive. ISO8601 formatted, ms precise.

endTime
required
string <date-time>

When the reservation is expected to depart. ISO8601 formatted, ms precise.

tableIds
required
Array of strings non-empty
hostNotes
string
guestRequests
string

Responses

Response Schema: application/json
id
required
string

The globally unique (within the EPOS) ID for the reservation.

name
required
string

The name of the guest who the reservation is for.

covers
required
integer

The number of covers the reservation is expected to occupy.

startTime
required
string <date-time>

The time the reservation is expected to begin. ISO8601 formatted, millisecond precision.

endTime
required
string <date-time>

The time the reservation is expected to finish. ISO8601 formatted, millisecond precision.

tableIds
required
Array of strings non-empty

The tables the reservation is expected to occupy.

hostNotes
string

Host-written notes about the reservation. Not exposed to guests.

guestRequests
string

Guest-written requests for the reservation. Shown to & editable by guests. May not be edited by the EPOS partner, as this may contain dietary requirements set by the Guest.

Request samples

Content type
application/json
{
  • "name": "Sasha J.",
  • "covers": 3,
  • "startTime": "2024-08-12T13:00:00.000Z",
  • "endTime": "2024-08-12T15:00:00.000Z",
  • "tableIds": [
    ],
  • "guestRequests": "we'll be bringing our dog",
  • "hostNotes": "dog may be given little snacks"
}

Response samples

Content type
application/json
{
  • "id": "reservation-2024-08-12-0065",
  • "name": "Sasha J.",
  • "covers": 3,
  • "startTime": "2024-08-12T13:00:00.000Z",
  • "endTime": "2024-08-12T15:00:00.000Z",
  • "tableIds": [
    ]
}

Search reservations

Retrieve the list of known upcoming reservations.

Request Body schema: application/json
required
object

A cursor for use in pagination.

fromTime
string <date-time>
toTime
string <date-time>

Responses

Response Schema: application/json
Array of objects
before
string
after
string

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "before": "string",
  • "after": "string"
}

Get reservation

Retrieves a specific reservation.

path Parameters
reservationId
required
string

The ID of the reservation to retrieve.

Responses

Response Schema: application/json
id
required
string

The globally unique (within the EPOS) ID for the reservation.

name
required
string

The name of the guest who the reservation is for.

covers
required
integer

The number of covers the reservation is expected to occupy.

startTime
required
string <date-time>

The time the reservation is expected to begin. ISO8601 formatted, millisecond precision.

endTime
required
string <date-time>

The time the reservation is expected to finish. ISO8601 formatted, millisecond precision.

tableIds
required
Array of strings non-empty

The tables the reservation is expected to occupy.

hostNotes
string

Host-written notes about the reservation. Not exposed to guests.

guestRequests
string

Guest-written requests for the reservation. Shown to & editable by guests. May not be edited by the EPOS partner, as this may contain dietary requirements set by the Guest.

Request samples

import http.client

conn = http.client.HTTPSConnection("virtserver.swaggerhub.com")

conn.request("GET", "/DojoPaymentProducts/EPOS-Gateway-API/1.0/v1/reservations/%7BreservationId%7D")

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Response samples

Content type
application/json
{
  • "id": "reservation-2024-08-12-0065",
  • "name": "Sasha J.",
  • "covers": 3,
  • "startTime": "2024-08-12T13:00:00.000Z",
  • "endTime": "2024-08-12T15:00:00.000Z",
  • "tableIds": [
    ]
}

Update reservation

Sets the reservation's details to those provided.

path Parameters
reservationId
required
string

The ID of the reservation to update. It is an error for this ID not to match the one in the request body - partners must reject requests with mismatched ID values.

Request Body schema: application/json
id
required
string

The globally unique (within the EPOS) ID for the reservation.

name
required
string

The name of the guest who the reservation is for.

covers
required
integer

The number of covers the reservation is expected to occupy.

startTime
required
string <date-time>

The time the reservation is expected to begin. ISO8601 formatted, millisecond precision.

endTime
required
string <date-time>

The time the reservation is expected to finish. ISO8601 formatted, millisecond precision.

tableIds
required
Array of strings non-empty

The tables the reservation is expected to occupy.

hostNotes
string

Host-written notes about the reservation. Not exposed to guests.

guestRequests
string

Guest-written requests for the reservation. Shown to & editable by guests. May not be edited by the EPOS partner, as this may contain dietary requirements set by the Guest.

Responses

Response Schema: application/json
id
required
string

The globally unique (within the EPOS) ID for the reservation.

name
required
string

The name of the guest who the reservation is for.

covers
required
integer

The number of covers the reservation is expected to occupy.

startTime
required
string <date-time>

The time the reservation is expected to begin. ISO8601 formatted, millisecond precision.

endTime
required
string <date-time>

The time the reservation is expected to finish. ISO8601 formatted, millisecond precision.

tableIds
required
Array of strings non-empty

The tables the reservation is expected to occupy.

hostNotes
string

Host-written notes about the reservation. Not exposed to guests.

guestRequests
string

Guest-written requests for the reservation. Shown to & editable by guests. May not be edited by the EPOS partner, as this may contain dietary requirements set by the Guest.

Request samples

Content type
application/json
{
  • "id": "reservation-2024-08-12-0065",
  • "name": "Sasha J.",
  • "covers": 3,
  • "startTime": "2024-08-12T13:00:00.000Z",
  • "endTime": "2024-08-12T15:00:00.000Z",
  • "tableIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "reservation-2024-08-12-0065",
  • "name": "Sasha J.",
  • "covers": 3,
  • "startTime": "2024-08-12T13:00:00.000Z",
  • "endTime": "2024-08-12T15:00:00.000Z",
  • "tableIds": [
    ]
}

Tables

Search tables

Search tables

Request Body schema: application/json
required
object

A cursor for use in pagination.

areaId
string
waiterId
string

Responses

Response Schema: application/json
Array
Array of objects
before
string
after
string

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • {
    }
]