Inviare un Documento
In questo passaggio utilizzerai la mutazione send per inviare un documento da firmare. Questa è l'operazione più comune nelle API di Legalesign.
Prerequisiti
Ti servono:
- Un token o una API key da Autenticazione con l'API
- L'helper
graphqldal GraphQL Quickstart - Un ID gruppo — il team a cui appartiene il documento
- Un ID modello — il template PDF da inviare
Puoi trovare entrambi interrogando i tuoi gruppi e i loro template — vedi il passaggio precedente.
Invia il documento
const sendResult = await graphql(token, `
mutation SendDocument($input: DocumentSendSettingsInput!) {
send(input: $input)
}
`, {
input: {
groupId: '<your-group-id>',
templateId: '<your-template-id>',
title: 'Test Document',
recipients: [
{
firstName: 'Jane',
lastName: 'Smith',
email: 'jane@example.com',
order: 0
}
]
}
});
console.log('Task ID:', sendResult.data.send);
Se vuoi includere roleId, interroga i ruoli del template con template { roles { id signerIndex } } (vedi il passaggio precedente).
Se l'input non è valido, la mutazione restituisce immediatamente un errore.
Se la mutazione ha successo, restituisce un ID compito. Il documento viene elaborato in modo asincrono.
Verifica lo stato del compito
Interroga ripetutamente la query task per verificare quando l'invio è completato:
const taskId = sendResult.data.send;
const status = await graphql(token, `
query CheckTask($id: ID!) {
task(id: $id) {
data
report {
status
batchId
documents
errors
}
}
}
`, { id: taskId });
console.log(JSON.stringify(status, null, 2));
Controlla status.data.task.report?.status nel tuo client. Quando diventa COMPLETED, la creazione del documento è terminata. Se diventa FAILED, l'invio non è andato a buon fine.
Esempio completo funzionante
Ecco il file index.js completo che combina tutti i passaggi:
const GRAPHQL_ENDPOINT = 'https://graphql.uk.legalesign.com/graphql';
const TOKEN = '<token-or-api-key>';
async function graphql(token, query, variables = {}) {
const response = await fetch(GRAPHQL_ENDPOINT, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({ query, variables })
});
const result = await response.json();
if (result.errors) console.error('GraphQL errors:', result.errors);
return result;
}
async function main() {
const result = await graphql(TOKEN, `
mutation SendDocument($input: DocumentSendSettingsInput!) {
send(input: $input)
}
`, {
input: {
groupId: '<your-group-id>',
templateId: '<your-template-id>',
title: 'Test Document',
recipients: [
{
firstName: 'Jane',
lastName: 'Smith',
email: 'jane@example.com',
order: 0
}
]
}
});
console.log('Task ID:', result.data.send);
}
main().catch(console.error);
Passi successivi
- Aggiungi più opzioni al tuo invio — consulta DocumentSendSettingsInput per tutti i campi disponibili
- Invia a più destinatari o in sequenza — vedi metodi di invio spiegati
- Invia molti documenti contemporaneamente — vedi sendBatch e sendBulk
- Esplora altri esempi di mutazioni