Saltar al contenido principal

Enviar un lote de documentos

Un lote agrupa múltiples documentos en una sola operación de envío. Cada documento puede ir dirigido a diferentes destinatarios y usar una plantilla distinta. Usted controla el orden en que se envían los documentos y si los firmantes reciben notificaciones cuando los documentos anteriores en el lote se completan.

La experiencia de firma para los lotes también es diferente de un envío estándar de documentos. A los firmantes se les muestran los otros documentos del lote como parte de su flujo de firma, dándoles visibilidad del conjunto completo de documentos que deben firmar. Cuándo y si un firmante puede actuar sobre cada documento sigue estando controlado por sequentialSigning (el orden en que las partes firman dentro de un solo documento) y enforceOrder (el orden en que los documentos se liberan dentro del lote). Consulte Los cuatro flujos de trabajo de lotes para un desglose completo de cómo se combinan estas dos configuraciones.

El proceso consta de tres pasos:

  1. Crear el lote — obtener un ID de lote
  2. Agregar documentos al lote — una mutación por documento
  3. Iniciar el lote — activa el envío

Prerrequisitos

  • Una cuenta Legalesign con acceso a API y sus credenciales de autenticación (consulte authenticate)
  • Al menos una plantilla con roles configurados y su ID de plantilla
  • Su ID de grupo

Paso 1: Crear el Lote

Llame a sendBatch para inicializar el lote y recibir un ID de lote. Usará este ID en cada llamada posterior.

mutation CreateBatch {
sendBatch(input: {
batchName: "August contracts"
groupId: "Z3JwWW91ckdyb3VwSWQ="
enforceOrder: true
notifySender: true
notifySenderAttach: false
notifyParticipants: true
notifyParticipantsAttach: false
})
}

Respuesta:

{
"data": {
"sendBatch": "dHNrWW91ckJhdGNoSWQtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw"
}
}

Guarde el ID recibido — este es su batchId para todas las llamadas posteriores.

Campos clave:

  • enforceOrder: true — los documentos se envían en la secuencia sendOrder; el siguiente documento solo se envía después de que el anterior se complete
  • notifySender / notifyParticipants — controlan las notificaciones por correo electrónico al completarse
  • notifySenderAttach / notifyParticipantsAttach — si se adjunta el PDF firmado a esas notificaciones

Vea SendBatchInput para todos los campos.

Paso 2: Agregar Documentos al Lote

Llame a sendBatchDocument una vez por cada documento. Use sendOrder para controlar la secuencia (indexado desde 0).

Primer documento (sendOrder: 0)

mutation AddDocumentToBatch {
sendBatchDocument(input: {
batchId: "dHNrWW91ckJhdGNoSWQtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw"
sendOrder: 0
document: {
title: "Service Agreement"
templateId: "dHBsWW91clRlbXBsYXRlSWQtMDAwMC0wMDAwLTAwMDA="
groupId: "Z3JwWW91ckdyb3VwSWQ="
tag: ""
pdfPassword: ""
retainPdfPassword: false
allowPrinting: true
allowCopying: true
sequentialSigning: true
documentCCEmail: []
senderFields: [
{ id: "ZWxlWW91clNlbmRlckZpZWxkSWQ=", value: "Acme Ltd" }
]
participantFields: [
{ id: "ZWxlUGFydGljaXBhbnRGaWVsZDE=", value: "" }
{ id: "ZWxlUGFydGljaXBhbnRGaWVsZDI=", value: "" }
{ id: "ZWxlUGFydGljaXBhbnRGaWVsZDM=", value: "" }
]
recipients: [
{
order: 0
signerIndex: 1
roleId: "cm9sWW91clJvbGVJZA=="
experience: "ZXhwWW91ckV4cGVyaWVuY2VJZA=="
firstName: "Alex"
lastName: "Taylor"
email: "alex.taylor@example.com"
phoneNumber: ""
expiryDate: null
timeZone: "Europe/London"
skipped: false
}
]
}
})
}

Respuesta:

{
"data": {
"sendBatchDocument": "dHNrWW91ckJhdGNoSWQtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw"
}
}

La respuesta devuelve el mismo batchId — no un ID de documento.

Segundo documento (sendOrder: 1)

Repita la mutación con una plantilla diferente, sendOrder: 1, y los mismos o diferentes destinatarios:

mutation AddDocumentToBatch {
sendBatchDocument(input: {
batchId: "dHNrWW91ckJhdGNoSWQtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw"
sendOrder: 1
document: {
title: "Data Processing Agreement"
templateId: "dHBsWW91clNlY29uZFRlbXBsYXRlSWQ="
groupId: "Z3JwWW91ckdyb3VwSWQ="
tag: ""
pdfPassword: ""
retainPdfPassword: false
allowPrinting: true
allowCopying: true
sequentialSigning: true
documentCCEmail: []
senderFields: [
{ id: "ZWxlU2VuZGVyRmllbGRBMQ==", value: "" }
{ id: "ZWxlU2VuZGVyRmllbGRBMg==", value: "Acme Ltd" }
]
participantFields: [
{ id: "ZWxlUGFydGljaXBhbnRGaWVsZEEx", value: "" }
{ id: "ZWxlUGFydGljaXBhbnRGaWVsZEEy", value: "" }
{ id: "ZWxlUGFydGljaXBhbnRGaWVsZEEz", value: "" }
]
recipients: [
{
order: 0
signerIndex: 1
roleId: "cm9sU2Vjb25kUm9sZUlk"
experience: "ZXhwWW91ckV4cGVyaWVuY2VJZA=="
firstName: "Alex"
lastName: "Taylor"
email: "alex.taylor@example.com"
phoneNumber: ""
expiryDate: null
timeZone: "Europe/London"
skipped: false
}
]
}
})
}

Agregue tantos documentos como sea necesario antes de pasar al Paso 3.

sugerencia

Cada documento puede usar una plantilla diferente y destinatarios distintos. El valor sendOrder determina la secuencia cuando enforceOrder es true.

Consulte SendBatchDocumentInput para todos los campos. El objeto anidado document sigue las mismas reglas de validación que DocumentSendSettingsInput.

Paso 3: Iniciar el Lote

Una vez que todos los documentos están agregados, llame a startBatch para marcar el lote como listo. Esto activa el envío.

mutation StartBatch {
startBatch(input: {
batchId: "dHNrWW91ckJhdGNoSWQtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw"
groupId: "Z3JwWW91ckdyb3VwSWQ="
})
}

Respuesta:

{
"data": {
"startBatch": "dHNrWW91ckJhdGNoSWQtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw"
}
}

Después de startBatch, Legalesign pone en cola los documentos. Si enforceOrder es true, el primer documento (sendOrder: 0) se envía inmediatamente y los documentos subsiguientes se retienen hasta que el anterior se complete.

Seguimiento del Progreso del Lote

Los lotes también tienen su propia vista dedicada en la aplicación web Legalesign, que le ofrece una visión consolidada de todos los documentos en el lote y su estado de firma — útil para monitorear el progreso sin consultar la API.

Para consultar el estado del lote programáticamente, use el ID del lote:

query GetBatch {
batch(id: "dHNrWW91ckJhdGNoSWQtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw") {
id
status
documents {
edges {
node {
id
title
status
}
}
}
}
}

También puede usar suscripciones para recibir actualizaciones en tiempo real — consulte Seguimiento del ciclo de vida de documentos y destinatarios con suscripciones.