Guías
Errores
La forma de los errores y qué significa cada código.
La forma de un error
Todo error responde un código HTTP de 4xx o 5xx y un JSON con error: un mensaje en español, escrito para mostrárselo a una persona tal cual.
{
"error": "La llave es de solo lectura"
}Algunos agregan codigo, estable, para reconocer el error sin leer el mensaje, y enlace, la pantalla de la app donde se resuelve.
{
"error": "La empresa ya subió los 30 documentos del mes del plan XS. ...",
"codigo": "LIMITE_DOCUMENTOS",
"enlace": "/panel/plan"
}Códigos
400Datos inválidos- Falta un dato, no tiene el formato pedido o una fecha no es AAAA-MM-DD. El mensaje dice cuál.
401Sin llave- No viene Authorization, la llave no existe, fue revocada o Simpligastos-Persona no es una persona activa de la empresa.
402Plan sin cupo- La suscripción venció, se canceló o la cuenta está suspendida: no se suben gastos ni se invita, y leer sigue funcionando. También cuando el plan XS llegó a sus documentos del mes (codigo: LIMITE_DOCUMENTOS).
403Sin permiso- Una llave de lectura intentó cambiar algo, o la persona no tiene el rol que pide la acción.
404No existe- El id no existe o es de otra empresa.
405Método no permitido- La ruta existe pero no con ese método.
409Regla del negocio- La acción no se puede en el estado actual: aprobar la propia rendición, editar algo enviado, cerrar sin aprobar. El mensaje dice cuál.
413Archivo muy grande- El documento pesa más de 15 MB (la cartola, más de 20 MB).
415Formato no aceptado- El documento no es JPG, PNG, WEBP ni PDF.
500Error interno- Algo falló de nuestro lado. Reintenta más tarde; si sigue, escríbenos.
Qué hacer con cada uno
- 400, 404, 409, 413 y 415: no reintentes igual. El mensaje dice qué corregir.
- 401 y 403: revisa la llave, su permiso y el encabezado
Simpligastos-Persona. - 402: la empresa tiene que ponerse al día con su plan; leer sigue funcionando.
- 500 o un corte de red: reintenta con espera creciente (por ejemplo, 1, 5 y 30 segundos). Antes de repetir un POST que crea algo, revisa si ya se creó: la API no tiene llaves de idempotencia.