API Key Concepts

Jetstream facilitates communication:

  1. Between your remotely deployed Terso RFID device and your in-house developed application that consumes Jetstream messages.
  2. Between your Jetstream application and your in-house developed application that consumes Jetstream messages.

Let’s take a look at each communication path in more detail.

A remotely deployed Terso RFID device initiates communications on its own as well as responds to communications from API requests.

Jetstream will, then, publish the event to the events queue of your Jetstream application. Your in-house developed application can, then, retrieve the queued events, via a Get Events API request. How your application uses the events is up to the business logic you’ve coded in. For example, the information extracted from a HeartbeatEvent event could be used to update when a device last communicated and, thus, could serve as an indication that the device has internet connectivity. This information would be useful on some sort of devices dashboard.


Your in-house application can communicate with a Terso RFID device via command API requests. Since Jetstream supports many different Terso RFID devices, each with its own unique capabilities, Device Definitions are used to define the commands and configuration values each device supports in Jetstream. For example, to query for a device’s current network configuration, a Get a Device's Configuration Parameters command API request can be made. When a command request is made, Jetstream determines if the device is online. If the device:

  • Is online, the command is executed immediately.
  • Is offline, the command is queued in Jetstream for the device to pick up and execute the next time it establishes communications or polls for queueable commands.

Once a command is executed, if the command:

  • Is not synchronous, results are published and can be viewed in a CommandCompletionEvent event, via Get Events. The CommandCompletionEvent event is published to the events queue of your Jetstream application after the command executes. If there:
    • Is no issue executing the command, the Output Parameter List will be populated with data, if applicable to the command.
    • Is an issue executing the command, exceptions will appear in the Exception List.

In the end, your in-house application will work with a combination of Command Responses and CommandCompletionEvents to complete communications with a Terso RFID device.


Whereas command API requests are meant to communicate with your Terso RFID devices, configuration API requests are meant to communicate with your Jetstream application.

Configuration API requests allow you to manage and maintain the resources (e.g., devices, device definitions, policies, events) pertaining to your Jetstream application. Within your Jetstream application, you can Create a Device, Create a Policy, Add a Policy to a Device, Get All Devices, and more. Get Events, which has already been mentioned above, is also a configuration API request.

When making a configuration API request, results are returned immediately and can be viewed in the Response Body.

A device’s component that communicates with Jetstream.

An alternate name a device may assume to communicate on behalf of the alias. A device may report an alias’ ObjectEvent. For example, if you store inventory in three separate offices, you could create three Aliases in Jetstream, each representing an office, associate these Aliases to a TS084 Handheld RFID Device, and then use the one device to report the present inventory from any one of these locations.


An application created within Jetstream, representing a logical boundary containing devices and users. Security is setup and configured at the application level for users. The users within an application can only communicate and interact with the devices within that application.

This should not be confused with your in-house developed application that consumes Jetstream messages.


A request or query assigned to a Terso RFID device. A command is executed on a device. A command will be one of three types, described below, and will behave differently depending on whether the device is online or offline.

Command Type Device is Online Device is Offline
Synchronous, Queueable Immediate execution Queued execution
Synchronous, Not Queueable Immediate execution Failure to execute
Not Synchronous, Queueable Immediate execution Queued execution
Command Id

A 36-character GUID tying the following pieces of a command request together: Command Response, CommandQueuedEvent, and CommandCompletionEvent. Each of these components will have the same value in their "CommandId" property. Depending on which command type is being handled in a command request, these three parts will be created at different times and may end up buried with many other responses and events.

Using their common "CommandId" property enables you to gather all three pieces to determine if execution of a command on a device was successful or not.

Command Response

A reply received within the Response Body from a command request being executed. Depending on the command type that was executed, described below, results are returned in the Response Body or not.

Command Type Results Returned in the Response Body?
Synchronous Yes – see the Output Parameter List or Exception List.
Not Synchronous No – see the Output Parameter List or Exception List of the related CommandCompletionEvent event.

A setup, change, or request performed on a Jetstream application. Configuration actions are performed for the maintenance and management of Jetstream resources (e.g., devices, device definitions, policies, events).


A login record containing the authentication information needed to access a device and/or an application.

Jetstream should not be considered the system of record for credentials and customers should be managing and maintaining credentials in their own systems while working with Jetstream.


A Terso RFID device. Our intelligent devices come in the form factors of enclosures, mobile cases, kiosks, and hand-helds.

WebSockets capable devices are able to process eligible commands right away, providing near real-time interaction. Currently, devices that are WebSockets capable include enclosures with firmware v4+ and mobile cases. Devices that are not WebSockets capable will poll for and execute queueable commands at a set time interval. At the moment, devices that aren’t WebSockets capable include enclosures with firmware v3 and kiosks.

Device Definition

A unique collection of settings establishing the identity of a specific Terso RFID device. The settings are a combination of identifiers (e.g., name, firmware version, configuration parameters) for the device and capabilities (e.g., restart, update firmware, scan for RFID tags) the device supports.


An electronic product code (EPC) is an identifier encoded onto an RFID tag, which can then be read by RFID devices.


A message capturing information pertaining to the single occurrence of a process. An event pertains to a device process and/or a Jetstream process. The table below summarizes the available event types and the process they relate to.

Event Type Device Process Jetstream Process
AggregateEvent X
ObjectEvent X
CommandQueuedEvent X
CommandCompletionEvent X X
LogicalDeviceAddedEvent X
LogicalDeviceRemovedEvent X
HeartbeatEvent X
LogEntryEvent X
SensorReadingEvent X
Events provide a window into all that is occurring in your Jetstream application. Below is some, but not all of the questions events can answer:
  • What RFID tags were added/removed from a device during the last door open/close?
  • What RFID tags are currently in a device?
  • What commands have been queued for a device to process?
  • What commands have been completed on/processed by a device?
  • What devices have been added to a Jetstream application?
  • What devices have been removed from a Jetstream application?
  • What devices have/don’t have internet connectivity?
  • What devices have a low battery?
  • What are the temperature readings of a device?
Events can be retrieved via the Get Events Jetstream API request for 14 days. After this period, events are deleted and are no longer retrievable. Once events are retrieved, it is recommended that they be deleted via Delete Events – this will help in sorting through what events have and haven’t been retrieved. Events that have been retrieved and not deleted via Delete Events, however, will be automatically deleted and no longer retrievable after 4 days.
Exception List

A listing of exceptions while executing a command on a device or any issues in queuing/dequeuing the command.

Immediate Results

Results associated with the execution of a command on a device. These results are returned to the calling system immediately. In these circumstances, the calling system will receive a Command Response as well as a CommandCompletionEvent.


A connection status of a device indicating that it is not connected to Jetstream. Either the device is not WebSockets enabled/capable or has lost power/internet connectivity.


A connection status of a device indicating that it is connected to Jetstream. The device is WebSockets enabled and/or has power and internet connectivity.

Output Parameter List

A listing of key-value/parameter-value settings resulting from the execution of a command on a device.


A unique collection of settings to manage a device’s configuration values (the configuration parameters are defined by the device’s definition). A policy may be added to a device to apply its configuration settings. Conversely, a policy may be removed from a device to revoke its configuration settings.

Published Results

Results associated with the execution of a command on a device. These results are published to Get Events for retrieval. In these circumstances, the calling system will receive a Command Response but the results will only be made available in CommandCompletionEvent which, along with CommandQueuedEvent, can be retrieved via Get Events.

A geographic region where a device is being placed. This is used to create the most reliable and lowest latency connection to the device. Possible locations include the following:
  • US (United States)
  • EU (Europe)
  • AP (Asia Pacific)
  • USGOV (United States - to meet U.S. government compliance requirements)
An indicator that the value of a property is distinct and there cannot be another instance of the property with the same value.

A person using the Jetstream API. During user account sign up, a user is provided a unique access key and is associated to a Jetstream application. Multiple users may be associated to one Jetstream application. A user must use their access key to make Jetstream API requests and these requests pertain to the user’s Jetstream application.