diff --git a/apis/PackageManager/IAppPackageManager.h b/apis/PackageManager/IAppPackageManager.h index 6c7d7d31..999229ad 100644 --- a/apis/PackageManager/IAppPackageManager.h +++ b/apis/PackageManager/IAppPackageManager.h @@ -124,22 +124,22 @@ namespace Exchange { // @param fileLocator: FileLocator virtual Core::hresult Delete(const string &fileLocator) = 0; - struct Percent { - uint8_t percent; + struct ProgressInfo { + uint8_t progress; }; - // @brief Delete + // @brief Progress // @text progress // @param downloadId: Download id virtual Core::hresult Progress( const string &downloadId, - Percent &percent /* @out */) = 0; + ProgressInfo &progress /* @out */) = 0; // @brief GetStorageDetails // @text getStorageDetails virtual Core::hresult GetStorageDetails( - uint32_t "aKb /* @out */, - uint32_t &usedKb /* @out */) = 0; + string "aKb /* @out */, + string &usedKb /* @out */) = 0; // @brief RateLimit // @text rateLimit diff --git a/docs/apis/PackageDownloaderAPI.md b/docs/apis/PackageDownloaderAPI.md new file mode 100644 index 00000000..0fd4cb51 --- /dev/null +++ b/docs/apis/PackageDownloaderAPI.md @@ -0,0 +1,498 @@ + + +# PackageDownloader API + +**Version: 1.0.0** + +**Status: :black_circle::white_circle::white_circle:** + +PackageDownloader interface for Thunder framework. + +(Defined with IPackageDownloader in [IAppPackageManager.h](https://github.com/rdkcentral/ThunderInterfaces/blob/master/interfaces/IAppPackageManager.h)) + +### Table of Contents + +- [Introduction](#head_Introduction) +- [Description](#head_Description) +- [Methods](#head_Methods) +- [Notifications](#head_Notifications) + + +# Introduction + + +## Scope + +This document describes purpose and functionality of the PackageDownloader 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://www.w3.org/Protocols) | HTTP specification | +| [JSON-RPC](https://www.jsonrpc.org/specification) | JSON-RPC 2.0 specification | +| [JSON](http://www.json.org/) | JSON specification | +| [Thunder](https://github.com/WebPlatformForEmbedded/Thunder/blob/master/doc/WPE%20-%20API%20-%20WPEFramework.docx) | Thunder API Reference | + + +# Description + +PackageDownloader JSON-RPC interface. + + +# Methods + +The following methods are provided by the PackageDownloader interface: + +PackageDownloader interface methods: + +| Method | Description | +| :-------- | :-------- | +| [download](#method_download) | Download | +| [pause](#method_pause) | Pause | +| [resume](#method_resume) | Resume | +| [cancel](#method_cancel) | Cancel | +| [delete](#method_delete) | Delete | +| [progress](#method_progress) | Delete | +| [getStorageDetails](#method_getStorageDetails) | GetStorageDetails | +| [rateLimit](#method_rateLimit) | RateLimit | + + +## *download [method](#head_Methods)* + +Download. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.url | string | mandatory | Download url | +| params.options | object | mandatory | Download options | +| params.options.priority | boolean | mandatory | Priority | +| params.options.retries | integer | mandatory | Retries | +| params.options.rateLimit | integer | mandatory | RateLimit | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | object | mandatory | | +| result.downloadId | string | mandatory | | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.download", + "params": { + "url": "...", + "options": { + "priority": false, + "retries": 0, + "rateLimit": 0 + } + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": { + "downloadId": "..." + } +} +``` + + +## *pause [method](#head_Methods)* + +Pause. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.downloadId | string | mandatory | Download id | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | null | mandatory | Always null | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.pause", + "params": { + "downloadId": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": null +} +``` + + +## *resume [method](#head_Methods)* + +Resume. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.downloadId | string | mandatory | Download id | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | null | mandatory | Always null | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.resume", + "params": { + "downloadId": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": null +} +``` + + +## *cancel [method](#head_Methods)* + +Cancel. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.downloadId | string | mandatory | Download id | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | null | mandatory | Always null | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.cancel", + "params": { + "downloadId": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": null +} +``` + + +## *delete [method](#head_Methods)* + +Delete. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.fileLocator | string | mandatory | FileLocator | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | null | mandatory | Always null | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.delete", + "params": { + "fileLocator": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": null +} +``` + + +## *progress [method](#head_Methods)* + +Delete. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.downloadId | string | mandatory | Download id | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | object | mandatory | | +| result.progress | integer | mandatory | | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.progress", + "params": { + "downloadId": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": { + "progress": 0 + } +} +``` + + +## *getStorageDetails [method](#head_Methods)* + +GetStorageDetails. + +### Parameters + +This method takes no parameters. + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | object | mandatory | | +| result.quotaKb | string | mandatory | | +| result.usedKb | string | mandatory | | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.getStorageDetails" +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": { + "quotaKb": "...", + "usedKb": "..." + } +} +``` + + +## *rateLimit [method](#head_Methods)* + +RateLimit. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.downloadId | string | mandatory | Download id | +| params.limit | integer | mandatory | Limit | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | null | mandatory | Always null | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.rateLimit", + "params": { + "downloadId": "...", + "limit": 0 + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": null +} +``` + + +# Notifications + +Notifications are autonomous events triggered by the internals of the implementation and broadcasted via JSON-RPC to all registered observers. Refer to [[Thunder](#ref.Thunder)] for information on how to register for a notification. + +The following events are provided by the PackageDownloader interface: + +PackageDownloader interface events: + +| Notification | Description | +| :-------- | :-------- | +| [onAppDownloadStatus](#notification_onAppDownloadStatus) | Signal changes on the status | + + +## *onAppDownloadStatus [notification](#head_Notifications)* + +Signal changes on the status. + +### Notification Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.jsonresponse | string | mandatory | | + +### Example + +#### Registration + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.register", + "params": { + "event": "onAppDownloadStatus", + "id": "myid" + } +} +``` + +#### Notification + +```json +{ + "jsonrpc": "2.0", + "method": "myid.onAppDownloadStatus", + "params": { + "jsonresponse": "..." + } +} +``` + +> The *client ID* parameter is passed within the notification designator, i.e. ``.onAppDownloadStatus``. + diff --git a/docs/apis/PackageHandlerAPI.md b/docs/apis/PackageHandlerAPI.md new file mode 100644 index 00000000..14cdfbb6 --- /dev/null +++ b/docs/apis/PackageHandlerAPI.md @@ -0,0 +1,330 @@ + + +# PackageHandler API + +**Version: 1.0.0** + +**Status: :black_circle::white_circle::white_circle:** + +PackageHandler interface for Thunder framework. + +(Defined with IPackageHandler in [IAppPackageManager.h](https://github.com/rdkcentral/ThunderInterfaces/blob/master/interfaces/IAppPackageManager.h)) + +### Table of Contents + +- [Introduction](#head_Introduction) +- [Description](#head_Description) +- [Methods](#head_Methods) + + +# Introduction + + +## Scope + +This document describes purpose and functionality of the PackageHandler interface (version 1.0.0). It includes detailed specification about its methods provided. + + +## 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://www.w3.org/Protocols) | HTTP specification | +| [JSON-RPC](https://www.jsonrpc.org/specification) | JSON-RPC 2.0 specification | +| [JSON](http://www.json.org/) | JSON specification | +| [Thunder](https://github.com/WebPlatformForEmbedded/Thunder/blob/master/doc/WPE%20-%20API%20-%20WPEFramework.docx) | Thunder API Reference | + + +# Description + +PackageHandler JSON-RPC interface. + + +# Methods + +The following methods are provided by the PackageHandler interface: + +PackageHandler interface methods: + +| Method | Description | +| :-------- | :-------- | +| [lock](#method_lock) | Lock | +| [unlock](#method_unlock) | Unlock | +| [getLockedInfo](#method_getLockedInfo) | GetLockedInfo | + + +## *lock [method](#head_Methods)* + +Lock. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.packageId | string | mandatory | Package Id | +| params.version | string | mandatory | Version | +| params.lockReason | string | mandatory | LockReason (must be one of the following: *LAUNCH, SYSTEM_APP*) | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | object | mandatory | | +| result.lockId | integer | mandatory | Lock Id | +| result.unpackedPath | string | mandatory | Unpacked Path | +| result.configMetadata | object | mandatory | Config Metadata | +| result.configMetadata.dial | boolean | mandatory | | +| result.configMetadata.wanLanAccess | boolean | mandatory | | +| result.configMetadata.thunder | boolean | mandatory | | +| result.configMetadata.systemMemoryLimit | integer | mandatory | | +| result.configMetadata.gpuMemoryLimit | integer | mandatory | | +| result.configMetadata.envVariables | string | mandatory | | +| result.configMetadata.userId | integer | mandatory | | +| result.configMetadata.groupId | integer | mandatory | | +| result.configMetadata.dataImageSize | integer | mandatory | | +| result.configMetadata.resourceManagerClientEnabled | boolean | mandatory | | +| result.configMetadata.dialId | string | mandatory | | +| result.configMetadata.command | string | mandatory | | +| result.configMetadata.appType | string | mandatory | | +| result.configMetadata.appPath | string | mandatory | | +| result.configMetadata.runtimePath | string | mandatory | | +| result.configMetadata.logFilePath | string | mandatory | | +| result.configMetadata.logFileMaxSize | integer | mandatory | | +| result.configMetadata.logLevels | string | mandatory | | +| result.configMetadata.mapi | boolean | mandatory | | +| result.configMetadata.fkpsFiles | string | mandatory | | +| result.configMetadata.fireboltVersion | string | mandatory | | +| result.configMetadata.enableDebugger | boolean | mandatory | | +| result.appMetadata | array | mandatory | App Metadata | +| result.appMetadata[#] | object | mandatory | | +| result.appMetadata[#].packageId | string | mandatory | PackageId | +| result.appMetadata[#].version | string | mandatory | Version | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.lock", + "params": { + "packageId": "...", + "version": "...", + "lockReason": "LAUNCH" + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": { + "lockId": 0, + "unpackedPath": "...", + "configMetadata": { + "dial": false, + "wanLanAccess": false, + "thunder": false, + "systemMemoryLimit": 0, + "gpuMemoryLimit": 0, + "envVariables": "...", + "userId": 0, + "groupId": 0, + "dataImageSize": 0, + "resourceManagerClientEnabled": false, + "dialId": "...", + "command": "...", + "appType": "...", + "appPath": "...", + "runtimePath": "...", + "logFilePath": "...", + "logFileMaxSize": 0, + "logLevels": "...", + "mapi": false, + "fkpsFiles": "...", + "fireboltVersion": "...", + "enableDebugger": false + }, + "appMetadata": [ + { + "packageId": "...", + "version": "..." + } + ] + } +} +``` + + +## *unlock [method](#head_Methods)* + +Unlock. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.packageId | string | mandatory | Package Id | +| params.version | string | mandatory | Version | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | null | mandatory | Always null | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.unlock", + "params": { + "packageId": "...", + "version": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": null +} +``` + + +## *getLockedInfo [method](#head_Methods)* + +GetLockedInfo. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.packageId | string | mandatory | Package Id | +| params.version | string | mandatory | Version | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | object | mandatory | | +| result.unpackedPath | string | mandatory | | +| result.configMetadata | object | mandatory | | +| result.configMetadata.dial | boolean | mandatory | | +| result.configMetadata.wanLanAccess | boolean | mandatory | | +| result.configMetadata.thunder | boolean | mandatory | | +| result.configMetadata.systemMemoryLimit | integer | mandatory | | +| result.configMetadata.gpuMemoryLimit | integer | mandatory | | +| result.configMetadata.envVariables | string | mandatory | | +| result.configMetadata.userId | integer | mandatory | | +| result.configMetadata.groupId | integer | mandatory | | +| result.configMetadata.dataImageSize | integer | mandatory | | +| result.configMetadata.resourceManagerClientEnabled | boolean | mandatory | | +| result.configMetadata.dialId | string | mandatory | | +| result.configMetadata.command | string | mandatory | | +| result.configMetadata.appType | string | mandatory | | +| result.configMetadata.appPath | string | mandatory | | +| result.configMetadata.runtimePath | string | mandatory | | +| result.configMetadata.logFilePath | string | mandatory | | +| result.configMetadata.logFileMaxSize | integer | mandatory | | +| result.configMetadata.logLevels | string | mandatory | | +| result.configMetadata.mapi | boolean | mandatory | | +| result.configMetadata.fkpsFiles | string | mandatory | | +| result.configMetadata.fireboltVersion | string | mandatory | | +| result.configMetadata.enableDebugger | boolean | mandatory | | +| result.gatewayMetadataPath | string | mandatory | | +| result.locked | boolean | mandatory | | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.getLockedInfo", + "params": { + "packageId": "...", + "version": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": { + "unpackedPath": "...", + "configMetadata": { + "dial": false, + "wanLanAccess": false, + "thunder": false, + "systemMemoryLimit": 0, + "gpuMemoryLimit": 0, + "envVariables": "...", + "userId": 0, + "groupId": 0, + "dataImageSize": 0, + "resourceManagerClientEnabled": false, + "dialId": "...", + "command": "...", + "appType": "...", + "appPath": "...", + "runtimePath": "...", + "logFilePath": "...", + "logFileMaxSize": 0, + "logLevels": "...", + "mapi": false, + "fkpsFiles": "...", + "fireboltVersion": "...", + "enableDebugger": false + }, + "gatewayMetadataPath": "...", + "locked": false + } +} +``` + diff --git a/docs/apis/PackageInstallerAPI.md b/docs/apis/PackageInstallerAPI.md new file mode 100644 index 00000000..7b5f1bb5 --- /dev/null +++ b/docs/apis/PackageInstallerAPI.md @@ -0,0 +1,421 @@ + + +# PackageInstaller API + +**Version: 1.0.0** + +**Status: :black_circle::white_circle::white_circle:** + +PackageInstaller interface for Thunder framework. + +(Defined with IPackageInstaller in [IAppPackageManager.h](https://github.com/rdkcentral/ThunderInterfaces/blob/master/interfaces/IAppPackageManager.h)) + +### Table of Contents + +- [Introduction](#head_Introduction) +- [Description](#head_Description) +- [Methods](#head_Methods) +- [Notifications](#head_Notifications) + + +# Introduction + + +## Scope + +This document describes purpose and functionality of the PackageInstaller 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://www.w3.org/Protocols) | HTTP specification | +| [JSON-RPC](https://www.jsonrpc.org/specification) | JSON-RPC 2.0 specification | +| [JSON](http://www.json.org/) | JSON specification | +| [Thunder](https://github.com/WebPlatformForEmbedded/Thunder/blob/master/doc/WPE%20-%20API%20-%20WPEFramework.docx) | Thunder API Reference | + + +# Description + +PackageInstaller JSON-RPC interface. + + +# Methods + +The following methods are provided by the PackageInstaller interface: + +PackageInstaller interface methods: + +| Method | Description | +| :-------- | :-------- | +| [install](#method_install) | Install | +| [uninstall](#method_uninstall) | Uninstall | +| [listPackages](#method_listPackages) | ListPackages | +| [config](#method_config) | Config | +| [packageState](#method_packageState) | PackageState | + + +## *install [method](#head_Methods)* + +Install. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.packageId | string | mandatory | Package Id | +| params.version | string | mandatory | Version | +| params.additionalMetadata | array | mandatory | Additional Metadata | +| params.additionalMetadata[#] | object | mandatory | | +| params.additionalMetadata[#].name | string | mandatory | Name | +| params.additionalMetadata[#].value | string | mandatory | Value | +| params.fileLocator | string | mandatory | File Locator | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | string | mandatory | (must be one of the following: *INVALID_METADATA_FAILURE, NONE, PACKAGE_MISMATCH_FAILURE, PERSISTENCE_FAILURE, SIGNATURE_VERIFICATION_FAILURE*) | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.install", + "params": { + "packageId": "...", + "version": "...", + "additionalMetadata": [ + { + "name": "...", + "value": "..." + } + ], + "fileLocator": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": "SIGNATURE_VERIFICATION_FAILURE" +} +``` + + +## *uninstall [method](#head_Methods)* + +Uninstall. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.packageId | string | mandatory | Package Id | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | string | mandatory | | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.uninstall", + "params": { + "packageId": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": "..." +} +``` + + +## *listPackages [method](#head_Methods)* + +ListPackages. + +### Parameters + +This method takes no parameters. + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | array | mandatory | | +| result[#] | object | mandatory | | +| result[#].packageId | string | mandatory | PackageId | +| result[#].version | string | mandatory | Version | +| result[#].state | string | mandatory | State (must be one of the following: *INSTALLATION_BLOCKED, INSTALLED, INSTALLING, INSTALL_FAILURE, UNINSTALLED, UNINSTALLING, UNINSTALL_FAILURE*) | +| result[#].digest | string | mandatory | Digest | +| result[#].sizeKb | integer | mandatory | SizeKb | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.listPackages" +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": [ + { + "packageId": "...", + "version": "...", + "state": "INSTALLATION_BLOCKED", + "digest": "...", + "sizeKb": 0 + } + ] +} +``` + + +## *config [method](#head_Methods)* + +Config. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.packageId | string | mandatory | Package Id | +| params.version | string | mandatory | Version | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | object | mandatory | | +| result.dial | boolean | mandatory | | +| result.wanLanAccess | boolean | mandatory | | +| result.thunder | boolean | mandatory | | +| result.systemMemoryLimit | integer | mandatory | | +| result.gpuMemoryLimit | integer | mandatory | | +| result.envVariables | string | mandatory | | +| result.userId | integer | mandatory | | +| result.groupId | integer | mandatory | | +| result.dataImageSize | integer | mandatory | | +| result.resourceManagerClientEnabled | boolean | mandatory | | +| result.dialId | string | mandatory | | +| result.command | string | mandatory | | +| result.appType | string | mandatory | | +| result.appPath | string | mandatory | | +| result.runtimePath | string | mandatory | | +| result.logFilePath | string | mandatory | | +| result.logFileMaxSize | integer | mandatory | | +| result.logLevels | string | mandatory | | +| result.mapi | boolean | mandatory | | +| result.fkpsFiles | string | mandatory | | +| result.fireboltVersion | string | mandatory | | +| result.enableDebugger | boolean | mandatory | | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.config", + "params": { + "packageId": "...", + "version": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": { + "dial": false, + "wanLanAccess": false, + "thunder": false, + "systemMemoryLimit": 0, + "gpuMemoryLimit": 0, + "envVariables": "...", + "userId": 0, + "groupId": 0, + "dataImageSize": 0, + "resourceManagerClientEnabled": false, + "dialId": "...", + "command": "...", + "appType": "...", + "appPath": "...", + "runtimePath": "...", + "logFilePath": "...", + "logFileMaxSize": 0, + "logLevels": "...", + "mapi": false, + "fkpsFiles": "...", + "fireboltVersion": "...", + "enableDebugger": false + } +} +``` + + +## *packageState [method](#head_Methods)* + +PackageState. + +### Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.packageId | string | mandatory | Package Id | +| params.version | string | mandatory | Version | + +### Result + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| result | string | mandatory | (must be one of the following: *INSTALLATION_BLOCKED, INSTALLED, INSTALLING, INSTALL_FAILURE, UNINSTALLED, UNINSTALLING, UNINSTALL_FAILURE*) | + +### Example + +#### Request + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.packageState", + "params": { + "packageId": "...", + "version": "..." + } +} +``` + +#### Response + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "result": "INSTALLATION_BLOCKED" +} +``` + + +# Notifications + +Notifications are autonomous events triggered by the internals of the implementation and broadcasted via JSON-RPC to all registered observers. Refer to [[Thunder](#ref.Thunder)] for information on how to register for a notification. + +The following events are provided by the PackageInstaller interface: + +PackageInstaller interface events: + +| Notification | Description | +| :-------- | :-------- | +| [onAppInstallationStatus](#notification_onAppInstallationStatus) | Signal changes on the status | + + +## *onAppInstallationStatus [notification](#head_Notifications)* + +Signal changes on the status. + +### Notification Parameters + +| Name | Type | M/O | Description | +| :-------- | :-------- | :-------- | :-------- | +| params | object | mandatory | | +| params.jsonresponse | string | mandatory | | + +### Example + +#### Registration + +```json +{ + "jsonrpc": "2.0", + "id": 42, + "method": ".1.register", + "params": { + "event": "onAppInstallationStatus", + "id": "myid" + } +} +``` + +#### Notification + +```json +{ + "jsonrpc": "2.0", + "method": "myid.onAppInstallationStatus", + "params": { + "jsonresponse": "..." + } +} +``` + +> The *client ID* parameter is passed within the notification designator, i.e. ``.onAppInstallationStatus``. +