# Actividad

> El registro de actividad del espacio de trabajo de quién cambió clientes, descuentos y precios, desde el más reciente.

TradeCatalog registra una línea en lenguaje cotidiano para cada cambio de personal a clientes, descuentos y precios. Los cambios realizados a través de la API se registran bajo el nombre de la clave, como `API key “Sage stock sync”`.

## Lista de actividad

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

Primero los más recientes. Pase `customer` para la historia de un cliente.

| Nombre     | Tipo    | Requerido | Descripción                                                                                     |
| ---------- | ------- | --------- | ----------------------------------------------------------------------------------------------- |
| `customer` | string  | no        | Identificador del cliente o código de cuenta.                                                   |
| `limit`    | integer | no        | 1 a 100. Valor predeterminado 100.                                                              |
| `type`     | string  | no        | Tipo de registro, como pedido, cliente o seguridad.                                             |
| `before`   | string  | no        | Última entrada en ISO `createdAt`, para obtener entradas más antiguas.                          |
| `beforeId` | string  | no        | Última entrada `id`, emparejado con `before` para incluir entradas en la misma marca de tiempo. |

Vuelva a la página usando tanto `before` como `beforeId` de la última entrada devuelta. Una página vacía significa que no hay entradas más antiguas que coincidan con sus filtros.

Solo una clave creada por un propietario o administrador ve el registro completo; para cualquier otra persona, lista solo los cambios sobre clientes que puede ver.

```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          | Descripción                                                                |
| ------------------- | ------------- | -------------------------------------------------------------------------- |
| `actorName`         | string        | Quién realizó el cambio. Se mantiene incluso si esa persona luego se va.   |
| `summary`           | string        | Qué cambió, en lenguaje cotidiano. Destinado a personas, no para analizar. |
| `createdAt`         | string        | Cuándo.                                                                    |
| `customerAccountId` | string o nulo | El cliente al que se refería, si alguno.                                   |
| `customerName`      | string o nulo | El nombre actual de ese cliente.                                           |

Los cambios en el estado de los pedidos tienen un resumen de actividad del espacio de trabajo y un historial detallado en cada pedido `events`. Vea [Pedidos](/docs/api/orders#get-one-order).

Los nuevos eventos también pueden incluir `action`, `outcome` y `source`. Los eventos antiguos pueden dejar estos campos en blanco. Un informe generado es evidencia de que TradeCatalog preparó el archivo, no de que alguien lo guardara. Una solicitud de compra es diferente de un pago confirmado por el proveedor de pagos. Los detalles de IP y navegador sin procesar se excluyen de esta API. Los eventos de seguridad del personal requieren acceso de propietario/administrador; los eventos vinculados al cliente siguen el alcance del cliente.
