Proceso
Creación, inicio, cierre, falla, cancelación y vencimiento del proceso.
Configura destinos salientes y entiende que significa cada evento de proceso, OTP, biometria y documento.
Modelo orientado a eventos
Signly usa webhooks como canal principal para sincronizar cambios de estado. Tu integracion debe procesar idempotencia, reintentos y orden parcial de eventos.
Creación, inicio, cierre, falla, cancelación y vencimiento del proceso.
Envío, reenvío, validación, fallo y expiración del reto OTP.
Captura, validación o rechazo biométrico, más prueba de vida aprobada o fallida.
Apertura del documento, firma de campos y trazabilidad del cierre final.
Listado practico de los eventos que debes reconocer en integracion y operacion. Algunos flujos no emiten todos los eventos; depende del canal de firma y de la politica de identidad configurada.
Ejemplo representativo de un evento que tu backend puede recibir cuando un proceso termina.
{
"eventId": "evt_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
"type": "PROCESS_COMPLETED",
"occurredAt": "2026-04-23T14:21:33Z",
"tenantId": "58bff266-cdad-46db-b373-1b06476146cd",
"documentId": "0e51e6ee-4643-4381-97e0-5164c00a0142",
"participantId": "a244be1a-98c5-4faa-bcb7-55218983a731",
"attempt": 1,
"data": {
"status": "COMPLETED",
"templateId": "3f34581a-5b4a-4068-ab72-5f2b36611fa1",
"completedAt": "2026-04-23T14:21:31Z"
}
} /v1/webhooks Lista webhooks del tenant. /v1/webhooks Crea un webhook. /v1/webhooks/{webhookId} Consulta un webhook por ID. /v1/webhooks/{webhookId} Actualiza descripcion, eventos y retries. /v1/webhooks/{webhookId}/status Activa o desactiva un webhook. /v1/webhooks/{webhookId}/test Envia un evento de prueba. /v1/webhooks/{webhookId} Elimina un webhook. Cada endpoint incluye método, ruta, descripción funcional, headers, parámetros, campos del body, request de ejemplo y respuestas de éxito/error.
/v1/webhooks Devuelve los webhooks del tenant y soporta filtros por estado, URL y rango de actualizacion.
Headers
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
X-Tenant-Signly ex. 58bff266-cdad-46db-b373-1b06476146cd | string | Si | Identificador del tenant que contextualiza toda la operacion. |
X-Auth-Signly ex. sk_live_partner_abc123 | string | Si | Credencial partner del tenant. Para `KEY` se envia el valor crudo; para `HMAC` el authorizer acepta `HMAC <secret>` o el secreto crudo. |
Parametros de query
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
limit ex. 10 | integer | No | Tamano de pagina entre 1 y 100. |
status ex. ENABLED | string | No | Estado `ENABLED` o `DISABLED`. |
sort ex. -updatedAt | string | No | Orden soportado por `updatedAt` o `url`. |
Ejemplos de request
1curl -X GET "https://api.signly.apologs.com/v1/webhooks?limit=10&sort=-updatedAt" \ -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \ -H "X-Auth-Signly: sk_live_partner_abc123"
Webhooks listados
{
"success": true,
"status": 200,
"code": "webhooks_listed",
"message": "Webhooks listed.",
"data": [
{
"webhookId": "wh_01J8XQAGF9E7T7N2G4G6M5J1RP",
"url": "https://example.com/signly/webhooks",
"status": "ENABLED",
"version": 3
}
],
"pagination": null,
"meta": {
"request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
"timestamp": "2026-04-23T15:00:00Z",
"api_version": "v1",
"tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
},
"error": null
} /v1/webhooks Registra un destino HTTP para recibir eventos de Signly. El servicio ejecuta una validacion corta de conectividad antes de persistir.
Headers
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
X-Tenant-Signly ex. 58bff266-cdad-46db-b373-1b06476146cd | string | Si | Identificador del tenant que contextualiza toda la operacion. |
X-Auth-Signly ex. sk_live_partner_abc123 | string | Si | Credencial partner del tenant. Para `KEY` se envia el valor crudo; para `HMAC` el authorizer acepta `HMAC <secret>` o el secreto crudo. |
Content-Type ex. application/json | application/json | Si | Tipo de payload JSON. |
Campos del body
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
url ex. https://example.com/signly/webhooks | string | Si | Endpoint HTTPS receptor. |
events ex. ["PROCESS_COMPLETED","OTP_VERIFIED"] | string[] | Si | Lista de eventos a suscribir. |
description | string | No | Descripcion operativa del destino. |
customHeaders | object | No | Headers adicionales enviados en cada entrega. |
retries | object | No | Politica de reintentos del webhook. |
Ejemplos de request
1curl -X POST "https://api.signly.apologs.com/v1/webhooks" \
-H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
-H "X-Auth-Signly: sk_live_partner_abc123" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/signly/webhooks",
"description": "Eventos principales del proceso",
"events": ["PROCESS_COMPLETED", "OTP_VERIFIED", "DOCUMENT_VIEWED"],
"customHeaders": { "X-Client-Auth": "abc123" },
"retries": { "maxAttempts": 3, "backoff": "exponential" },
"httpTimeoutMs": 5000
}' Webhook creado
{
"success": true,
"status": 201,
"code": "webhook_created",
"message": "Webhook created.",
"data": {
"webhookId": "wh_01J8XQAGF9E7T7N2G4G6M5J1RP",
"url": "https://example.com/signly/webhooks",
"status": "ENABLED",
"version": 1
},
"pagination": null,
"meta": {
"request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
"timestamp": "2026-04-23T15:00:00Z",
"api_version": "v1",
"tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
},
"error": null
} /v1/webhooks/{webhookId} Devuelve configuracion, estado y version del webhook.
Headers
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
X-Tenant-Signly ex. 58bff266-cdad-46db-b373-1b06476146cd | string | Si | Identificador del tenant que contextualiza toda la operacion. |
X-Auth-Signly ex. sk_live_partner_abc123 | string | Si | Credencial partner del tenant. Para `KEY` se envia el valor crudo; para `HMAC` el authorizer acepta `HMAC <secret>` o el secreto crudo. |
Parametros de path
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
webhookId | string | Si | Identificador del webhook. |
Ejemplos de request
1curl -X GET "https://api.signly.apologs.com/v1/webhooks/wh_01J8XQAGF9E7T7N2G4G6M5J1RP" \ -H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \ -H "X-Auth-Signly: sk_live_partner_abc123"
Webhook consultado
{
"success": true,
"status": 200,
"code": "webhook_fetched",
"message": "Webhook fetched.",
"data": {
"webhookId": "wh_01J8XQAGF9E7T7N2G4G6M5J1RP",
"url": "https://example.com/signly/webhooks",
"status": "ENABLED",
"events": ["PROCESS_COMPLETED", "OTP_VERIFIED"],
"version": 3
},
"pagination": null,
"meta": {
"request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
"timestamp": "2026-04-23T15:00:00Z",
"api_version": "v1",
"tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
},
"error": null
} /v1/webhooks/{webhookId} Permite editar descripcion, lista de eventos, retries y timeout. Soporta concurrencia optimista via `If-Match`.
Headers
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
X-Tenant-Signly ex. 58bff266-cdad-46db-b373-1b06476146cd | string | Si | Identificador del tenant que contextualiza toda la operacion. |
X-Auth-Signly ex. sk_live_partner_abc123 | string | Si | Credencial partner del tenant. Para `KEY` se envia el valor crudo; para `HMAC` el authorizer acepta `HMAC <secret>` o el secreto crudo. |
Content-Type ex. application/json | application/json | Si | Tipo de payload JSON. |
If-Match ex. 3 | integer | No | Version esperada del recurso. |
Parametros de path
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
webhookId | string | Si | Webhook a modificar. |
Campos del body
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
description | string | No | Nueva descripcion. |
status ex. DISABLED | string | No | Nuevo estado del webhook. |
events | string[] | No | Nueva lista de eventos. |
Ejemplos de request
1curl -X PUT "https://api.signly.apologs.com/v1/webhooks/wh_01J8XQAGF9E7T7N2G4G6M5J1RP" \
-H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
-H "X-Auth-Signly: sk_live_partner_abc123" \
-H "Content-Type: application/json" \
-H "If-Match: 3" \
-d '{
"description": "Eventos core de produccion",
"events": ["PROCESS_COMPLETED", "PROCESS_FAILED", "OTP_VERIFIED"]
}' Webhook actualizado
{
"success": true,
"status": 200,
"code": "webhook_updated",
"message": "Webhook updated.",
"data": {
"webhookId": "wh_01J8XQAGF9E7T7N2G4G6M5J1RP",
"status": "ENABLED",
"version": 4
},
"pagination": null,
"meta": {
"request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
"timestamp": "2026-04-23T15:00:00Z",
"api_version": "v1",
"tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
},
"error": null
} Version desfasada
{
"success": false,
"status": 412,
"code": "precondition_failed",
"message": "Webhook version mismatch.",
"data": null,
"pagination": null,
"meta": {
"request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
"timestamp": "2026-04-23T15:00:00Z",
"api_version": "v1",
"tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
},
"error": {
"type": "concurrency",
"details": { "expectedVersion": 3 }
}
} /v1/webhooks/{webhookId}/status Atajo para actualizar solo el estado operativo del webhook.
Headers
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
X-Tenant-Signly ex. 58bff266-cdad-46db-b373-1b06476146cd | string | Si | Identificador del tenant que contextualiza toda la operacion. |
X-Auth-Signly ex. sk_live_partner_abc123 | string | Si | Credencial partner del tenant. Para `KEY` se envia el valor crudo; para `HMAC` el authorizer acepta `HMAC <secret>` o el secreto crudo. |
Content-Type ex. application/json | application/json | Si | Tipo de payload JSON. |
If-Match ex. 4 | integer | No | Version esperada. |
Parametros de path
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
webhookId | string | Si | Webhook cuyo estado cambiara. |
Campos del body
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
status ex. DISABLED | string | Si | Nuevo estado `ENABLED` o `DISABLED`. |
Ejemplos de request
1curl -X PUT "https://api.signly.apologs.com/v1/webhooks/wh_01J8XQAGF9E7T7N2G4G6M5J1RP/status" \
-H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
-H "X-Auth-Signly: sk_live_partner_abc123" \
-H "Content-Type: application/json" \
-H "If-Match: 4" \
-d '{ "status": "DISABLED" }' Estado actualizado
{
"success": true,
"status": 200,
"code": "webhook_status_updated",
"message": "Webhook disabled.",
"data": {
"webhookId": "wh_01J8XQAGF9E7T7N2G4G6M5J1RP",
"status": "DISABLED",
"version": 5
},
"pagination": null,
"meta": {
"request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
"timestamp": "2026-04-23T15:00:00Z",
"api_version": "v1",
"tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
},
"error": null
} /v1/webhooks/{webhookId}/test Dispara un evento sintentico para validar que tu endpoint responda correctamente.
Headers
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
X-Tenant-Signly ex. 58bff266-cdad-46db-b373-1b06476146cd | string | Si | Identificador del tenant que contextualiza toda la operacion. |
X-Auth-Signly ex. sk_live_partner_abc123 | string | Si | Credencial partner del tenant. Para `KEY` se envia el valor crudo; para `HMAC` el authorizer acepta `HMAC <secret>` o el secreto crudo. |
Content-Type ex. application/json | application/json | Si | Tipo de payload JSON. |
Parametros de path
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
webhookId | string | Si | Webhook al que se enviara la prueba. |
Ejemplos de request
1curl -X POST "https://api.signly.apologs.com/v1/webhooks/wh_01J8XQAGF9E7T7N2G4G6M5J1RP/test" \
-H "X-Tenant-Signly: 58bff266-cdad-46db-b373-1b06476146cd" \
-H "X-Auth-Signly: sk_live_partner_abc123" \
-H "Content-Type: application/json" \
-d '{ "type": "signly.webhook_test", "tenantId": "58bff266-cdad-46db-b373-1b06476146cd" }' Prueba enviada
{
"success": true,
"status": 200,
"code": "webhook_test_sent",
"message": "Test event delivered.",
"data": {
"webhookId": "wh_01J8XQAGF9E7T7N2G4G6M5J1RP",
"deliveryStatus": "DELIVERED",
"attempt": 1
},
"pagination": null,
"meta": {
"request_id": "req_01J8XQ7M8VW2A6G2B0N7J5AZ7Q",
"timestamp": "2026-04-23T15:00:00Z",
"api_version": "v1",
"tenant_id": "58bff266-cdad-46db-b373-1b06476146cd"
},
"error": null
}