Copiar página

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.

Para: soporte · nivel intermedio · 10 min · Necesitas: API key de sandbox · Un documento enviado que sigue sin firmarse

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 = false
  • nextAllowedAt = "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)

Recuérdale a un firmante que no es de ese documento. Qué significa y qué hacer

Respuesta · 404 · SIGNER_NOT_FOUND
{
  "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)

Recuérdale a alguien de un documento anulado. Qué significa y qué hacer

Respuesta · 409 · INVALID_STATE_TRANSITION
{
  "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)

Reasigna a alguien que ya firmó. Qué significa y qué hacer

Respuesta · 409 · INVALID_STATE_TRANSITION
{
  "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