@grabjs/superapp-sdk
v1.5.0
Published
SDK for Grab SuperApp WebView.
Downloads
1,448
Maintainers
Readme
JavaScript to Native bridge communication
Overview
Communication between web-app and native Grab app happens via web bridge. Each request and response object must have a structure defined in this document.
Currently available modules
One point to note is that partner engineers need to call ScopeModule.reloadScopes
after redirection to partner website to load permissions from GrabID
:
const scopeModule = new ScopeModule();
await scopeModule.reloadScopes();
Afterwards, calls to module methods will reflect actual permissions.
Request
Each request to native API should be done through JavaScript bridge provided by Grab. Please refer to specific Module API documentation for more details
Response
Each resonse from the native bridge follows the same structure described bellow.
| Key | Type | Description | | ----------- | ------------------------ | ---------------------------------------------------------------------------------- | | status_code | Integer | Response status code (see list of codes below) | | result | Object or primitive type | Result object according to method specification (required for 200 status code) | | error | String | Error message (required for non-200 status codes) |
Response status codes
| Code | Type | Description | | ---- | ----------------- | ------------------------------------------------------------------------------- | | 200 | OK | Request successful, result value contains response data | | 204 | No Content | Request successful, result value doesn't contain data | | 400 | Bad Request | The request is malformed (e.g. missing parameters, missing method name) | | 403 | Forbidden | The client doesn't have permission to access this method | | 424 | Failed Dependency | Underlying request returned an error | | 500 | Internal Error | Unexpected internal error (e.g. failed to serialize response object) |
Success response example
{
"status_code": 200,
"result": {
"latitude": 1.234523,
"longitude": 1.4356345
}
}
Failure response example
{
"status_code": 403,
"error": "Client doesn't have access to method \"getLocation\" in module \"LocationModule\""
}