--- 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 string-alias: MessageKey default: {} triggers: description: > A collection of out the box trigger expressions. Each entry maps to a valid JEXL expression. type: Map string-alias: TriggerName default: {} styles: description: > A map of styles to configure message appearance. type: Map 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 string-alias: SurfaceName default: [] actions: type: Map 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 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. The values may have substitutions, e.g. "url": "https://example.com/id={uuid}", "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 default: {} title: type: Option 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 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 description: The slug of the experiment that this message came from. default: null button-label: type: Option 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 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 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 default: null icon: type: Option 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 default: [] # Should not be defaulted MicrosurveyAnswer: description: Attributes relating to microsurvey content. fields: ordering: type: Int description: > Used to sequence the answers top to bottom. E.g. 0 will be the first/top item, 1 will be next and so on. Always set either ALL the provided answers ordering or NONE. If ALL answers are default, the the ordering used will be the same as provided by the experiment. 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.