Mapa del sitio
Español
EUR €
NUEVO
Claude & ChatGPT — Superpotenciados.
Todos los documentos · 409+ herramientas de IA · Configuración en 30 s
Claude· ChatGPT· Cursor· Gemini· +50
Conectar ahora
Plataforma
Más de 50 módulos y herramientas de IA
Soluciones
Industrias, procesos, riesgos
Desarrollador
API, SDKs, documentación
Recursos
Tutoriales, blog, soporte
Empresa
Equipo, socios, carreras
Precios
Webhooks

Webhooks Eventos en tiempo real

Callbacks firmados con HMAC para cada evento de documento, trabajo, espacio de trabajo y tarea. 22 tipos de eventos, reintentos exponenciales, HTTPS recomendado.

22+
Tipos de eventos
<1s
Latencia
HMAC
Firmado con SHA-256
POST /su-punto-de-conexión
Encabezados de solicitud
X-PaperOffice-Event: document.processed
X-PaperOffice-Event-ID: a3b7f9c1d4e8b2a6
X-PaperOffice-Signature: sha256=9f8a2c…
Cuerpo JSON
{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": { "pofid": "doc_01HZY8K3…" }
}
Firma verificada HMAC-SHA256 · ID de evento registrado

Confianza de empresas líderes en todo el mundo

Eventos disponibles

22 tipos de eventos, agrupados por entidad

Suscríbase a eventos individuales o use el comodín * para todo.

Documentos

14
  • documento.subido Nuevo documento subido a un espacio de trabajo
  • documento.creado Alias para document.uploaded (compatibilidad)
  • documento.procesado Pipeline OCR/IDP finalizado con éxito
  • documento.editado Metadatos, etiquetas o contenido actualizados
  • documento.eliminado Documento movido a la papelera
  • documento.restaurado Documento recuperado de la papelera
  • documento.movido Documento movido entre espacios de trabajo
  • documento.version_creada Nueva versión añadida a un documento existente
  • documento.ciclo_de_vida_cambiado Estado de retención/archivo cambiado
  • documento.comentario_añadido Comentario publicado en un documento
  • documento.nota_añadida Nota interna adjunta
  • documento.etiqueta_añadida Etiqueta asignada a un documento
  • documento.retención_legal_aplicada Retención legal activada (inmutable)
  • documento.retención_legal_liberada Retención legal liberada

Trabajos

3
  • trabajo.completado Trabajo asíncrono finalizado con éxito
  • trabajo.fallido Trabajo asíncrono fallido terminalmente
  • trabajo.progreso Actualización de progreso durante trabajos de larga duración

Espacios de trabajo

2
  • espacio_de_trabajo.compartido Espacio de trabajo compartido con un usuario o equipo
  • espacio_de_trabajo.no_compartido Acceso al espacio de trabajo revocado

Tareas

3
  • tarea.creada Nueva tarea creada
  • tarea.completada Tarea marcada como completada
  • tarea.vencida Tarea superó su fecha de vencimiento

Suscríbase a ["*"] para recibir cada evento de su cuenta.

Carga útil y encabezados

Cada entrega sigue el mismo esquema

Cuerpo JSON predecible, cinco encabezados HTTP firmados, marcas de tiempo UTC ISO-8601.

Cuerpo de la solicitud (JSON)
{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6c9f1d4e7b2a5c8f1",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": {
    "pofid": "doc_01HZY8K3M7P2Q9R5T1V6W4X2Y8",
    "workspace_id": 17,
    "filename": "invoice-2026-04-17.pdf",
    "mime_type": "application/pdf",
    "size_bytes": 284521,
    "processing_result": {
      "ocr_done": true,
      "classification": "invoice",
      "confidence": 0.98
    }
  }
}
Encabezados de solicitud HTTP
Content-Type application/json Siempre JSON, codificado en UTF-8
User-Agent PaperOffice-Webhook/1.0 Identificador fijo para listas permitidas de firewall
X-PaperOffice-Event documento.procesado Tipo de evento que se está entregando
X-PaperOffice-Event-ID a3b7f9c1… ID único de 128 bits. Use para idempotencia.
X-PaperOffice-Subscription-ID 42 ID de la suscripción que recibe el evento
X-PaperOffice-Signature sha256=… HMAC-SHA256 del cuerpo crudo, codificado en hexadecimal
Verificación de firma

Verifique cada entrega con HMAC-SHA256

Calcule HMAC-SHA256 sobre el cuerpo crudo de la solicitud usando su secreto compartido, luego compare contra X-PaperOffice-Signature usando una comparación de tiempo constante (hash_equals, crypto.timingSafeEqual).

import crypto from 'crypto';
import express from 'express';
const app = express();

const WEBHOOK_SECRET = process.env.PAPEROFFICE_WEBHOOK_SECRET;

app.post('/webhooks/paperoffice', express.raw({ type: 'application/json' }), (req, res) => {
  const signature = req.header('X-PaperOffice-Signature'); // "sha256=..."
  const eventId   = req.header('X-PaperOffice-Event-ID');
  const eventType = req.header('X-PaperOffice-Event');

  const expected = 'sha256=' + crypto
    .createHmac('sha256', WEBHOOK_SECRET)
    .update(req.body)
    .digest('hex');

  if (!signature || !crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) {
    return res.status(401).send('invalid signature');
  }

  const event = JSON.parse(req.body.toString());
  // eventId als Idempotency-Key speichern -> gleiche ID nicht zweimal verarbeiten
  console.log(eventType, event.data);
  res.status(200).send('ok');
});
Reintento y entrega

Tres estrategias de reintento, hasta 10 intentos

Elija una política por suscripción. Cada intento se registra con código de estado, cuerpo de respuesta y temporización.

linear

Lineal

Crecimiento fijo: 30s, 60s, 90s, 120s, 150s…

none

Ninguno

Disparar y olvidar. Sin reintentos incluso en errores 5xx. Útil para ganchos de prueba.

Éxito HTTP 2xx dentro de su ventana de tiempo de espera
Reintentos máximos 0–10 intentos (predeterminado 5)
Tiempo de espera 1.000–30.000 ms por intento (predeterminado 10.000)
Registro de entrega Cada intento se almacena en webhook_deliveries para auditoría
API de gestión

9 endpoints bajo /latest/webhooks/

CRUD completo para suscripciones, registros de entrega, suscripciones de trabajos únicos y un endpoint de prueba; todo con OAuth2 Bearer y listo para MCP.

POST /webhooks/subscribe Crear una nueva suscripción (ilimitada por cuenta) po_webhooks_subscribe
GET /webhooks/list Listar todas las suscripciones de la cuenta po_webhooks_list
POST /webhooks/update Actualizar una suscripción existente po_webhooks_update
POST /webhooks/delete Eliminación suave de una suscripción (el registro de entrega se conserva) po_webhooks_delete
GET /webhooks/deliveries Recuperar el registro de entrega con filtros (tipo_de_evento, solo_exito) po_webhooks_deliveries
POST /webhooks/test Enviar un evento test.ping para verificar la entrega po_webhooks_test
POST /webhooks/subscribe-job Webhook único para un job_id específico po_webhooks_subscribe_job
GET /webhooks/job-subscriptions Listar suscripciones limitadas a trabajos po_webhooks_job_subscriptions
GET /webhooks/info Eventos disponibles, endpoints, políticas de reintento, información de firma po_webhooks_info
Seguridad Enterprise

Endurecido por diseño

HMAC-SHA256

Cada carga útil está firmada con su secreto. La comparación de tiempo constante es obligatoria.

Protección SSRF

IPs privadas/internas, localhost y endpoints de metadatos en la nube bloqueados en la suscripción y el despacho.

Seguro contra rebind de DNS

IP revalidada en el momento del despacho, fijada mediante CURLOPT_RESOLVE.

HTTPS fuertemente preferido

Se aceptan http y https. Se recomienda HTTPS para producción.

Idempotencia de Event-ID

Cada entrega lleva un X-PaperOffice-Event-ID único. Deduplique en su lado.

Registro de auditoría completo

Todos los intentos registrados: código de estado, cuerpo de respuesta, tiempo, mensaje de error.

Límites

Suscripciones ilimitadas, comportamiento de entrega totalmente configurable

Suscripciones / cuenta
Suscripciones de trabajos activas
10.000 ms
Tiempo de espera predeterminado
5
Reintentos máximos predeterminados

Disponible en todos los planes. Pago por uso: 1 crédito por entrega exitosa (HTTP 2xx). Los reintentos, eventos de prueba y entregas fallidas son gratuitos.

Comenzar ahora

Su primer webhook en 60 segundos

Cree un endpoint, suscríbase vía API, dispare un evento de prueba. Eso es todo.

HMAC-SHA256 Retroceso exponencial Registro de auditoría completo