Receta
Recuerda, reasigna o anula un documento que nadie firma
Objetivo: Destrabar un documento enviado: recordarle al firmante, pasarle su lugar a otra persona y, si ya no procede, anularlo dejando la razón.
Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/anula-recuerda-reasigna.receta.spec.ts
Los ejemplos usan $ALLSIGN_API_KEY. Defínela una vez con tu key de sandbox: export ALLSIGN_API_KEY="allsign_test_sk_…" (en PowerShell: $env:ALLSIGN_API_KEY="allsign_test_sk_…").
1 Ubica al firmante que no ha firmado
GET /documents/{document_id}/signers ver en la referencia
Qué haces
Parte de un documento ya enviado. Cada firmante trae su id sgr_…, su status y cómo le llegó su invitación.
Qué mirar
data.0.id="sgr_80189c3a228a438cbb36757ed5f4738c"data.0.status="sent"data.0.delivery=null
2 Recuérdale que firme
POST /documents/{document_id}/signers/{signer_id}/remind ver en la referencia
Qué haces
Le reenvía su invitación por el mismo canal. En sandbox ningún mensaje sale a @sandbox.allsign.io: delivered viene en false y nextAllowedAt es el mismo instante, así que no corre ninguna espera.
Qué mirar
channel="email"delivered=falsenextAllowedAt="2026-07-11T18:00:00.000000Z"
En producción
Le llega de nuevo el correo o el WhatsApp y delivered viene en true. El siguiente recordatorio a esa persona queda bloqueado 4 horas: antes de nextAllowedAt la API responde 429, así que no lo reintentes en un bucle.
3 Pásale su lugar a otra persona
POST /documents/{document_id}/signers/{signer_id}/reassign ver en la referencia
Qué haces
Conserva el lugar: mismo id sgr_, mismo rol, mismas cajas y mismo turno; cambia la persona. La liga de la persona anterior deja de servir. Si ya había capturado algo, la API te pide confirm: true para descartarlo.
Qué mirar en sandbox
id="sgr_80189c3a228a438cbb36757ed5f4738c"email="signer-pending+relevo@sandbox.allsign.io"name="Luis Ramírez"status="pending"
En producción
La persona nueva recibe su propia invitación.
4 Anula el documento
POST /documents/{document_id}/void ver en la referencia
Qué haces
Anular es definitivo: el documento queda voided, nadie más puede firmarlo y la razón queda en su bitácora.
Qué mirar
status="voided"
5 Si lo anulas otra vez
POST /documents/{document_id}/void ver en la referencia
Qué haces
Anular un documento ya anulado responde 200 con el mismo documento y no cambia nada: es así a propósito, para que un reintento no falle. No cuentes con un error para saber si ya estaba anulado: revisa status.
Qué mirar
status="voided"
Errores comunes de esta receta
Errores reales que el test de esta receta provocó a propósito en sandbox, sobre sus mismos pasos. Cada uno enlaza a su explicación en Errores.
SIGNER_NOT_FOUND · 404 · en el paso 2 (Recuérdale que firme)
{
"type": "https://allsign.io/developers/docs/errors#SIGNER_NOT_FOUND",
"title": "Not Found",
"status": 404,
"detail": "Signer '8bc0129e-c73d-4d49-b5d2-c0335a209b8d' not found in this document.",
"instance": "/v3/documents/doc_ca783e90f0444172a7fbe75400ab5ebc/signers/sgr_8bc0129ec73d4d49b5d2c0335a209b8d/remind",
"code": "SIGNER_NOT_FOUND",
"requestId": "req_aa688e8a2b7e46ab88bb8e67a281ba61"
}Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/anula-recuerda-reasigna.receta.spec.ts
INVALID_STATE_TRANSITION · 409 · en el paso 2 (Recuérdale que firme)
{
"type": "https://allsign.io/developers/docs/errors#INVALID_STATE_TRANSITION",
"title": "Conflict",
"status": 409,
"detail": "Document is in terminal state 'ANULADO' — cannot remind.",
"instance": "/v3/documents/doc_ca783e90f0444172a7fbe75400ab5ebc/signers/sgr_f70f3376d8fc450a97111874e086f6b6/remind",
"code": "INVALID_STATE_TRANSITION",
"requestId": "req_18baf385999e4893975db73d70c38511",
"reason": "document_terminal"
}Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/anula-recuerda-reasigna.receta.spec.ts
INVALID_STATE_TRANSITION · 409 · en el paso 3 (Pásale su lugar a otra persona)
{
"type": "https://allsign.io/developers/docs/errors#INVALID_STATE_TRANSITION",
"title": "Conflict",
"status": 409,
"detail": "No se puede reasignar a un firmante que ya firmó.",
"instance": "/v3/documents/doc_b7b43220a55940578a9feaef6c618cf5/signers/sgr_7d4f43e179d1487aab88d212de9def03/reassign",
"code": "INVALID_STATE_TRANSITION",
"requestId": "req_560c08b2d31f4128b8762eeec30fbf4e",
"reason": "already_signed"
}Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/anula-recuerda-reasigna.receta.spec.ts
Siguiente
- Lleva tu primer documento a firma — Un documento firmado de punta a punta en sandbox, con el aviso de cada firma y el de cierre llegando a tu servidor.
- Recibe y verifica los webhooks de AllSign — Un endpoint que recibe los eventos de AllSign, comprueba que de verdad los firmó AllSign y sobrevive a sus propias caídas y a la rotación del secreto.