Tables API 1.0.0

The Tables API exclusive to Dojo integrations

Servers

  • staging-api.dojo.dev/ws/v1/tables/eposwssstaging

    See the required headers to establish the websocket connection.

    Security:
    • HTTP API key
      • Name: Authorization
      • In: header
  • api.dojo.tech/ws/v1/tables/eposwssproduction

    See the required headers to establish the websocket connection.

    Security:
    • HTTP API key
      • Name: Authorization
      • In: header

Operations

  • SUB /ErrorNotification

    Message received from Dojo

    Accepts the following message:

    errorNotification

    A generic error notification.

    Error notification will be sent by Dojo whenever the message sent by the EPOS can't be read.

    object
    uid: errorNotification

    Error notification is used whenever the response received from the EPOS can't be read by Dojo.

    Examples

  • PUB /Error

    Message to send from the EPOS

    Accepts the following message:

    errorResponse

    A generic error response.

    Error response is used whenever the operation cannot be performed due to various reasons. General errors include ERROR_PARSE_ERROR, ERROR_INTERNAL_POS_ERROR and WAITER_INCORRECT_WAITER_ID. Please consult other messages descriptions to find out when to use the other certain error codes

    object
    uid: errorResponse

    A generic error notification.

    Examples

  • SUB /GetBillItems

    Message received from Dojo

    Accepts the following message:

    getBillItemsRequest

    Request Message for 'GetBillItems'

    A request from Dojo for bill items

    object
    uid: getBillItemsRequest

    A request for bill items.

    Examples

  • PUB /GetBillItems

    Message to send from the EPOS

    Accepts the following message:

    getBillItemsResponse

    Successful Response Message for 'GetBillItems'

    A list of bill items from the EPOS.

    object
    uid: getBillItemsResponse

    Examples

  • SUB /GetFullBill

    Message received from Dojo

    Accepts the following message:

    getFullBillRequest

    Request Message for 'GetFullBill'

    A request from Dojo for an itemised bill receipt. If the session does not exist, the EPOS should return SESSION_NO_SUCH_SESSION error. If the bill does not exist, the EPOS should return a BILL_NO_SUCH_BILL error. Otherwise, the EPOS should return a GetFullBill response for the session.

    object
    uid: getFullBillRequest

    Examples

  • PUB /GetFullBill

    Message to send from the EPOS

    Accepts the following message:

    getFullBillResponse

    Successful Response Message for 'GetFullBill'

    An itemised bill receipt from the EPOS. This should return a graphical bill receipt to be printed on the card machine (incl. logos/QR codes etc)

    See the following example to see how the formatting is handled by a Dojo terminal.

    object
    uid: getFullBillResponse

    Examples

  • SUB /GetSession

    Message received from Dojo

    Accepts the following message:

    getSessionRequest

    Request Message for 'GetSession'

    A request from Dojo for a session. If the session does not exist, return SESSION_NO_SUCH_SESSION error message, otherwise return a GetSession response.

    object
    uid: getSessionRequest

    Examples

  • PUB /GetSession

    Message to send from the EPOS

    Accepts the following message:

    getSessionResponse

    Successful response Message for 'GetSession'

    A session from a EPOS. If the session does not exist, the EPOS should return a SESSION_NO_SUCH_SESSION error message.

    object
    uid: getSessionResponse

    Examples

  • SUB /GetTable

    Message received from Dojo

    Accepts the following message:

    getTableRequest

    Request Message for 'GetTable'

    A request from Dojo for a table. If the table doesn't exist, the EPOS should return a SESSION_NO_SUCH_SESSION error message instead, otherwise return a GetTable response.

    object
    uid: getTableRequest

    Examples

  • PUB /GetTable

    Message to send from the EPOS

    Accepts the following message:

    getTableResponse

    Successful Response Message for 'GetTable'

    A table from an EPOS. If the table doesn't exist, the EPOS should return a TABLE_NO_SUCH_TABLE error message instead.

    oneOf

    Examples

  • SUB /ListBillItems

    Message received from Dojo

    Accepts the following message:

    listBillItemsRequest

    Request Message for 'ListBillItems'

    A request from Dojo for multiple bills. The EPOS should return a list of the bills for sessions specified. If no bills can be found, or the specified sessions don't exist, the EPOS should return a ListBillItems response with no bill itms. Omitting sessionIds returns all bill items

    object
    uid: listBillItemsRequest

    Examples

  • PUB /ListBillItems

    Message to send from the EPOS

    Accepts the following message:

    listBillItemsResponse

    Successful Response Message for 'ListBillItems'

    List of bills from a EPOS.

    object
    uid: listBillItemsResponse

    Examples

  • SUB /ListSessions

    Message received from Dojo

    Accepts the following message:

    listSessionsRequest

    Request Message for 'ListSessions'

    A request from Dojo for a list of sessions. If there are filtering params specified, the response from the EPOS should contain only sessions matching all of the filters. If no sessions match the filters, the EPOS should return a ListSessions response with no sessions.

    object
    uid: listSessionsRequest

    Examples

  • PUB /ListSessions

    Message to send from the EPOS

    Accepts the following message:

    listSessionsResponse

    Response Message for 'ListSessions'

    A list of sessions from a EPOS.

    object
    uid: listSessionsResponse

    Examples

  • SUB /ListTables

    Message received from Dojo

    Accepts the following message:

    listTablesRequest

    Request Message for 'ListTables'

    A request for a list of tables. If there are params set, the ListTables response should contain only tables matching all of the filters using AND logic.

    object
    uid: listTablesRequest

    Examples

  • PUB /ListTables

    Message to send from the EPOS

    Accepts the following message:

    listTablesResponse

    Response Message for 'ListTables'

    A list of tables from a EPOS.

    object
    uid: listTablesResponse

    Examples

  • SUB /LockSession

    Message received from Dojo

    Accepts the following message:

    lockSessionRequest

    Request Message for 'LockSession'

    A request from Dojo to lock a specific session. If the session does not exist, the EPOS should return SESSION_NO_SUCH_SESSION error. If it is already locked, the EPOS should return SESSION_ALREADY_LOCKED error. Otherwise, the EPOS should return a LockSession response for the session.

    object
    uid: lockSessionRequest

    Examples

  • PUB /LockSession

    Message to send from the EPOS

    Accepts the following message:

    lockSessionResponse

    Successful Response Message for 'LockSession'

    Contains bill items for the session

    object
    uid: lockSessionResponse

    Examples

  • SUB /RecordPayment

    Message received from Dojo

    Accepts the following message:

    recordPaymentRequest

    Request Message for 'RecordPayment'

    A request from Dojo to record a payment. If the session does not exist, the EPOS should return a SESSION_NO_SUCH_SESSION error. If the session connected to the payment is not locked, the EPOS should return a SESSION_NOT_LOCKED error. If this particular payment has already been recorded, the EPOS should return a PAYMENT_ALREADY_RECORDED error. If the EPOS cannot record the payment for internal reasons, return a PAYMENT_NOT_RECORDED error. If the request is successful, the EPOS should return a RecordPayment response.

    object
    uid: recordPaymentRequest

    Examples

  • PUB /RecordPayment

    Message to send from the EPOS

    Accepts the following message:

    recordPaymentResponse

    Response Message for 'RecordPayment' request

    Confirmation of a payment from a EPOS. An empty result indicates logical success of the request.

    object
    uid: recordPaymentResponse

    Examples

  • SUB /UnlockSession

    Message received from Dojo

    Accepts the following message:

    unlockSessionRequest

    Request Message for 'UnlockSession'

    A request from Dojo to unlock a locked session. If the session is not locked, the EPOS should return SESSION_NOT_LOCKED error. If the EPOS cannot unlock the session due to internal reasons, it should return a SESSION_UNABLE_TO_UNLOCK error. Otherwise, the EPOS should return an UnlockSession response.

    object
    uid: unlockSessionRequest

    Examples

  • PUB /UnlockSession

    Message to send from the EPOS

    Accepts the following message:

    unlockSessionResponse

    Successful Response Message for 'UnlockSession'

    Confirmation of an unlocked session from a EPOS. An empty result indicates success.

    object
    uid: unlockSessionResponse

    Examples

Messages

  • #1errorNotification

    A generic error notification.

    Error notification will be sent by Dojo whenever the message sent by the EPOS can't be read.

    object
    uid: errorNotification

    Error notification is used whenever the response received from the EPOS can't be read by Dojo.

  • #2errorResponse

    A generic error response.

    Error response is used whenever the operation cannot be performed due to various reasons. General errors include ERROR_PARSE_ERROR, ERROR_INTERNAL_POS_ERROR and WAITER_INCORRECT_WAITER_ID. Please consult other messages descriptions to find out when to use the other certain error codes

    object
    uid: errorResponse

    A generic error notification.

  • #3getBillItemsRequest

    Request Message for 'GetBillItems'

    A request from Dojo for bill items

    object
    uid: getBillItemsRequest

    A request for bill items.

  • #4getBillItemsResponse

    Successful Response Message for 'GetBillItems'

    A list of bill items from the EPOS.

    object
    uid: getBillItemsResponse
  • #5getFullBillRequest

    Request Message for 'GetFullBill'

    A request from Dojo for an itemised bill receipt. If the session does not exist, the EPOS should return SESSION_NO_SUCH_SESSION error. If the bill does not exist, the EPOS should return a BILL_NO_SUCH_BILL error. Otherwise, the EPOS should return a GetFullBill response for the session.

    object
    uid: getFullBillRequest
  • #6getFullBillResponse

    Successful Response Message for 'GetFullBill'

    An itemised bill receipt from the EPOS. This should return a graphical bill receipt to be printed on the card machine (incl. logos/QR codes etc)

    See the following example to see how the formatting is handled by a Dojo terminal.

    object
    uid: getFullBillResponse
  • #7getSessionRequest

    Request Message for 'GetSession'

    A request from Dojo for a session. If the session does not exist, return SESSION_NO_SUCH_SESSION error message, otherwise return a GetSession response.

    object
    uid: getSessionRequest
  • #8getSessionResponse

    Successful response Message for 'GetSession'

    A session from a EPOS. If the session does not exist, the EPOS should return a SESSION_NO_SUCH_SESSION error message.

    object
    uid: getSessionResponse
  • #9getTableRequest

    Request Message for 'GetTable'

    A request from Dojo for a table. If the table doesn't exist, the EPOS should return a SESSION_NO_SUCH_SESSION error message instead, otherwise return a GetTable response.

    object
    uid: getTableRequest
  • #10getTableResponse

    Successful Response Message for 'GetTable'

    A table from an EPOS. If the table doesn't exist, the EPOS should return a TABLE_NO_SUCH_TABLE error message instead.

    oneOf
  • #11listBillItemsRequest

    Request Message for 'ListBillItems'

    A request from Dojo for multiple bills. The EPOS should return a list of the bills for sessions specified. If no bills can be found, or the specified sessions don't exist, the EPOS should return a ListBillItems response with no bill itms. Omitting sessionIds returns all bill items

    object
    uid: listBillItemsRequest
  • #12listBillItemsResponse

    Successful Response Message for 'ListBillItems'

    List of bills from a EPOS.

    object
    uid: listBillItemsResponse
  • #13listSessionsRequest

    Request Message for 'ListSessions'

    A request from Dojo for a list of sessions. If there are filtering params specified, the response from the EPOS should contain only sessions matching all of the filters. If no sessions match the filters, the EPOS should return a ListSessions response with no sessions.

    object
    uid: listSessionsRequest
  • #14listSessionsResponse

    Response Message for 'ListSessions'

    A list of sessions from a EPOS.

    object
    uid: listSessionsResponse
  • #15listTablesRequest

    Request Message for 'ListTables'

    A request for a list of tables. If there are params set, the ListTables response should contain only tables matching all of the filters using AND logic.

    object
    uid: listTablesRequest
  • #16listTablesResponse

    Response Message for 'ListTables'

    A list of tables from a EPOS.

    object
    uid: listTablesResponse
  • #17lockSessionRequest

    Request Message for 'LockSession'

    A request from Dojo to lock a specific session. If the session does not exist, the EPOS should return SESSION_NO_SUCH_SESSION error. If it is already locked, the EPOS should return SESSION_ALREADY_LOCKED error. Otherwise, the EPOS should return a LockSession response for the session.

    object
    uid: lockSessionRequest
  • #18lockSessionResponse

    Successful Response Message for 'LockSession'

    Contains bill items for the session

    object
    uid: lockSessionResponse
  • #19recordPaymentRequest

    Request Message for 'RecordPayment'

    A request from Dojo to record a payment. If the session does not exist, the EPOS should return a SESSION_NO_SUCH_SESSION error. If the session connected to the payment is not locked, the EPOS should return a SESSION_NOT_LOCKED error. If this particular payment has already been recorded, the EPOS should return a PAYMENT_ALREADY_RECORDED error. If the EPOS cannot record the payment for internal reasons, return a PAYMENT_NOT_RECORDED error. If the request is successful, the EPOS should return a RecordPayment response.

    object
    uid: recordPaymentRequest
  • #20recordPaymentResponse

    Response Message for 'RecordPayment' request

    Confirmation of a payment from a EPOS. An empty result indicates logical success of the request.

    object
    uid: recordPaymentResponse
  • #21unlockSessionRequest

    Request Message for 'UnlockSession'

    A request from Dojo to unlock a locked session. If the session is not locked, the EPOS should return SESSION_NOT_LOCKED error. If the EPOS cannot unlock the session due to internal reasons, it should return a SESSION_UNABLE_TO_UNLOCK error. Otherwise, the EPOS should return an UnlockSession response.

    object
    uid: unlockSessionRequest
  • #22unlockSessionResponse

    Successful Response Message for 'UnlockSession'

    Confirmation of an unlocked session from a EPOS. An empty result indicates success.

    object
    uid: unlockSessionResponse

Schemas

  • authorization
    string
    uid: authorization

    Used to authenticate your requests to the API. The authToken is formed from base64 encoding your accountName (first string in the URL for existing integrations) and apiKey. The two values should be seperated by a colon with no spaces e.g. base64("abcdef0000000:7d4773f2-367f-406c-881a-b4cb854971f3"). The values will be provided by Dojo.

      Examples values:
    • "Basic $authToken"
  • object
    uid: billItems

    An object representing a bill with items the consumer needs to pay for, including any additional charges or discounts. This will be used to help a consumer calculate how much to pay, and so should be accurate and have amounts set as the EPOS would expect.

      Examples values:
    • {"totalAmount":950,"paidAmount":100,"taxAmount":190,"currency":"GBP","items":[{"id":"123456789","name":"Classic Burger","category":["mains","burgers"],"quantity":1,"amountPerItem":1000,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00","modifiers":[{"id":"mod-987654321","name":"Extra Cheddar Cheese","amountPerModifier":100,"quantity":3}]},{"id":"987654321","name":"Peroni","category":["drinks","beer","lager"],"quantity":1,"amountPerItem":450,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00"},{"id":"987654321","name":"Peroni","category":["drinks","beer","lager"],"quantity":1,"amountPerItem":0,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00","modifiers":[{"id":"mod-123123","name":"Buy 1 get 1 free!","amountPerModifier":-450,"quantity":1}]},{"id":"00000001","name":"£5 Voucher","category":["discounts","vouchers"],"quantity":1,"amountPerItem":-500,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00"}],"sessionId":"123e4567-e89b-12d3-a456-426614174000"}
  • object
    uid: card

    An object representing card used for a payment

  • object
    uid: cardPresentPayment

    An object representing a single payment performed with a physical card

  • currency
    string
    uid: currency

    The currency code as specified in ISO 4217. Check enum values to see which are supported.

    • Allowed values:
    • "EUR"
    • "GBP"
      Examples values:
    • "EUR"
  • datetime
    string
    must match: ^(\d{4})-(0[1-9]|1[0-2]|[1-9])-([12]\d|0[1-9]|3[01])[tT\s]([01]\d|2[0-3]):([0-5]\d):([0-5]\d)([.,]\d+)?([zZ]|([+-])([01]\d|2[0-3]):([0-5]\d))$uid: datetime

    'ISO 8601, extended time, 4-digit year datetime with TZ info. Format: YYYY-mm-ddTHH:MM:ss.fff(Z|+HH:MM|-HH:MM)'

      Examples values:
    • "2021-11-05T12:34:56.987654-05:00"
  • object
    uid: error

    An object representing an error response to a request

      Examples values:
    • {"errorCode":"SESSION_ALREADY_LOCKED","errorReason":"Session already locked at 2022-01-02T10:05:48.365Z by TID 123456789"}
    • {"errorCode":"SESSION_NO_SUCH_SESSION"}
  • object
    uid: errorDetails

    An object representing an error notification sent to EPOS

      Examples values:
  • object
    uid: errorNotification

    Error notification is used whenever the response received from the EPOS can't be read by Dojo.

  • object
    uid: errorResponse

    A generic error notification.

  • object
    uid: expiryDate

    An object representing an expiration date for a card.

  • object
    uid: fullBill

    An object representing an itemised bill, along with header and footer information from the EPOS, to be printed or displayed on a payment device.

      Examples values:
    • {"header":{"receiptLines":[{"receiptLineType":"RECEIPT_LINE_TYPE_LOGO","receiptLogo":{"svgImage":"<path d=\\\"M127.230822,29.0095321 L127.230822,44.8571699 L127.228945,44.857 L127.226632,45.0782852 C127.101225,49.363888 124.174005,52.9391141 120.231189,53.999935 L120.230818,49.0517119 C121.686353,48.2013585 122.665635,46.6119543 122.665635,44.7915457 L122.665595,29.0095321 L127.230822,29.0095321 Z M98.8846365,22 L98.8846365,38.4687967 C98.8846365,43.6902675 94.6571667,47.923106 89.4423183,47.923106 C84.2274699,47.923106 80,43.6902675 80,38.4687967 C80,33.2473259 84.2274699,29.0144875 89.4423183,29.0144875 C91.2255567,29.0144875 92.8933384,29.5094441 94.3161065,30.3696359 L94.3157729,22 L98.8846365,22 Z M150.711618,43.6154088 C151.890535,43.6154088 152.846235,44.5711098 152.846235,45.7500266 C152.846235,46.9289435 151.890535,47.8846444 150.711618,47.8846444 C149.532701,47.8846444 148.577,46.9289435 148.577,45.7500266 C148.577,44.5711098 149.532701,43.6154088 150.711618,43.6154088 Z M139.134682,29.0000078 C144.34953,29.0000078 148.577,33.2274777 148.577,38.4423261 C148.577,43.6571745 144.34953,47.8846444 139.134682,47.8846444 C133.919833,47.8846444 129.692363,43.6571745 129.692363,38.4423261 C129.692363,33.2274777 133.919833,29.0000078 139.134682,29.0000078 Z M110.788496,29.0000078 C116.003344,29.0000078 120.230814,33.2274777 120.230814,38.4423261 C120.230814,43.6571745 116.003344,47.8846444 110.788496,47.8846444 C105.573648,47.8846444 101.346178,43.6571745 101.346178,38.4423261 C101.346178,33.2274777 105.573648,29.0000078 110.788496,29.0000078 Z M150.711618,44.1490633 C149.82743,44.1490633 149.110654,44.865839 149.110654,45.7500266 C149.110654,46.6342142 149.82743,47.3509899 150.711618,47.3509899 C151.595805,47.3509899 152.312581,46.6342142 152.312581,45.7500266 C152.312581,44.865839 151.595805,44.1490633 150.711618,44.1490633 Z M150.787549,44.7437068 L150.916706,44.7499643 C151.081083,44.7666509 151.214137,44.8167107 151.315867,44.9001438 C151.443029,45.0044351 151.50661,45.1526386 151.50661,45.3447542 C151.50661,45.4783203 151.474591,45.5903877 151.410553,45.6809565 C151.346514,45.7715253 151.25686,45.8369361 151.141591,45.8771888 L151.141591,45.8771888 L151.539544,46.5770385 L151.54572,46.5928195 L151.54572,46.5928195 L151.547778,46.6072281 C151.547778,46.6236952 151.541832,46.6374177 151.529939,46.6483958 C151.518046,46.6593738 151.504781,46.6648628 151.490143,46.6648628 L151.490143,46.6648628 L151.237649,46.6648628 L151.198539,46.6597169 L151.198539,46.6597169 L151.169036,46.644279 C151.152569,46.6305564 151.137931,46.6127171 151.125124,46.5907611 L151.125124,46.5907611 L150.773827,45.9403125 L150.397829,45.9403125 L150.397829,46.5989946 L150.393026,46.6243813 L150.393026,46.6243813 L150.378617,46.6456512 C150.36581,46.658459 150.349343,46.6648628 150.329216,46.6648628 L150.329216,46.6648628 L150.076721,46.6648628 L150.051335,46.6600599 L150.051335,46.6600599 L150.030065,46.6456512 C150.017257,46.6328435 150.010853,46.6172913 150.010853,46.5989946 L150.010853,46.5989946 L150.010853,44.8123195 L150.015313,44.7848744 L150.015313,44.7848744 L150.028692,44.7629184 C150.040585,44.7501107 150.056595,44.7437068 150.076721,44.7437068 L150.076721,44.7437068 L150.787549,44.7437068 Z M150.779316,45.0510918 L150.397829,45.0510918 L150.397829,45.6274386 L150.779316,45.6274386 C150.889096,45.6274386 150.971431,45.6031954 151.026321,45.5547091 C151.081212,45.5062228 151.108657,45.435323 151.108657,45.3420097 C151.108657,45.2486964 151.081212,45.1768817 151.026321,45.1265658 C150.971431,45.0762498 150.889096,45.0510918 150.779316,45.0510918 L150.779316,45.0510918 Z M89.4423183,33.5891533 C86.7507836,33.5891533 84.5688637,35.7738441 84.5688637,38.4687967 C84.5688637,41.1637494 86.7507836,43.3484402 89.4423183,43.3484402 C92.1338529,43.3484402 94.3157729,41.1637494 94.3157729,38.4687967 C94.3157729,35.7738441 92.1338529,33.5891533 89.4423183,33.5891533 Z M139.134682,33.5688715 C136.443147,33.5688715 134.261227,35.7507915 134.261227,38.4423261 C134.261227,41.1338608 136.443147,43.3157807 139.134682,43.3157807 C141.826216,43.3157807 144.008136,41.1338608 144.008136,38.4423261 C144.008136,35.7507915 141.826216,33.5688715 139.134682,33.5688715 Z M110.788496,33.5688715 C108.096961,33.5688715 105.915041,35.7507915 105.915041,38.4423261 C105.915041,41.1338608 108.096961,43.3157807 110.788496,43.3157807 C113.480031,43.3157807 115.661951,41.1338608 115.661951,38.4423261 C115.661951,35.7507915 113.480031,33.5688715 110.788496,33.5688715 Z M124.948209,22 C126.208861,22 127.230822,23.0233504 127.230822,24.285717 C127.230822,25.5480836 126.208861,26.571434 124.948209,26.571434 C123.687556,26.571434 122.665595,25.5480836 122.665595,24.285717 C122.665595,23.0233504 123.687556,22 124.948209,22 Z\\\" id=\\\"Combined-Shape-Copy-87\\\"></path>\n"}},{"receiptLineType":"RECEIPT_LINE_TYPE_MERCHANT_NAME","receiptMerchantName":{"merchantName":"Bob's Shop"}},{"receiptLineType":"RECEIPT_LINE_TYPE_MERCHANT_PHONE_NUMBER","receiptMerchantPhoneNumber":{"phoneNumber":"01234567890"}},{"receiptLineType":"RECEIPT_LINE_TYPE_MERCHANT_EMAIL_ADDRESS","receiptMerchantEmailAddress":{"emailAddress":"info@bobsshop.com"}},{"receiptLineType":"RECEIPT_LINE_TYPE_MERCHANT_ADDRESS","receiptMerchantAddress":{"addressLines":["1","High Street","London"],"postcode":"ABC 123"}},{"receiptLineType":"RECEIPT_LINE_TYPE_TEXT","receiptText":{"value":"Here is your bill","size":"SIZE_HEADER_2","align":"ALIGN_CENTER"}},{"receiptLineType":"RECEIPT_LINE_TYPE_HORIZONTAL_LINE","receiptHorizontalLine":{"type":"HORIZONTAL_LINE_SINGLE"}}]},"billItems":{"totalAmount":950,"paidAmount":100,"taxAmount":190,"currency":"GBP","items":[{"id":"123456789","name":"Classic Burger","category":["mains","burgers"],"quantity":1,"amountPerItem":1000,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00","modifiers":[{"id":"mod-987654321","name":"Extra Cheddar Cheese","amountPerModifier":100,"quantity":3}]},{"id":"987654321","name":"Peroni","category":["drinks","beer","lager"],"quantity":1,"amountPerItem":450,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00"},{"id":"987654321","name":"Peroni","category":["drinks","beer","lager"],"quantity":1,"amountPerItem":0,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00","modifiers":[{"id":"mod-123123","name":"Buy 1 get 1 free!","amountPerModifier":-450,"quantity":1}]},{"id":"00000001","name":"£5 Voucher","category":["discounts","vouchers"],"quantity":1,"amountPerItem":-500,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00"}],"sessionId":"123e4567-e89b-12d3-a456-426614174000"},"footer":{"receiptLines":[{"receiptLineType":"RECEIPT_LINE_TYPE_HORIZONTAL_LINE","receiptHorizontalLine":{"type":"HORIZONTAL_LINE_DOUBLE"}},{"receiptLineType":"RECEIPT_LINE_TYPE_TEXT","receiptText":{"value":"Thanks for dining with us!","size":"SIZE_BODY","align":"ALIGN_CENTER"}},{"receiptLineType":"RECEIPT_LINE_TYPE_TEXT","receiptText":{"value":"Scan below to enter a survey","size":"SIZE_BODY","align":"ALIGN_CENTER"}},{"receiptLineType":"RECEIPT_LINE_TYPE_URL","receiptURL":{"description":"Voucher code!","showQR":true,"url":"https://bobs-shop.com/voucher-link"}},{"receiptLineType":"RECEIPT_LINE_TYPE_VAT_NUMBER","receiptVATNumber":{"vatNumber":"123456789"}}]}}
  • object
    uid: getBillItemsRequest

    A request for bill items.

  • object
    uid: getBillItemsResponse
  • object
    uid: getFullBillRequest
  • object
    uid: getFullBillResponse
  • object
    uid: getSessionRequest
  • object
    uid: getSessionResponse
  • object
    uid: getTableRequest
  • object
    uid: getTableResponse
  • object
    uid: headers
  • object
    uid: item

    An object representing a single item for the consumer to pay for.

      Examples values:
    • {"id":"123456789","name":"Classic Burger","category":["mains","burgers"],"quantity":1,"amountPerItem":1000,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00","modifiers":[{"id":"mod-987654321","name":"Extra Cheddar Cheese","amountPerModifier":100,"quantity":3}]}
    • {"id":"0987654321","name":"Peroni","category":["drinks","alcohol","lager"],"quantity":5,"amountPerItem":500,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00"}
    • {"id":"0987654321","name":"10% Drink Voucher","category":["vouchers","drinks"],"quantity":1,"amountPerItem":-150,"lastOrderedAt":"2021-01-01T15:00:00.123+02:00"}
  • jsonRpcVersion
    string
    uid: jsonRpcVersion

    Identifies the JSON Remote Protocol version that this message uses.

    Const:
    "2.0"
  • object
    uid: listBillItemsRequest
  • object
    uid: listBillItemsResponse
  • object
    uid: listSessionsRequest
  • object
    uid: listSessionsResponse
  • object
    uid: listTablesRequest
  • object
    uid: listTablesResponse
  • object
    uid: lockSessionRequest
  • object
    uid: lockSessionResponse
  • messageId
    string
    must match: ^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$[ 32 .. 36 ] charactersuid: uuid

    A universally unique identifier

      Examples values:
    • "123e4567-e89b-12d3-a456-426614174000"
  • object
    uid: modifier

    An object representing a modifier applied to a given item.

      Examples values:
    • {"id":"mod-123456789","name":"Free Burger","amountPerModifier":-1500,"quantity":1}
    • {"id":"mod-987654321","name":"Extra Cheddar Cheese","amountPerModifier":100,"quantity":3}
    • {"id":"mod-111114321","name":"No Cheddar Cheese","amountPerModifier":-100,"quantity":1}
  • object
    uid: payment

    An object representing a single payment

      Examples values:
    • {"id":"01234567-0123-0123-0123-0123456789ab","sessionId":"01234567-0123-0123-0123-0123456789af","waiterId":1,"currency":"GBP","baseAmount":100,"gratuityAmount":200,"cashbackAmount":300,"paymentSuccessful":true,"methodDetails":{"method":"PAYMENT_METHOD_CARD_PRESENT","cardPresentPaymentInfo":{"authCode":"ABC123","entryMode":"ENTRY_MODE_CONTACTLESS","card":{"scheme":"CARD_SCHEME_AMEX","last4PAN":"0123","expiryDate":{"month":12,"year":2032},"fundingType":"CARD_FUNDING_TYPE_CREDIT"},"cardholderVerificationMethod":"CARDHOLDER_VERIFICATION_METHOD_PIN","terminalId":"12345678","merchantId":"12341234","acquirerTransactionId":"01234567-0123-0123-0123-0123456789ab"},"cardPresentPaymentStatus":"CARD_PRESENT_PAYMENT_STATUS_SUCCESSFUL"},"attemptedAt":"2021-01-01T15:00:00.123+02:00"}
    • {"id":"01234567-0123-0123-0123-0123456789ab","sessionId":"01234567-0123-0123-0123-0123456789af","waiterId":1,"currency":"GBP","baseAmount":100,"gratuityAmount":200,"cashbackAmount":300,"paymentSuccessful":true,"methodDetails":{"method":"PAYMENT_METHOD_REMOTE","remotePaymentInfo":{"authCode":"ABC123","card":{"scheme":"CARD_SCHEME_AMEX","last4PAN":"0123","expiryDate":{"month":12,"year":2032},"fundingType":"CARD_FUNDING_TYPE_CREDIT"},"remoteVerificationMethod":"REMOTE_VERIFICATION_METHOD_3DS2","merchantId":"12341234","acquirerTransactionId":"01234567-0123-0123-0123-0123456789ab"},"remotePaymentStatus":"REMOTE_PAYMENT_STATUS_SUCCESSFUL"},"attemptedAt":"2021-01-01T15:00:00.123+02:00"}
  • object
    uid: receiptHorizontalLine

    A receipt line containing a horizontal line

      Examples values:
    • {"type":"HORIZONTAL_LINE_SINGLE"}
  • object
    uid: receiptImage

    A receipt line containing an image.

  • object
    uid: receiptMerchantAddress

    A predefined receipt field, containing an address. This will be pre-formatted in the receipt.

      Examples values:
    • {"addressLines":["1","High Street","London"],"postcode":"ABC 123"}
  • object
    uid: receiptMerchantEmailAddress

    A predefined receipt field, containing the merchants contact email address. This will be pre-formatted in the receipt.

      Examples values:
    • {"emailAddress":"info@bobsshop.com"}
  • object
    uid: receiptMerchantName

    A predefined receipt field, containing the merchants name. This will be pre-formatted in the receipt.

      Examples values:
    • {"merchantName":"Bob's Shop"}
  • object
    uid: receiptMerchantPhoneNumber

    A predefined receipt field, containing the merchants contact phone number. This will be pre-formatted in the receipt.

      Examples values:
    • {"phoneNumber":"01234567890"}
  • object
    uid: receiptSection

    An object representing either a header or footer on a BillReceipt

      Examples values:
    • {"receiptLines":[{"receiptLineType":"RECEIPT_LINE_TYPE_MERCHANT_NAME","receiptMerchantName":{"merchantName":"Bob's Shop"}},{"receiptLineType":"RECEIPT_LINE_TYPE_MERCHANT_ADDRESS","receiptMerchantAddress":{"addressLines":["1","High Street","London"],"postcode":"ABC 123"}},{"receiptLineType":"RECEIPT_LINE_TYPE_TEXT","receiptText":{"value":"Here is your bill","size":"SIZE_HEADER_2","align":"ALIGN_CENTER"}},{"receiptLineType":"RECEIPT_LINE_TYPE_HORIZONTAL_LINE","receiptHorizontalLine":{"type":"HORIZONTAL_LINE_SINGLE"}},{"receiptLineType":"RECEIPT_LINE_TYPE_LOGO","receiptLogo":{"svgImage":"<svg width=\"213\" height=\"95\" viewBox=\"0 0 213 95\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_322_311)\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M137.895 21.0028V67.3838L137.89 67.3831L137.883 68.1021C137.518 80.5852 129.007 90.999 117.543 94.0882L117.544 79.6753C121.744 77.2168 124.58 72.6375 124.622 67.3845L124.561 67.3838V21.0028H137.895ZM90 21.0028C105.212 21.0028 117.544 33.352 117.544 48.5855C117.544 63.8189 105.212 76.1681 90 76.1681C74.7879 76.1681 62.4561 63.8189 62.4561 48.5855C62.4561 33.352 74.7879 21.0028 90 21.0028ZM172.456 21.0028C187.668 21.0028 200 33.352 200 48.5855C200 63.8189 187.668 76.1681 172.456 76.1681C157.244 76.1681 144.912 63.8189 144.912 48.5855C144.912 33.352 157.244 21.0028 172.456 21.0028ZM55.0877 0.623291V48.7611L55.0826 48.7604L55.0768 49.3708C54.6616 64.2411 42.4936 76.1681 27.5439 76.1681C12.3318 76.1681 0 63.8189 0 48.5855C0 33.352 12.3318 21.0028 27.5439 21.0028C32.7433 21.0028 37.6062 22.4455 41.7552 24.9529L41.7544 0.623291H55.0877ZM90 34.3493C82.1486 34.3493 75.7838 40.723 75.7838 48.5855C75.7838 56.4479 82.1486 62.8217 90 62.8217C97.8514 62.8217 104.216 56.4479 104.216 48.5855C104.216 40.723 97.8514 34.3493 90 34.3493ZM172.456 34.3493C164.605 34.3493 158.24 40.723 158.24 48.5855C158.24 56.4479 164.605 62.8217 172.456 62.8217C180.308 62.8217 186.672 56.4479 186.672 48.5855C186.672 40.723 180.308 34.3493 172.456 34.3493ZM27.5439 34.3493C19.6925 34.3493 13.3277 40.723 13.3277 48.5855C13.3277 56.4479 19.6925 62.8217 27.5439 62.8217C35.3366 62.8217 41.6648 56.5428 41.759 48.7615L41.7544 48.7611L41.7523 48.331L41.7462 47.9513C41.4149 40.3831 35.183 34.3493 27.5439 34.3493ZM131.228 0.623291C134.91 0.623291 137.895 3.61226 137.895 7.29934C137.895 10.9864 134.91 13.9754 131.228 13.9754C127.546 13.9754 124.561 10.9864 124.561 7.29934C124.561 3.61226 127.546 0.623291 131.228 0.623291Z\" fill=\"#262626\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M206.759 75.6857C210.206 75.6857 213.001 72.8913 213.001 69.4442C213.001 65.9971 210.206 63.2026 206.759 63.2026C203.312 63.2026 200.518 65.9971 200.518 69.4442C200.518 72.8913 203.312 75.6857 206.759 75.6857ZM206.759 74.1259C209.344 74.1259 211.44 72.0301 211.44 69.4448C211.44 66.8595 209.344 64.7637 206.759 64.7637C204.174 64.7637 202.078 66.8595 202.078 69.4448C202.078 72.0301 204.174 74.1259 206.759 74.1259ZM205.785 72.0629C205.747 72.1004 205.699 72.1191 205.64 72.1191H204.902C204.849 72.1191 204.803 72.1004 204.766 72.0629C204.728 72.0255 204.709 71.98 204.709 71.9265V66.7023C204.709 66.6435 204.727 66.5953 204.762 66.5579C204.796 66.5204 204.843 66.5017 204.902 66.5017H206.98C207.639 66.5017 208.153 66.6542 208.525 66.9591C208.897 67.2641 209.083 67.6974 209.083 68.2592C209.083 68.6497 208.989 68.9774 208.802 69.2422C208.615 69.507 208.353 69.6983 208.016 69.816L209.179 71.8623C209.195 71.8944 209.203 71.9238 209.203 71.9506C209.203 71.9987 209.186 72.0388 209.151 72.0709C209.116 72.103 209.078 72.1191 209.035 72.1191H208.297C208.211 72.1191 208.144 72.099 208.096 72.0589C208.048 72.0188 208.005 71.9666 207.968 71.9024L206.94 70.0005H205.841V71.9265C205.841 71.98 205.822 72.0255 205.785 72.0629ZM205.843 69.0857H206.958C207.279 69.0857 207.52 69.0149 207.681 68.8731C207.841 68.7313 207.921 68.524 207.921 68.2512C207.921 67.9783 207.841 67.7683 207.681 67.6212C207.52 67.4741 207.279 67.4005 206.958 67.4005H205.843V69.0857Z\" fill=\"#262626\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_322_311\">\n<rect width=\"213.001\" height=\"95\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>\n"}}]}
    • {"receiptLines":[{"receiptLineType":"RECEIPT_LINE_TYPE_HORIZONTAL_LINE","receiptHorizontalLine":{"type":"HORIZONTAL_LINE_DOUBLE"}},{"receiptLineType":"RECEIPT_LINE_TYPE_TEXT","receiptText":{"value":"Thanks for dining with us!","size":"SIZE_BODY","align":"ALIGN_CENTER"}},{"receiptLineType":"RECEIPT_LINE_TYPE_TEXT","receiptText":{"value":"Scan below to enter a survey","size":"SIZE_BODY","align":"ALIGN_CENTER"}},{"receiptLineType":"RECEIPT_LINE_TYPE_URL","receiptURL":{"description":"Voucher code!","showQR":true,"url":"https://bobs-shop.com/voucher-link"}},{"receiptLineType":"RECEIPT_LINE_TYPE_VAT_NUMBER","receiptVATNumber":{"vatNumber":"123456789"}}]}
  • object
    uid: receiptText

    A receipt line containing text, with optional conditional formatting.

      Examples values:
    • {"value":"Bob's Shop","size":"SIZE_HEADER_1","emphasisBold":true,"align":"ALIGN_CENTER"}
  • object
    uid: receiptURL

    A receipt line containing a URL. This can be printed as a QR code on receipts, or a hyperlink with the text as the description, in digital formats.

      Examples values:
    • {"description":"Voucher code!","showQR":true,"showURL":true,"url":"https://bobs-shop.com/voucher-link"}
  • object
    uid: receiptVATNumber

    A predefined receipt field, containing the merchants VAT number. This will be pre-formatted in the receipt, and shown at the bottom

      Examples values:
    • {"vatNumber":"123 456 7890"}
  • object
    uid: recordPaymentRequest
  • object
    uid: recordPaymentResponse
  • object
    uid: remotePayment

    An object representing a single payment performed remotely

  • object oneOf
    uid: requestorInfo

    An object providing information on the requesting device or service

      Examples values:
    • {"requestorType":"REQUESTOR_TYPE_CARD_MACHINE","cardMachineRequestorInfo":{"terminalId":"123123","waiterId":1}}
    • {"requestorType":"REQUESTOR_TYPE_CARD_MACHINE","cardMachineRequestorInfo":{"terminalId":"123123"}}
    • {"requestorType":"REQUESTOR_TYPE_CONSUMER_DEVICE","consumerDeviceRequestorInfo":{}}
  • resellerId
    string
    uid: resellerId

    Identifies the reseller who sells software on behalf od the EPoS company. This value should be configurable as this will be unique for each reseller. The value will be provided by Dojo to the reseller.

      Examples values:
    • "R19Q52QL"
  • object
    uid: session

    Details for a group of customers order/cover.

      Examples values:
    • {"id":"123e4567-e89b-12d3-a456-426614174000","name":"John's party","tableName":"TBL 101","numberOfCovers":15,"createdAt":"2021-01-01T15:00:00.123+02:00","isPayable":false,"waiter":{"id":1,"name":"John Smith"}}
  • softwareHouseId
    string
    uid: softwareHouseId

    Identifies the EPoS company whose software is generating the request. This value should not be configurable as it will remain the same for all customers using particular EPoS software. The value will be provided by Dojo.

      Examples values:
    • "A67D20HG"
  • svgImage
    string
    uid: svgImage

    SVG representation of an image

  • object
    uid: table

    An object representing a physical table

      Examples values:
    • {"name":"TBL 101","maxCovers":5,"status":"TABLE_STATUS_OCCUPIED"}
  • tableName
    string
    non-emptyuid: tableName

    A human readable, EPOS-level unique table name. The table name MUST NOT include this sequence of characters: ' - ' (whitespace hyphen whitespace)

      Examples values:
    • "TBL 101"
    • "Table_SW_Corner"
  • tableStatus
    string
    uid: tableStatus

    Current status of the table. May be one of predefined strings.

    • Allowed values:
    • "TABLE_STATUS_NOT_IN_USE"
    • "TABLE_STATUS_PENDING_AVAILABLE"
    • "TABLE_STATUS_AVAILABLE"
    • "TABLE_STATUS_OCCUPIED"
      Examples values:
    • "TABLE_STATUS_AVAILABLE"
  • object
    uid: unlockSessionRequest
  • object
    uid: unlockSessionResponse
  • uuid
    string
    must match: ^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$[ 32 .. 36 ] charactersuid: uuid

    A universally unique identifier

      Examples values:
    • "123e4567-e89b-12d3-a456-426614174000"
  • object
    uid: waiter

    An object representing a waiter.

      Examples values:
    • {"id":1,"name":"John Smith"}
    • {"id":2}
  • waiterId
    integer
    <= 99999999uid: waiterId

    Id uniquely identifying the waiter. If no name is set, the Id will be displayed anywhere the waiter is referenced. Should be a positive integer, no larger than 99999999 (A maximum of 8 digits).

      Examples values:
    • 1
    • 2
    • 99999999
    • 50607080