# Device

**Device** is an object representing a device. The Device object can be present on both [**Signals**](https://dfend.gitbook.io/documentation/developer-api/types/signal) and [**Identities**](https://dfend.gitbook.io/documentation/developer-api/types/identity) in some form. It is always optional.

It is somewhat difficult to establish uniqueness on modern devices, as normal applications do not have access to the real Device ID. One exception to this is enterprise managed devices, where an app has been granted permission to access the device data. Apps with carrier permissions can also access this data.

We can match on a number of types of device IDs with varying reliability.

## Attributes

* `deviceId`  <mark style="color:blue;">string</mark>  A generic value representing a unique ID for a device.
* `installId`  <mark style="color:blue;">string</mark>  A generic value representing an app's install ID on a device.
* `identifierForVendor`  <mark style="color:blue;">string</mark>  [iOS vendor-specific ID](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). Persistent across uninstall/reinstall.
* `androidId`  <mark style="color:blue;">string</mark>  The value of [ANDROID\_ID](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID) does not change on package uninstall or reinstall, as long as the signing key is the same.
* `imei`  <mark style="color:blue;">string</mark>  The [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity) number of the device.

In iOS under `UIDevice`, or in Android under `android.os.Build`, you can get the following information.

* `osName`  <mark style="color:blue;">string</mark>  The name of the device's operating system.
* `osVersion`  <mark style="color:blue;">string</mark>  The version of the device's operating system.
* `manufacturer`  <mark style="color:blue;">string</mark>  The device manufacturer.
* `model`  <mark style="color:blue;">string</mark>  The device model.

Also in iOS under `UIDevice` you can get the "name" field, i.e. "Jan's iPhone", if the app has been granted that entitlement.

* `name`  <mark style="color:blue;">string</mark>  iOS device name.

### Approvable

When embedded into an [Identity](https://dfend.gitbook.io/documentation/developer-api/types/identity), this object is extended by the [Approvable](https://dfend.gitbook.io/documentation/developer-api/types/approvable) fields.
