LISA API
Version: 1.0.0
Status: 


LISA interface for Thunder framework.
(Defined by LISA.json)
Table of Contents
Introduction
Scope
This document describes purpose and functionality of the LISA interface (version 1.0.0). It includes detailed specification about its methods provided and notifications sent.
Case Sensitivity
All identifiers of the interfaces described in this document are case-sensitive. Thus, unless stated otherwise, all keywords, entities, properties, relations and actions should be treated as such.
Acronyms, Abbreviations and Terms
The table below provides and overview of acronyms used in this document and their definitions.
| Acronym |
Description |
| API |
Application Programming Interface |
| HTTP |
Hypertext Transfer Protocol |
| JSON |
JavaScript Object Notation; a data interchange format |
| JSON-RPC |
A remote procedure call protocol encoded in JSON |
The table below provides and overview of terms and abbreviations used in this document and their definitions.
| Term |
Description |
| callsign |
The name given to an instance of a plugin. One plugin can be instantiated multiple times, but each instance the instance name, callsign, must be unique. |
References
| Ref ID |
Description |
| HTTP |
HTTP specification |
| JSON-RPC |
JSON-RPC 2.0 specification |
| JSON |
JSON specification |
| Thunder |
Thunder API Reference |
Description
LISA JSON-RPC interface.
Methods
The following methods are provided by the LISA interface:
LISA interface methods:
Download the application bundle.
Also see: operationStatus
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params.url |
string |
mandatory |
Application url |
| params.appName |
string |
mandatory |
Application name |
| params.category |
string |
mandatory |
Application category |
Result
| Name |
Type |
M/O |
Description |
| result |
string |
mandatory |
Operation handle |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress or other operation pending |
ERROR_BAD_REQUEST |
Invalid params |
ERROR_ILLEGAL_STATE |
App already installed |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.install",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"url": "http://download.com/bundle1.tgz",
"appName": "Player",
"category": "Web browser"
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": "..."
}
Uninstall the application.
Also see: operationStatus
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params.uninstallType |
string |
mandatory |
Type of the uninstall to perform |
Result
| Name |
Type |
M/O |
Description |
| result |
string |
mandatory |
Operation handle |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress or other operation pending |
ERROR_BAD_REQUEST |
Invalid params |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.uninstall",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"uninstallType": "full"
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": "..."
}
Download arbitrary application resource file.
Also see: operationStatus
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params.resKey |
string |
mandatory |
Key to access given resource file from db entry |
| params.resUrl |
string |
mandatory |
Url where to download a resource from |
Result
| Name |
Type |
M/O |
Description |
| result |
string |
mandatory |
Operation handle |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress or other operation pending |
ERROR_BAD_REQUEST |
Invalid params |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.download",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"resKey": "...",
"resUrl": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": "..."
}
Delete persistent data stored locally.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params.resetType |
string |
mandatory |
Type of the reset to perform |
Result
| Name |
Type |
M/O |
Description |
| result |
null |
mandatory |
Always null (default: None) |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress |
ERROR_BAD_REQUEST |
Invalid params |
ERROR_GENERAL |
Filesystem Error |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.reset",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"resetType": "full"
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": null
}
getStorageDetails method
Information on the storage usage.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params?.type |
string |
optional |
Application type (mime-type) |
| params?.id |
string |
optional |
Application ID |
| params?.version |
string |
optional |
Application version |
Result
| Name |
Type |
M/O |
Description |
| result |
object |
mandatory |
Storage payload - returned as GetStorageDetails method result |
| result.apps |
object |
mandatory |
Storage entry - used in results |
| result.apps.path |
string |
mandatory |
Path in local filesystem |
| result.apps?.quotaKB |
string |
optional |
Number of used kilobytes of storage |
| result.apps.usedKB |
string |
mandatory |
Number of used kilobytes of storage |
| result.persistent |
object |
mandatory |
Storage entry - used in results |
| result.persistent.path |
string |
mandatory |
Path in local filesystem |
| result.persistent?.quotaKB |
string |
optional |
Number of used kilobytes of storage |
| result.persistent.usedKB |
string |
mandatory |
Number of used kilobytes of storage |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress |
ERROR_BAD_REQUEST |
Invalid params |
ERROR_GENERAL |
Filesystem Error |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getStorageDetails",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0"
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"apps": {
"path": "...",
"quotaKB": "...",
"usedKB": "..."
},
"persistent": {
"path": "...",
"quotaKB": "...",
"usedKB": "..."
}
}
}
Gets the list of installed applications.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params?.appName |
string |
optional |
Application name |
| params?.category |
string |
optional |
Application category |
Result
| Name |
Type |
M/O |
Description |
| result |
object |
mandatory |
Applications payload - returned as GetList method result |
| result.apps |
array |
mandatory |
List of apps |
| result.apps[#] |
object |
mandatory |
Application entry - used in results |
| result.apps[#].id |
string |
mandatory |
Application ID |
| result.apps[#].type |
string |
mandatory |
Application type (mime-type) |
| result.apps[#].installed |
array |
mandatory |
List of installedApp |
| result.apps[#].installed[#] |
object |
mandatory |
Installed application variant |
| result.apps[#].installed[#].version |
string |
mandatory |
Application version |
| result.apps[#].installed[#].appName |
string |
mandatory |
Application name |
| result.apps[#].installed[#]?.category |
string |
optional |
Application category |
| result.apps[#].installed[#].url |
string |
mandatory |
Application url |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress |
ERROR_BAD_REQUEST |
Invalid params |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getList",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"appName": "Player",
"category": "Web browser"
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"apps": [
{
"id": "com.lgi.app",
"type": "application/vnd.rdk-app.dac.native",
"installed": [
{
"version": "1.0",
"appName": "Player",
"category": "Web browser",
"url": "http://download.com/bundle1.tgz"
}
]
}
]
}
}
Set an arbitrary metadata.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params.key |
string |
mandatory |
Metadata key |
| params.value |
string |
mandatory |
Metadata value |
Result
| Name |
Type |
M/O |
Description |
| result |
null |
mandatory |
Always null (default: None) |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress |
ERROR_BAD_REQUEST |
Invalid params |
ERROR_GENERAL |
Metadata Error |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.setAuxMetadata",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"key": "...",
"value": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": null
}
Clears a single metadata, removing its key.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params.key |
string |
mandatory |
Metadata key |
Result
| Name |
Type |
M/O |
Description |
| result |
null |
mandatory |
Always null (default: None) |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress |
ERROR_BAD_REQUEST |
Invalid params |
ERROR_GENERAL |
Metadata Error |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.clearAuxMetadata",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"key": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": null
}
Get application metadata.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
Result
| Name |
Type |
M/O |
Description |
| result |
object |
mandatory |
Metadata payload - returned as GetMetadata method result |
| result?.appName |
string |
optional |
Application name |
| result?.category |
string |
optional |
Application category |
| result?.url |
string |
optional |
Application url |
| result.resources |
array |
mandatory |
List of key-value entries |
| result.resources[#] |
object |
mandatory |
Struct holding key and value |
| result.resources[#].key |
string |
mandatory |
Key property |
| result.resources[#].value |
string |
mandatory |
Value property |
| result.auxMetadata |
array |
mandatory |
List of key-value entries |
| result.auxMetadata[#] |
object |
mandatory |
Struct holding key and value |
| result.auxMetadata[#].key |
string |
mandatory |
Key property |
| result.auxMetadata[#].value |
string |
mandatory |
Value property |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress |
ERROR_BAD_REQUEST |
Invalid params |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getMetadata",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0"
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"appName": "Player",
"category": "Web browser",
"url": "http://download.com/bundle1.tgz",
"resources": [
{
"key": "...",
"value": "..."
}
],
"auxMetadata": [
{
"key": "...",
"value": "..."
}
]
}
}
Cancel asynchronous request.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.handle |
string |
mandatory |
Operation handle |
Result
| Name |
Type |
M/O |
Description |
| result |
string |
mandatory |
Operation status |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress |
ERROR_BAD_REQUEST |
Invalid handle |
ERROR_GENERAL |
Error |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.cancel",
"params": {
"handle": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": "Success"
}
Estimated progress of a request.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.handle |
string |
mandatory |
Operation handle |
Result
| Name |
Type |
M/O |
Description |
| result |
integer |
mandatory |
Operation progress |
Errors
| Message |
Description |
ERROR_INPROGRESS |
LISA initialization in progress |
ERROR_BAD_REQUEST |
Invalid handle |
ERROR_GENERAL |
Error |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getProgress",
"params": {
"handle": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": 0
}
Lock an application.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params?.reason |
string |
optional |
Reason for lock |
| params?.owner |
string |
optional |
Owner of lock |
Result
| Name |
Type |
M/O |
Description |
| result |
object |
mandatory |
Struct holding handle |
| result.handle |
string |
mandatory |
Operation handle |
Errors
| Message |
Description |
ERROR_TOO_MANY_REQUESTS |
LISA initialization in progress or other operation pending |
ERROR_WRONG_PARAMS |
Invalid params or app not unstalled |
ERROR_APP_UNINSTALLING |
App is currently being uninstalled |
ERROR_APP_LOCKED |
App is already locked |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.lock",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"reason": "active",
"owner": "awc"
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"handle": "..."
}
}
Unlock an application.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.handle |
string |
mandatory |
Operation handle |
Result
| Name |
Type |
M/O |
Description |
| result |
null |
mandatory |
Always null (default: None) |
Errors
| Message |
Description |
ERROR_WRONG_HANDLE |
Wrong handle or app not locked anymore |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.unlock",
"params": {
"handle": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": null
}
Get lock info.
Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
Result
| Name |
Type |
M/O |
Description |
| result |
object |
mandatory |
Struct holding lock info |
| result?.reason |
string |
optional |
Reason for lock |
| result?.owner |
string |
optional |
Owner of lock |
Errors
| Message |
Description |
ERROR_WRONG_PARAMS |
Invalid params or app not unstalled |
ERROR_WRONG_HANDLE |
Wrong handle or app not locked anymore |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getLockInfo",
"params": {
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0"
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"reason": "active",
"owner": "awc"
}
}
Notifications
Notifications are autonomous events triggered by the internals of the implementation and broadcasted via JSON-RPC to all registered observers. Refer to [Thunder] for information on how to register for a notification.
The following events are provided by the LISA interface:
LISA interface events:
| Notification |
Description |
| operationStatus |
Notifies about currently pending operation status |
Notifies about currently pending operation status.
Description
Register to this event to be notified about current state of the pending operation
Notification Parameters
| Name |
Type |
M/O |
Description |
| params |
object |
mandatory |
... |
| params.handle |
string |
mandatory |
Operation handle |
| params.operation |
string |
mandatory |
Operation |
| params.type |
string |
mandatory |
Application type (mime-type) |
| params.id |
string |
mandatory |
Application ID |
| params.version |
string |
mandatory |
Application version |
| params.status |
string |
mandatory |
Operation status |
| params?.details |
string |
optional |
If error occurred this property contains details on what happened |
Example
Registration
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.register",
"params": {
"event": "operationStatus",
"id": "myid"
}
}
Notification
{
"jsonrpc": "2.0",
"method": "myid.operationStatus",
"params": {
"handle": "...",
"operation": "Installing",
"type": "application/vnd.rdk-app.dac.native",
"id": "com.lgi.app",
"version": "1.0",
"status": "Success",
"details": "..."
}
}
The client ID parameter is passed within the notification designator, i.e. <client-id>.operationStatus.