Desarrollador
Estados
CRUD de estados de paquete, otro y flota. El listado también devuelve envío.
El id de un estado de paquete es el itemStatusId de packages.create y receipts.create. category en el alta es package, other o fleet. shipment se puede listar si la empresa aún lo tiene, pero ya no se puede crear ni cambiar a esa categoría.
Métodos
| Método | HTTP | Scope |
|---|---|---|
| statuses.list() | GET /org-api/v1/statuses | organization:read, packages:read o packages:write |
| statuses.retrieve(id) | GET /org-api/v1/statuses/:id | organization:read, packages:read o packages:write |
| statuses.create(body) | POST /org-api/v1/statuses | packages:write o organization:read |
| statuses.update(id, body) | PATCH /org-api/v1/statuses/:id | packages:write o organization:read |
| statuses.delete(id) | DELETE /org-api/v1/statuses/:id | packages:write o organization:read |
Listar
const statuses = await traky.statuses.list();
const packages = await traky.statuses.list({ category: "package" });
const one = await traky.statuses.retrieve(packages.data[0].id);Query
| Atributo | Tipo | Descripción |
|---|---|---|
| category | string | Opcional. package, shipment, other o fleet. Sin filtro devuelve las cuatro. |
Crear
El cuerpo es StatusCreate. Hacen falta label, description, category e icon. Sin position el API deja 1. isActive e isVisible, si se omiten, quedan en true.
const created = await traky.statuses.create({
label: "En bodega",
description: "El paquete está en la bodega",
category: "package",
icon: "package",
position: 2,
});
await traky.statuses.update(created.id, { isHiddenFromClient: true });
await traky.statuses.delete(created.id);Cuerpo de alta
| Atributo | Tipo | Descripción |
|---|---|---|
| label | string | Obligatorio. Nombre visible. |
| description | string | Obligatorio. Puede ir vacío. |
| category | string | Obligatorio. package, other o fleet. |
| icon | string | Obligatorio. Nombre del icono. |
| position | number | Orden en el panel. De 1 a 30. Por defecto 1. |
| isActive | boolean | True si se puede usar en un alta. |
| isVisible | boolean | True si se muestra en el panel. |
| isHiddenFromClient | boolean | True si el cliente no lo ve en el tracking. |
| warehouseId | string | Bodega ligada. Sale de offices.list({ type: "warehouse" }). |
| locationId | string | Sucursal o bodega de recepción. Sale de offices.list(). |
Actualizar
update envía solo los campos que cambian. El cuerpo es StatusWrite. warehouseId o locationId en null quita ese vínculo. El id va en el primer argumento.
Borrar
{
"id": "0b6c1a22-4e10-4a77-9c31-2d8e5b7a11c0",
"deleted": true
}Atributos
La forma es la de GET /org-api/v1/statuses y la de retrieve, create y update.
| Atributo | Tipo | Descripción |
|---|---|---|
| id | string | UUID. Se envía como itemStatusId. |
| label | string | Nombre visible. |
| description | string | Descripción. Puede venir vacía. |
| position | number | Orden en el panel. |
| icon | string | Nombre del icono. |
| category | string | package, shipment, other o fleet. |
| isActive | boolean | True si se puede usar en un alta. |
| isVisible | boolean | True si se muestra en el panel. |
| isHiddenFromClient | boolean | True si el cliente no lo ve en el tracking. |
| warehouseId | string | null | Bodega ligada, si el estado es de una bodega. |
| locationId | string | null | Sucursal o bodega de recepción. |
| createdAt | string | null | Fecha de creación, ISO 8601. |
| updatedAt | string | null | Fecha de actualización, ISO 8601. |
JSON de retorno
{
"data": [
{
"id": "0b6c1a22-4e10-4a77-9c31-2d8e5b7a11c0",
"label": "Recibido",
"description": "El paquete llegó a la sucursal",
"position": 1,
"icon": "package",
"category": "package",
"isActive": true,
"isVisible": true,
"isHiddenFromClient": false,
"warehouseId": null,
"locationId": null,
"createdAt": "2026-10-20T15:04:00.000Z",
"updatedAt": "2026-10-24T12:10:00.000Z"
}
]
}