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 |
| string | Yes |
|
header |
| string | Yes | The integrator token created previously |
header |
| string | Yes | The unique identifier (UID) for the company provided by us |
header |
| string | Yes | The site identifiers for which to receive online or offline events |
query |
| int32 | No | The number of items to be returned |
query |
| string | No | A filter expression in OData v4 format |
query |
| string | No | An order by expression in OData v4 format |
query |
| string | No | Select expression in OData v4 format |
query |
| int32 | No | The number of items to be skipped |
Responses
Code | Description | Schema |
|---|---|---|
200 | Success Response. An array of online or offline events. | |
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 |
| string | Yes |
|
header |
| string | Yes | The integrator token created previously |
header |
| string | Yes | The unique identifier (UID) for the company provided by us |
header |
| string | No | The site identifiers for which to receive online or offline statuses |
query |
| string | No | If set to true, additional field |
Responses
Code | Description | Schema |
|---|---|---|
200 | Success Response. A list of site statuses, either for one site status or all, depending on the headers. | |
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 |
| string | Yes |
|
header |
| string | Yes | The integrator token created previously |
header |
| string | Yes | The unique identifier (UID) for the company provided by us |
header |
| string | No | The site identifiers for which to receive online or offline statuses |
query |
| 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. | |
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 |
| string | Yes |
|
header |
| string | Yes | The integrator token created previously |
header |
| string | Yes | The unique identifier (UID) for the company provided by us |
header |
| string | No | The site identifiers for which to receive online or offline events |
query |
| 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 | |
400 | Error response. General error. |
Data Models
GetEventsResponseBody
Field Name | Type | Description |
|---|---|---|
| A list of event items information | |
| int32 | The number of items to be returned |
| int32 | The number of items to be skipped |
| number |
items Array
Field Name | Type | Description |
|---|---|---|
| string | The event identifier |
| string | The event status |
| string | The response date and time |
| string | The company identifier for the event |
| 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 |
|---|---|---|
| A list of the site status information | |
| array | A list of failed states, if applicable |
site_statuses Array
Field Name | Type | Description |
|---|---|---|
| string | The business date for the response |
| string | The last contact time for the response |
| string | The site name |
| string | The point of sale (POS) system type |
| string | The POS version |
| string | The store number |
| string | The terminal identifier |
| boolean | A flag that indicates whether the site accepts online orders |
| string | The company identifier |
| string | The site identifier |
| 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 |
|---|---|---|
| A list of the terminal information | |
| array | A list of failed terminals, if applicable |
terminals Array
Field Name | Type | Description |
|---|---|---|
| string | The current business date for the response |
| number | The number of terminals |
| boolean | A flag that indicates whether the terminal is in training mode |
| string | The last contact time with the terminal |
| number | The last order number on the terminal |
| number | The training order number on the terminal |
| string | The terminal name |
| string | The point of sale (POS) terminal version |
| string | The terminal identifier |
| boolean | |
| string | The time zone for the terminal |
| number | The terminal number |
| string | The terminal scheme name |
| string | The connection name for the terminal |
| string | The terminal IP address |
| string | The terminal medium access control (MAC) address |
| string | The terminal device manufacturer |
| string | The terminal device model |
| string | The operating system (OS) name |
| string | The OS version |
| number | The amount of free disk space on the terminal |
| number | The amount of random-access memory (RAM) on the terminal |
| The terminal battery's status information | |
| The payment peripherals information | |
| object | The terminal printer's status |
| string | The terminal's shell version |
| The terminal's entries information |
battery_status Object
Field Name | Type | Description |
|---|---|---|
| number | The battery level |
| boolean | A flag that indicates whether the battery is charging |
payment_peripherals Array
Field Name | Type | Description |
|---|---|---|
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string |
terminal_info_entries Object
Field Name | Type | Description |
|---|---|---|
| string | The terminal discount calculator version |
| string | The terminal tax calculator version |
| string | The DataSync version |
| string | The point of sale (POS) terminal printing 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 |
|---|---|---|
| array, [StationItems] | A list of the station items |
| array, [FailedStationItems] | A list of the failed station items |
StationItems
Field Name | Type | Description |
|---|---|---|
| string | The site identification |
| array, [KitchenStatusPayload] | An array with kitchen statuses |
FailedStationItems
Field Name | Type | Description |
|---|---|---|
| string | The site identification |
| array (string) | An array with stations identifications that failed while getting the status |
KitchenStatusPayload
Field Name | Type | Description |
|---|---|---|
| string | The kitchen initial station |
| string | The initial station identification |
| array (string) | The kitchen initial screens |
| string | The station's Internet Protocol (IP) address |
| string | The current station |
| array (string) | The current screens |
| string | The kitchen current scheme |
| string | The kitchen default screen |
| string | The company name |
| string | The site name |
| string | The current shell version |
| string | The current Enterprise Kitchen version |
| string | The date when the configuration was last loaded |
| string | The date when cloud restore was last loaded |
| string | The date and time when the station was last contacted |
| string | The station time zone |
| string | The connection name |
| string | The station device's manufacturer |
| string | The station device's model |
| string | The station device's operating system (OS) name |
| string | The station device's OS version |
| object | The station device's battery status |
| number | The station device's battery status level |
| boolean | A flag that indicates whether to check if the station device is being charged |
| string | The station device's medium access control (MAC) address |
| number | The station device's free space on the disk |
| 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": [] }