@firebolt-js/sdk
Version:
The Firebolt JS SDK
2,201 lines (1,774 loc) • 45.9 kB
Markdown
title: Capabilities
# Capabilities Module
Version Capabilities 1.5.0
## Table of Contents
- [Table of Contents](#table-of-contents)
- [Usage](#usage)
- [Overview](#overview)
- [Methods](#methods)
- [available](#available)
- [granted](#granted)
- [info](#info)
- [listen](#listen)
- [once](#once)
- [permitted](#permitted)
- [request](#request)
- [supported](#supported)
- [Events](#events)
- [available](#available-1)
- [granted](#granted-1)
- [revoked](#revoked)
- [unavailable](#unavailable)
- [Private Events](#private-events)<details ontoggle="document.getElementById('private-events-details').open=this.open"><summary>Show</summary>
- [granted](#granted-2)
- [revoked](#revoked-1)
- [unavailable](#unavailable-1)
</details>
- [Types](#types)
- [CapabilityOption](#capabilityoption)
## Usage
To use the Capabilities module, you can import it into your project from the Firebolt SDK:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
```
## Overview
The Capabilities module provides information about which discreet unit of functionality is enabled for the apps.
## Methods
### available
Returns whether a capability is available now.
```typescript
function available(capability: Capability): Promise<boolean>
```
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Promise resolution:
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Device Token.
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let available = await Capabilities.available(
'xrn:firebolt:capability:token:device',
)
console.log(available)
```
Value of `available`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.available",
"params": {
"capability": "xrn:firebolt:capability:token:device"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
```
</details>
Unavailable Platform token.
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let available = await Capabilities.available(
'xrn:firebolt:capability:token:platform',
)
console.log(available)
```
Value of `available`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.available",
"params": {
"capability": "xrn:firebolt:capability:token:platform"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": false
}
```
</details>
### granted
Returns whether the current App has a user grant for passed capability and role.
```typescript
function granted(
capability: Capability,
options: CapabilityOption,
): Promise<boolean>
```
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
| `options` | [`CapabilityOption`](#capabilityoption) | false | Capability options |
Promise resolution:
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Default capabilities without grants.
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let granted = await Capabilities.granted(
'xrn:firebolt:capability:input:keyboard',
)
console.log(granted)
```
Value of `granted`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.granted",
"params": {
"capability": "xrn:firebolt:capability:input:keyboard"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
```
</details>
Get Postal code without grants.
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let granted = await Capabilities.granted(
'xrn:firebolt:capability:localization:postal-code',
)
console.log(granted)
```
Value of `granted`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.granted",
"params": {
"capability": "xrn:firebolt:capability:localization:postal-code"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": false
}
```
</details>
Get Postal code with grants.
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let granted = await Capabilities.granted(
'xrn:firebolt:capability:localization:postal-code',
)
console.log(granted)
```
Value of `granted`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.granted",
"params": {
"capability": "xrn:firebolt:capability:localization:postal-code"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": null
}
```
</details>
### info
Returns an array of CapabilityInfo objects for the passed in capabilities.
```typescript
function info(capabilities: Capability[]): Promise<CapabilityInfo[]>
```
Parameters:
| Param | Type | Required | Description |
| -------------- | -------------- | -------- | ---------------------------------------------------------------------- |
| `capabilities` | `Capability[]` | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Promise resolution:
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Default result
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let info = await Capabilities.info([
'xrn:firebolt:capability:device:model',
'xrn:firebolt:capability:input:keyboard',
'xrn:firebolt:capability:protocol:bluetoothle',
'xrn:firebolt:capability:token:device',
'xrn:firebolt:capability:token:platform',
'xrn:firebolt:capability:protocol:moca',
'xrn:firebolt:capability:wifi:scan',
'xrn:firebolt:capability:localization:postal-code',
'xrn:firebolt:capability:localization:locality',
])
console.log(info)
```
Value of `info`:
```javascript
;[
{
capability: 'xrn:firebolt:capability:device:model',
supported: true,
available: true,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
},
{
capability: 'xrn:firebolt:capability:input:keyboard',
supported: true,
available: true,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
},
{
capability: 'xrn:firebolt:capability:protocol:bluetoothle',
supported: false,
available: false,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
details: ['unsupported'],
},
{
capability: 'xrn:firebolt:capability:token:device',
supported: true,
available: true,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
},
{
capability: 'xrn:firebolt:capability:token:platform',
supported: true,
available: false,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
details: ['unavailable'],
},
{
capability: 'xrn:firebolt:capability:protocol:moca',
supported: true,
available: false,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
details: ['disabled', 'unavailable'],
},
{
capability: 'xrn:firebolt:capability:wifi:scan',
supported: true,
available: true,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
details: ['unpermitted'],
},
{
capability: 'xrn:firebolt:capability:localization:postal-code',
supported: true,
available: true,
use: {
permitted: true,
granted: null,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
details: ['ungranted'],
},
{
capability: 'xrn:firebolt:capability:localization:postal-code',
supported: true,
available: true,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
details: ['ungranted'],
},
{
capability: 'xrn:firebolt:capability:localization:locality',
supported: true,
available: true,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
details: ['grantDenied', 'ungranted'],
},
]
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.info",
"params": {
"capabilities": [
"xrn:firebolt:capability:device:model",
"xrn:firebolt:capability:input:keyboard",
"xrn:firebolt:capability:protocol:bluetoothle",
"xrn:firebolt:capability:token:device",
"xrn:firebolt:capability:token:platform",
"xrn:firebolt:capability:protocol:moca",
"xrn:firebolt:capability:wifi:scan",
"xrn:firebolt:capability:localization:postal-code",
"xrn:firebolt:capability:localization:locality"
]
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"capability": "xrn:firebolt:capability:device:model",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
}
},
{
"capability": "xrn:firebolt:capability:input:keyboard",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
}
},
{
"capability": "xrn:firebolt:capability:protocol:bluetoothle",
"supported": false,
"available": false,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["unsupported"]
},
{
"capability": "xrn:firebolt:capability:token:device",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
}
},
{
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": false,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["unavailable"]
},
{
"capability": "xrn:firebolt:capability:protocol:moca",
"supported": true,
"available": false,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["disabled", "unavailable"]
},
{
"capability": "xrn:firebolt:capability:wifi:scan",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["unpermitted"]
},
{
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": null
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["ungranted"]
},
{
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["ungranted"]
},
{
"capability": "xrn:firebolt:capability:localization:locality",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["grantDenied", "ungranted"]
}
]
}
```
</details>
### listen
To listen to a specific event pass the event name as the first parameter:
```typescript
listen(event: string, callback: (data: any) => void): Promise<number>
```
Parameters:
| Param | Type | Required | Summary |
| ---------- | ---------- | -------- | ------------------------------------------------------ |
| `event` | `string` | Yes | The event to listen for, see [Events](#events). |
| _callback_ | `function` | Yes | A function that will be invoked when the event occurs. |
Promise resolution:
| Type | Description |
| -------- | ---------------------------------------------------------------------------------------------------- |
| `number` | Listener ID to clear the callback method and stop receiving the event, e.g. `Capabilities.clear(id)` |
Callback parameters:
| Param | Type | Required | Summary |
| ------ | ----- | -------- | ------------------------------------------------------------------------------ |
| `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](#events). |
To listen to all events from this module pass only a callback, without specifying an event name:
```typescript
listen(callback: (event: string, data: any) => void): Promise<number>
```
Parameters:
| Param | Type | Required | Summary |
| ---------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| _callback_ | `function` | Yes | A function that will be invoked when the event occurs. The event data depends on which event is firing, see [Events](#events). |
Callback parameters:
| Param | Type | Required | Summary |
| ------- | -------- | -------- | ------------------------------------------------------------------------------ |
| `event` | `string` | Yes | The event that has occured listen for, see [Events](#events). |
| `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](#events). |
Promise resolution:
| Type | Description |
| -------- | ---------------------------------------------------------------------------------------------------- |
| `number` | Listener ID to clear the callback method and stop receiving the event, e.g. `Capabilities.clear(id)` |
See [Listening for events](../../docs/listening-for-events/) for more information and examples.
### once
To listen to a single instance of a specific event pass the event name as the first parameter:
```typescript
once(event: string, callback: (data: any) => void): Promise<number>
```
The `once` method will only pass the next instance of this event, and then dicard the listener you provided.
Parameters:
| Param | Type | Required | Summary |
| ---------- | ---------- | -------- | ------------------------------------------------------ |
| `event` | `string` | Yes | The event to listen for, see [Events](#events). |
| _callback_ | `function` | Yes | A function that will be invoked when the event occurs. |
Promise resolution:
| Type | Description |
| -------- | ---------------------------------------------------------------------------------------------------- |
| `number` | Listener ID to clear the callback method and stop receiving the event, e.g. `Capabilities.clear(id)` |
Callback parameters:
| Param | Type | Required | Summary |
| ------ | ----- | -------- | ------------------------------------------------------------------------------ |
| `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](#events). |
To listen to the next instance only of any events from this module pass only a callback, without specifying an event name:
```typescript
once(callback: (event: string, data: any) => void): Promise<number>
```
Parameters:
| Param | Type | Required | Summary |
| ---------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| _callback_ | `function` | Yes | A function that will be invoked when the event occurs. The event data depends on which event is firing, see [Events](#events). |
Callback parameters:
| Param | Type | Required | Summary |
| ------- | -------- | -------- | ------------------------------------------------------------------------------ |
| `event` | `string` | Yes | The event that has occured listen for, see [Events](#events). |
| `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](#events). |
Promise resolution:
| Type | Description |
| -------- | ---------------------------------------------------------------------------------------------------- |
| `number` | Listener ID to clear the callback method and stop receiving the event, e.g. `Capabilities.clear(id)` |
See [Listening for events](../../docs/listening-for-events/) for more information and examples.
### permitted
Returns whether the current App has permission to the passed capability and role.
```typescript
function permitted(
capability: Capability,
options: CapabilityOption,
): Promise<boolean>
```
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
| `options` | [`CapabilityOption`](#capabilityoption) | false | Capability options |
Promise resolution:
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Keyboard
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let permitted = await Capabilities.permitted(
'xrn:firebolt:capability:input:keyboard',
)
console.log(permitted)
```
Value of `permitted`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.permitted",
"params": {
"capability": "xrn:firebolt:capability:input:keyboard"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
```
</details>
Keyboard incorrect manage role capability
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let permitted = await Capabilities.permitted(
'xrn:firebolt:capability:input:keyboard',
{ role: 'manage' },
)
console.log(permitted)
```
Value of `permitted`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.permitted",
"params": {
"capability": "xrn:firebolt:capability:input:keyboard",
"options": {
"role": "manage"
}
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": false
}
```
</details>
Wifi scan not permitted capability
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let permitted = await Capabilities.permitted(
'xrn:firebolt:capability:wifi:scan',
)
console.log(permitted)
```
Value of `permitted`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.permitted",
"params": {
"capability": "xrn:firebolt:capability:wifi:scan"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": false
}
```
</details>
### request
Requests grants for all capability/role combinations in the roles array.
```typescript
function request(grants: Permission[]): Promise<CapabilityInfo[]>
```
Parameters:
| Param | Type | Required | Description |
| -------- | -------------- | -------- | ----------- |
| `grants` | `Permission[]` | true | |
Promise resolution:
Capabilities:
| Role | Capability |
| ---- | -------------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:request |
#### Examples
Default result
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let request = await Capabilities.request([
{ role: 'use', capability: 'xrn:firebolt:capability:commerce:purchase' },
])
console.log(request)
```
Value of `request`:
```javascript
;[
{
capability: 'xrn:firebolt:capability:commerce:purchase',
supported: true,
available: true,
use: {
permitted: true,
granted: true,
},
manage: {
permitted: true,
granted: true,
},
provide: {
permitted: true,
granted: true,
},
},
]
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.request",
"params": {
"grants": [
{
"role": "use",
"capability": "xrn:firebolt:capability:commerce:purchase"
}
]
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"capability": "xrn:firebolt:capability:commerce:purchase",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
}
}
]
}
```
</details>
### supported
Returns whether the platform supports the passed capability.
```typescript
function supported(capability: Capability): Promise<boolean>
```
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Promise resolution:
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Wifi scan supported capability
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let supported = await Capabilities.supported(
'xrn:firebolt:capability:wifi:scan',
)
console.log(supported)
```
Value of `supported`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.supported",
"params": {
"capability": "xrn:firebolt:capability:wifi:scan"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": true
}
```
</details>
BLE protocol unsupported capability
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
let supported = await Capabilities.supported(
'xrn:firebolt:capability:protocol:bluetoothle',
)
console.log(supported)
```
Value of `supported`:
```javascript
true
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.supported",
"params": {
"capability": "xrn:firebolt:capability:protocol:bluetoothle"
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": false
}
```
</details>
## Events
### available
```typescript
function listen('available', capability: Capability, () => void): Promise<number>
```
See also: [listen()](#listen), [once()](#listen), [clear()](#listen).
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Event value:
[CapabilityInfo](../Capabilities/schemas/#CapabilityInfo)
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Platform token is available
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
Capabilities.listen('available', (value) => {
console.log(value)
})
```
Value of `value`:
```javascript
{
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": [
"unpermitted"
]
}
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.onAvailable",
"params": {
"capability": "xrn:firebolt:capability:token:platform",
"listen": true
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["unpermitted"]
}
}
```
</details>
### granted
```typescript
function listen('granted', role: Role, capability: Capability, () => void): Promise<number>
```
See also: [listen()](#listen), [once()](#listen), [clear()](#listen).
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `role` | [`Role`](../Capabilities/schemas/#Role) | true | <br/>values: `'use' \| 'manage' \| 'provide'` |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Event value:
[CapabilityInfo](../Capabilities/schemas/#CapabilityInfo)
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Postal code granted
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
Capabilities.listen('granted', (value) => {
console.log(value)
})
```
Value of `value`:
```javascript
{
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
}
}
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.onGranted",
"params": {
"role": "use",
"capability": "xrn:firebolt:capability:localization:postal-code",
"listen": true
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
}
}
}
```
</details>
### revoked
```typescript
function listen('revoked', role: Role, capability: Capability, () => void): Promise<number>
```
See also: [listen()](#listen), [once()](#listen), [clear()](#listen).
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `role` | [`Role`](../Capabilities/schemas/#Role) | true | <br/>values: `'use' \| 'manage' \| 'provide'` |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Event value:
[CapabilityInfo](../Capabilities/schemas/#CapabilityInfo)
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Postal code revoked
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
Capabilities.listen('revoked', (value) => {
console.log(value)
})
```
Value of `value`:
```javascript
{
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": [
"grantDenied"
]
}
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.onRevoked",
"params": {
"role": "use",
"capability": "xrn:firebolt:capability:localization:postal-code",
"listen": true
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["grantDenied"]
}
}
```
</details>
### unavailable
```typescript
function listen('unavailable', capability: Capability, () => void): Promise<number>
```
See also: [listen()](#listen), [once()](#listen), [clear()](#listen).
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Event value:
[CapabilityInfo](../Capabilities/schemas/#CapabilityInfo)
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Platform token is unavailable.
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
Capabilities.listen('unavailable', (value) => {
console.log(value)
})
```
Value of `value`:
```javascript
{
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": false,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": [
"unavailable"
]
}
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.onUnavailable",
"params": {
"capability": "xrn:firebolt:capability:token:platform",
"listen": true
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": false,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["unavailable"]
}
}
```
</details>
## Private Events
<details id="private-events-details">
<summary>View</summary>
### available
```typescript
function listen('available', capability: Capability, () => void): Promise<number>
```
See also: [listen()](#listen), [once()](#listen), [clear()](#listen).
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Event value:
[CapabilityInfo](../Capabilities/schemas/#CapabilityInfo)
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Platform token is available
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
Capabilities.listen('available', (value) => {
console.log(value)
})
```
Value of `value`:
```javascript
{
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": [
"unpermitted"
]
}
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.onAvailable",
"params": {
"capability": "xrn:firebolt:capability:token:platform",
"listen": true
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["unpermitted"]
}
}
```
</details>
### granted
```typescript
function listen('granted', role: Role, capability: Capability, () => void): Promise<number>
```
See also: [listen()](#listen), [once()](#listen), [clear()](#listen).
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `role` | [`Role`](../Capabilities/schemas/#Role) | true | <br/>values: `'use' \| 'manage' \| 'provide'` |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Event value:
[CapabilityInfo](../Capabilities/schemas/#CapabilityInfo)
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Postal code granted
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
Capabilities.listen('granted', (value) => {
console.log(value)
})
```
Value of `value`:
```javascript
{
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
}
}
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.onGranted",
"params": {
"role": "use",
"capability": "xrn:firebolt:capability:localization:postal-code",
"listen": true
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
}
}
}
```
</details>
### revoked
```typescript
function listen('revoked', role: Role, capability: Capability, () => void): Promise<number>
```
See also: [listen()](#listen), [once()](#listen), [clear()](#listen).
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `role` | [`Role`](../Capabilities/schemas/#Role) | true | <br/>values: `'use' \| 'manage' \| 'provide'` |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Event value:
[CapabilityInfo](../Capabilities/schemas/#CapabilityInfo)
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Postal code revoked
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
Capabilities.listen('revoked', (value) => {
console.log(value)
})
```
Value of `value`:
```javascript
{
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": [
"grantDenied"
]
}
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.onRevoked",
"params": {
"role": "use",
"capability": "xrn:firebolt:capability:localization:postal-code",
"listen": true
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"capability": "xrn:firebolt:capability:localization:postal-code",
"supported": true,
"available": true,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["grantDenied"]
}
}
```
</details>
### unavailable
```typescript
function listen('unavailable', capability: Capability, () => void): Promise<number>
```
See also: [listen()](#listen), [once()](#listen), [clear()](#listen).
Parameters:
| Param | Type | Required | Description |
| ------------ | --------------------------------------------------- | -------- | ---------------------------------------------------------------------- |
| `capability` | [`Capability`](../Capabilities/schemas/#Capability) | true | <br/>pattern: ^xrn:firebolt:capability:([a-z0-9\-]+)((:[a-z0-9\-]+)?)$ |
Event value:
[CapabilityInfo](../Capabilities/schemas/#CapabilityInfo)
Capabilities:
| Role | Capability |
| ---- | ----------------------------------------- |
| uses | xrn:firebolt:capability:capabilities:info |
#### Examples
Platform token is unavailable.
JavaScript:
```javascript
import { Capabilities } from '@firebolt-js/sdk'
Capabilities.listen('unavailable', (value) => {
console.log(value)
})
```
Value of `value`:
```javascript
{
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": false,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": [
"unavailable"
]
}
```
<details>
<summary>JSON-RPC:</summary>
Request:
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "Capabilities.onUnavailable",
"params": {
"capability": "xrn:firebolt:capability:token:platform",
"listen": true
}
}
```
Response:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"capability": "xrn:firebolt:capability:token:platform",
"supported": true,
"available": false,
"use": {
"permitted": true,
"granted": true
},
"manage": {
"permitted": true,
"granted": true
},
"provide": {
"permitted": true,
"granted": true
},
"details": ["unavailable"]
}
}
```
</details>
</details>
## Types
### CapabilityOption
```typescript
type CapabilityOption = {
role?: Role // Role provides access level for the app for a given capability.
}
```
See also:
[Role](../Capabilities/schemas/#Role)