# Registro de cambios
URL: https://docs.fluenta.io/docs/changelog

Cómo cambia la API de Fluenta bajo /v1, qué cuenta como un cambio incompatible y la lista de cambios por fecha.



Esta página es donde se anuncian los cambios de la API.

## Cómo cambia la API [#cómo-cambia-la-api]

* **La versión va en la ruta.** Todas las rutas viven bajo `/v1/external`.
* **Los cambios compatibles llegan sin aviso previo.** Son rutas nuevas,
  parámetros opcionales nuevos y campos nuevos en las respuestas. Se anotan
  aquí. Tu programa debe ignorar los campos que no conoce.
* **Los nombres publicados se conservan.** Un `code` de error mantiene su
  nombre una vez publicado. Los permisos `read` y `program` no cambian de
  nombre. A la lista de acciones de `listActivity` se le agregan valores; no
  se renombran.
* **Un cambio incompatible** es quitar o renombrar una ruta, un parámetro, un
  campo o un `code`; cambiar el tipo o el significado de un campo; o volver
  obligatorio un parámetro opcional.
* **Los cambios incompatibles se anuncian en esta página antes de salir.**

Un `code` que tu programa no conoce se trata por su estado HTTP. Mira
[Errores](/docs/errors).

## 2026-11-12 [#2026-11-12]

### Tokens de API [#tokens-de-api]

* Un usuario crea tokens de API en «Configuración» → «Tokens de API». El token
  se muestra una sola vez.
* Es personal: actúa como su usuario, en todas sus organizaciones, con el rol
  que tiene en cada una.
* Lleva «Leer» siempre y «Gestionar el Programa» si se activa al crearlo.
* Su «Vencimiento» es «Nunca», 30 días, 90 días o 1 año. Cada usuario puede
  tener hasta 10 tokens activos.
* `getMe` responde ahora `credential` (`kind`, `name`, `prefix`, `expiresAt`)
  y `rateLimit` (`limit`, `remaining`, `reset`).

Mira [Autenticación](/docs/authentication).

### Acceso para Light [#acceso-para-light]

* Un token de API alcanza las organizaciones en Light y en Pro.
* La API le da a cada organización lo que su plan le da en el panel. Las
  rutas de reporte responden 403 `PLAN_LIMIT` cuando el plan no las incluye.
* «Conectar con IA» sigue siendo del Plan Pro.

Mira [Planes](/docs/plans).

### 23 rutas de lectura nuevas [#23-rutas-de-lectura-nuevas]

La API pasa de 22 a 45 lecturas. Con las 15 escrituras del Programa y las 2
vistas previas de borrado, son 62 operaciones.

| Grupo        | Operaciones nuevas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Account      | [`getMyUsage`](/docs/reference/account/get-my-usage)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Organization | [`getPlan`](/docs/reference/organization/get-plan), [`getSettings`](/docs/reference/organization/get-settings), [`listCategories`](/docs/reference/organization/list-categories)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Plant        | [`getFloor`](/docs/reference/plant/get-floor), [`getModule`](/docs/reference/plant/get-module), [`listModuleRestTimes`](/docs/reference/plant/list-module-rest-times), [`listOrganizationStations`](/docs/reference/plant/list-organization-stations), [`getStation`](/docs/reference/plant/get-station), [`getOperatorPresence`](/docs/reference/plant/get-operator-presence), [`getOperator`](/docs/reference/plant/get-operator)                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Analytics    | [`getModuleDayHistory`](/docs/reference/analytics/get-module-day-history), [`getModuleEfficiency`](/docs/reference/analytics/get-module-efficiency), [`getOperatorEfficiency`](/docs/reference/analytics/get-operator-efficiency), [`getStationDayReport`](/docs/reference/analytics/get-station-day-report), [`getStationEvents`](/docs/reference/analytics/get-station-events), [`getHourlyActivity`](/docs/reference/analytics/get-hourly-activity), [`getOperatorsActivity`](/docs/reference/analytics/get-operators-activity), [`getConsistency`](/docs/reference/analytics/get-consistency), [`getEfficiencyByModule`](/docs/reference/analytics/get-efficiency-by-module), [`getBillingByModule`](/docs/reference/analytics/get-billing-by-module), [`getMonth`](/docs/reference/analytics/get-month), [`getPauses`](/docs/reference/analytics/get-pauses) |

* Las once de Account, Organization y Plant responden en Light y en Pro.
* Las doce de Analytics son rutas de reporte: responden según el plan de la
  organización.
* Estas rutas no tienen herramienta en «Conectar con IA». Una IA las alcanza
  con un token de API. Mira [Usar la API con una IA](/docs/ai).

### Filtros en los rangos [#filtros-en-los-rangos]

`getEfficiency`, `getProduction` y `getBilling` aceptan un filtro opcional:
`moduleId`, `operatorId` u `operationId`. Sin filtro responden lo mismo que
antes. Un filtro que la cifra no tiene responde 400 `FILTER_UNSUPPORTED`.

### Límite de uso con encabezados [#límite-de-uso-con-encabezados]

* Cada credencial tiene un límite por minuto: 60 solicitudes por organización
  en Light y 120 en Pro.
* Toda respuesta lleva `X-RateLimit-Limit`, `X-RateLimit-Remaining` y
  `X-RateLimit-Reset`.
* Pasado el límite, la API responde 429 `RATE_LIMITED` con `Retry-After`.

Mira [Límites de uso](/docs/rate-limits).

### `INVALID_REQUEST` [#invalid_request]

Una consulta o un cuerpo que no pasa su validación responde 400
`INVALID_REQUEST`, con `details`: una fila `{ field, message }` por cada
falla. Antes, ese 400 traía `message` como una lista y ningún `code`.

Mira [Errores](/docs/errors).

### Documento OpenAPI [#documento-openapi]

Las operaciones se agrupan por área: Account, Organization, Plant, Board,
Program, Catalogue, Analytics y Activity. El documento está en
[`/openapi.json`](/openapi.json).
