summaryrefslogtreecommitdiffstats
path: root/mobile/android/android-components/components/service/nimbus/messaging.fml.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/android-components/components/service/nimbus/messaging.fml.yaml')
-rw-r--r--mobile/android/android-components/components/service/nimbus/messaging.fml.yaml194
1 files changed, 194 insertions, 0 deletions
diff --git a/mobile/android/android-components/components/service/nimbus/messaging.fml.yaml b/mobile/android/android-components/components/service/nimbus/messaging.fml.yaml
new file mode 100644
index 0000000000..c53456e31e
--- /dev/null
+++ b/mobile/android/android-components/components/service/nimbus/messaging.fml.yaml
@@ -0,0 +1,194 @@
+---
+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.
+ # This should never be defaulted.
+ 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: {}
+ 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:
+ 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
+
+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.