1. Flujo simplificado
Firmasegura
  • Inicio
    • Introducción
    • Autenticación
  • Firmas Regulares
    • Firmas Regulares
    • Registrar solicitud
      POST
    • Consulta de estado de solicitud
      GET
    • Corrección de código dactilar y/o adjuntos
      PATCH
    • Schemas
      • SignatureReportItem
      • RequestTimesReportItem
      • RequestResult
      • RequestStatusValidation
      • RevocationRequest
  • Firmas Transaccionales
    • Firmas Transaccionales
    • Eventos webhook
    • Registrar solicitud
      POST
    • Consulta estado de validación
      GET
    • Obtención de certificado y resultados
      GET
    • Schemas
      • TransactionalSignatureValidationStatus
      • TransactionalSignatureProcessResult
  • Tercero Vinculado
    • Tercero Vinculado
    • Eventos webhook
    • Info
      • Evidencias de Tercero Vinculado
    • Registrar solicitud
      POST
    • Reintentar proceso de generación
      POST
    • Cancelación de solicitud
      POST
    • Reenviar correo para reclamar certificado
      POST
    • Consultar estado de solicitud
      GET
    • Reenviar correo del certificado
      POST
    • Obtener certificado .p12 y contraseña
      GET
    • Schemas
      • LinkedPartnerReportItem
      • LinkedPartnerTransactionalResult
      • LinkedPartnerRequest
      • ErrorResponse
      • LinkedPartnerResult
      • linkedPartnerRequest
      • RAIZ
  • Registro Civil
    • Registrar cédula de prueba
    • Schemas
      • TestDataMultipartRequest
      • TestDataDocumentRequest
      • TestDataDocumentResponse
      • ProblemDetail
      • GatewayErrorResponse
  • Flujo simplificado
    • Introducción
    • Eventos Webhook
    • Registrar solicitud
      POST
    • Consultar estado
      GET
    • Cancelar solicitud
      PUT
  • Flujo por API
    • Flujo Por API
    • Consulta de TyC
    • Solicitud de Firma
    • Validación de Identidad
    • Solicitud de FaceLiveness
    • FaceLiveness
    • Emisión
    • Schemas
      • ApiError
  • Recursos Adicionales
    • Lista de ciudades y provincias
    • Lista de periodos de firmas
    • Lista de estados de revocación
    • Lista de estados de solicitud FR
    • Lista de tipos de solicitud FR
    • Estados de validación de solicitudes FR
    • Tipos de validación de solicitudes FR
    • Códigos de error de validación FR
    • Lista de razones de cancelación automática FR
    • Lista de estados de solicitud FT
    • Lista de estados de validacion FT
    • Lista de tipos de validación FT
    • Lista de tipos de Certificado TV
    • Lista de estados de solicitud TV
    • Tipo de Evidencias TV
    • Lista de Estados/Etapas de Sesión de FS
    • Tipos de Solicitudes
  • Flujo POS
    • Flujo POS
    • Flujo POS
      • Vigencias que el aliado puede vender
      • Cobrar y emitir un cupón
    • Schemas
      • VoucherResponse
      • ProductResponse
      • GatewayError
      • CreatePosPurchaseRequest
      • ApiValidationError
      • ApiProblem
  1. Flujo simplificado

Eventos Webhook

Los eventos enviados mediante webhook se generan en distintas etapas del proceso. Cada evento incluye los datos correspondientes según el estado alcanzado.
INFORMACIÓN
Para recibir webhooks, se debe proporcionar la URL en el campo callbackUrl, donde se enviarán los eventos mediante HTTP POST. Este campo se especifica al momento de registrar la solicitud de firma.

Flujo de Validación#

El proceso de firma tradicional contempla las siguientes etapas:
1
Registro Civil
Se valida la información del solicitante contra el Registro Civil.
2
Inicio de Sesión
El solicitante inicia la sesión de firma con sus credenciales.
3
Prueba de Vida (Liveness)
El solicitante realiza una prueba de vida para la verificación biométrica de identidad.
4
Contraseña y Confirmación de Datos
El solicitante define su contraseña y confirma que sus datos están correctos previo a la generación del certificado de firma electrónica.
5
Emisión del Certificado
Se genera el certificado de firma electrónica y se le da la opción al solicitante de descargarlo.
6
Contrato y Envío
Se genera el contrato y se envía al solicitante el certificado y el contrato a través de su correo electrónico. Este proceso se realiza de manera asincrónica luego de generarse el certificado de firma electrónica.

Formato del Payload#

Todos los eventos se envían como un envelope CloudEvents 1.0 en formato structured/JSON. El cuerpo del HTTP POST siempre tiene esta estructura:
AtributoDescripción
specversionVersión de la especificación CloudEvents. Siempre "1.0".
idIdentificador único del evento (UUID). Úselo para idempotencia del lado del consumidor.
sourceOrigen del evento. "/firmasegura/signature-service".
typeTipo de evento en notación reverse-DNS (ver cada evento más abajo).
subjectIdentificador de la sesión de firma (sessionId).
timeMarca de tiempo de emisión (ISO 8601 con zona horaria).
datacontenttypeTipo de contenido de data. "application/json".
dataDetalle del evento. Solo presente en eventos con detalle (SESSION_REJECTED / SESSION_ERROR); se omite en el resto.
NOTA
El nombre lógico del evento (SESSION_COMPLETED, SESSION_REJECTED, etc.) viaja en el atributo type con su valor reverse-DNS. El sessionId viaja en subject. Cuando el evento tiene detalle, el code y el message viajan dentro de data, no en el nivel superior.

Eventos#

A continuación, se describen los eventos enviados por webhook durante el proceso.

SESSION_COMPLETED#

Se emite cuando el proceso de firma tradicional ha concluido exitosamente en todas sus etapas.
type: ec.firmasegura.signature.session.completed
{
  "specversion": "1.0",
  "id": "a1b2c3d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "source": "/firmasegura/signature-service",
  "type": "ec.firmasegura.signature.session.completed",
  "subject": "b3f1a2d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "time": "2026-07-24T10:15:30-05:00",
  "datacontenttype": "application/json"
}

SESSION_REJECTED#

Se emite cuando la sesión es rechazada de forma definitiva por una regla de negocio. No es posible continuar el proceso; se debe generar una nueva solicitud.
type: ec.firmasegura.signature.session.rejected
{
  "specversion": "1.0",
  "id": "a1b2c3d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "source": "/firmasegura/signature-service",
  "type": "ec.firmasegura.signature.session.rejected",
  "subject": "b3f1a2d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "time": "2026-07-24T10:15:30-05:00",
  "datacontenttype": "application/json",
  "data": {
    "code": "FACE_LIVENESS_EXHAUSTED",
    "message": "Se agotaron todos los intentos de verificación facial, la solicitud ha sido rechazada, por favor genera una nueva"
  }
}
Los posibles valores de data.code para este evento son:
codeDescripción
FACE_LIVENESS_EXHAUSTEDSe agotaron todos los intentos de verificación biométrica
DATA_REJECTED_BY_USEREl titular rechazó sus datos personales
OTP_TOTAL_LIMIT_EXCEEDEDSe superó el límite máximo de intentos de verificación de correo

SESSION_ERROR#

Se emite cuando ocurre un error técnico en una etapa del proceso. La sesión queda en estado de error; dependiendo del caso puede reintentarse la tarea fallida.
type: ec.firmasegura.signature.session.error
{
  "specversion": "1.0",
  "id": "a1b2c3d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "source": "/firmasegura/signature-service",
  "type": "ec.firmasegura.signature.session.error",
  "subject": "b3f1a2d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "time": "2026-07-24T10:15:30-05:00",
  "datacontenttype": "application/json",
  "data": {
    "code": "CERTIFICATE_GENERATION_FAILED",
    "message": "No pudimos generar tu certificado digital, por favor intenta de nuevo"
  }
}
Los posibles valores de data.code para este evento son:
codeDescripción
PASSWORD_ENCRYPTION_FAILEDError al procesar la contraseña del solicitante
CERTIFICATE_GENERATION_FAILEDError al generar el certificado de firma electrónica
CONTRACT_GENERATION_FAILEDError al generar la documentación del contrato
SEND_FAILEDError al enviar los documentos al solicitante

SESSION_CANCELLED#

Se emite cuando la solicitud es anulada/cancelada a través del endpoint de cancelación. El enlace de la sesión deja de estar disponible.
type: ec.firmasegura.signature.session.cancelled
{
  "specversion": "1.0",
  "id": "a1b2c3d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "source": "/firmasegura/signature-service",
  "type": "ec.firmasegura.signature.session.cancelled",
  "subject": "b3f1a2d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "time": "2026-07-24T10:15:30-05:00",
  "datacontenttype": "application/json"
}

SESSION_EXPIRED#

Se emite cuando una sesión con el enlace vencido es expirada. Ocurre de dos formas: al intentar operar sobre una sesión cuyo enlace ya venció, o de forma proactiva mediante el proceso programado que expira las sesiones vencidas (con un periodo de gracia de 1 hora luego del vencimiento del enlace).
type: ec.firmasegura.signature.session.expired
{
  "specversion": "1.0",
  "id": "a1b2c3d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "source": "/firmasegura/signature-service",
  "type": "ec.firmasegura.signature.session.expired",
  "subject": "b3f1a2d4-7c8e-4f0a-9b2d-1e3c5f7a9b0d",
  "time": "2026-07-24T10:15:30-05:00",
  "datacontenttype": "application/json"
}

NOTA
Los errores corregibles por el usuario (código OTP incorrecto, contraseña débil, obstrucción en selfie, etc.) no generan webhook. Solo se notifican los eventos que representan un cambio de estado definitivo de la sesión.
Modificado en 2026-08-06 16:31:34
Anterior
Introducción
Siguiente
Registrar solicitud
Built with