Skip to main content

Site Status Notification Service

Site Status Notification service provides customers and integrators the ability to subscribe to notifications that indicate when a site goes offline and when it returns to an online status.

The Site Status Notification service also detects changes in the accepting_online_orders flag and sends notifications to the integrator when this flag is changed from the store.

Each point of sale (POS) sends heartbeat notifications to the cloud at a specific frequency. If there is a connection issue and the heartbeat is not sent, the service identifies that the POS is no longer available and changes the status from online to offline. As soon as the service detects a heartbeat, it changes the status back to online. When receiving the heartbeat, the service also analyzes when the accepting_online_orders flag has changed.

The Site Status Notification service poller runs every minute to determine if the site is offline. If there are no new site notifications from the POS for six (6) minutes, the service assumes the site is offline and changes the status from online to offline. The default is six (6) minutes; however, the interval is configurable in Data Management.

Customers can subscribe to the company-specific SNS topic to receive notifications when the site goes online or offline. The Integration topic provides instructions for subscribing to the Notification service.

Our system also provides integrators functionality to send a GET request through the Online Ordering API. In addition, the Site Status Notification service provides integrators the following operations:

Operation Definitions

Endpoints

GET /events

Summary

Get online and offline events from MongoDB.

Request Parameters

In

Field Name

Type

Required

Description

header

CONTENT-TYPE

string

Yes

application/json

header

AUTHORIZATION

string

Yes

The integrator token created previously

header

X-COMPANY-ID

string

Yes

The unique identifier (UID) for the company provided by us

header

X-SITE-IDs

string

Yes

The site identifiers for which to receive online or offline events

query

$top

int32

No

The number of items to be returned

query

$filter

string

No

A filter expression in OData v4 format

query

$orderby

string

No

An order by expression in OData v4 format

query

$select

string

No

Select expression in OData v4 format

query

$skip

int32

No

The number of items to be skipped

Responses

Code

Description

Schema

200

Success Response.

An array of online or offline events.

GetEventsResponseBody

400

Error Response.

General Error.

GET /site/status

Summary

Get the online and offline statuses of a company and specific sites.

Request Parameters

In

Field Name

Type

Required

Description

header

CONTENT-TYPE

string

Yes

application/json

header

AUTHORIZATION

string

Yes

The integrator token created previously

header

X-COMPANY-ID

string

Yes

The unique identifier (UID) for the company provided by us

header

X-SITE-IDs

string

No

The site identifiers for which to receive online or offline statuses

query

site_availability

string

No

If set to true, additional field is_online will be returned to determine if site is online

Responses

Code

Description

Schema

200

Success Response.

A list of site statuses, either for one site status or all, depending on the headers.

GetSiteStatusResponseBody

400

Error Response.

General Error.

GET /terminal/status

Summary

Get specific terminal online and offline statuses for a company and site.

Request Parameters

In

Field Name

Type

Required

Description

header

CONTENT-TYPE

string

Yes

application/json

header

AUTHORIZATION

string

Yes

The integrator token created previously

header

X-COMPANY-ID

string

Yes

The unique identifier (UID) for the company provided by us

header

X-SITE-IDs

string

No

The site identifiers for which to receive online or offline statuses

query

terminal_ids

string

No

The terminal identifiers to return

Responses

Code

Description

Schema

200

Success Response.

The list of terminal statuses, either for one terminal or all, depending on the query.

GetTerminalStatusResponseBody

400

Error Response.

General Error.

GET /kitchen/status

Summary

Set or retrieve the last kitchen hardware status that was received.

Request Parameters

In

Field Name

Type

Required

Description

header

CONTENT-TYPE

string

Yes

application/json

header

AUTHORIZATION

string

Yes

The integrator token created previously

header

X-COMPANY-ID

string

Yes

The unique identifier (UID) for the company provided by us

header

X-SITE-IDs

string

No

The site identifiers for which to receive online or offline events

query

initial_station_ids

string

No

The kitchen station identifications. These should be separated by commas. If passed, only specified stations are returned.

Sample Request Body

curl --location 'https://xssn.xenial.com/kitchen/ status?initial_station_ids={station_id}' \ --header 'Content-Type: application/json' \ --header 'Authorization: {token}' \ --header 'X-Company-Id: {company_id}' \ --header 'X-Site-Ids: {site_id}'

Responses

Code

Description

Schema

200

Success response

GetKitchenStatusResponse

400

Error response.

General error.

Data Models

GetEventsResponseBody

Field Name

Type

Description

items

items Array

A list of event items information

$top

int32

The number of items to be returned

$skip

int32

The number of items to be skipped

page_size

number

items Array

Field Name

Type

Description

_id

string

The event identifier

status

string

The event status

server_date_time

string

The response date and time

company_id

string

The company identifier for the event

site_id

string

The site identifier for the event

Get Events Sample Code

Sample Response Body

[ { "items": [ { "_id": "string", "status": "string", "server_date_time": "string", "company_id": "string", "site_id": "string" } ], "$top": 0, "$skip": 0, "page_size": 0 } ]

GetSiteStatusResponseBody

Field Name

Type

Description

site_statuses

site_statuses Array

A list of the site status information

failed_sites

array

A list of failed states, if applicable

site_statuses Array

Field Name

Type

Description

business_date

string

The business date for the response

last_contact_time

string

The last contact time for the response

name

string

The site name

pos_type

string

The point of sale (POS) system type

pos_version

string

The POS version

store_number

string

The store number

terminal_id

string

The terminal identifier

accepting_online_orders

boolean

A flag that indicates whether the site accepts online orders

company_id

string

The company identifier

site_id

string

The site identifier

terminals

terminals Array

A list of terminal information

Get Site Status Sample Code

Sample Response Body

{ "site_statuses": [ { "business_date": "string", "last_contact_time": "string", "name": "string", "pos_type": "string", "pos_version": "string", "store_number": "string", "terminal_id": "string", "accepting_online_orders": true, "company_id": "string", "site_id": "string", "terminals": [ { "current_business_date": "string", "last_contact_time": "string", "last_drawer_session_number": 0, "last_order_number": 0, "name": "string", "pos_version": "string", "terminal_id": "string", "time_status": true, "time_zone": "string" } ] } ], "failed_sites": [ "string" ] }

GetTerminalStatusResponseBody

Field Name

Type

Description

terminals

terminals Array

A list of the terminal information

failed_terminals

array

A list of failed terminals, if applicable

terminals Array

Field Name

Type

Description

current_business_date

string

The current business date for the response

gross_total

number

The number of terminals

is_in_training_mode

boolean

A flag that indicates whether the terminal is in training mode

last_contact_time

string

The last contact time with the terminal

last_order_number

number

The last order number on the terminal

last_training_order_number

number

The training order number on the terminal

name

string

The terminal name

pos_version

string

The point of sale (POS) terminal version

terminal_id

string

The terminal identifier

time_status

boolean

time_zone

string

The time zone for the terminal

terminal_number

number

The terminal number

terminal_scheme_name

string

The terminal scheme name

connection_name

string

The connection name for the terminal

ip_address

string

The terminal IP address

mac_address

string

The terminal medium access control (MAC) address

device_manufacturer

string

The terminal device manufacturer

device_model

string

The terminal device model

os_name

string

The operating system (OS) name

os_version

string

The OS version

free_disk_space

number

The amount of free disk space on the terminal

RAM_memory

number

The amount of random-access memory (RAM) on the terminal

battery_status

battery_status Object

The terminal battery's status information

payment_peripherals

payment_peripherals Array

The payment peripherals information

printer_statuses

object

The terminal printer's status

shell_version

string

The terminal's shell version

terminal_info_entries

terminal_info_entries Object

The terminal's entries information

battery_status Object

Field Name

Type

Description

level

number

The battery level

charging_status

boolean

A flag that indicates whether the battery is charging

payment_peripherals Array

Field Name

Type

Description

name

string

platform

string

connection_status

string

connection_method

string

serial_number

string

ip_address

string

vendor

string

terminal_info_entries Object

Field Name

Type

Description

discount_calculator_version

string

The terminal discount calculator version

tax_calculator_version

string

The terminal tax calculator version

datasync_version

string

The DataSync version

pos_printing_version

string

The point of sale (POS) terminal printing version

shared_reporting_version

string

The terminal shared reporting version

Get Terminal Status Sample Code

Sample Response Body

{ "terminals": [ { "current_business_date": "string", "gross_total": 0, "is_in_training_mode": true, "last_contact_time": "string", "last_order_number": 0, "last_training_order_number": 0, "name": "string", "pos_version": "string", "terminal_id": "string", "time_status": true, "time_zone": "string", "terminal_number": 0, "terminal_scheme_name": "string", "connection_name": "string", "ip_address": "string", "mac_address": "string", "device_manufacturer": "string", "device_model": "string", "os_name": "string", "os_version": "string", "free_disk_space": 0, "RAM_memory": 0, "battery_status": { "level": 0, "charging_status": true }, "payment_peripherals": [ { "name": "string", "platform": "string", "connection_status": "string", "connection_method": "string", "serial_number": "string", "ip_address": "string", "vendor": "string" } ], "printer_statuses": {}, "shell_version": "string", "terminal_info_entries": { "discount_calculator_version": "string", "tax_calculator_version": "string", "datasync_version": "string", "pos_printing_version": "string", "shared_reporting_version": "string" } } ], "failed_terminals": [ "string" ] }

GetKitchenStatusResponse

Field Name

Type

Description

kitchen_stations

array, [StationItems]

A list of the station items

failed_kitchen_stations

array, [FailedStationItems]

A list of the failed station items

StationItems

Field Name

Type

Description

site_id

string

The site identification

statuses

array, [KitchenStatusPayload]

An array with kitchen statuses

FailedStationItems

Field Name

Type

Description

site_id

string

The site identification

statuses

array (string)

An array with stations identifications that failed while getting the status

KitchenStatusPayload

Field Name

Type

Description

initial_station

string

The kitchen initial station

initial_station_id

string

The initial station identification

initial_screens

array (string)

The kitchen initial screens

ip_address

string

The station's Internet Protocol (IP) address

current_station

string

The current station

current_screens

array (string)

The current screens

current_scheme

string

The kitchen current scheme

default_scheme

string

The kitchen default screen

company_name

string

The company name

site_name

string

The site name

shell_version

string

The current shell version

xkm_version

string

The current Enterprise Kitchen version

last_config_load

string

The date when the configuration was last loaded

last_cloud_restore

string

The date when cloud restore was last loaded

last_contact_time

string

The date and time when the station was last contacted

time_zone

string

The station time zone

connection_name

string

The connection name

device_manufacturer

string

The station device's manufacturer

device_model

string

The station device's model

os_name

string

The station device's operating system (OS) name

os_version

string

The station device's OS version

battery_status

object

The station device's battery status

battery_status.level

number

The station device's battery status level

battery_status.charging_status

boolean

A flag that indicates whether to check if the station device is being charged

mac_address

string

The station device's medium access control (MAC) address

free_disk_space

number

The station device's free space on the disk

RAM_memory

number

The station device's random-access memory (RAM)

KitchenStatusPayload Sample Response Body

{ "kitchen_stations": [ { "site_id": "66e850a4515dddebe55edeb5", "statuses": [ { "initial_station": "Order Ready", "initial_station_id": "58a70cd64a52a807a49ea3a9", "initial_screens": [ "Order Ready" ], "ip_address": "192.168.1.86", "current_station": "Order Ready", "current_screens": [ "Order Ready" ], "current_scheme": "default", "default_scheme": "default", "company_name": "Subs", "site_name": "SBY-39077-0", "shell_version": "2.2.134", "xkm_version": "3.9.61-1", "last_config_load": "2024-09-25T10:25:29.869Z", "last_cloud_restore": null, "last_contact_time": "2024-09-25T20:21:24.595Z", "time_zone": "America/New_York", "connection_name": null, "device_manufacturer": "Elo Touch Solutions", "device_model": "Backpack-4", "os_name": "Android", "os_version": "10", "battery_status": { "level": 0, "charging_status": true }, "mac_address": null, "free_disk_space": 45681844224, "RAM_memory": 3849011200 }, { "initial_station": "Station 2", "initial_station_id": "6656447239251170ec988cb4", "initial_screens": [ "Toppings/Sauces" ], "ip_address": "192.168.1.103", "current_station": "Station 2", "current_screens": [ "Toppings/Sauces" ], "current_scheme": "default", "default_scheme": "default", "company_name": "Subs", "site_name": "SBY-39077-0", "shell_version": "2.2.134", "xkm_version": "3.9.61-1", "last_config_load": "2024-09-25T19:45:45.617Z", "last_cloud_restore": null, "last_contact_time": "2024-09-25T20:21:16.639Z", "time_zone": "America/New_York", "connection_name": null, "device_manufacturer": "Elo Touch Solutions", "device_model": "15in-I-Series-4", "os_name": "Android", "os_version": "10", "battery_status": { "level": 0, "charging_status": true }, "mac_address": null, "free_disk_space": 45761798144, "RAM_memory": 3849068544 }, { "initial_station": "Expediter", "initial_station_id": "6650dc5204bf85116d09264d", "initial_screens": [ "Expediter" ], "ip_address": "192.168.1.100", "current_station": "Expediter", "current_screens": [ "Expediter" ], "current_scheme": "default", "default_scheme": "default", "company_name": "Restaurant", "site_name": "SBY-39077-0", "shell_version": "2.2.134", "xkm_version": "3.9.61-1", "last_config_load": "2024-09-25T19:45:50.295Z", "last_cloud_restore": null, "last_contact_time": "2024-09-25T20:21:24.984Z", "time_zone": "America/New_York", "connection_name": null, "device_manufacturer": "Elo Touch Solutions", "device_model": "15in-I-Series-4", "os_name": "Android", "os_version": "10", "battery_status": { "level": 0, "charging_status": true }, "mac_address": null, "free_disk_space": 45936336896, "RAM_memory": 3849072640 }, { "initial_station": "Station 1", "initial_station_id": "6650de0e04bf85116d09265d", "initial_screens": [ "Bread/Meat/Cheese" ], "ip_address": "192.168.1.99", "current_station": "Station 1", "current_screens": [ "Bread/Meat/Cheese" ], "current_scheme": "default", "default_scheme": "default", "company_name": "Subs", "site_name": "SBY-39077-0", "shell_version": "2.2.134", "xkm_version": "3.9.61-1", "last_config_load": "2024-09-25T19:45:22.961Z", "last_cloud_restore": null, "last_contact_time": "2024-09-25T20:21:43.695Z", "time_zone": "America/New_York", "connection_name": null, "device_manufacturer": "Elo Touch Solutions", "device_model": "15in-I-Series-4", "os_name": "Android", "os_version": "10", "battery_status": { "level": 0, "charging_status": true }, "mac_address": null, "free_disk_space": 33295347712, "RAM_memory": 3849072640 } ] } ], "failed_kitchen_stations": [] }