Receta
Avisa a alguien más y cambia al responsable de un documento
Objetivo: Una persona de fuera se entera de cómo va un documento sin firmarlo, y otra persona de tu equipo queda como su responsable.
Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/observadores-y-transferencia.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 Crea el documento
POST /documents ver en la referencia
Qué haces
ownerId es la persona de tu equipo responsable del documento: hoy eres tú, porque es tu key.
Qué mirar
id="doc_f2344cc1b9b24ba2954715812b3d7242"ownerId="usr_550487c74d4a4061ba2af6b802dcacde"
En producción
Los observadores y el traspaso de dueño se activan por cuenta y en producción pueden venir apagados. Mientras no estén activos en la tuya, esas llamadas responden 403 FEATURE_NOT_AVAILABLE y no cambian nada; pide que los activen.
2 Agrega a alguien que solo observa
POST /documents/{document_id}/observers ver en la referencia
Qué haces
Un observador nunca firma ni recibe campos: solo los avisos que eliges en events. En cuanto lo agregas le llega un correo que se lo dice; con notify_and_view ese correo trae la liga para abrir el documento, y con notify (el predeterminado) solo recibe los avisos.
Qué mirar
observer.id="rol_9f8c7b2441a646b5aacbd925b2d3b6d9"observer.capability="notify_and_view"created=true
3 Revisa quién observa el documento
GET /documents/{document_id}/observers ver en la referencia
Qué haces
Los observadores no aparecen entre los firmantes ni cuentan en signerCount.
Qué mirar
data=[{"object":"document_observer","id":"rol_9f8c7b2441a646b5aacbd925b2d3b6d9","origin":"document","email":"luis@ejemplo.com","name":"Luis Ramírez","capability":"notify_and_view","events":["document.completed","document.voided"],"locked":false,"status":"active","createdAt":"2026-07-11T18:00:01.027000Z"}]
4 Quita al observador
DELETE /documents/{document_id}/observers/{observer_id} ver en la referencia
Qué haces
Desde este momento ya no recibe avisos de este documento.
Qué mirar
deleted=true
5 Busca a quién pasarle el documento
GET /users/team ver en la referencia
Qué haces
El nuevo responsable tiene que ser miembro de tu equipo: toma su id de esta lista.
Qué mirar
data=[{"id":"usr_550487c74d4a4061ba2af6b802dcacde","name":"Sofía Herrera","email":"sofia@ejemplo.com","role":"owner"},{"id":"usr_b478f972e8574a739be5fb7364382c33","name":"Carlos Méndez","email":"carlos@ejemplo.com","role":"developer"}]
6 Traspasa el documento
POST /documents/{document_id}/transfer-owner ver en la referencia
Qué haces
El documento, sus firmantes y su historial no cambian: solo quién es su responsable. reason queda en la bitácora del documento.
Qué mirar
ownerId="usr_b478f972e8574a739be5fb7364382c33"previousOwnerId="usr_550487c74d4a4061ba2af6b802dcacde"transferred=true
7 Traspasa varios de una vez
POST /documents/transfer-owner ver en la referencia
Qué haces
Manda documentIds con la lista que quieres mover, o fromUserId para mover todos los documentos de una persona, por ejemplo cuando deja la empresa. keepPreviousOwnerAccess es true por defecto: el dueño anterior conserva el acceso; mándalo en false para quitárselo.
Qué mirar
transferredCount=1items=[{"documentId":"doc_f2344cc1b9b24ba2954715812b3d7242","status":"transferred","error":null}]
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.
OBSERVER_IS_SIGNER · 409 · en el paso 2 (Agrega a alguien que solo observa)
{
"type": "https://allsign.io/developers/docs/errors#OBSERVER_IS_SIGNER",
"title": "Conflict",
"status": 409,
"detail": "ana@ejemplo.com already signs this document; a signer cannot also be an observer.",
"instance": "/v3/documents/doc_5dbd1cc097404878a5668c6a00774830/observers",
"code": "OBSERVER_IS_SIGNER",
"requestId": "req_68de996d2d6442b981652319043cc610"
}Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/observadores-y-transferencia.receta.spec.ts
OBSERVER_NOT_FOUND · 404 · en el paso 4 (Quita al observador)
{
"type": "https://allsign.io/developers/docs/errors#OBSERVER_NOT_FOUND",
"title": "Not Found",
"status": 404,
"detail": "Observer not found in this document. Organization observers are removed from Settings → Observers.",
"instance": "/v3/documents/doc_5dbd1cc097404878a5668c6a00774830/observers/rol_245aa9e7229547b5b3e5cf30afe54094",
"code": "OBSERVER_NOT_FOUND",
"requestId": "req_22602288f4704ad2857ebd2b3dfa1468"
}Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/observadores-y-transferencia.receta.spec.ts
VALIDATION_ERROR · 422 · en el paso 6 (Traspasa el documento)
{
"type": "https://allsign.io/developers/docs/errors#VALIDATION_ERROR",
"title": "Validation failed",
"status": 422,
"detail": "The new owner must be a member of this workspace.",
"instance": "/v3/documents/doc_5dbd1cc097404878a5668c6a00774830/transfer-owner",
"code": "VALIDATION_ERROR",
"requestId": "req_156c01d6c0fd40f982ae571ecb18cce4"
}Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/observadores-y-transferencia.receta.spec.ts
Siguiente
- 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.