{
  "$id": "file:///NewtabPromoMessage.schema.json",
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "additionalProperties": true,
  "allOf": [
    {
      "$ref": "file:///FxMSCommon.schema.json#/$defs/Message"
    }
  ],
  "description": "Message shown on the private browsing newtab page.",
  "properties": {
    "content": {
      "additionalProperties": true,
      "allOf": [
        {
          "if": {
            "properties": {
              "promoEnabled": {
                "const": true
              }
            },
            "required": [
              "promoEnabled"
            ]
          },
          "then": {
            "required": [
              "promoButton"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "infoEnabled": {
                "const": true
              }
            },
            "required": [
              "infoEnabled"
            ]
          },
          "then": {
            "if": {
              "properties": {
                "infoTitleEnabled": {
                  "const": true
                }
              },
              "required": [
                "infoTitleEnabled"
              ]
            },
            "required": [
              "infoLinkText"
            ],
            "then": {
              "required": [
                "infoTitle"
              ]
            }
          }
        }
      ],
      "properties": {
        "hideDefault": {
          "description": "Should we hide the default promo after the experiment promo is dismissed.",
          "type": "boolean"
        },
        "infoBody": {
          "description": "Text content in the info section.",
          "type": "string"
        },
        "infoEnabled": {
          "description": "Should we show the info section.",
          "type": "boolean"
        },
        "infoIcon": {
          "description": "Icon shown in the left side of the info section. Default is the private browsing icon.",
          "type": "string"
        },
        "infoLinkText": {
          "description": "Text for the link in the info section.",
          "type": "string"
        },
        "infoLinkUrl": {
          "description": "URL for the info section link.",
          "format": "moz-url-format",
          "type": "string"
        },
        "infoTitle": {
          "description": "Is the title in the info section enabled.",
          "type": "string"
        },
        "infoTitleEnabled": {
          "description": "Is the title in the info section enabled.",
          "type": "boolean"
        },
        "promoButton": {
          "properties": {
            "action": {
              "additionalProperties": true,
              "properties": {
                "data": {
                  "type": "object"
                },
                "type": {
                  "description": "Action dispatched by the button.",
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "action"
          ],
          "type": "object"
        },
        "promoEnabled": {
          "description": "Should we show the promo section.",
          "type": "boolean"
        },
        "promoHeader": {
          "description": "The title of the promo section.",
          "type": "string"
        },
        "promoImageLarge": {
          "description": "URL for image used on the left side of the promo box, larger, showcases some feature. Default off.",
          "format": "uri",
          "type": "string"
        },
        "promoImageSmall": {
          "description": "URL for image used on the right side of the promo box, smaller, usually a logo. Default off.",
          "format": "uri",
          "type": "string"
        },
        "promoLinkText": {
          "description": "The text of the link in the promo box.",
          "type": "string"
        },
        "promoLinkType": {
          "description": "Type of promo link type. Possible values: link, button. Default is link.",
          "enum": [
            "link",
            "button"
          ],
          "type": "string"
        },
        "promoSectionStyle": {
          "description": "Sets the position of the promo section. Possible values are: top, below-search, bottom. Default bottom.",
          "enum": [
            "top",
            "below-search",
            "bottom"
          ],
          "type": "string"
        },
        "promoTitle": {
          "description": "The text content of the promo section.",
          "type": "string"
        },
        "promoTitleEnabled": {
          "description": "Should we show text content in the promo section.",
          "type": "boolean"
        },
        "promoType": {
          "description": "Promo type used to determine if promo should show to a given user",
          "enum": [
            "FOCUS",
            "VPN",
            "PIN",
            "COOKIE_BANNERS",
            "OTHER"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "template": {
      "const": "pb_newtab",
      "type": "string"
    }
  },
  "required": [
    "targeting"
  ],
  "title": "PBNewtabPromoMessage",
  "type": "object"
}