# Guía de Integración API
> Guía para implementar un flujo de firma electrónica usando la API de Legaldoc.io y el widget embebido.
Guía para implementar un flujo de firma electrónica usando la API de Legaldoc.io y el widget embebido.
---
## Requisitos Previos
- **API Key**: Token de autenticación para la API
- **Plantilla configurada**: Una plantilla creada en el portal de Legaldoc.io
### Autenticación
Todas las peticiones deben incluir:
```http
Authorization: {API_KEY}
Content-Type: application/json
```
---
## Flujo de Integración
---
## Paso 1: Obtener el ID de la Plantilla
El ID se obtiene desde la URL al editar una plantilla:
```
https://app.legaldoc.io/t/mi-equipo/templates/18
↑
Template ID = 18
```
### Configuración de Opciones de Email
Si **no deseas** que se envíen correos automáticos a los firmantes, debes configurar las **Opciones de Email** en la edición de la plantilla:
1. En el editor de plantilla, en **General**
2. En la sección **Opciones de Email**, desactivar todos los checkboxes de envío de correo:
- ❌ Enviar correo electrónico firma completa del destinatario
- ❌ Enviar correo electrónico de solicitud de firma del destinatario
- ❌ Enviar correo electrónico de destinatario eliminado
- ❌ Enviar correo electrónico de documento pendiente
- ❌ Enviar correo electrónico de documento completado
- ❌ Enviar correo electrónico de documento borrado
- ❌ Enviar correo electrónico de documento completado al propietario
> **Nota:** Con estas opciones desactivadas, deberás distribuir manualmente los enlaces de firma usando la API o el widget embebido.
---
## Paso 2: Consultar la Plantilla
Obtener el ID del firmante configurado en la plantilla.
### Request
```http
GET https://app.legaldoc.io/api/v1/templates/18
```
### Response (simplificado)
```json
{
"id": 18,
"title": "Mi Contrato.pdf",
"recipients": [
{
"id": 52,
"name": "Destinatario",
"email": "destinatario@legaldoc.io",
"role": "SIGNER"
}
]
}
```
> **Importante:** Guardar el `recipients[].id` (en este ejemplo: **52**) para el siguiente paso.
---
## Paso 3: Generar el Documento
Crear un documento a partir de la plantilla con los datos reales del firmante.
### Request
```http
POST https://app.legaldoc.io/api/v1/templates/18/generate-document
```
### Body
```json
{
"title": "Contrato - Cliente ABC",
"recipients": [
{
"id": 52,
"name": "Juan Pérez",
"email": "juan.perez@empresa.com"
}
]
}
```
### Response
```json
{
"documentId": 153,
"recipients": [
{
"recipientId": 174,
"name": "Juan Pérez",
"email": "juan.perez@empresa.com",
"token": "abc123XYZ",
"role": "SIGNER",
"signingUrl": "https://app.legaldoc.io/sign/abc123XYZ"
}
]
}
```
> **Importante:** Guardar el `token` (**abc123XYZ**) para usar en el widget embebido.
### 3.1 Pre-llenar Campos del Documento (Opcional)
Si necesitas que ciertos campos aparezcan con valores predeterminados, puedes usar `prefillFields`.
**Ejemplo:** Pre-llenar un campo de texto con número de cuenta corriente.
#### Paso previo: Identificar el campo
Del response del **Paso 2** (Consultar Plantilla), busca el campo que deseas prellenar en el array `fields`:
```json
{
"id": 526,
"type": "TEXT",
"recipientId": 144,
"fieldMeta": {
"label": "Cta Corriente",
"type": "text",
"required": true
}
}
```
> **Nota:** Guarda el `id` del campo (en este ejemplo: **526**).
#### Request con campos prellenados
```http
POST https://app.legaldoc.io/api/v1/templates/19/generate-document
```
```json
{
"title": "Contrato Boletín Comercial",
"recipients": [
{
"id": 144,
"name": "Juan Pérez",
"email": "juan.perez@empresa.com"
}
],
"prefillFields": [
{
"id": 526,
"type": "text",
"label": "Cta Corriente",
"value": "12323123"
}
]
}
```
El documento generado tendrá el campo "Cta Corriente" ya completado con el valor `12323123`.
#### Hacer el campo de solo lectura
Si deseas que el firmante **no pueda modificar** el valor prellenado:
1. En el editor de plantilla de app.legaldoc.io, selecciona el campo, ingresa a **ajustes avanzados**
2. Activa la opción **"Sólo lectura"** en las propiedades del campo
3. Guarda la plantilla
De esta forma, el campo aparecerá prellenado y bloqueado para edición.
---
## Paso 4: Enviar el Documento
Activar el documento para firma.
### Request
```http
POST https://app.legaldoc.io/api/v1/documents/153/send
```
### Response
```json
{
"message": "Document sent for signing successfully",
"id": 153,
"status": "PENDING",
"recipients": [
{
"id": 174,
"name": "Juan Pérez",
"email": "juan.perez@empresa.com",
"token": "abc123XYZ",
"signingUrl": "https://app.legaldoc.io/sign/abc123XYZ"
}
]
}
```
---
## Paso 5: Widget Embebido
### 5.1 Incluir el Script
```html
```
### 5.2 Agregar el Componente
```html