Enviar un Documento
En este paso usarás la mutación send para enviar un documento para firmar. Esta es la operación más común en la API de Legalesign.
Prerrequisitos
Necesitas:
- Un token o clave API de Autenticarse con la API
- El helper
graphqldel Inicio rápido de GraphQL - Un ID de grupo — el equipo al que pertenece el documento
- Un ID de plantilla — la plantilla PDF a enviar
Puedes encontrar ambos consultando tus grupos y sus plantillas — consulta el paso anterior.
Enviar el 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);
Si quieres incluir roleId, consulta los roles de la plantilla con template { roles { id signerIndex } } (consulta el paso anterior).
Si la entrada es inválida, la mutación devuelve un error inmediatamente.
Si la mutación tiene éxito, devuelve un ID de tarea. El documento se procesa de forma asíncrona.
Verificar el estado de la tarea
Realiza polling a la consulta task para comprobar cuándo se completa el envío:
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));
Inspecciona status.data.task.report?.status en tu cliente. Cuando sea COMPLETED, la creación del documento ha finalizado. Si es FAILED, el envío no se completó con éxito.
Ejemplo completo funcionando
Aquí está el index.js completo que combina todos los pasos:
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);
Próximos pasos
- Agrega más opciones a tu envío — consulta DocumentSendSettingsInput para todos los campos disponibles
- Envía a varios destinatarios o en secuencia — consulta métodos de envío explicados
- Envía muchos documentos a la vez — consulta sendBatch y sendBulk
- Explora más ejemplos de mutaciones