# Attività

> Il registro delle attività dello spazio di lavoro di chi ha modificato clienti, sconti e prezzi, più recenti per primi.

TradeCatalog registra una riga in linguaggio naturale per ogni modifica del personale ai clienti, sconti e prezzi. Le modifiche effettuate tramite l'API vengono registrate con il nome della chiave, ad esempio `API key “Sage stock sync”`.

## Elenco attività

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

Più recenti per primi. Passa `customer` per la cronologia di un solo cliente.

| Nome       | Tipo    | Obbligatorio | Descrizione                                                                            |
| ---------- | ------- | ------------ | -------------------------------------------------------------------------------------- |
| `customer` | stringa | no           | ID cliente o codice account.                                                           |
| `limit`    | intero  | no           | 1 a 100. Valore predefinito 100.                                                       |
| `type`     | stringa | no           | Tipo di registro, ad esempio ordine, cliente o sicurezza.                              |
| `before`   | stringa | no           | ISO dell'ultimo elemento `createdAt`, per recuperare elementi più vecchi.              |
| `beforeId` | stringa | no           | Ultimo elemento `id`, abbinato a `before` per includere elementi con lo stesso orario. |

Vai indietro usando sia `before` che `beforeId` dall'ultima voce restituita. Una pagina vuota significa che non ci sono voci più vecchie che corrispondono ai tuoi filtri.

Solo una chiave creata da un proprietario o admin vede l'intero registro; per chiunque altro elenca solo le modifiche relative ai clienti che può vedere.

```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
    }
  ]
}
```

| Campo               | Tipo           | Descrizione                                                                          |
| ------------------- | -------------- | ------------------------------------------------------------------------------------ |
| `actorName`         | stringa        | Chi ha effettuato la modifica. Conservato anche se quella persona lascia in seguito. |
| `summary`           | stringa        | Cosa è cambiato, in linguaggio naturale. Destinato alle persone, non al parsing.     |
| `createdAt`         | stringa        | Quando.                                                                              |
| `customerAccountId` | stringa o null | Il cliente a cui si riferiva, se presente.                                           |
| `customerName`      | stringa o null | Il nome attuale di quel cliente.                                                     |

I cambiamenti dello stato dell'ordine hanno un riepilogo delle attività dello spazio di lavoro e una cronologia dettagliata in ogni ordine `events`. Consulta [Ordini](/docs/api/orders#get-one-order).

Nuovi eventi possono includere anche `action`, `outcome` e `source`. Gli eventi più vecchi possono lasciare questi campi vuoti. Un'esportazione generata è prova che TradeCatalog ha preparato il file, non che qualcuno lo ha salvato. Una richiesta di checkout è separata da un pagamento confermato dal provider di pagamento. I dettagli grezzi dell'IP e del browser non sono inclusi in questa API. Gli eventi di sicurezza del personale richiedono accesso owner/admin; gli eventi collegati ai clienti seguono lo scope del cliente.
