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 - Orders - Parties - Reservations API modules can generally be implemented independently, with a small number of interdependent fields affected by 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

Retrieves all areas that are being served. Capability: ListAreas

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. Capability: CreateOrder

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.

displayName
string

The display name of the order

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.

displayName
string

The display name of the order

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": {
    },
  • "displayName": "string"
}

Get an order by id

Retrieve details of an order using the order ID. Capability: GetOrderById

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.

displayName
string

The display name of the order

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": {
    },
  • "displayName": "string"
}

Cancel an order by id

Cancels an order by ID. Capability: CancelOrderById

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.

displayName
string

The display name of the order

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": {
    },
  • "displayName": "string"
}

Search orders

Searches through the orders on the EPOS. Capability: SearchOrders

Request Body schema: application/json
required
object

Details for searching order-in orders

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"
}

Parties

Create party

Create a new party in the POS domain. Capability: CreateParty

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.

dojoPartyId
required
string
dojoReservationId
string

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 EPOS-internal 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": [
    ]
}

Get party

Retrieves a specific party. Capability: GetPartyById

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 EPOS-internal 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. Capability: UpdatePartyById

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
dojoPartyId
required
string

The Dojo API party ID

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.

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 EPOS-internal 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
{
  • "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": [
    ]
}

Delete party

Deletes a specific party. Capability: DeletePartyById

path Parameters
partyId
required
string

The ID of the party to delete.

Responses

Request samples

import http.client

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

conn.request("DELETE", "/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
{
  • "debugMessage": "string",
  • "traceId": "string",
  • "errorType": "NotFound"
}

Search parties

Searches through parties on the EPOS. By default, this endpoint should exclude parties with endTime set, including them only when completedOnly: true. Capability: SearchParties

Request Body schema: application/json
required
object

A cursor for use in pagination.

completedOnly
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"
}

Reservations

Create reservation

Create a new reservation in the POS domain. Capability: CreateReservation

Request Body schema: application/json
dojoReservationId
required
string
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
{
  • "dojoReservationId": "dojo-res-210345",
  • "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": [
    ]
}

Get reservation

Retrieves a specific reservation. Capability: GetReservationById

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. Capbility: UpdateReservationById

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
dojoReservationId
required
string

The Dojo API reservation ID

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
{
  • "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": [
    ]
}

Delete reservation

Deletes a specific reservation. Capability: DeleteReservationById

path Parameters
reservationId
required
string

The ID of the reservation to delete.

Responses

Request samples

import http.client

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

conn.request("DELETE", "/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
{
  • "debugMessage": "string",
  • "traceId": "string",
  • "errorType": "NotFound"
}

Search reservations

Search through reservations on the EPOS. Capability: SearchReservations

Request Body schema: application/json
required
object

A cursor for use in pagination.

tableId
string
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"
}

Tables

Search tables

Search through tables on the EPOS. Capability: SearchTables

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
[
  • {
    }
]

Events

Handle event

Handle events from Dojo. Capabilities:

  • HandleEvent:payment_intent.created
  • HandleEvent:payment_intent.status_updated
Request Body schema: application/json
required
id
required
string
accountId
required
string
event
required
string

one of EventType

required
PaymentIntentEvent (object)
createdAt
required
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "accountId": "string",
  • "event": "string",
  • "data": {
    },
  • "createdAt": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "debugMessage": "string",
  • "traceId": "string",
  • "errorType": "NotFound"
}