2023-11-28 09:10:03 +01:00
|
|
|
---
|
|
|
|
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
|
2024-02-18 09:20:44 +01:00
|
|
|
type: Map<MessageKey, MessageData>
|
|
|
|
string-alias: MessageKey
|
2023-11-28 09:10:03 +01:00
|
|
|
default: {}
|
|
|
|
|
|
|
|
triggers:
|
|
|
|
description: >
|
|
|
|
A collection of out the box trigger
|
|
|
|
expressions. Each entry maps to a
|
|
|
|
valid JEXL expression.
|
2024-02-18 09:20:44 +01:00
|
|
|
type: Map<TriggerName, String>
|
|
|
|
string-alias: TriggerName
|
2023-11-28 09:10:03 +01:00
|
|
|
default: {}
|
|
|
|
styles:
|
|
|
|
description: >
|
|
|
|
A map of styles to configure message
|
|
|
|
appearance.
|
2024-02-18 09:20:44 +01:00
|
|
|
type: Map<StyleName, StyleData>
|
|
|
|
string-alias: StyleName
|
2023-11-28 09:10:03 +01:00
|
|
|
default: {}
|
|
|
|
|
2024-02-18 09:20:44 +01:00
|
|
|
$$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: []
|
|
|
|
|
2023-11-28 09:10:03 +01:00
|
|
|
actions:
|
2024-02-18 09:20:44 +01:00
|
|
|
type: Map<ActionName, String>
|
2023-11-28 09:10:03 +01:00
|
|
|
description: A growable map of action URLs.
|
2024-02-18 09:20:44 +01:00
|
|
|
string-alias: ActionName
|
2024-06-01 16:27:41 +02:00
|
|
|
default:
|
|
|
|
OPEN_URL: ://open
|
|
|
|
|
2023-11-28 09:10:03 +01:00
|
|
|
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.
|
2024-02-18 09:20:44 +01:00
|
|
|
type: Option<MessageKey>
|
2023-11-28 09:10:03 +01:00
|
|
|
default: null
|
2024-02-18 09:20:44 +01:00
|
|
|
$$experiment:
|
|
|
|
description: The only acceptable value for `MessageData#experiment`. This should not be set by experiment.
|
|
|
|
type: ExperimentSlug
|
|
|
|
string-alias: ExperimentSlug
|
|
|
|
default: "{experiment}"
|
2023-11-28 09:10:03 +01:00
|
|
|
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:
|
2024-06-01 16:27:41 +02:00
|
|
|
type: ActionName
|
2023-11-28 09:10:03 +01:00
|
|
|
description: >
|
|
|
|
A URL of a page or a deeplink.
|
|
|
|
This may have substitution variables in.
|
|
|
|
# This should never be defaulted.
|
2024-06-01 16:27:41 +02:00
|
|
|
default: OPEN_URL
|
|
|
|
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<String, String>
|
|
|
|
default: {}
|
2023-11-28 09:10:03 +01:00
|
|
|
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"
|
|
|
|
# This should never be defaulted.
|
|
|
|
default: ""
|
|
|
|
is-control:
|
|
|
|
type: Boolean
|
|
|
|
description: "Indicates if this message is the control message, if true shouldn't be displayed"
|
|
|
|
default: false
|
|
|
|
experiment:
|
2024-02-18 09:20:44 +01:00
|
|
|
type: Option<ExperimentSlug>
|
2023-11-28 09:10:03 +01:00
|
|
|
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:
|
2024-02-18 09:20:44 +01:00
|
|
|
type: StyleName
|
2023-11-28 09:10:03 +01:00
|
|
|
description: >
|
|
|
|
The style as described in a
|
|
|
|
`StyleData` from the styles table.
|
|
|
|
default: DEFAULT
|
|
|
|
surface:
|
|
|
|
description:
|
|
|
|
The surface identifier for this message.
|
2024-02-18 09:20:44 +01:00
|
|
|
type: SurfaceName
|
2023-11-28 09:10:03 +01:00
|
|
|
default: homescreen
|
2024-06-01 16:27:41 +02:00
|
|
|
trigger-if-all:
|
2024-02-18 09:20:44 +01:00
|
|
|
type: List<TriggerName>
|
2023-11-28 09:10:03 +01:00
|
|
|
description: >
|
|
|
|
A list of strings corresponding to
|
|
|
|
targeting expressions. The message will be
|
2024-06-01 16:27:41 +02:00
|
|
|
shown if all expressions are `true`.
|
2023-11-28 09:10:03 +01:00
|
|
|
default: []
|
2024-06-01 16:27:41 +02:00
|
|
|
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: [ ]
|
2023-11-28 09:10:03 +01:00
|
|
|
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
|
|
|
|
|
|
|
|
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.
|