Source code
Revision control
Copy as Markdown
Other Tools
---
about:
description: Nimbus Feature Manifest for Android
kotlin:
package: mozilla.components.service.nimbus
class: .messaging.FxNimbusMessaging
channels:
- release
- debug
features:
nimbus-system:
description: |
Configuration of the Nimbus System in Android.
variables:
refresh-interval-foreground:
description: |
The minimum interval in minutes between fetching experiment
recipes in the foreground.
type: Int
default: 60 # 1 hour
messaging:
description: |
The in-app messaging system.
allow-coenrollment: true
variables:
messages:
description: A growable collection of messages
type: Map<MessageKey, MessageData>
string-alias: MessageKey
default: {}
triggers:
description: >
A collection of out the box trigger
expressions. Each entry maps to a
valid JEXL expression.
type: Map<TriggerName, String>
string-alias: TriggerName
default: {}
styles:
description: >
A map of styles to configure message
appearance.
type: Map<StyleName, StyleData>
string-alias: StyleName
default: {}
$$surfaces:
description: |
A list available surfaces for this app.
This should not be written to by experiments, and should be hidden to users.
type: List<SurfaceName>
string-alias: SurfaceName
default: []
actions:
type: Map<ActionName, String>
description: A growable map of action URLs.
string-alias: ActionName
default:
OPEN_URL: ://open
on-control:
type: ControlMessageBehavior
description: What should be displayed when a control message is selected.
default: show-next-message
notification-config:
description: Configuration of the notification worker for all notification messages.
type: NotificationConfig
default: {}
message-under-experiment:
description: Deprecated in favor of `MessageData#experiment`. This will be removed in future releases.
type: Option<MessageKey>
default: null
$$experiment:
description: The only acceptable value for `MessageData#experiment`. This should not be set by experiment.
type: ExperimentSlug
string-alias: ExperimentSlug
default: "{experiment}"
defaults:
objects:
MessageData:
description: >
An object to describe a message. It uses human
readable strings to describe the triggers, action and
style of the message as well as the text of the message
and call to action.
fields:
action:
type: ActionName
description: >
A URL of a page or a deeplink.
This may have substitution variables in.
default: OPEN_URL # This should never be defaulted.
action-params:
description: >
A string map containing query parameters that will be appended to the action URL.
This is useful for opening URLs in tabs, or specifying that the tab should be private.
"private": "true".
The params and their values are all determined downstream of the messaging component, by
the embedding app's deeplink processing machinery.
type: Map<String, String>
default: {}
title:
type: Option<Text>
description: The title text displayed to the user
default: null
text:
type: Text
description: The message text displayed to the user
default: "" # This should never be defaulted.
microsurvey-config:
type: Option<MicrosurveyConfig>
description: Optional configuration data for a microsurvey.
is-control:
type: Boolean
description: Indicates if this message is the control message, if true shouldn't be displayed
default: false
experiment:
type: Option<ExperimentSlug>
description: The slug of the experiment that this message came from.
default: null
button-label:
type: Option<Text>
description: >
The text on the button. If no text
is present, the whole message is clickable.
default: null
style:
type: StyleName
description: >
The style as described in a
`StyleData` from the styles table.
default: DEFAULT
surface:
description:
The surface identifier for this message.
type: SurfaceName
default: homescreen
trigger-if-all:
type: List<TriggerName>
description: >
A list of strings corresponding to
targeting expressions. The message will be
shown if all expressions are `true`.
default: []
exclude-if-any:
type: List<TriggerName>
description: >
A list of strings corresponding to
targeting expressions. The message will not be
shown if any of the expressions are `true`.
default: [ ]
StyleData:
description: >
A group of properties (predominantly visual) to
describe the style of the message.
fields:
priority:
type: Int
description: >
The importance of this message.
0 is not very important, 100 is very important.
default: 50
max-display-count:
type: Int
description: >
How many sessions will this message be shown to the user
before it is expired.
default: 5
NotificationConfig:
description: Attributes controlling the global configuration of notification messages.
fields:
refresh-interval:
type: Int
description: >
How often, in minutes, the notification message worker will wake up and check for new
messages.
default: 240 # 4 hours
MicrosurveyConfig:
description: Attributes relating to microsurvey content.
fields:
utm-content:
description: Optional "utm_content" parameter for the privacy notice URL to specify the feature being surveyed.
type: Option<String>
default: null
icon:
type: Option<Image>
description: The icon shown in the survey.
default: null # If null, a default will be provided.
answers:
description: The list of answers to present to the user e.g. "Satisfied, Dissatisfied...".
type: List<MicrosurveyAnswer>
default: [] # Should not be defaulted
max-number-lines:
description: The maximum number of lines allowed for the microsurvey text layout.
type: Int
default: 2
answer-ordering-type:
description: The way answers are ordered.
type: MicrosurveyOrdering
default: randomized
MicrosurveyAnswer:
description: Attributes relating to microsurvey content.
fields:
ordering:
type: Int
description: >
Used when answer-ordering-type is pinned-randomized to sequence answers with ordering values
greater than 0 top to bottom. Answers with ordering values equal to 0 are shuffled below.
E.g. 1 will be the first/top item, 2 will be next, followed by randomized 0s.
default: 0
text:
type: Text
description: The text for the answer.
default: "" # This should never be defaulted.
enums:
ControlMessageBehavior:
description: An enum to influence what should be displayed when a control message is selected.
variants:
show-next-message:
description: The next eligible message should be shown.
show-none:
description: The surface should show no message.
MicrosurveyOrdering:
description: An enum to determine how to order the microsurvey answers.
variants:
randomized:
description: The whole answer list is shuffled. Ordering values are ignored.
pinned-randomized:
description: >
Answers with an ordering value greater than 0 are pinned to the top, in ascending
order of that value. The remaining answers, with an ordering of 0, are shuffled below.
E.g. 1 will be the first/top item, 2 will be next, followed by randomized 0s.