Try It · flujo guiado
Probar API end-to-end en 8 pasos
Esta guía crea usuarios de prueba, registra un movimiento, lo aprueba y exporta ODS mensual. Requiere `curl` y `jq`.
0) Preparar variables base
export API_BASE="http://127.0.0.1:8080"
export ROOT_USER="root"
export ROOT_PASS="ChangeMeNow123"
export ADMIN_USER="admin_demo"
export ADMIN_PASS="AdminDemo123"
export PART_USER="member_demo"
export PART_PASS="MemberDemo123" 1) Bootstrap superadmin (solo ambiente nuevo)
curl -sS -X POST "$API_BASE/api/bootstrap/first-superadmin" \
-H 'content-type: application/json' \
-d '{
"username":"root",
"email":"root@local.test",
"telefono":"+56000000000",
"nombre":"Root Demo",
"password":"ChangeMeNow123"
}' | jq 2) Login root y obtener token
ROOT_TOKEN=$(curl -sS -X POST "$API_BASE/api/auth/login" \
-H 'content-type: application/json' \
-d "{\"username\":\"$ROOT_USER\",\"password\":\"$ROOT_PASS\"}" | jq -r '.access_token')
echo "$ROOT_TOKEN" | wc -c 3) Crear admin y miembro de prueba
curl -sS -X POST "$API_BASE/api/users" \
-H "authorization: Bearer $ROOT_TOKEN" \
-H 'content-type: application/json' \
-d "{
\"username\":\"$ADMIN_USER\",
\"email\":\"admin_demo@local.test\",
\"telefono\":\"+56000000001\",
\"nombre\":\"Admin Demo\",
\"role\":\"admin\",
\"password\":\"$ADMIN_PASS\",
\"cuota_base_clp\":25000
}" | jq
curl -sS -X POST "$API_BASE/api/users" \
-H "authorization: Bearer $ROOT_TOKEN" \
-H 'content-type: application/json' \
-d "{
\"username\":\"$PART_USER\",
\"email\":\"member_demo@local.test\",
\"telefono\":\"+56000000002\",
\"nombre\":\"Member Demo\",
\"role\":\"participante\",
\"password\":\"$PART_PASS\",
\"cuota_base_clp\":25000
}" | jq 4) Login admin/miembro y crear movimiento
ADMIN_TOKEN=$(curl -sS -X POST "$API_BASE/api/auth/login" \
-H 'content-type: application/json' \
-d "{\"username\":\"$ADMIN_USER\",\"password\":\"$ADMIN_PASS\"}" | jq -r '.access_token')
PART_TOKEN=$(curl -sS -X POST "$API_BASE/api/auth/login" \
-H 'content-type: application/json' \
-d "{\"username\":\"$PART_USER\",\"password\":\"$PART_PASS\"}" | jq -r '.access_token')
curl -sS -X POST "$API_BASE/api/accounting/entries" \
-H "authorization: Bearer $PART_TOKEN" \
-H 'content-type: application/json' \
-d '{
"entry_type":"ingreso",
"source":"cuota",
"category":"demo",
"description":"pago de prueba comunitaria",
"amount_clp":25000,
"member_profile_id":null,
"payment_method":"transferencia",
"transaction_reference":"demo-tx-001"
}' | jq 5) Aprobar primer pendiente (admin)
ENTRY_ID=$(curl -sS "$API_BASE/api/accounting/pending-entries?limit=1" \
-H "authorization: Bearer $ADMIN_TOKEN" | jq -r '.[0].id')
curl -sS -X POST "$API_BASE/api/accounting/entries/$ENTRY_ID/approve" \
-H "authorization: Bearer $ADMIN_TOKEN" | jq 6) Exportar ODS de un mes cerrado
El endpoint bloquea el mes actual por consistencia.
curl -sS "$API_BASE/api/reports/monthly.ods?year=2025&month=1" \
-H "authorization: Bearer $PART_TOKEN" \
-o cuentas-2025-01.ods
ls -lh cuentas-2025-01.ods 7) Notificaciones internas + ACK
curl -sS -X POST "$API_BASE/api/notifications/admin/send" \
-H "authorization: Bearer $ADMIN_TOKEN" \
-H 'content-type: application/json' \
-d '{
"title":"Cambio operativo",
"message":"Desde hoy el cierre contable mensual será el día 28.",
"level":"high",
"audience":"members",
"requires_ack":true
}' | jq
curl -sS "$API_BASE/api/notifications/my" \
-H "authorization: Bearer $PART_TOKEN" | jq
NOTIF_ID=$(curl -sS "$API_BASE/api/notifications/my" \
-H "authorization: Bearer $PART_TOKEN" | jq -r '.[0].id')
curl -sS -X POST "$API_BASE/api/notifications/$NOTIF_ID/ack" \
-H "authorization: Bearer $PART_TOKEN" | jq 8) Ver contrato y probar en Swagger
curl -sS "$API_BASE/api/docs/openapi.json" | jq '.info'
echo "$API_BASE/api/docs/swagger-ui"