The capsule
node contains metadata required by Bixby that specifies version information, device targets, and imported library capsules. It must be the only root node inside the capsule.bxb
, which must live at the root directory of the capsule. For more information on how to set this file up, see Initializing Your Capsule.
In addition to creating your capsule.bxb
file, ensure you also configure your capsule, using the Configuration & Secrets UI in the Bixby Developer Center and/or your capsule.properties
file.
capsule {
id (example.shirt)
version (0.1.0)
format(3)
targets {
target (can-en-US)
target (bixby-mobile-en-US)
}
capsule-imports {
import (viv.core) { as (core) }
import (viv.money) { as (money) }
import (viv.time) { as (time) }
}
}
capsule {
id (example.spaceResorts)
version (1.0.0)
format (3)
targets {
target (bixby-mobile-en-US)
target (bixby-mobile-ko-KR)
}
runtime-version (9) {
js-runtime-version (2)
}
capsule-imports {
import (viv.core) {
as (core)
}
import (viv.self) {
as (self)
version (4.0.25)
}
import (viv.time) {
as (time)
version (3.6.6)
}
import (viv.money) {
as (money)
version (2.22.56)
}
}
store-sections {
section (TravelAndTransportation)
}
store-countries {
all
}
permissions {
// Note: While this permission is declared, it is not being used
// and the user will not be prompted, because we are fetching an
// 'imaginary' mocked profile from viv.self. // This is done by
// passing an 'imaginary' flag to the self.GetProfile action, which
// we do on line 17 of models/actions/book/user-goals/CreateOrder.model.bxb: `value: self.Imaginary(true)`
// Commenting out that line will cause viv.self to fetch the user's
// profile instead of a mocked profile, and the user will be prompted
// for this 'profile' permission when viv.self tries to fetch it.
library-permission (self:profile)
}
}
capsule {
id (example.shirt)
version (2.13.0) //JSRS migration VCAP-24287
format (3)
runtime-version (7) {
js-runtime-version (2)
overrides {
allow-dialogs-on-detail-pages (true)
no-fallback-to-result-collections (true)
no-fallback-dialog-in-views (false)
}
}
targets {
target (bixby-mobile-en-US)
}
capsule-imports {
import (viv.core) {
as (core)
}
import (viv.money) {
as (money)
version (2.22.56)
}
import (viv.time) {
as (time)
version (3.6.6)
}
}
store-countries {
all
}
store-sections {
section (Shopping)
}
}
If your capsule is itself a library capsule, you will need to use the library
key within the capsule
block, which controls import rights. The following is an example:
capsule {
id (library.shirt)
version (0.1.0)
format(3)
targets {
target (can-en-US)
target (bixby-mobile-en-US)
}
library {
scope {
public
}
}
}
format required | Indicates the capsule format version with which this capsule is compatible |
id required | The globally unique identifier for the capsule |
capsule-categories optional | The collection of categories in which your capsule participates |
capsule-imports optional | Lists the capsules that this one is dependent on |
default-action optional | Defines a default action to be executed if a user says an utterance that calls your capsule with named dispatch, but has no further action |
device-models optional | An explicit list of device models that you want your capsule to be available for |
marketplace-constraints[deprecated] optional | This key is deprecated |
permissions optional | Defines the permissions you are requesting from the user for this capsule |
runtime-flags optional | This key is deprecated |
runtime-version optional | Changes specific runtime behavior during the execution of the capsule depending on the version |
store-countries optional | Explicit list of Marketplace store countries in which your capsule will be available |
store-sections optional | Determines the collection of sections in the Marketplace store in which this capsule is visible |
targets optional | List the locale and target device supported by the capsule |
version optional | The capsule version |