Expedientes
Varios documentos, una sola invitación y un solo orden de firma.
Cuando un trámite abarca más de un documento —contrato, anexo y pagaré— mandarlos por separado significa tres invitaciones, tres recordatorios y tres oportunidades de que alguien firme uno y olvide los otros. Un expediente los junta en un solo paquete.
El ciclo
// 1. Crear
const { document_set } = await services.createDocumentSet('Expediente de contratación');
// 2. Agregar cada documento — es el mismo POST /developers/json de siempre,
// más el campo document_set
await services.request({
url_doc: { url: 'https://ejemplo.com/contrato.pdf', name: 'contrato.pdf' },
document_set,
stickers: [
{
authority: 'EMAIL_LINK',
data: '[email protected]',
email: '[email protected]',
page: 0,
rect: { lx: 330, ly: 300, tx: 530, ty: 400 },
},
],
});
await services.request({
url_doc: { url: 'https://ejemplo.com/anexo.pdf', name: 'anexo.pdf' },
document_set,
stickers: [ /* … */ ],
});
// 3. Cerrar y arrancar el flujo
await services.closeDocumentSet({
documentSet: document_set,
workflow: {
remindEvery: '1d',
ordered: ['[email protected]', '[email protected]'],
},
});No hay endpoint de «agregar al expediente»
Los documentos entran por el mismo POST /developers/json que usas siempre; lo único que cambia es que
le pasas document_set. Si ya tienes código que crea documentos, agregar el campo es todo lo que hace
falta. Ver Subir un documento a un expediente para el
detalle.
El flujo abarca todo el paquete
Al cerrar, el workflow es el mismo objeto de un documento suelto, con una
diferencia: ordered lista firmantes del expediente completo, no de un documento en particular. Ana firma
todo lo que le toca, y hasta entonces le llega su turno a Luis.
El workflow es obligatorio al cerrar.
Consultar el avance
const set = await services.getDocumentSet(document_set);{
"uuid": "9v3d6a47-e4e8-48ef-b9b3-7af45c8207dn",
"status": "CLOSED",
"documents": ["4a3d6a47-…", "5d08eabe-…"],
"signers": ["[email protected]", "[email protected]"],
"workflow": {
"currentSigner": "[email protected]",
"lastNotification": 1665001495000,
"expirationDate": 1666211094000
}
}status es OPEN mientras se le pueden agregar documentos y CLOSED una vez que arrancó el flujo.
El objeto workflow solo aparece mientras el expediente está en proceso: no viene si está abierto ni
cuando ya terminó, así que pregunta por él en vez de darlo por hecho.
Precargar firmantes para todo el expediente
Precarga a las personas que deben firmar todos los documentos del expediente, sin ligarlas todavía a una página o posición. Con el expediente en curso, arrastras el recuadro de cada firmante precargado sobre cada documento desde la interfaz de Firmame; una vez colocados todos, cierras el expediente y arranca el flujo.
await services.addPremadeSticker(document_set, {
authority: 'EMAIL_LINK',
data: '[email protected]',
email: '[email protected]',
imageType: 'stroke',
stickerType: 'rect',
line: false,
width: 200,
height: 100,
});Todavía no lleva page ni rect — solo width y height — porque la posición se define después, al
arrastrarlo en la interfaz. Todos los campos de arriba son obligatorios.
Devuelve un uuid propio; guárdalo si vas a querer quitar a esa persona:
await services.deletePremadeSticker(document_set, { uuid: signerUuid });Ver Quitar un firmante del expediente.
Cambiar o cancelar el flujo del expediente
Igual que con un documento suelto, pero apuntando al UUID del expediente:
await services.workflowSet(document_set, { expiration_date: '25/12/2026' });
await services.workflowSet(document_set, { cancel: true });