Pular para o conteúdo

Bseal · Contrato de integración

Este conteúdo não está disponível em sua língua ainda.

Bseal es el sello (seal) que cierra cada documento. Este contrato describe cómo crear plantillas PDF, disparar firmas criptográficas y verificar el resultado. La llave privada vive siempre en AWS KMS — solo el documento sellado abandona la infraestructura.

OperaciónEndpointPlanoCosto
Subir plantilla PDFPOST /v1/templatesControl0 Açaí
Crear solicitud de firmaPOST /v1/signaturesData40 Açaí
Verificar firma de documento existentePOST /v1/signatures/verifyData2 Açaí
Descargar PDF selladoGET /v1/signatures/{id}/downloadData1 Açaí
Listar firmasGET /v1/signaturesData1 Açaí
  1. Subir plantilla PDF (con placeholders tipo {{cliente.nombre}}) y mapear las variables desde el Template Builder.
  2. Tu app llama POST /v1/signatures con template_code + merge_data + subject_ref.
  3. Bseal responde 202 con signature_id y status: pending.
  4. Worker procesa: merge → hash SHA-256 → KMS sign → upload S3 → publish event.
  5. Recibes webhook bseal.signature.completed con la URL firmada del PDF sellado.
  6. Descargas o reenvías el PDF al cliente final.
POST /v1/signatures HTTP/1.1
Host: api.digital-jungle.bjungle.com
X-API-Key: <api_key>
Content-Type: application/json
Idempotency-Key: <uuid>
{
"template_code": "pagare-microcredito-v3",
"subject_ref": "0c4b5b32-3a89-4a45-9c2c-1a8c47e91234",
"merge_data": {
"cliente": {
"nombre": "Camila Rodríguez",
"documento": "1023456789",
"ciudad": "Bogotá"
},
"credito": {
"monto": 5000000,
"moneda": "COP",
"tasa_ea": 28.5,
"plazo_meses": 12
},
"fecha_desembolso": "2026-05-25"
},
"expires_at": "2026-06-25T23:59:59Z"
}
{
"signature_id": "01J8G15K6N7P8Q9R0S1T2V3W4X",
"status": "pending",
"acai_debited": 40
}

Webhook resultado — bseal.signature.completed

Sección titulada «Webhook resultado — bseal.signature.completed»
{
"event_id": "5f8d1c3e-5d02-4d6e-8a9d-5e8c8b5f9abc",
"tenant_id": "8a7b6c5d-1234-5678-9abc-def012345678",
"module": "bseal",
"event_type": "bseal.signature.completed",
"occurred_at":"2026-05-25T14:00:05Z",
"payload": {
"signature_id": "01J8G15K6N7P8Q9R0S1T2V3W4X",
"subject_ref": "0c4b5b32-3a89-4a45-9c2c-1a8c47e91234",
"template_code": "pagare-microcredito-v3",
"document": {
"download_url": "https://s3.amazonaws.com/bjungle-bseal/.../pagare.pdf?X-Amz-...",
"sha256": "9b3c5d7e1f2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c",
"size_bytes": 124583,
"expires_at": "2026-05-26T14:00:05Z"
},
"signature": {
"algorithm": "RSASSA-PKCS1-v1_5-SHA256",
"kms_key_arn": "arn:aws:kms:us-east-1:000000000000:key/abcd-1234",
"signed_at": "2026-05-25T14:00:05Z"
}
}
}
Ventana de terminal
curl -X POST https://api.digital-jungle.bjungle.com/v1/signatures \
-H "X-API-Key: $BSEAL_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @signature.json

2. Verificar la firma de un PDF que ya recibiste

Sección titulada «2. Verificar la firma de un PDF que ya recibiste»

Útil cuando un tercero (notaría, contraparte) te envía de vuelta el documento y quieres revalidar que no se modificó.

POST /v1/signatures/verify HTTP/1.1
Host: api.digital-jungle.bjungle.com
X-API-Key: <api_key>
Content-Type: application/json
{
"signature_id": "01J8G15K6N7P8Q9R0S1T2V3W4X",
"sha256": "9b3c5d7e1f2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c"
}

Response 200:

{
"valid": true,
"signed_at": "2026-05-25T14:00:05Z",
"kms_key_arn": "arn:aws:kms:us-east-1:000000000000:key/abcd-1234"
}
EventoCuándo
bseal.signature.requestedSolicitud aceptada, antes de procesar
bseal.signature.completedPDF sellado y disponible en S3
bseal.signature.failedFalla irrecuperable (template inválido, KMS down, merge incompleto)
bseal.signature.expiredEl expires_at venció sin que se completara
StatusCaso
400merge_data no cubre todos los placeholders del template
404template_code o signature_id inexistente
402Sin Açaí disponibles
409Idempotency-Key repetida con payload distinto
422Plantilla deshabilitada o KMS key no disponible para este tenant
503KMS o S3 temporalmente no disponible — la petición se reintenta automáticamente