API 1.19.1 - Cambio de correo con contraseña y referencia verificada
Aquí resumimos lo que cambió para los integradores desde la entrada 1.18.1. Incluye la versión 1.19.0, con cambios de comportamiento en la cuenta, la empresa, los mensajes de error y la emisión con Viafirma, y la 1.19.1, que revisa la referencia completa de la API sin cambiar su funcionamiento. Las rutas siguen bajo el prefijo /api/v1.
- Cambiar tu propio correo con
PUT /profile/{id}exige tu contraseña actual: envíala enrecords.current_password. Si falta o no es correcta, la API responde422con el detalle enerrors.current_passwordy no guarda nada. - El correo nuevo debe verificarse antes del próximo inicio de sesión: tu token actual sigue funcionando, pero
POST /auth/loginresponde400hasta que se abra el enlace de verificación que se envía al correo nuevo. La respuesta del cambio lo indica conemail_verification_required=true. - El correo de la cuenta y el de la empresa ya no se pueden vaciar: en
PUT /profile/{id}yPUT /company/{id}, unrecords.emailvacío, solo con espacios onullresponde422(El correo electrónico es obligatorio: no se puede dejar vacío.). Antes se guardaba vacío. Si no quieres cambiar el correo, omite el campoemail.
Cambios de comportamiento
Perfil: cambio de correo
Cuando PUT /profile/{id} cambia el correo de la cuenta se aplica lo siguiente. Un cambio solo de mayúsculas o minúsculas no cuenta como cambio de correo.
- Contraseña actual: es obligatoria solo cuando cambias tu propio correo. Se ignora si el correo no cambia y nunca se guarda.
- Correo ya registrado: si el correo nuevo ya lo usa otra cuenta, la API responde
422(Ya existe una cuenta con ese correo electrónico.) con el detalle enerrors.email. Antes respondía500. - Límites: puedes guardar hasta 3 cambios de correo por hora; el cuarto responde
429(Demasiados cambios de correo. Intenta de nuevo más tarde.). Los intentos rechazados no cuentan. Tras 5 contraseñas incorrectas en 15 minutos, la API responde429(Demasiados intentos con la contraseña actual. Intenta de nuevo más tarde.) aunque la siguiente sea correcta. Ambos429traen la cabeceraRetry-Aftercon los segundos que debes esperar. - Verificación del correo nuevo: el correo nuevo queda sin verificar. Le enviamos un enlace de verificación y avisamos del cambio al correo anterior. Si el enlace no llega, pide otro con
POST /email/verification-notification. Los enlaces de verificación enviados a un correo anterior ya no sirven. - Respuesta: la respuesta
200dePUT /profile/{id}incluye el campoemail_verification_required, que estruesolo si el correo cambió. - Cuenta inactiva: si un administrador desactivó tu cuenta,
PUT /profile/{id}responde403(La cuenta está inactiva.). Verificar el correo ya no reactiva una cuenta desactivada.
Detalle en Perfil y Autenticación.
Empresa y registro
PUT /company/{id}: el correo de la empresa no se puede vaciar (ver el aviso de arriba). El resto de reglas del correo no cambia: si es distinto del guardado, debe poder recibir mensajes. Detalle en Empresa.POST /register: si envíascountry_id,identity_document_idotype_organization_idcon un ID que no existe en el catálogo, la API responde422(El país no existe,El tipo de documento no existeoEl tipo de organización no existe) y no crea nada. Antes respondía500. Consulta los IDs válidos en Datos maestros.
Mensajes de error
- Cuando una operación falla por un problema al guardar o consultar los datos,
messagetrae un texto genérico, por ejemploYa existe un registro con ese valor (dato duplicado).,Falta un dato obligatorio.,No se puede completar: un dato relacionado no existe.oNo se pudo completar la operación en la base de datos.. El código HTTP no cambia. Si tu integración analizaba el texto de estos errores, guíate por el código HTTP.
Emisión con Viafirma
POST /certificate-request/{id}/issue: si falla la comunicación con Viafirma (error de red, tiempo de espera o servicio no disponible), la API responde502(Error de comunicación con Viafirma RA. Intente nuevamente.) conprovider=viafirma. Antes respondía422. No se registra ningún trámite, así que puedes reintentar la emisión pasados unos segundos, sin superar el límite de 5 emisiones por minuto.- Si Viafirma rechaza la petición, la respuesta sigue siendo
422, ahora con un mensaje fijo:El servicio de Viafirma rechazó la solicitud. Revisa los datos e intenta de nuevo., seguido deCódigo: ...cuando Viafirma devuelve un código de error.
Detalle en Emisión de certificados y Viafirma.
A tener en cuenta
Comportamientos de la API que conviene tener presentes al integrar:
Todo Personal Access Token es válido 90 días desde su creación. expires_in_days (de 1 a 365 días) define la fecha expires_at que se muestra en la respuesta y en GET /tokens, y con ella si el token aparece en ese listado; la autenticación se rige por los 90 días. Planifica la rotación (POST /tokens/{id}/renew) antes de que se cumplan y, si necesitas invalidar un token antes, revócalo con DELETE /tokens/{id}. Detalle en Tokens.
La configuración general se consulta con GET /company/settings (Empresa). PUT /company/settings no admite actualizaciones a través de la API: responde 500.
Documentación
- La referencia de la API se revisó operación por operación contra el funcionamiento real de la API y se corrigieron parámetros, cuerpos, códigos de estado, formatos de error y límites de peticiones. La API no cambia en la 1.19.1: solo su documentación.
- La versión de la referencia sigue la del backend y ahora es la 1.19.1.
- Algunas correcciones que pueden afectar tu integración:
POST /tokensadmite 10 intentos de creación por usuario en 24 horas, contadas desde el primer intento. Cuentan también los intentos rechazados por validación.- En
GET /quota/status,postpaidmuestra solo el cupo pospago activo más reciente. Si tu empresa tiene varios activos a la vez, el saldo pospago total puede ser mayor quepostpaid.remaining. - En la emisión por correo, el servidor no valida el tipo de archivo de los adjuntos. Se recomiendan PDF, JPG o PNG.
- En el estado de la emisión, un certificado revocado se identifica por
internal_state=REVOKEDyrevoked_at: sulast_error_messagepuede venir vacío o con un error anterior. - Con Viafirma,
GET /certificate-request/{id}/issuancedevuelve siempre las 19 claves dedataRecords.data(nullcuando no hay valor). GET /certificate-request/{id}/kyc-linkresponde500mientras el trámite de Viafirma aún no existe (justo después de crear la solicitud). Un422no siempre se resuelve reintentando: elmessageindica el motivo.- En la emisión por correo,
PUT /certificate-request/{id}/statusconSENTsolo cambia el estado: para enviar los soportes a emisión usaPOST /certificate-request/{id}/issue. - En
GET /webhooks/{id}/deliveries,statustambién puede valerpending(envío en curso o que no llegó a completarse).
- Las guías y la colección de Postman se actualizaron con estos cambios. En la colección,
GET /pricingtiene ahora dos peticiones: Consultar tarifas (sin parámetros, devuelve los rangos de tarifas) y Calcular precio (conquantityyvigencia).
¿Vas a actualizar una integración existente? Revisa la guía paso a paso y la solución de problemas.