PackageManager API
Version: 1.0.0
Status: 


PackageManager interface for Thunder framework.
(Defined with IPackageManager in IPackageManager.h)
Table of Contents
Introduction
Scope
This document describes purpose and functionality of the PackageManager 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
PackageManager JSON-RPC interface.
Methods
The following methods are provided by the PackageManager interface:
PackageManager interface methods:
Download the application bundle.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.type |
string |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.url |
string |
mandatory |
URL used to install package |
params.appName |
string |
mandatory |
Application Name |
params.category |
string |
mandatory |
Category of the package |
Result
Name |
Type |
M/O |
Description |
result |
string |
mandatory |
Handle to the active installtion that can be used to refer to it later. e.g. for canceling or progress information |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.install",
"params": {
"type": "...",
"id": "...",
"version": "...",
"url": "...",
"appName": "...",
"category": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": "..."
}
Uninstall the application.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.type |
string |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.uninstallType |
string |
mandatory |
Type of uninstall |
Result
Name |
Type |
M/O |
Description |
result |
string |
mandatory |
Handle to the active uninstallation that can be used to refer to it later. e.g. for canceling or progress information |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.uninstall",
"params": {
"type": "...",
"id": "...",
"version": "...",
"uninstallType": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": "..."
}
Download arbitrary application's resource file.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.type |
string |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.resKey |
string |
mandatory |
Resorce Key |
params.url |
string |
mandatory |
URL used to download package |
Result
Name |
Type |
M/O |
Description |
result |
string |
mandatory |
Handle to the active download that can be used to refer to it later. e.g. for canceling or progress information |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.download",
"params": {
"type": "...",
"id": "...",
"version": "...",
"resKey": "...",
"url": "..."
}
}
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 |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.resetType |
string |
mandatory |
Type of Reset |
Result
Name |
Type |
M/O |
Description |
result |
null |
mandatory |
Always null |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.reset",
"params": {
"type": "...",
"id": "...",
"version": "...",
"resetType": "..."
}
}
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 |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
Result
Name |
Type |
M/O |
Description |
result |
object |
mandatory |
Info about Storage |
result.apps |
object |
mandatory |
Storage details of application |
result.apps.path |
string |
mandatory |
Path of Storage |
result.apps.quotaKb |
string |
mandatory |
Total Space allowed in KB |
result.apps.usedKb |
string |
mandatory |
Used Space in KB |
result.persistent |
object |
mandatory |
Storage details of persistent |
result.persistent.path |
string |
mandatory |
Path of Storage |
result.persistent.quotaKb |
string |
mandatory |
Total Space allowed in KB |
result.persistent.usedKb |
string |
mandatory |
Used Space in KB |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getStorageDetails",
"params": {
"type": "...",
"id": "...",
"version": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"apps": {
"path": "...",
"quotaKb": "...",
"usedKb": "..."
},
"persistent": {
"path": "...",
"quotaKb": "...",
"usedKb": "..."
}
}
}
Set an arbitrary metadata.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.type |
string |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.key |
string |
mandatory |
Key used to set arbitrary meta data |
params.value |
string |
mandatory |
Value of given key |
Result
Name |
Type |
M/O |
Description |
result |
null |
mandatory |
Always null |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.setAuxMetadata",
"params": {
"type": "...",
"id": "...",
"version": "...",
"key": "...",
"value": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": null
}
Clears an arbitrary metadata.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.type |
string |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.key |
string |
mandatory |
Key used to clear arbitrary meta data |
Result
Name |
Type |
M/O |
Description |
result |
null |
mandatory |
Always null |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.clearAuxMetadata",
"params": {
"type": "...",
"id": "...",
"version": "...",
"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 |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
Result
Name |
Type |
M/O |
Description |
result |
object |
mandatory |
... |
result.metadata |
object |
mandatory |
Payload of meta data |
result.metadata.appName |
string |
mandatory |
Name of the application |
result.metadata.type |
string |
mandatory |
Type of the package |
result.metadata.category |
string |
mandatory |
Category of the package |
result.metadata.url |
string |
mandatory |
URL used for operation |
result.resources |
array |
mandatory |
Resources |
result.resources[#] |
object |
mandatory |
... |
result.resources[#].key |
string |
mandatory |
Key |
result.resources[#].value |
string |
mandatory |
Value |
result.auxMetadata |
array |
mandatory |
Arbitrary metadata |
result.auxMetadata[#] |
object |
mandatory |
... |
result.auxMetadata[#].key |
string |
mandatory |
Key |
result.auxMetadata[#].value |
string |
mandatory |
Value |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getMetadata",
"params": {
"type": "...",
"id": "...",
"version": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"metadata": {
"appName": "...",
"type": "...",
"category": "...",
"url": "..."
},
"resources": [
{
"key": "...",
"value": "..."
}
],
"auxMetadata": [
{
"key": "...",
"value": "..."
}
]
}
}
Cancel asynchronous request.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.handle |
string |
mandatory |
Handle of the currently progressing operation (i.e, install/uninstal/download) |
Result
Name |
Type |
M/O |
Description |
result |
null |
mandatory |
Always null |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.cancel",
"params": {
"handle": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": null
}
Estimated progress of a request.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.handle |
string |
mandatory |
Handle of the currently progressing operation (i.e, install/uninstal/download) |
Result
Name |
Type |
M/O |
Description |
result |
integer |
mandatory |
Indication of installation progress |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getProgress",
"params": {
"handle": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": 0
}
List installed applications.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.type |
string |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.appName |
string |
mandatory |
Application Name |
params.category |
string |
mandatory |
Category of the package |
Result
Name |
Type |
M/O |
Description |
result |
array |
mandatory |
Ids of Installed Package |
result[#] |
object |
mandatory |
... |
result[#].id |
string |
mandatory |
Unique identifier of the package |
result[#].version |
string |
mandatory |
Version of the package |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getList",
"params": {
"type": "...",
"id": "...",
"version": "...",
"appName": "...",
"category": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": [
{
"id": "...",
"version": "..."
}
]
}
Lock the application. Preventing uninstallation.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.type |
string |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.reason |
string |
mandatory |
Reason to lock the application |
params.owner |
string |
mandatory |
Owner used to lock |
Result
Name |
Type |
M/O |
Description |
result |
string |
mandatory |
Handle to the lock that can be used to refer to it later. e.g. for unlock later |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.lock",
"params": {
"type": "...",
"id": "...",
"version": "...",
"reason": "...",
"owner": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": "..."
}
Unlock application.
Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.handle |
string |
mandatory |
Handle got during the Lock, it is to be used to Unlock operation |
Result
Name |
Type |
M/O |
Description |
result |
null |
mandatory |
Always null |
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 |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
Result
Name |
Type |
M/O |
Description |
result |
object |
mandatory |
Info about Lock |
result.reason |
string |
mandatory |
Reason of Locking |
result.owner |
string |
mandatory |
Owner of Locking |
Example
Request
{
"jsonrpc": "2.0",
"id": 42,
"method": "<callsign>.1.getLockInfo",
"params": {
"type": "...",
"id": "...",
"version": "..."
}
}
Response
{
"jsonrpc": "2.0",
"id": 42,
"result": {
"reason": "...",
"owner": "..."
}
}
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 PackageManager interface:
PackageManager interface events:
Notification |
Description |
operationStatus |
Completion of asynchronous operation |
Completion of asynchronous operation.
Notification Parameters
Name |
Type |
M/O |
Description |
params |
object |
mandatory |
... |
params.handle |
string |
mandatory |
Handle of the currently progressing operation (i.e, install/uninstal/download) |
params.operation |
string |
mandatory |
Type of the operation |
params.type |
string |
mandatory |
Type of the package |
params.id |
string |
mandatory |
Id of the package |
params.version |
string |
mandatory |
Version of the package |
params.status |
string |
mandatory |
Current status of the operation |
params.details |
string |
mandatory |
Details about the operation |
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": "...",
"type": "...",
"id": "...",
"version": "...",
"status": "...",
"details": "..."
}
}
The client ID parameter is passed within the notification designator, i.e. <client-id>.operationStatus
.