{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/TriggerActionSchemas",
  "definitions": {
    "TriggerActionSchemas": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["openURL"]
            },
            "params": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "List of urls we should match against"
            },
            "patterns": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "List of Match pattern compatible strings to match against"
            }
          },
          "required": ["id"],
          "additionalProperties": false,
          "description": "Happens every time the user loads a new URL that matches the provided `hosts` or `patterns`"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["openArticleURL"]
            },
            "params": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "List of urls we should match against"
            },
            "patterns": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "List of Match pattern compatible strings to match against"
            }
          },
          "required": ["id"],
          "additionalProperties": false,
          "description": "Happens every time the user loads a document that is Reader Mode compatible"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["openBookmarkedURL"]
            }
          },
          "required": ["id"],
          "additionalProperties": false,
          "description": "Happens every time the user adds a bookmark from the URL bar star icon"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["frequentVisits"]
            },
            "params": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "List of urls we should match against"
            },
            "patterns": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "List of Match pattern compatible strings to match against"
            }
          },
          "required": ["id"],
          "additionalProperties": false,
          "description": "Happens every time a user navigates (or switches tab to) to any of the `hosts` or `patterns` arguments but additionally provides information about the number of accesses to the matched domain."
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["newSavedLogin"]
            }
          },
          "required": ["id"],
          "additionalProperties": false,
          "description": "Happens every time the user adds or updates a login"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["formAutofill"]
            }
          },
          "required": ["id"],
          "additionalProperties": false,
          "description": "Happens when the user saves, updates, or uses a credit card or address for form autofill"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["contentBlocking"]
            },
            "params": {
              "type": "array",
              "items": {
                "type": ["string", "integer"],
                "description": "Events that should trigger this message. String values correspond to ContentBlockingMilestone events and number values correspond to STATE_BLOCKED_* flags on nsIWebProgressListener."
              }
            }
          },
          "required": ["id", "params"],
          "additionalProperties": false,
          "description": "Happens every time Firefox blocks the loading of a page script/asset/resource that matches the one of the tracking behaviours specifid through params. See https://searchfox.org/mozilla-central/rev/8ccea36c4fb09412609fb738c722830d7098602b/uriloader/base/nsIWebProgressListener.idl#336"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["defaultBrowserCheck"]
            },
            "context": {
              "type": "object",
              "properties": {
                "source": {
                  "type": "string",
                  "enum": ["newtab"],
                  "description": "When the source of the trigger is home/newtab"
                },
                "willShowDefaultPrompt": {
                  "type": "boolean",
                  "description": "When the source of the trigger is startup"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Happens when starting the browser or navigating to about:home/newtab"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["deeplinkedToWindowsSettingsUI"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Occurs when user indicates they want to set Firefox to the default browser and they need to interact with Windows Settings to do so."
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["captivePortalLogin"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Happens when the user successfully goes through a captive portal authentication flow."
        },
        {
          "description": "Notify when a preference is added, removed or modified",
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["preferenceObserver"]
            },
            "params": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Preference names to observe."
              }
            }
          },
          "additionalProperties": false,
          "required": ["id", "params"]
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["featureCalloutCheck"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Used to display Feature Callouts in Firefox View. Can only be used for Feature Callouts."
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["pdfJsFeatureCalloutCheck"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Used to display Feature Callouts on PDF.js pages. Can only be used for Feature Callouts."
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["nthTabClosed"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Happens when the user closes n or more tabs in a session"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["activityAfterIdle"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Happens when the user resumes activity after n milliseconds of inactivity (keyboard/mouse interactions and audio playback all count as activity)"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["cookieBannerDetected"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Happens when Firefox detects a cookie consent banner that could otherwise be handled by Cookie Banner Handling"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["cookieBannerHandled"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Happens when Firefox automatically engages with a cookie consent banner"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["messagesLoaded"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Happens as soon as a message is loaded"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "enum": ["pageActionInUrlbar"]
            }
          },
          "additionalProperties": false,
          "required": ["id"],
          "description": "Happens when a page action appears in the urlbar. The specific page action(s) to watch can be specified by id in the targeting expression."
        }
      ]
    }
  }
}
