Vai al contenuto principale

Invia un Batch di Documenti

Un batch raggruppa più documenti in un'unica operazione di invio. Ogni documento può essere destinato a destinatari diversi e utilizzare un modello diverso. Puoi controllare l'ordine in cui i documenti vengono inviati e se i firmatari vengono notificati quando i documenti precedenti nel batch sono completati.

L'esperienza di firma per i batch è anche diversa da quella di un invio standard di documenti. Ai firmatari vengono mostrati gli altri documenti nel batch come parte del loro flusso di firma, dandogli visibilità sull'intero insieme di documenti che devono firmare. Quando e se un firmatario può agire su ogni documento è ancora controllato da sequentialSigning (l'ordine in cui le parti firmano all'interno di un singolo documento) e enforceOrder (l'ordine in cui i documenti vengono rilasciati all'interno del batch). Vedi The four batching workflows per una spiegazione completa di come queste due impostazioni si combinano.

Il processo è composto da tre fasi:

  1. Crea il batch — ottieni un batch ID
  2. Aggiungi documenti al batch — una mutazione per ogni documento
  3. Avvia il batch — avvia l'invio

Prerequisites

  • Un account Legalesign con accesso API e le tue credenziali di autenticazione (vedi authenticate)
  • Almeno un modello con ruoli configurati e il suo ID modello
  • Il tuo ID gruppo

Step 1: Create the Batch

Chiama sendBatch per inizializzare il batch e ricevere un batch ID. Utilizzerai questo ID in ogni chiamata successiva.

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

Response:

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

Salva l'ID restituito — questo è il tuo batchId per tutte le chiamate successive.

Campi chiave:

  • enforceOrder: true — i documenti vengono inviati in sequenza sendOrder; il documento successivo viene inviato solo dopo che quello precedente è completato
  • notifySender / notifyParticipants — controllano le notifiche email al completamento
  • notifySenderAttach / notifyParticipantsAttach — se allegare il PDF firmato a tali notifiche

Vedi SendBatchInput per tutti i campi.

Step 2: Add Documents to the Batch

Chiama sendBatchDocument una volta per ogni documento. Usa sendOrder per controllare la sequenza (indicizzata da 0).

First document (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
}
]
}
})
}

Response:

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

La risposta riporta il batchId — non un ID documento.

Second document (sendOrder: 1)

Ripeti la mutazione con un modello diverso, sendOrder: 1, e gli stessi o diversi destinatari:

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
}
]
}
})
}

Aggiungi quanti documenti sono necessari prima di passare al Passo 3.

suggerimento

Ogni documento può usare un modello diverso e destinatari diversi. Il valore sendOrder determina la sequenza quando enforceOrder è true.

Vedi SendBatchDocumentInput per tutti i campi. L’oggetto annidato document segue le stesse regole di validazione di DocumentSendSettingsInput.

Step 3: Start the Batch

Una volta che tutti i documenti sono stati aggiunti, chiama startBatch per segnare il batch come pronto. Questo avvia l'invio.

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

Response:

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

Dopo startBatch, Legalesign mette in coda i documenti. Se enforceOrder è true, il primo documento (sendOrder: 0) viene inviato immediatamente e i documenti successivi sono trattenuti fino al completamento del precedente.

Tracking Batch Progress

I batch hanno anche una vista dedicata nell'app web Legalesign, che ti offre una panoramica consolidata di tutti i documenti nel batch e del loro stato di firma — utile per monitorare i progressi senza interrogare l'API.

Per interrogare lo stato del batch programmaticamente, usa il batch ID:

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

Puoi anche utilizzare le subscription per ricevere aggiornamenti in tempo reale — vedi Track Document and Recipient Lifecycle with Subscriptions.