[
  {
    "namespace": "permissions",
    "description": "A test API for the json_schema_compiler.",
    "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": "List of origin permissions."
          }
        }
      }
    ],
    "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": [
          {
            "name": "callback",
            "type": "function",
            "parameters": [
               {
                "name": "permissions",
                "$ref": "Permissions",
                "description": "The extension's active permissions."
              }
            ]
          }
        ]
      },
      {
        "name": "contains",
        "type": "function",
        "description": "Checks if the extension has the specified permissions.",
        "parameters": [
          {
            "name": "permissions",
            "$ref": "Permissions"
          },
          {
            "name": "callback",
            "type": "function",
            "parameters": [
              {
                "name": "result",
                "type": "boolean",
                "description": "True if the extension has the specified permissions."
              }
            ]
          }
        ]
      },
      {
        "name": "request",
        "type": "function",
        "description": "Requests access to the specified permissions. These permissions must be defined in the optional_permissions field of the manifest. If there are any problems requesting the permissions, <a href='extension.html#property-lastError'>chrome.runtime.lastError</a> will be set.",
        "parameters": [
          {
            "name": "permissions",
            "$ref": "Permissions"
          },
          {
            "name": "callback",
            "type": "function",
            "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, <a href='extension.html#property-lastError'>chrome.runtime.lastError</a> will be set.",
        "parameters": [
          {
            "name": "permissions",
            "$ref": "Permissions"
          },
          {
            "name": "callback",
            "type": "function",
            "optional": true,
            "parameters": [
              {
                "name": "removed",
                "type": "boolean",
                "description": "True if the permissions were removed."
              }
            ]
          }
        ]
      }
    ]
  }
]