[
  {
    "namespace": "bluetoothPrivate",
    "description": " Use the <code>chrome.bluetoothPrivate</code> API to control the Bluetooth\n adapter state and handle device pairing.",
    "compiler_options": {
      "implemented_in": "chrome/browser/extensions/api/bluetooth/bluetooth_private_api.h"
    },
    "functions": [
      {
        "name": "setAdapterState",
        "type": "function",
        "description": "Changes the state of the Bluetooth adapter.",
        "parameters": [
          {
            "name": "adapterState",
            "$ref": "NewAdapterState"
          },
          {
            "name": "callback",
            "type": "function",
            "parameters": []
          }
        ]
      },
      {
        "name": "setPairingResponse",
        "type": "function",
        "parameters": [
          {
            "name": "options",
            "$ref": "SetPairingResponseOptions"
          },
          {
            "name": "callback",
            "type": "function",
            "parameters": []
          }
        ]
      }
    ],
    "events": [
      {
        "name": "onPairing",
        "type": "function",
        "description": "Fired when a pairing event occurs.",
        "parameters": [
          {
            "name": "pairingEvent",
            "description": "A pairing event.",
            "$ref": "PairingEvent"
          }
        ],
        "options":
        {
          "maxListeners": 1
        }
      }
    ],
    "types": [
      {
        "type": "string",
        "id": "PairingEventType",
        "description": "Events that can occur during pairing. The method used for pairing varies depending on the capability of the two devices.",
        "enum": [
          {
            "name": "requestPincode",
            "description": "An alphanumeric PIN code is required to be entered by the user."
          },
          {
            "name": "displayPincode",
            "description": "Display a PIN code to the user."
          },
          {
            "name": "requestPasskey",
            "description": "A numeric passkey is required to be entered by the user."
          },
          {
            "name": "displayPasskey",
            "description": "Display a zero padded 6 digit numeric passkey that the user entered on the remote device. This event may occur multiple times during pairing to update the entered passkey."
          },
          {
            "name": "keysEntered",
            "description": "The number of keys inputted by the user on the remote device when entering a passkey. This event may be called multiple times during pairing to update the number of keys inputted."
          },
          {
            "name": "confirmPasskey",
            "description": "Requests that a 6 digit passkey be displayed and the user confirms that both devies show the same passkey."
          },
          {
            "name": "requestAuthorization",
            "description": "Requests authorization for a pairing under the just-works model. It is up to the app to ask for user confirmation."
          },
          {
            "name": "complete",
            "description": "Pairing is completed"
          }
        ]
      },
      {
        "type": "string",
        "id": "PairingResponse",
        "description": "Valid pairing responses.",
        "enum": [ "confirm", "reject", "cancel"]
      },
      {
        "type": "object",
        "id": "PairingEvent",
        "description": "A pairing event received from a Bluetooth device.",
        "properties": {
          "pairing": {
            "name": "pairing",
            "$ref": "PairingEventType"
          },
          "device": {
            "name": "device",
            "$ref": "bluetooth.Device"
          },
          "pincode": {
            "optional": true,
            "name": "pincode",
            "type": "string"
          },
          "passkey": {
            "optional": true,
            "name": "passkey",
            "type": "integer"
          },
          "enteredKey": {
            "optional": true,
            "name": "enteredKey",
            "type": "integer"
          }
        }
      },
      {
        "type": "object",
        "id": "NewAdapterState",
        "properties": {
          "name": {
            "optional": true,
            "name": "name",
            "type": "string",
            "description": "The human-readable name of the adapter."
          },
          "powered": {
            "optional": true,
            "name": "powered",
            "type": "boolean",
            "description": "Whether or not the adapter has power."
          },
          "discoverable": {
            "optional": true,
            "name": "discoverable",
            "type": "boolean",
            "description": "Whether the adapter is discoverable by other devices."
          }
        }
      },
      {
        "type": "object",
        "id": "SetPairingResponseOptions",
        "properties": {
          "device": {
            "name": "device",
            "$ref": "bluetooth.Device",
            "description": "The remote device to send the pairing response."
          },
          "response": {
            "optional": true,
            "name": "response",
            "$ref": "PairingResponse",
            "description": "The response type"
          },
          "pincode": {
            "optional": true,
            "name": "pincode",
            "type": "string",
            "description": "A 1-16 character alphanumeric set in response to <code>requestPincode</code>."
          },
          "passkey": {
            "optional": true,
            "name": "passkey",
            "type": "integer",
            "description": "An integer between 0-999999 set in response to <code>requestPasskey</code>."
          }
        }
      }
    ]
  }
]