Este recurso te permite gestionar los movimientos financieros de tu espacio de trabajo en tiempo real.
🔍 1. Listar Transacciones
GET /api/transactions
Obtiene un listado paginado de los movimientos del espacio de trabajo actual, ordenados cronológicamente de forma descendente.
- Scope requerido:
transactions:read - Parámetros de consulta (Query Params):
q(Opcional): Búsqueda rápida de texto en conceptos (alias desearch, máx 100 caracteres, devuelve máximo 10 resultados).search(Opcional): Búsqueda de texto en conceptos (máx 200 caracteres).page(Opcional): Número de página (Default:1).pageSize(Opcional): Elementos por página (Default:25, Máximo:100).walletId(Opcional): Filtrar movimientos asociados a una cartera específica.categoryId(Opcional): Filtrar por categoría.goalId(Opcional): Filtrar por meta.type(Opcional): Filtrar por tipo (income,expense,transfer,goal_deposit,goal_withdrawal).from(Opcional): Fecha inicialYYYY-MM-DD.to(Opcional): Fecha finalYYYY-MM-DD.
Ejemplo de Respuesta (200 OK):
{
"transactions": [
{
"id": "tx_gasto_987",
"amount": 450.00,
"type": "expense",
"description": "Cena de negocios",
"date": "2026-07-08",
"walletId": "w_nom_123",
"categoryId": "c_com_456",
"createdAt": "2026-07-08T19:00:00Z"
}
],
"pagination": {
"limit": 20,
"offset": 0,
"total": 142
}
}json📝 2. Registrar Transacción
POST /api/transactions
Crea un nuevo ingreso, gasto o transferencia dentro del espacio de trabajo.
- Scope requerido:
transactions:write - Cuerpo de la Petición (JSON):
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
amount | number | Sí | El valor decimal del movimiento (debe ser mayor a 0). |
type | string | Sí | Tipo de movimiento: income, expense o transfer. |
walletId | string | Sí | ID de la cartera de donde sale o a donde entra el dinero. |
destinationWalletId | string | Condicional | ID de la cartera destino (Requerido solo si type es transfer). |
categoryId | string | Condicional | ID de la categoría asociada (Requerido si type es income o expense). |
description | string | No | Nota aclaratoria del movimiento (máx 255 caracteres). |
date | string | No | Fecha en formato YYYY-MM-DD (Default: día de hoy en hora servidor). |
Ejemplo de Petición (curl):
curl -X POST https://money.depot.center/api/transactions \
-H "Authorization: Bearer mm_live_xxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-d '{
"amount": 125.50,
"type": "expense",
"walletId": "w_nom_123",
"categoryId": "c_com_456",
"description": "Café y snacks",
"date": "2026-07-08"
}'bashEjemplo de Respuesta (201 Created):
{
"transaction": {
"id": "tx_gasto_988",
"amount": 125.50,
"type": "expense",
"description": "Café y snacks",
"date": "2026-07-08",
"walletId": "w_nom_123",
"categoryId": "c_com_456",
"createdAt": "2026-07-08T19:05:00Z"
}
}json✏️ 3. Modificar Transacción
PATCH /api/transactions/[id]
Actualiza los datos de un movimiento financiero existente (monto, concepto, categoría, cartera o fecha) y recalcula automáticamente los saldos de las carteras afectadas.
- Scope requerido:
transactions:write - Cabecera obligatoria:
Idempotency-Key
Ejemplo de Petición (curl):
curl -X PATCH https://money.depot.center/api/transactions/tx_gasto_988 \
-H "Authorization: Bearer mm_live_xxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440001" \
-d '{
"amount": 150.00,
"description": "Café y snacks para el equipo"
}'bashEjemplo de Respuesta (200 OK):
{
"transaction": {
"id": "tx_gasto_988",
"amount": 150.00,
"type": "expense",
"description": "Café y snacks para el equipo",
"date": "2026-07-08",
"walletId": "w_nom_123",
"categoryId": "c_com_456",
"createdAt": "2026-07-08T19:05:00Z"
}
}json🗑️ 4. Eliminar Transacción
DELETE /api/transactions/[id]
Elimina lógicamente un movimiento financiero y revierte automáticamente los balances correspondientes de la cartera asociada.
- Scope requerido:
transactions:write - Cabecera obligatoria:
Idempotency-Key
Ejemplo de Petición:
curl -X DELETE https://money.depot.center/api/transactions/tx_gasto_988 \
-H "Authorization: Bearer mm_live_xxxxxx" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440002"bashEjemplo de Respuesta (200 OK):
{
"ok": true
}json📋 Historial de Cambios (Changelog)
- 2026-09-21 (MW9 / MW9b):
PATCH /api/transactions/{id}yDELETE /api/transactions/{id}ahora exigen obligatoriamente la cabeceraIdempotency-Keypara garantizar la idempotencia de las mutaciones.- Habilitado soporte en WhatsApp para desambiguar, corregir y eliminar transacciones específicas por ID con confirmación previa.
