--- title: "Capabilities" slug: "150-core-capabilities" updated: 2025-03-19T14:52:55Z published: 2025-03-19T16:03:18Z canonical: "docs.developer.comcast.com/150-core-capabilities" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.developer.comcast.com/llms.txt > Use this file to discover all available pages before exploring further. # Capabilities **Capabilities Module 1.5.0 | Core SDK** ## Usage To use the Capabilities module, you can import it into your project from the Firebolt SDK: ``` 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. ``` function available(capability: Capability): Promise ``` Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | 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: ``` import { Capabilities } from '@firebolt-js/sdk' let available = await Capabilities.available( 'xrn:firebolt:capability:token:device', ) console.log(available) ``` Value of `available`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.available", "params": { "capability": "xrn:firebolt:capability:token:device" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": true } ``` Unavailable Platform token. JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' let available = await Capabilities.available( 'xrn:firebolt:capability:token:platform', ) console.log(available) ``` Value of `available`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.available", "params": { "capability": "xrn:firebolt:capability:token:platform" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": false } ``` --- ### granted Returns whether the current App has a user grant for passed capability and role. ``` function granted( capability: Capability, options: CapabilityOption, ): Promise ``` Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | | `options` | [`CapabilityOption`](/docs/150-core-capabilities#capabilityoption) | false | Capability options | Promise resolution: Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Default capabilities without grants. JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' let granted = await Capabilities.granted( 'xrn:firebolt:capability:input:keyboard', ) console.log(granted) ``` Value of `granted`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.granted", "params": { "capability": "xrn:firebolt:capability:input:keyboard" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": true } ``` Get Postal code without grants. JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' let granted = await Capabilities.granted( 'xrn:firebolt:capability:localization:postal-code', ) console.log(granted) ``` Value of `granted`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.granted", "params": { "capability": "xrn:firebolt:capability:localization:postal-code" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": false } ``` Get Postal code with grants. JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' let granted = await Capabilities.granted( 'xrn:firebolt:capability:localization:postal-code', ) console.log(granted) ``` Value of `granted`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.granted", "params": { "capability": "xrn:firebolt:capability:localization:postal-code" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": null } ``` --- ### info Returns an array of CapabilityInfo objects for the passed in capabilities. ``` function info(capabilities: Capability[]): Promise ``` Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capabilities` | `Capability[]` | true | 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: ``` 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`: ``` ;[ { 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'], }, ] ``` **JSON-RPC:** Request: ``` { "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: ``` { "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"] } ] } ``` --- ### listen To listen to a specific event pass the event name as the first parameter: ``` listen(event: string, callback: (data: any) => void): Promise ``` Parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `event` | `string` | Yes | The event to listen for, see [Events](/docs/150-core-capabilities#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](/docs/150-core-capabilities#events). | To listen to all events from this module pass only a callback, without specifying an event name: ``` listen(callback: (event: string, data: any) => void): Promise ``` 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](/docs/150-core-capabilities#events). | Callback parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `event` | `string` | Yes | The event that has occured listen for, see [Events](/docs/150-core-capabilities#events). | | `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](/docs/150-core-capabilities#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: ``` once(event: string, callback: (data: any) => void): Promise ``` 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](/docs/150-core-capabilities#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](/docs/150-core-capabilities#events). | To listen to the next instance only of any events from this module pass only a callback, without specifying an event name: ``` once(callback: (event: string, data: any) => void): Promise ``` 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](/docs/150-core-capabilities#events). | Callback parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `event` | `string` | Yes | The event that has occured listen for, see [Events](/docs/150-core-capabilities#events). | | `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](/docs/150-core-capabilities#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. ``` function permitted( capability: Capability, options: CapabilityOption, ): Promise ``` Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | | `options` | [`CapabilityOption`](/docs/150-core-capabilities#capabilityoption) | false | Capability options | Promise resolution: Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Keyboard JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' let permitted = await Capabilities.permitted( 'xrn:firebolt:capability:input:keyboard', ) console.log(permitted) ``` Value of `permitted`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.permitted", "params": { "capability": "xrn:firebolt:capability:input:keyboard" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": true } ``` Keyboard incorrect manage role capability 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`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.permitted", "params": { "capability": "xrn:firebolt:capability:input:keyboard", "options": { "role": "manage" } } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": false } ``` Wifi scan not permitted capability JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' let permitted = await Capabilities.permitted( 'xrn:firebolt:capability:wifi:scan', ) console.log(permitted) ``` Value of `permitted`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.permitted", "params": { "capability": "xrn:firebolt:capability:wifi:scan" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": false } ``` --- ### request Requests grants for all capability/role combinations in the roles array. ``` function request(grants: Permission[]): Promise ``` Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `grants` | `Permission[]` | true | | Promise resolution: Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:request | #### Examples Default result 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`: ``` ;[ { 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, }, }, ] ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.request", "params": { "grants": [ { "role": "use", "capability": "xrn:firebolt:capability:commerce:purchase" } ] } } ``` Response: ``` { "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 } } ] } ``` --- ### supported Returns whether the platform supports the passed capability. ``` function supported(capability: Capability): Promise ``` Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | 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: ``` import { Capabilities } from '@firebolt-js/sdk' let supported = await Capabilities.supported( 'xrn:firebolt:capability:wifi:scan', ) console.log(supported) ``` Value of `supported`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.supported", "params": { "capability": "xrn:firebolt:capability:wifi:scan" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": true } ``` BLE protocol unsupported capability JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' let supported = await Capabilities.supported( 'xrn:firebolt:capability:protocol:bluetoothle', ) console.log(supported) ``` Value of `supported`: ``` true ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.supported", "params": { "capability": "xrn:firebolt:capability:protocol:bluetoothle" } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": false } ``` --- ## Events ### available ``` function listen('available', capability: Capability, () => void): Promise ``` See also: [listen()](/docs/150-core-capabilities#listen), [once()](/docs/150-core-capabilities#listen), [clear()](/docs/150-core-capabilities#listen). Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | Event value: [CapabilityInfo](/docs/150-core-Capabilities-schemas#CapabilityInfo) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Platform token is available JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' Capabilities.listen('available', (value) => { console.log(value) }) ``` Value of `value`: ``` { "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" ] } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.onAvailable", "params": { "capability": "xrn:firebolt:capability:token:platform", "listen": true } } ``` Response: ``` { "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"] } } ``` --- ### granted ``` function listen('granted', role: Role, capability: Capability, () => void): Promise ``` See also: [listen()](/docs/150-core-capabilities#listen), [once()](/docs/150-core-capabilities#listen), [clear()](/docs/150-core-capabilities#listen). Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `role` | [`Role`](/docs/150-core-Capabilities-schemas#Role) | true | values: `'use' \| 'manage' \| 'provide'` | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | Event value: [CapabilityInfo](/docs/150-core-Capabilities-schemas#CapabilityInfo) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Postal code granted JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' Capabilities.listen('granted', (value) => { console.log(value) }) ``` Value of `value`: ``` { "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 } } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.onGranted", "params": { "role": "use", "capability": "xrn:firebolt:capability:localization:postal-code", "listen": true } } ``` Response: ``` { "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 } } } ``` --- ### revoked ``` function listen('revoked', role: Role, capability: Capability, () => void): Promise ``` See also: [listen()](/docs/150-core-capabilities#listen), [once()](/docs/150-core-capabilities#listen), [clear()](/docs/150-core-capabilities#listen). Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `role` | [`Role`](/docs/150-core-Capabilities-schemas#Role) | true | values: `'use' \| 'manage' \| 'provide'` | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | Event value: [CapabilityInfo](/docs/150-core-Capabilities-schemas#CapabilityInfo) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Postal code revoked JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' Capabilities.listen('revoked', (value) => { console.log(value) }) ``` Value of `value`: ``` { "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" ] } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.onRevoked", "params": { "role": "use", "capability": "xrn:firebolt:capability:localization:postal-code", "listen": true } } ``` Response: ``` { "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"] } } ``` --- ### unavailable ``` function listen('unavailable', capability: Capability, () => void): Promise ``` See also: [listen()](/docs/150-core-capabilities#listen), [once()](/docs/150-core-capabilities#listen), [clear()](/docs/150-core-capabilities#listen). Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | Event value: [CapabilityInfo](/docs/150-core-Capabilities-schemas#CapabilityInfo) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Platform token is unavailable. JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' Capabilities.listen('unavailable', (value) => { console.log(value) }) ``` Value of `value`: ``` { "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" ] } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.onUnavailable", "params": { "capability": "xrn:firebolt:capability:token:platform", "listen": true } } ``` Response: ``` { "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"] } } ``` --- ## Private Events **View** ### available ``` function listen('available', capability: Capability, () => void): Promise ``` See also: [listen()](/docs/150-core-capabilities#listen), [once()](/docs/150-core-capabilities#listen), [clear()](/docs/150-core-capabilities#listen). Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | Event value: [CapabilityInfo](/docs/150-core-Capabilities-schemas#CapabilityInfo) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Platform token is available JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' Capabilities.listen('available', (value) => { console.log(value) }) ``` Value of `value`: ``` { "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" ] } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.onAvailable", "params": { "capability": "xrn:firebolt:capability:token:platform", "listen": true } } ``` Response: ``` { "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"] } } ``` --- ### granted ``` function listen('granted', role: Role, capability: Capability, () => void): Promise ``` See also: [listen()](/docs/150-core-capabilities#listen), [once()](/docs/150-core-capabilities#listen), [clear()](/docs/150-core-capabilities#listen). Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `role` | [`Role`](/docs/150-core-Capabilities-schemas#Role) | true | values: `'use' \| 'manage' \| 'provide'` | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | Event value: [CapabilityInfo](/docs/150-core-Capabilities-schemas#CapabilityInfo) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Postal code granted JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' Capabilities.listen('granted', (value) => { console.log(value) }) ``` Value of `value`: ``` { "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 } } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.onGranted", "params": { "role": "use", "capability": "xrn:firebolt:capability:localization:postal-code", "listen": true } } ``` Response: ``` { "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 } } } ``` --- ### revoked ``` function listen('revoked', role: Role, capability: Capability, () => void): Promise ``` See also: [listen()](/docs/150-core-capabilities#listen), [once()](/docs/150-core-capabilities#listen), [clear()](/docs/150-core-capabilities#listen). Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `role` | [`Role`](/docs/150-core-Capabilities-schemas#Role) | true | values: `'use' \| 'manage' \| 'provide'` | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | Event value: [CapabilityInfo](/docs/150-core-Capabilities-schemas#CapabilityInfo) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Postal code revoked JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' Capabilities.listen('revoked', (value) => { console.log(value) }) ``` Value of `value`: ``` { "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" ] } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.onRevoked", "params": { "role": "use", "capability": "xrn:firebolt:capability:localization:postal-code", "listen": true } } ``` Response: ``` { "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"] } } ``` --- ### unavailable ``` function listen('unavailable', capability: Capability, () => void): Promise ``` See also: [listen()](/docs/150-core-capabilities#listen), [once()](/docs/150-core-capabilities#listen), [clear()](/docs/150-core-capabilities#listen). Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `capability` | [`Capability`](/docs/150-core-Capabilities-schemas#Capability) | true | pattern: ^xrn:firebolt:capability:([a-z0-9-]+)((:[a-z0-9-]+)?)$ | Event value: [CapabilityInfo](/docs/150-core-Capabilities-schemas#CapabilityInfo) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:capabilities:info | #### Examples Platform token is unavailable. JavaScript: ``` import { Capabilities } from '@firebolt-js/sdk' Capabilities.listen('unavailable', (value) => { console.log(value) }) ``` Value of `value`: ``` { "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" ] } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Capabilities.onUnavailable", "params": { "capability": "xrn:firebolt:capability:token:platform", "listen": true } } ``` Response: ``` { "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"] } } ``` --- ## Types ### CapabilityOption ``` type CapabilityOption = { role?: Role // Role provides access level for the app for a given capability. } ``` See also: [Role](/docs/150-core-Capabilities-schemas#Role) ---