# Activité

> Journal d'activité de l'espace de travail sur qui a modifié les clients, les remises et les prix, du plus récent au plus ancien.

TradeCatalog enregistre une ligne en langage courant pour chaque modification du personnel concernant les clients, les remises et les prix. Les modifications effectuées via l'API sont enregistrées sous le nom de la clé, comme `API key “Sage stock sync”`.

## Liste de l'activité

**GET** `/api/v1/activity`

Du plus récent au plus ancien. Transmettez `customer` pour l'historique d'un seul client.

| Nom        | Type   | Requis | Description                                                                         |
| ---------- | ------ | ------ | ----------------------------------------------------------------------------------- |
| `customer` | chaîne | non    | Identifiant client ou code de compte.                                               |
| `limit`    | entier | non    | 1 à 100. Valeur par défaut 100.                                                     |
| `type`     | chaîne | non    | Type de registre, tel que commande, client ou sécurité.                             |
| `before`   | chaîne | non    | ISO de la dernière entrée `createdAt`, pour récupérer des entrées plus anciennes.   |
| `beforeId` | chaîne | non    | Dernière entrée `id`, associée à `before` pour inclure les entrées à la même heure. |

Utilisez à la fois `before` et `beforeId` de la dernière entrée renvoyée pour remonter en arrière. Une page vide signifie qu'il n'y a plus d'entrées plus anciennes correspondant à vos filtres.

Seule une clé créée par un propriétaire ou un administrateur affiche l'intégralité du journal ; pour les autres, il n'affiche que les modifications concernant les clients qu'ils peuvent voir.

```bash
curl "https://tradecatalog.app/api/v1/activity?customer=OAK01&limit=20" \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"
```

```js
const res = await fetch(
  'https://tradecatalog.app/api/v1/activity?customer=OAK01&limit=20',
  {
    headers: { Authorization: `Bearer ${process.env.TRADECATALOG_API_KEY}` },
  },
)
const { data: entries } = await res.json()
```

```json
{
  "data": [
    {
      "id": "d0e1f2a3-b4c5-4d6e-8f7a-9b0c1d2e3f4a",
      "actorName": "Jo Hartley",
      "summary": "Set Northgate brand discount to 15% (was 12.5%)",
      "createdAt": "2026-09-26T14:21:03.000Z",
      "customerAccountId": "7d2e4f0a-1b3c-4d5e-8f90-a1b2c3d4e5f6",
      "customerName": "Oakfield Joinery"
    },
    {
      "id": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
      "actorName": "API key “Sage stock sync”",
      "summary": "Imported customers: 0 new, 42 updated",
      "createdAt": "2026-09-26T02:00:09.000Z",
      "customerAccountId": null,
      "customerName": null
    }
  ]
}
```

| Champ               | Type           | Description                                                                       |
| ------------------- | -------------- | --------------------------------------------------------------------------------- |
| `actorName`         | chaîne         | Qui a effectué la modification. Conservé même si cette personne quitte plus tard. |
| `summary`           | chaîne         | Ce qui a changé, en langage courant. Destiné aux personnes, pas à l'analyse.      |
| `createdAt`         | chaîne         | Quand.                                                                            |
| `customerAccountId` | chaîne ou null | Le client concerné, si applicable.                                                |
| `customerName`      | chaîne ou null | Le nom actuel de ce client.                                                       |

Les changements d'état des commandes ont un résumé d'activité d'espace de travail et un historique détaillé dans chaque commande `events`. Voir [Commandes](/docs/api/orders#get-one-order).

De nouveaux événements peuvent également inclure `action`, `outcome` et `source`. Les anciens événements peuvent laisser ces champs vides. Un export généré est la preuve que TradeCatalog a préparé le fichier, et non qu'une personne l'ait enregistré. Une demande de paiement est différente d'un paiement confirmé par le fournisseur de paiement. Les détails bruts d'IP et de navigateur sont exclus de cette API. Les événements de sécurité du personnel nécessitent un accès propriétaire/admin. Les événements liés aux clients suivent la portée du client.
