> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dexnotify.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Utilisateurs et appareils

> Qui reçoit vos notifications, et sur quels appareils.

Chaque appareil enregistré par le SDK appartient à un **utilisateur**. Avant `login`, il est anonyme ; après, il porte l’**External ID** de votre système, et vous le visez par cet identifiant.

## Depuis votre serveur

| Route | Effet |
| - | - |
| `POST /api/v1/audience/users` | crée ou met à jour un utilisateur : `externalId`, `email`, `phone`, `locale`, `timezone`, `attributes`, `tags` |
| `GET /api/v1/audience/users/by-external-id/{externalId}` | un utilisateur par votre identifiant |
| `PATCH /api/v1/audience/users/by-external-id/{externalId}/tags` | pose ou retire des tags (`null` retire une clé) |
| `GET /api/v1/audience/users/{id}/deliveries` | les messages reçus sur tous ses appareils |
| `GET /api/v1/audience/devices` | les appareils du projet |
| `DELETE /api/v1/audience/devices/{id}` | désinscrit un appareil |

```bash theme={null}
curl -X PATCH https://api.dexnotify.com/api/v1/audience/users/by-external-id/client-48213/tags \
  -H "x-api-key: $DEXNOTIFY_CLE" -H "content-type: application/json" \
  -d '{"plan":"gold","ville":"Dakar","ancien_tag":null}'
```

Portées : `audience:read`, `audience:write`, `audience:tag`.

Les tags sont des chaînes, 50 au plus par utilisateur. Ils se ciblent dans les segments : `tags.plan = gold`, `tags.niveau > 2`.

## Segments

Un segment décrit une audience par des règles, et se réévalue à chaque envoi.

```json theme={null}
{
  "name": "Clients gold à Dakar, actifs",
  "rules": {
    "match": "all",
    "conditions": [
      { "field": "tags.plan", "operator": "eq", "value": "gold" },
      { "field": "tags.ville", "operator": "eq", "value": "Dakar" },
      { "field": "lastSeenAt", "operator": "within_last", "value": 30 }
    ]
  }
}
```

| Champs | `identified`, `locale`, `timezone`, `country`, `firstSeenAt`, `lastSeenAt`, `sessionCount`, `platform`, `appVersion`, `sdkVersion`, `testDevice`, `tags.<clé>`, `attributes.<clé>` |
| - | - |
| **Opérateurs** | `eq`, `ne`, `in`, `nin`, `gt`, `gte`, `lt`, `lte`, `contains`, `exists`, `within_last`, `not_within_last`, `version_gt`… |

`POST /api/v1/segments/estimate` chiffre une audience sans l’enregistrer. Portées : `segment:read`, `segment:write`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.