> For the complete documentation index, see [llms.txt](https://codemash.gitbook.io/codemash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codemash.gitbook.io/codemash/cloud/push/devices.md).

# Devices

The phones and browsers your app registered for push, each with the user it belongs to.

**Where:** Push → **Devices** · `/projects/<project>/push/devices`

A push goes to a **device**, not to a person. The phone or browser gets a push token from Apple, Google, Mozilla or Microsoft; your app sends that token to Norbix together with the signed-in user (SDK `registerDevice`), and from then on campaigns aimed at that user know where to deliver. This screen lists the registered devices. It is read-only: devices are registered by your app, not in Cloud.

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-3cad833ba537b65258098fbac9e62844437afa85%2Fdevices-list-1.png?alt=media" alt="Devices list with the Token and Platform filters and three devices: Chrome on MacBook (chrome), Alan&#x27;s Pixel (android) and Ada&#x27;s iPhone (ios), each with its token and user id"><figcaption><p>Push → Devices with three registered devices.</p></figcaption></figure>

## Columns, search and filters

| Column      | What it shows                                                                                                                      |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Device Name | The name your app sent (else the model or the id). Press it to open the [device details](/codemash/cloud/push/devices/details.md). |
| Platform    | `ios`, `android`, `chrome` or `safari`.                                                                                            |
| Token       | The push token or web push address the provider delivers to.                                                                       |
| User        | The user id (`usr_…`) the device belongs to.                                                                                       |

**Token** finds one device by its whole token — type it and press Enter; part of a token finds nothing. **Platform** shows only one platform (**All platforms** by default). Devices are stored inside their user, so a page is a page of **users**: a page can be short, or even empty after a filter, while more pages exist — press **Next** then.

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-e8b16b58826aeadcc9044cdd21759c957ce7354b%2Fdevices-list-2.png?alt=media" alt="Devices list with Platform android: only Alan&#x27;s Pixel"><figcaption><p>The list filtered by the android platform.</p></figcaption></figure>

## What you can do here

* [Read one device's details](/codemash/cloud/push/devices/details.md)

There is no add, edit or delete in Cloud. A device leaves the list when its user is deleted; register a new token whenever your app gets one (tokens change after a reinstall).

## Do it from code

Register a device from your app (with the signed-in user's id), and list them:

```ts
const { id } = await norbix.hub.notifications.registerDevice({
  userId: 'usr_2ybNbF3I0Cdjt1RmNXkRVH', // Alan Turing
  pushDeviceDto: { deviceOs: 'android', token: 'eQ9xP2rL5v8:APA91bDocsExampleTabletToken', deviceName: "Alan's tablet", brand: 'Samsung', modelName: 'Galaxy Tab S9' },
});
console.log(id); // pnd_45RSKgGAabJXHXifV44RHG

const { list } = await norbix.hub.notifications.getPushDevices({ platform: 'android' });
console.log(list.items.map((d) => `${d.id} ${d.deviceName} ${d.deviceOs} ${d.userId}`));
```

```sh
norbix hub notifications push devices get --platform ios
```

`deviceOs` is one of `ios`, `android`, `chrome`, `safari`; anything else is refused (*Platform 'expo' is not supported for new devices or campaigns.*). The client setup is on the [Push page](/codemash/cloud/push.md#use-it-from-code). API: [Register Device](/codemash/api-reference/notifications/push/register-device.md) · [Get Push Devices](/codemash/api-reference/notifications/push/get-push-devices.md)
