# USBDevice Object

* `configuration` Object (optional) - A [USBConfiguration](https://developer.mozilla.org/en-US/docs/Web/API/USBConfiguration) object containing information about the currently selected configuration of a USB device.
  * `configurationValue` Integer - the configuration value of this configuration.
  * `configurationName` string - the name provided by the device to describe this configuration.
  * `interfaces` Object[] - An array of [USBInterface](https://developer.mozilla.org/en-US/docs/Web/API/USBInterface) objects containing information about an interface provided by the USB device.
    * `interfaceNumber` Integer - the interface number of this interface.
    * `alternate` Object - the currently selected alternative configuration of this interface.
      * `alternateSetting` Integer - the alternate setting number of this interface.
      * `interfaceClass` Integer - the class of this interface. See [USB.org](https://www.usb.org/defined-class-codes) for class code descriptions.
      * `interfaceSubclass` Integer - the subclass of this interface.
      * `interfaceProtocol` Integer - the protocol supported by this interface.
      * `interfaceName` string (optional) - the name of the interface, if one is provided by the device.
      * `endpoints` Object[] - an array containing instances of the [USBEndpoint interface](https://developer.mozilla.org/en-US/docs/Web/API/USBEndpoint) describing each of the endpoints that are part of this interface.
        * `endpointNumber` Integer - this endpoint's "endpoint number" which is a value from 1 to 15.
        * `direction` string - the direction in which this endpoint transfers data - can be either 'in' or 'out'.
        * `type` string - the type of this endpoint - can be either 'bulk', 'interrupt', or 'isochronous'.
        * `packetSize` Integer - the size of the packets that data sent through this endpoint will be divided into.
    * `alternates` Object[] - an array containing instances of the [USBAlternateInterface](https://developer.mozilla.org/en-US/docs/Web/API/USBAlternateInterface) interface describing each of the alternative configurations possible for this interface.
* `configurations` Object[] - An array of [USBConfiguration](https://developer.mozilla.org/en-US/docs/Web/API/USBConfiguration) interfaces for controlling a paired USB device.
* `deviceClass` Integer - The device class for the communication interface supported by the device.
* `deviceId` string - Unique identifier for the device.
* `deviceProtocol` Integer - The device protocol for the communication interface supported by the device.
* `deviceSubclass` Integer - The device subclass for the communication interface supported by the device.
* `deviceVersionMajor` Integer - The major version number of the device as defined by the device manufacturer.
* `deviceVersionMinor` Integer - The minor version number of the device as defined by the device manufacturer.
* `deviceVersionSubminor` Integer - The subminor version number of the device as defined by the device manufacturer.
* `manufacturerName` string (optional) - The manufacturer name of the device.
* `productId` Integer - The USB product ID.
* `productName` string (optional) - Name of the device.
* `serialNumber` string (optional) - The USB device serial number.
* `usbVersionMajor` Integer - The USB protocol major version supported by the device.
* `usbVersionMinor` Integer - The USB protocol minor version supported by the device.
* `usbVersionSubminor` Integer - The USB protocol subminor version supported by the device.
* `vendorId` Integer - The USB vendor ID.