0..1). Las categorías son jerárquicas y se
identifican por su ruta completa "Padre / Hijo / Nieto".
Ruta, no ID (al escribir)
Al crear/editar una transacción o un presupuesto, pasas la categoría como ruta:id, su name (ruta completa) y su
emoji.
Tipo: ingreso o gasto
Cada categoría es de ingreso o de gasto (kind). La raíz define el tipo y los hijos lo
heredan. Una categoría de ingreso no puede usarse en un gasto y viceversa.
Emoji
Las categorías tienen un emoji (CAT-010). En el ref de categoría de cada transacción, elemoji
se hereda del ancestro más cercano que tenga uno (así “Gastos / Comida / Súper” muestra el 🛒 de
“Comida” aunque “Súper” no tenga el suyo).
Endpoints
| Acción | Endpoint |
|---|---|
| Listar | GET /v1/categories (lista plana con parentId; el árbol se arma en el cliente) |
| Crear | POST /v1/categories (nombre o cadena “Padre / Hijo”) |
| Renombrar / mover | PATCH /v1/categories/{id} |
| Archivar / restaurar | POST /v1/categories/{id}/archive · /restore |
Archivar saca la categoría (y su subárbol) de los selectores pero conserva el historial de
reportes. Reusar el nombre la revive.