Source code

Revision control

Copy as Markdown

Other Tools

{
"$id": "chrome://browser/content/asrouter/schemas/MessagingExperiment.schema.json",
"title": "Messaging Experiment",
"description": "A Firefox Messaging System message.",
"if": {
"type": "object",
"properties": {
"template": {
"const": "multi"
}
},
"required": [
"template"
]
},
"then": {
},
"else": {
},
"$defs": {
"BookmarksBarButton": {
"title": "BookmarksBarButton",
"description": "A template with a label and a special message action (currently only supports OPEN_URL)",
"allOf": [
{
}
],
"type": "object",
"properties": {
"template": {
"type": "string",
"const": "bookmarks_bar_button"
},
"content": {
"type": "object",
"properties": {
"action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Action dispatched by the button."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true
}
},
"additionalProperties": true
}
},
"additionalProperties": true,
"required": [
"targeting"
]
},
"CFRUrlbarChiclet": {
"title": "CFRUrlbarChiclet",
"description": "A template with a chiclet button with text.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Attribute used for different groups of messages from the same provider"
},
"layout": {
"type": "string",
"description": "Describes how content should be displayed.",
"enum": [
"chiclet_open_url"
]
},
"bucket_id": {
"type": "string",
"description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting."
},
"notification_text": {
"description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string."
},
"active_color": {
"type": "string",
"description": "Background color of the button"
},
"action": {
"type": "object",
"properties": {
"url": {
"description": "The page to open when the button is clicked.",
"type": "string",
"format": "moz-url-format"
},
"where": {
"description": "Should it open in a new tab or the current tab",
"type": "string",
"enum": [
"current",
"tabshifted"
]
}
},
"additionalProperties": true,
"required": [
"url",
"where"
]
}
},
"additionalProperties": true,
"required": [
"layout",
"category",
"bucket_id",
"notification_text",
"action"
]
},
"template": {
"type": "string",
"const": "cfr_urlbar_chiclet"
}
},
"required": [
"targeting",
"trigger"
]
},
"ExtensionDoorhanger": {
"title": "ExtensionDoorhanger",
"description": "A template with a heading, addon icon, title and description. No markup allowed.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Attribute used for different groups of messages from the same provider"
},
"layout": {
"type": "string",
"description": "Attribute used for different groups of messages from the same provider",
"enum": [
"short_message",
"icon_and_message",
"addon_recommendation"
]
},
"anchor_id": {
"type": "string",
"description": "A DOM element ID that the pop-over will be anchored."
},
"alt_anchor_id": {
"type": "string",
"description": "An alternate DOM element ID that the pop-over will be anchored."
},
"bucket_id": {
"type": "string",
"description": "A bucket identifier for the addon. This is used in order to anonymize telemetry for history-sensitive targeting."
},
"skip_address_bar_notifier": {
"type": "boolean",
"description": "Skip the 'Recommend' notifier and show directly."
},
"persistent_doorhanger": {
"type": "boolean",
"description": "Prevent the doorhanger from being dismissed if user interacts with the page or switches between applications."
},
"show_in_private_browsing": {
"type": "boolean",
"description": "Whether to allow the message to be shown in private browsing mode. Defaults to false."
},
"notification_text": {
"description": "The text in the small blue chicklet that appears in the URL bar. This can be a reference to a localized string in Firefox or just a plain string."
},
"info_icon": {
"type": "object",
"description": "The small icon displayed in the top right corner of the pop-over. Should be 19x19px, svg or png. Defaults to a small question mark.",
"properties": {
"label": {
"oneOf": [
{
"type": "object",
"properties": {
"attributes": {
"type": "object",
"properties": {
"tooltiptext": {
"description": "Text for button tooltip used to provide information about the doorhanger."
}
},
"required": [
"tooltiptext"
]
}
},
"required": [
"attributes"
]
},
{
}
]
},
"sumo_path": {
"type": "string",
"description": "Last part of the path in the URL to the support page with the information about the doorhanger.",
"examples": [
"extensionpromotions",
"extensionrecommendations"
]
}
}
},
"learn_more": {
"type": "string",
"description": "Last part of the path in the SUMO URL to the support page with the information about the doorhanger.",
"examples": [
"extensionpromotions",
"extensionrecommendations"
]
},
"heading_text": {
"description": "The larger heading text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string."
},
"icon": {
"description": "The icon displayed in the pop-over. Should be 32x32px or 64x64px and png/svg."
},
"icon_dark_theme": {
"type": "string",
"description": "Pop-over icon, dark theme variant. Should be 32x32px or 64x64px and png/svg."
},
"icon_class": {
"type": "string",
"description": "CSS class of the pop-over icon."
},
"addon": {
"description": "Addon information including AMO URL.",
"type": "object",
"properties": {
"id": {
"description": "Unique addon ID"
},
"title": {
"description": "Addon name"
},
"author": {
"description": "Addon author"
},
"icon": {
"description": "The icon displayed in the pop-over. Should be 64x64px and png/svg."
},
"rating": {
"type": "string",
"description": "Star rating"
},
"users": {
"type": "string",
"description": "Installed users"
},
"amo_url": {
"description": "Link that offers more information related to the addon."
}
},
"required": [
"title",
"author",
"icon",
"amo_url"
]
},
"text": {
"description": "The body text displayed in the pop-over. This can be a reference to a localized string in Firefox or just a plain string."
},
"descriptionDetails": {
"description": "Additional information and steps on how to use",
"type": "object",
"properties": {
"steps": {
"description": "Array of string_ids",
"type": "array",
"items": {
"description": "Id of string to localized addon description"
}
}
},
"required": [
"steps"
]
},
"buttons": {
"description": "The label and functionality for the buttons in the pop-over.",
"type": "object",
"properties": {
"primary": {
"type": "object",
"properties": {
"label": {
"type": "object",
"oneOf": [
{
"properties": {
"value": {
"description": "Button label override used when a localized version is not available."
},
"attributes": {
"type": "object",
"properties": {
"accesskey": {
"type": "string",
"description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label."
}
},
"required": [
"accesskey"
],
"description": "Button attributes."
}
},
"required": [
"value",
"attributes"
]
},
{
}
],
"description": "Id of localized string or message override."
},
"action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Action dispatched by the button."
},
"data": {
"properties": {
"url": {
"type": "string",
"$comment": "This is dynamically generated from the addon.id. See CFRPageActions.sys.mjs",
"description": "URL used in combination with the primary action dispatched."
}
}
}
}
}
}
},
"secondary": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "object",
"oneOf": [
{
"properties": {
"value": {
"allOf": [
{
},
{
"description": "Button label override used when a localized version is not available."
}
]
},
"attributes": {
"type": "object",
"properties": {
"accesskey": {
"type": "string",
"description": "A single character to be used as a shortcut key for the secondary button. This should be one of the characters that appears in the button label."
}
},
"required": [
"accesskey"
],
"description": "Button attributes."
}
},
"required": [
"value",
"attributes"
]
},
{
"properties": {
"string_id": {
"allOf": [
{
},
{
"description": "Id of localized string for button"
}
]
}
},
"required": [
"string_id"
]
}
],
"description": "Id of localized string or message override."
},
"action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Action dispatched by the button."
},
"data": {
"properties": {
"url": {
"allOf": [
{
},
{
"description": "URL used in combination with the primary action dispatched."
}
]
}
}
}
}
}
}
}
}
}
}
},
"additionalProperties": true,
"required": [
"layout",
"bucket_id",
"heading_text",
"text",
"buttons"
],
"if": {
"properties": {
"skip_address_bar_notifier": {
"anyOf": [
{
"const": "false"
},
{
"const": null
}
]
}
}
},
"then": {
"required": [
"category",
"notification_text"
]
}
},
"template": {
"type": "string",
"enum": [
"cfr_doorhanger",
"milestone_message"
]
}
},
"additionalProperties": true,
"required": [
"targeting",
"trigger"
],
"$defs": {
"plainText": {
"description": "Plain text (no HTML allowed)",
"type": "string"
},
"linkUrl": {
"description": "Target for links or buttons",
"type": "string",
"format": "uri"
}
}
},
"InfoBar": {
"title": "InfoBar",
"description": "A template with an image, test and buttons.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Specifies where the message should appear and persist: 'global' (persists across tabs in the current window), 'tab' (only visible in the current tab), or 'universal' (visible across all tabs and windows, current and future).",
"enum": [
"global",
"tab",
"universal"
]
},
"text": {
"description": "Either a single localizableText, or an array of raw strings and/or localizableText objects. localizableText can contain an optional href property for the text to be rendered as a link.",
"oneOf": [
{
},
{
"allOf": [
{
"allOf": [
{
},
{
"not": {
"required": [
"href"
]
}
},
{
"type": "object",
"description": "Additional arguments, only a `where` override is currently allowed",
"properties": {
"args": {
"type": "object",
"description": "Where to open ('tab', 'tabshifted', 'current', etc.)",
"properties": {
"where": {
"type": "string",
"description": "Where to open—e.g. 'tab', 'window', etc."
}
},
"additionalProperties": false
}
},
"additionalProperties": true
}
]
}
]
},
{
},
{
},
{
"type": "array",
"items": {
"oneOf": [
{
},
{
"allOf": [
{
},
{
"not": {
"required": [
"href"
]
}
}
]
},
{
},
{
}
]
}
}
]
},
"priority": {
"type": "number",
"minumum": 0,
"exclusiveMaximum": 10
},
"dismissable": {
"description": "Should the infobar include an X dismiss button, defaults to true",
"type": "boolean"
},
"impression_action": {
"oneOf": [
{
},
{
"type": "object",
"properties": {
"type": {
"const": "MULTI_ACTION"
},
"data": {
"type": "object",
"properties": {
"actions": {
"type": "array",
"minItems": 1,
"items": {
}
}
},
"required": [
"actions"
],
"additionalProperties": false
}
},
"required": [
"type",
"data"
],
"additionalProperties": false
}
]
},
"buttons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"description": "The text label of the button."
},
"primary": {
"type": "boolean",
"description": "Is this the primary button?"
},
"accessKey": {
"type": "string",
"description": "Keyboard shortcut letter."
},
"action": {
"type": "object",
"properties": {
"dismiss": {
"type": "boolean",
"description": "Should the infobar be dismissed when the action is dispatched, defaults to true"
},
"type": {
"type": "string",
"description": "Action dispatched by the button."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true
},
"supportPage": {
"type": "string",
"description": "A page title on SUMO to link to"
}
},
"required": [
"label",
"action"
],
"additionalProperties": true
}
},
"linkUrls": {
"description": "Map of Fluent data-l10n-name keys to real URLs",
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/linkUrl"
}
},
"linkActions": {
"description": "Map of Fluent data-l10n-name keys to a Special Message Action dispatched when the link is clicked (in addition to opening the URL).",
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "SpecialMessageActions action type"
},
"data": {
"type": "object"
},
"dismiss": {
"type": "boolean",
"description": "If true, dismiss the infobar after handling this link’s action. Defaults to false."
}
},
"required": [
"type"
]
}
},
"style": {
"description": "Optional CSS overrides for this infobar. Currently, only `background-color` and `font-size` may be set. `background-color` will only apply when the user does not prefer high-contrast.",
"type": "object",
"properties": {
"background-color": {
"type": "string",
"description": "Any valid CSS color or light-dark() expression."
},
"font-size": {
"type": "string",
"description": "Any valid CSS font-size value - rem units recommended to ensure size is relative to the system font size."
}
},
"additionalProperties": false
}
},
"additionalProperties": true,
"required": [
"text",
"buttons"
]
},
"template": {
"type": "string",
"const": "infobar"
}
},
"additionalProperties": true,
"required": [
"targeting",
"trigger"
],
"$defs": {
"plainText": {
"description": "Plain text (no HTML allowed)",
"type": "string"
},
"linkUrl": {
"description": "Target for links or buttons",
"type": "string",
"format": "uri"
},
"localizableTextWithHref": {
"description": "Everything a localizableText allows, plus a required href",
"allOf": [
{
},
{
"type": "object",
"properties": {
"href": {
}
},
"required": [
"href"
],
"additionalProperties": true
}
]
},
"rawTextWithHref": {
"description": "A literal text chunk that must include href",
"type": "object",
"properties": {
"raw": {
"type": "string"
},
"href": {
}
},
"required": [
"raw",
"href"
],
"additionalProperties": false
},
"impressionActionItem": {
"type": "object",
"properties": {
"type": {
"const": "SET_PREF"
},
"once": {
"type": "boolean",
"description": "If true, only fire on first impression."
},
"data": {
"type": "object",
"properties": {
"pref": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {}
},
"required": [
"name"
]
}
},
"required": [
"pref"
],
"additionalProperties": false
}
},
"required": [
"type",
"data"
],
"additionalProperties": false
}
}
},
"MenuMessage": {
"title": "MenuMessage",
"description": "A template for messages that appear within our menus.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"messageType": {
"type": "string",
"description": "The subtype of the message. 'fxa_cta' is used for Firefox Accounts messaging and is only visible when signed out, unless 'allowWhenSignedIn' property is provided. 'default_cta' is used for general messages, regardless of sign in state and only visible within the App Menu.",
"enum": [
"fxa_cta", "default_cta"
]
},
"primaryText": {
"description": "The primary text for the message, which offers the value proposition to the user."
},
"secondaryText": {
"description": "The second text for the message, which offers more detail on the value proposition to the user."
},
"closeAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Action dispatched by the button."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true,
"description": "The action to take upon clicking the close button."
},
"primaryAction": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Action dispatched by the button."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true,
"description": "The action to take upon clicking the primary action button."
},
"primaryActionText": {
"description": "The label for the primary action."
},
"primaryButtonSize": {
"type": "string",
"enum": ["default", "small"],
"description": "The size of the primary button, default is 'default'."
},
"imageURL": {
"type": "string",
"description": "URL for image to use with the content."
},
"imageWidth": {
"type": "number",
"description": "The image width in pixels. Default is 120px."
},
"logoURL": {
"type": "string",
"description": "URL for logo to use with the content."
},
"logoWidth": {
"type": "number",
"description": "The logo width in pixels. Default is 18px."
},
"imageVerticalTopOffset": {
"type": "number",
"description": "The margin-block-start value to apply to the image in pixels."
},
"imageVerticalBottomOffset": {
"type": "number",
"description": "The margin-block-end value to apply to the image in pixels, used in 'row' layouts."
},
"containerVerticalBottomOffset": {
"type": "number",
"description": "The container's margin-block-end value in pixels. Used to visually offset the image in 'row' layouts when 'imageVerticalBottomOffset' is applied."
},
"layout": {
"type": "string",
"description": "The layout of the message content and illustration. Row displays the image inline to the right of the text, column displays the image above the text. Simple layout only displays primary text and primary button on one row.",
"enum": [
"row",
"column",
"simple"
]
},
"allowWhenSignedIn": {
"type": "boolean",
"description": "If true, the message will be shown even when the user is signed in. For 'fxa_cta' messages. Defaults to false."
}
}
},
"template": {
"type": "string",
"const": "menu_message"
},
"testingTriggerContext": {
"type": "string",
"enum": [
"app_menu",
"pxi_menu"
]
}
},
"additionalProperties": true
},
"NewtabPromoMessage": {
"title": "PBNewtabPromoMessage",
"description": "Message shown on the private browsing newtab page.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"hideDefault": {
"type": "boolean",
"description": "Should we hide the default promo after the experiment promo is dismissed."
},
"infoEnabled": {
"type": "boolean",
"description": "Should we show the info section."
},
"infoIcon": {
"type": "string",
"description": "Icon shown in the left side of the info section. Default is the private browsing icon."
},
"infoTitle": {
"type": "string",
"description": "Is the title in the info section enabled."
},
"infoTitleEnabled": {
"type": "boolean",
"description": "Is the title in the info section enabled."
},
"infoBody": {
"type": "string",
"description": "Text content in the info section."
},
"infoLinkText": {
"type": "string",
"description": "Text for the link in the info section."
},
"infoLinkUrl": {
"type": "string",
"description": "URL for the info section link.",
"format": "moz-url-format"
},
"promoEnabled": {
"type": "boolean",
"description": "Should we show the promo section."
},
"promoType": {
"type": "string",
"description": "Promo type used to determine if promo should show to a given user",
"enum": [
"FOCUS",
"VPN",
"PIN",
"COOKIE_BANNERS",
"OTHER"
]
},
"promoSectionStyle": {
"type": "string",
"description": "Sets the position of the promo section. Possible values are: top, below-search, bottom. Default bottom.",
"enum": [
"top",
"below-search",
"bottom"
]
},
"promoTitle": {
"type": "string",
"description": "The text content of the promo section."
},
"promoTitleEnabled": {
"type": "boolean",
"description": "Should we show text content in the promo section."
},
"promoLinkText": {
"type": "string",
"description": "The text of the link in the promo box."
},
"promoHeader": {
"type": "string",
"description": "The title of the promo section."
},
"promoButton": {
"type": "object",
"properties": {
"action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Action dispatched by the button."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true
}
},
"required": [
"action"
]
},
"promoLinkType": {
"type": "string",
"description": "Type of promo link type. Possible values: link, button. Default is link.",
"enum": [
"link",
"button"
]
},
"promoImageLarge": {
"type": "string",
"description": "URL for image used on the left side of the promo box, larger, showcases some feature. Default off.",
"format": "uri"
},
"promoImageSmall": {
"type": "string",
"description": "URL for image used on the right side of the promo box, smaller, usually a logo. Default off.",
"format": "uri"
}
},
"additionalProperties": true,
"allOf": [
{
"if": {
"properties": {
"promoEnabled": {
"const": true
}
},
"required": [
"promoEnabled"
]
},
"then": {
"required": [
"promoButton"
]
}
},
{
"if": {
"properties": {
"infoEnabled": {
"const": true
}
},
"required": [
"infoEnabled"
]
},
"then": {
"required": [
"infoLinkText"
],
"if": {
"properties": {
"infoTitleEnabled": {
"const": true
}
},
"required": [
"infoTitleEnabled"
]
},
"then": {
"required": [
"infoTitle"
]
}
}
}
]
},
"template": {
"type": "string",
"const": "pb_newtab"
}
},
"additionalProperties": true,
"required": [
"targeting"
]
},
"NewtabMessage": {
"title": "NewtabMessage",
"description": "A template for messages that are rendered within newtab",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"messageType": {
"type": "string",
"description": "The subtype of the message."
}
},
"additionalProperties": true,
"required": [
"messageType"
]
},
"template": {
"type": "string",
"const": "newtab_message"
}
},
"additionalProperties": true,
"required": [
"targeting"
]
},
"Spotlight": {
"title": "Spotlight",
"description": "A template with an image, title, content and two buttons.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"template": {
"type": "string",
"description": "Specify the layout template for the Spotlight",
"const": "multistage"
},
"backdrop": {
"type": "string",
"description": "Background css behind modal content"
},
"logo": {
"type": "object",
"properties": {
"imageURL": {
"type": "string",
"description": "URL for image to use with the content"
},
"imageId": {
"type": "string",
"description": "The ID for a remotely hosted image"
},
"size": {
"type": "string",
"description": "The logo size."
}
},
"additionalProperties": true
},
"screens": {
"type": "array",
"description": "Collection of individual screen content"
},
"transitions": {
"type": "boolean",
"description": "Show transitions within and between screens"
},
"disableEscClose": {
"type": "boolean",
"description": "Don't allow the message to be dismissed using the ESC key - for limited use in Spotlight modals only when the message content clearly informs the user that a decision is required to proceed"
},
"disableHistoryUpdates": {
"type": "boolean",
"description": "Don't alter the browser session's history stack - used with messaging surfaces like Feature Callouts"
},
"startScreen": {
"type": "integer",
"description": "Index of first screen to show from message, defaulting to 0"
},
"no-rdm": {
"type": "boolean",
"description": "If true, prevents the spotlight from entering responsive design mode at widths less than 800px"
}
},
"additionalProperties": true
},
"template": {
"type": "string",
"description": "Specify whether the surface is shown as a Spotlight modal or an in-surface Feature Callout dialog",
"enum": [
"spotlight",
"feature_callout"
]
}
},
"additionalProperties": true,
"required": [
"targeting"
]
},
"ToastNotification": {
"title": "ToastNotification",
"description": "A template for toast notifications displayed by the Alert service.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"title": {
"description": "Id of localized string or message override of toast notification title"
},
"body": {
"description": "Id of localized string or message override of toast notification body"
},
"icon_url": {
"description": "The URL of the image used as an icon of the toast notification.",
"type": "string",
"format": "moz-url-format"
},
"image_url": {
"description": "The URL of an image to be displayed as part of the notification.",
"type": "string",
"format": "moz-url-format"
},
"launch_url": {
"description": "The URL to launch when the notification or an action button is clicked.",
"type": "string",
"format": "moz-url-format"
},
"launch_action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "The launch action to be performed when Firefox is launched."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true
},
"requireInteraction": {
"type": "boolean",
"description": "Whether the toast notification should remain active until the user clicks or dismisses it, rather than closing automatically."
},
"tag": {
"type": "string",
"description": "An identifying tag for the toast notification."
},
"data": {
"type": "object",
"description": "Arbitrary data associated with the toast notification."
},
"actions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"description": "The action text to be shown to the user."
},
"action": {
"type": "string",
"description": "Opaque identifer that identifies action."
},
"iconURL": {
"type": "string",
"format": "uri",
"description": "URL of an icon to display with the action."
},
"windowsSystemActivationType": {
"type": "boolean",
"description": "Whether to have Windows process the given `action`."
},
"launch_action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "The launch action to be performed when Firefox is launched."
},
"data": {
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": true
}
},
"required": [
"action",
"title"
],
"additionalProperties": true
}
}
},
"additionalProperties": true,
"required": [
"title",
"body"
]
},
"template": {
"type": "string",
"const": "toast_notification"
}
},
"required": [
"content",
"targeting",
"template",
"trigger"
],
"additionalProperties": true
},
"ToolbarBadgeMessage": {
"title": "ToolbarBadgeMessage",
"description": "A template that specifies to which element in the browser toolbar to add a notification.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"target": {
"type": "string"
},
"action": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"id"
],
"description": "Optional action to take in addition to showing the notification"
},
"delay": {
"type": "number",
"description": "Optional delay in ms after which to show the notification"
},
"badgeDescription": {
"description": "This is used in combination with the badged button to offer a text based alternative to the visual badging. Example 'New Feature: What's New'"
}
},
"additionalProperties": true,
"required": [
"target"
]
},
"template": {
"type": "string",
"const": "toolbar_badge"
}
},
"additionalProperties": true,
"required": [
"targeting"
]
},
"UpdateAction": {
"title": "UpdateActionMessage",
"description": "A template for messages that execute predetermined actions.",
"allOf": [
{
}
],
"type": "object",
"properties": {
"content": {
"type": "object",
"properties": {
"action": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"data": {
"type": "object",
"description": "Additional data provided as argument when executing the action",
"properties": {
"url": {
"type": "string",
"description": "URL data to be used as argument to the action"
},
"expireDelta": {
"type": "number",
"description": "Expiration timestamp to be used as argument to the action"
}
}
}
},
"additionalProperties": true,
"description": "Optional action to take in addition to showing the notification",
"required": [
"id",
"data"
]
}
},
"additionalProperties": true,
"required": [
"action"
]
},
"template": {
"type": "string",
"const": "update_action"
}
},
"required": [
"targeting"
]
},
"Message": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The message identifier"
},
"groups": {
"description": "Array of preferences used to control `enabled` status of the group. If any is `false` the group is disabled.",
"type": "array",
"items": {
"type": "string",
"description": "Preference name"
}
},
"template": {
"type": "string",
"description": "Which messaging template this message is using.",
"enum": [
"bookmarks_bar_button",
"cfr_urlbar_chiclet",
"cfr_doorhanger",
"milestone_message",
"infobar",
"menu_message",
"pb_newtab",
"newtab_message",
"spotlight",
"feature_callout",
"toast_notification",
"toolbar_badge",
"update_action"
]
},
"frequency": {
"type": "object",
"description": "An object containing frequency cap information for a message.",
"properties": {
"lifetime": {
"type": "integer",
"description": "The maximum lifetime impressions for a message.",
"minimum": 1,
"maximum": 100
},
"custom": {
"type": "array",
"description": "An array of custom frequency cap definitions.",
"items": {
"description": "A frequency cap definition containing time and max impression information",
"type": "object",
"properties": {
"period": {
"type": "integer",
"description": "Period of time in milliseconds (e.g. 86400000 for one day)"
},
"cap": {
"type": "integer",
"description": "The maximum impressions for the message within the defined period.",
"minimum": 1,
"maximum": 100
}
},
"required": [
"period",
"cap"
]
}
}
}
},
"priority": {
"description": "The priority of the message. If there are two competing messages to show, the one with the highest priority will be shown",
"type": "integer"
},
"order": {
"description": "The order in which messages should be shown. Messages will be shown in increasing order.",
"type": "integer"
},
"targeting": {
"description": "A JEXL expression representing targeting information",
"type": "string"
},
"trigger": {
"description": "An action to trigger potentially showing the message",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A string identifying the trigger action"
},
"params": {
"type": "array",
"description": "An optional array of string parameters for the trigger action",
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
}
},
"required": [
"id"
]
},
"provider": {
"description": "An identifier for the provider of this message, such as \"cfr\" or \"preview\".",
"type": "string"
}
},
"additionalProperties": true,
"dependentRequired": {
"content": [
"id",
"template"
],
"template": [
"id",
"content"
]
}
},
"localizedText": {
"type": "object",
"properties": {
"string_id": {
"description": "Id of localized string to be rendered.",
"type": "string"
}
},
"required": [
"string_id"
]
},
"localizableText": {
"description": "Either a raw string or an object containing the string_id of the localized text",
"oneOf": [
{
"type": "string",
"description": "The string to be rendered."
},
{
}
]
},
"TemplatedMessage": {
"description": "An FxMS message of one of a variety of types.",
"type": "object",
"allOf": [
{
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"bookmarks_bar_button"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"cfr_urlbar_chiclet"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"cfr_doorhanger",
"milestone_message"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"infobar"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"menu_message"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"pb_newtab"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"newtab_message"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"spotlight",
"feature_callout"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"toast_notification"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"toolbar_badge"
]
}
},
"required": [
"template"
]
},
"then": {
}
},
{
"if": {
"type": "object",
"properties": {
"template": {
"type": "string",
"enum": [
"update_action"
]
}
},
"required": [
"template"
]
},
"then": {
}
}
]
},
"MultiMessage": {
"description": "An object containing an array of messages.",
"type": "object",
"properties": {
"template": {
"type": "string",
"const": "multi"
},
"messages": {
"type": "array",
"description": "An array of messages.",
"items": {
}
}
},
"required": [
"template",
"messages"
]
}
}
}