chromium/chrome/common/extensions/api/permissions.json

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

[
  {
    "namespace": "permissions",
    "description": "Use the <code>chrome.permissions</code> API to request <a href='/docs/extensions/develop/concepts/declare-permissions'>declared optional permissions</a> at run time rather than install time, so users understand why the permissions are needed and grant only those that are necessary.",
    "types": [
      {
        "id": "Permissions",
        "type": "object",
        "properties": {
          "permissions": {
            "type": "array",
            "items": {"type": "string"},
            "optional": true,
            "description": "List of named permissions (does not include hosts or origins)."
          },
          "origins": {
            "type": "array",
            "items": {"type": "string"},
            "optional": true,
            "description": "The list of host permissions, including those specified in the <code>optional_permissions</code> or <code>permissions</code> keys in the manifest, and those associated with <a href='/docs/extensions/develop/concepts/content-scripts'>Content Scripts</a>."
          }
        }
      }
    ],
    "events": [
      {
        "name": "onAdded",
        "type": "function",
        "description": "Fired when the extension acquires new permissions.",
        "parameters": [
          {
            "$ref": "Permissions",
            "name": "permissions",
            "description": "The newly acquired permissions."
          }
        ]
      },
      {
        "name": "onRemoved",
        "type": "function",
        "description": "Fired when access to permissions has been removed from the extension.",
        "parameters": [
          {
            "$ref": "Permissions",
            "name": "permissions",
            "description": "The permissions that have been removed."
          }
        ]
      }
     ],
    "functions": [
      {
        "name": "getAll",
        "type": "function",
        "description": "Gets the extension's current set of permissions.",
        "parameters": [],
        "returns_async": {
          "name": "callback",
          "parameters": [
             {
              "name": "permissions",
              "$ref": "Permissions",
              "description": "The extension's active permissions. Note that the <code>origins</code> property will contain granted origins from those specified in the <code>permissions</code> and <code>optional_permissions</code> keys in the manifest and those associated with <a href='content_scripts'>Content Scripts</a>."
            }
          ]
        }
      },
      {
        "name": "contains",
        "type": "function",
        "description": "Checks if the extension has the specified permissions.",
        "parameters": [
          {
            "name": "permissions",
            "$ref": "Permissions"
          }
        ],
        "returns_async": {
          "name": "callback",
          "parameters": [
            {
              "name": "result",
              "type": "boolean",
              "description": "True if the extension has the specified permissions. If an origin is specified as both an optional permission and a content script match pattern, this will return <code>false</code> unless both permissions are granted."
            }
          ]
        }
      },
      {
        "name": "request",
        "type": "function",
        "description": "Requests access to the specified permissions, displaying a prompt to the user if necessary. These permissions must either be defined in the <code>optional_permissions</code> field of the manifest or be required permissions that were withheld by the user. Paths on origin patterns will be ignored. You can request subsets of optional origin permissions; for example, if you specify <code>*://*/*</code> in the <code>optional_permissions</code> section of the manifest, you can request <code>http://example.com/</code>. If there are any problems requesting the permissions, $(ref:runtime.lastError) will be set.",
        "parameters": [
          {
            "name": "permissions",
            "$ref": "Permissions"
          }
        ],
        "returns_async": {
          "name": "callback",
          "optional": true,
          "parameters": [
            {
              "name": "granted",
              "type": "boolean",
              "description": "True if the user granted the specified permissions."
            }
          ]
        }
      },
      {
        "name": "remove",
        "type": "function",
        "description": "Removes access to the specified permissions. If there are any problems removing the permissions, $(ref:runtime.lastError) will be set.",
        "parameters": [
          {
            "name": "permissions",
            "$ref": "Permissions"
          }
        ],
        "returns_async": {
          "name": "callback",
          "optional": true,
          "parameters": [
            {
              "name": "removed",
              "type": "boolean",
              "description": "True if the permissions were removed."
            }
          ]
        }
      },
      {
        "name": "addSiteAccessRequest",
        "type": "function",
        "description": "Adds a site access request. Request will only be signaled to the user if extension can be granted access to site in the request. Request will be reset on cross-origin navigation. When accepted, grants persistent access to the site’s top origin",
        // TODO(crbug.com/330588494): Remove nodoc.
        "nodoc": true,
        "parameters": [
          {
            "name": "request",
            "type": "object",
            "properties": {
              "documentId": {
                "type": "string",
                "optional": true,
                "description": "The id of a document where site access requests can be shown. Must be the top-level document within a tab. If provided, the request is shown on the tab of the specified document and is removed when the document navigates to a new origin. Adding a new request will override any existent request for `tabId`. This or `tabId` must be specified."
              },
              "tabId": {
                "type": "number",
                "optional": true,
                "description": "The id of the tab where site access requests can be shown. If provided, the request is shown on the specified tab and is removed when the tab navigates to a new origin. Adding a new request will override an existent request for `documentId`. This or `documentId` must be specified."
              }
            }
          }
        ],
        "returns_async": {
          "name": "callback",
          "optional": true,
          "parameters": []
        }
      },
      {
        "name": "removeSiteAccessRequest",
        "type": "function",
        "description": "Removes a site access request, if existent.",
        // TODO(crbug.com/330588494): Remove nodoc.
        "nodoc": true,
        "parameters": [
          {
            "name": "request",
            "type": "object",
            "properties": {
              "documentId": {
                "type": "string",
                "optional": true,
                "description": "The id of a document where site access request will be removed. Must be the top-level document within a tab. This or `tabId` must be specified."
              },
              "tabId": {
                "type": "number",
                "optional": true,
                "description": "The id of the tab where site access request will be removed. This or `documentId` must be specified."
              }
            }
          }
        ],
        "returns_async": {
          "name": "callback",
          "optional": true,
          "parameters": []
        }
      }
    ]
  }
]