[
  {
    "namespace": "trackingProtection",
    "description": "experimental API allow requests through ETP",
    "events": [
      {
        "name": "onSmartBlockEmbedUnblock",
        "type": "function",
        "description": "Event used to pass an unblock message to a smartblock shim",
        "parameters": [
          {
            "name": "tabId",
            "type": "number",
            "description": "The id of the tab where the shim is running"
          },
          {
            "name": "shimId",
            "type": "string",
            "description": "The shim which should be unblocked"
          },
          {
            "name": "hostname",
            "type": "string",
            "description": "Hostname of the website"
          }
        ]
      },
      {
        "name": "onSmartBlockEmbedReblock",
        "type": "function",
        "description": "Event used to pass an reblock message to a smartblock shim",
        "parameters": [
          {
            "name": "tabId",
            "type": "number",
            "description": "The id of the tab where the shim is running"
          },
          {
            "name": "shimId",
            "type": "string",
            "description": "The shim which should be reblocked"
          },
          {
            "name": "hostname",
            "type": "string",
            "description": "Hostname of the website"
          }
        ]
      },
      {
        "name": "onPrivateSessionEnd",
        "type": "function",
        "description": "Event used to notify webcompat extension that it's time to clear PB state",
        "parameters": []
      }
    ],
    "functions": [
      {
        "name": "isDFPIActive",
        "type": "function",
        "description": "Returns whether dFPI is active for private/non-private browsing tabs",
        "parameters": [
          {
            "type": "boolean",
            "name": "isPrivate"
          }
        ],
        "async": true
      },
      {
        "name": "shim",
        "type": "function",
        "description": "Set specified URL patterns as intended to be shimmed",
        "parameters": [
          {
            "name": "allowlistId",
            "description": "Identfier for the allow-list, so it may be added-to or revoked",
            "type": "string"
          },
          {
            "name": "matchEntries",
            "description": "Array of match entries with URL patterns and request types",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "patterns": {
                  "type": "array",
                  "items": { "type": "string" }
                },
                "types": {
                  "type": "array",
                  "items": { "type": "string" }
                }
              }
            }
          },
          {
            "name": "notHosts",
            "description": "Hosts on which to not shim these patterns",
            "type": "array",
            "optional": true,
            "items": {
              "type": "string"
            }
          }
        ]
      },
      {
        "name": "allow",
        "type": "function",
        "description": "Set specified URL patterns as intended to be allowed through the content blocker for the specified top hosts",
        "parameters": [
          {
            "name": "allowlistId",
            "description": "Identfier for the allow-list, so it may be added-to or revoked",
            "type": "string"
          },
          {
            "name": "patterns",
            "description": "Array of match patterns",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "name": "isPrivate",
            "type": "boolean"
          },
          {
            "name": "hosts",
            "description": "Hosts to allow the patterns on",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "async": true
      },
      {
        "name": "revoke",
        "type": "function",
        "description": "Revokes the given allow-list entirely (both shims and allows)",
        "parameters": [
          {
            "name": "allowListId",
            "type": "string"
          }
        ],
        "async": true
      },
      {
        "name": "clearResourceCache",
        "type": "function",
        "description": "Clear in-memory resource cache to reflect the changes to the allow-list for the subsequent requests",
        "parameters": [],
        "async": true
      },
      {
        "name": "wasRequestUnblocked",
        "type": "function",
        "description": "Whether the given requestId was unblocked by any allowList",
        "parameters": [
          {
            "name": "requestId",
            "type": "string"
          },
          {
            "name": "isPrivate",
            "type": "boolean"
          }
        ],
        "async": true
      },
      {
        "name": "openProtectionsPanel",
        "type": "function",
        "description": "Sends an observer message to open the protections panel on the window specified by the tab id",
        "parameters": [
          {
            "name": "tabId",
            "type": "number",
            "description": "the webcompat tab id of the calling tab, used to get the correct window"
          }
        ]
      },
      {
        "name": "incrementSmartblockEmbedShownTelemetry",
        "type": "function",
        "description": "Sends an observer message to inform protections panel that a embed was replaced on the window specified by the tab id",
        "parameters": []
      },
      {
        "name": "getSmartBlockEmbedFluentString",
        "type": "function",
        "description": "Gets the fluent strings used for the smartblock placeholder embed",
        "parameters": [
          {
            "name": "tabId",
            "type": "number",
            "description": "the webcompat tab id of the calling tab, used to get the correct window"
          },
          {
            "name": "shimId",
            "type": "string",
            "description": "the shimId of the calling shim, used for getting the correct embed name"
          },
          {
            "name": "websiteHost",
            "type": "string",
            "description": "the hostname of the website, displayed on the placeholder button"
          }
        ],
        "async": true
      }
    ]
  }
]
