Saltar al contenido
Funciona en Claude · Verificado por Anthropic
Resumen Resumen Noticias Noticias
Compartir

Webhooks y eventos

Eventos en tiempo real. Entregas firmadas con HMAC.

PaperOffice llama a su punto final tan pronto como cambia un documento, trabajo, espacio de trabajo o tarea. Sin sondeo.

22 tipos de eventos, firma HMAC-SHA256, tres estrategias de reintento y un registro de entrega por intento.

HMAC-SHA256 en cada entrega Hasta 10 repeticiones (estándar 5) Idempotente por ID de evento
Eventos en tiempo real. Entregas firmadas con HMAC.

Eventos disponibles

22 tipos de eventos, agrupados por entidad

Suscríbase a eventos individuales o utilice el comodín * para todos.

Documentos

14
  • document.uploaded Nuevo documento cargado en un espacio de trabajo
  • document.created Alias para document.uploaded (compatibilidad)
  • document.processed Pipeline OCR/AI-IDP completado con éxito
  • document.edited Documento editado: metadatos, etiquetas o contenido actualizados
  • document.deleted Documento eliminado; delete_mode muestra trash (Papelera en Business y Compliance) o instant (definitivo en estándar)
  • document.restored Documento restaurado desde la papelera (Business y Compliance)
  • document.moved Documento movido entre espacios de trabajo
  • document.version_created Nueva versión de un documento existente
  • document.lifecycle_changed Estado de conservación/archivado cambiado
  • document.comment_added Comentario creado para un documento
  • document.note_added Nota interna adjunta
  • document.tag_added Etiqueta asignada a un documento
  • document.legal_hold_placed Legal Hold activado (inmutable)
  • document.legal_hold_released Legal Hold levantado

Trabajos

3
  • job.completed Trabajo asíncrono finalizado con éxito
  • job.failed Trabajo asíncrono fallido definitivamente
  • job.progress Actualización de progreso en trabajos largos

Workspaces

2
  • workspace.shared Espacio de trabajo compartido con usuario o equipo
  • workspace.unshared Acceso al espacio de trabajo revocado

Tareas

3
  • task.created Nueva tarea creada
  • task.completed Tarea marcada como completada
  • task.overdue La tarea ha superado su fecha de vencimiento

Payload y encabezado

Cada entrega sigue el mismo esquema

Predecible cuerpo JSON, encabezados HTTP fijos, marca de tiempo ISO-8601 en UTC.

Cuerpo de la solicitud

{
  "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 la solicitud HTTP

Encabezado Valor de ejemplo Significado
Content-Type application/json Siempre JSON, codificado en UTF-8
User-Agent PaperOffice-Webhook/1.0 Identificador fijo para listas de permitidos del firewall
X-PaperOffice-Event document.processed Tipo de evento entregado
X-PaperOffice-Event-ID a3b7f9c1… ID único de 128 bits. Úselo como clave de idempotencia.
X-PaperOffice-Subscription-ID 42 ID de la suscripción que recibe el evento
X-PaperOffice-Signature sha256=… HMAC-SHA256 del cuerpo raw, codificado en hexadecimal
cURL
curl -X POST "https://api.paperoffice.ai/latest/webhooks/subscribe" \  -H "Authorization: Bearer po_ut_YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "My Production Webhook",    "url": "https://yourdomain.com/webhooks/paperoffice",    "events": ["document.processed", "job.completed", "job.failed"],    "retry_policy": "exponential",    "max_retries": 5,    "timeout_ms": 10000  }'

Verificación de firma

Verifique cada entrega con HMAC-SHA256

Calcule HMAC-SHA256 sobre el cuerpo de la solicitud raw con su secreto compartido y compare el resultado con X-PaperOffice-Signature — obligatorio con tiempo constante.

  • Comparación en tiempo constante

    hash_equals, hmac.compare_digest o crypto.timingSafeEqual: La comparación no debe revelar diferencias de tiempo.

  • Firmieren el cuerpo sin procesar

    La firma es válida para el cuerpo de la solicitud sin cambios. Analice el JSON solo después de la verificación, de lo contrario, el hash cambiará.

  • Suscribirse mediante API

    POST /latest/webhooks/subscribe con name, url y events. Si secret queda vacío, PaperOffice lo genera y lo devuelve una sola vez.

Reintento y entrega

Tres estrategias de reintento, hasta 10 intentos

Seleccione la política por suscripción. Cada intento se registra con código de estado, cuerpo de respuesta y medición de tiempo.

  • Estándar exponential

    Exponencial (estándar)

    El intervalo entre los intentos se duplica después de cada fallo.

  • linear

    Lineal

    El intervalo entre los intentos aumenta en un paso fijo.

  • none

    Ninguna

    Sin reintento, incluso ante errores 5xx (enviar y olvidar). Útil para hooks de prueba.

  • Éxito HTTP 2xx dentro de la ventana de tiempo de espera
  • Máx. reintentos Hasta 10 reintentos (por defecto 5)
  • Tiempo de espera 1.000–30.000 ms por intento (estándar 10.000). El primer intento de entrega está limitado a 2 o 5 segundos según el evento; las reintentos utilizan el valor completo.
  • Registro de entrega Cada intento se registra; el registro permanece incluso después de eliminar la suscripción.

Gestión-API

Cinco puntos finales bajo /latest/webhooks/

Crear, listar, actualizar y eliminar suscripciones; incluye un punto final de prueba. Cada llamada requiere un token Bearer.

  • POST /webhooks/subscribe Crear suscripción; las cargas útiles se firman con HMAC-SHA256 Herramienta MCPpo-webhooks-subscribe
  • GET /webhooks/list Listar todas las suscripciones de webhook de la cuenta Herramienta MCPpo-webhooks-list
  • POST /webhooks/update Actualizar URL, eventos, encabezados, política de reintento o estado activo Herramienta MCPpo-webhooks-update
  • POST /webhooks/delete Cancelar suscripción; el registro de entrega se conserva Herramienta MCPpo-webhooks-delete
  • POST /webhooks/test Enviar evento de prueba a una suscripción y verificar la entrega Herramienta MCPpo-webhooks-test

Seguridad

Endurecido desde la base

Seis mecanismos que entran en acción con cada entrega — por parte de PaperOffice y por la suya.

  • HMAC-SHA256

    Cada entrega se firma con su secreto. La comparación debe realizarse obligatoriamente en tiempo constante.

  • Protección contra SSRF

    Las IPs privadas e internas, localhost y los puntos finales de metadatos de la nube se bloquean al suscribirse y durante el envío.

  • Seguro contra DNS Rebinding

    La dirección de destino se verifica nuevamente en el momento de la entrega.

  • HTTPS recomendado

    Se aceptan http e https. Para entornos de producción, recomendamos HTTPS.

  • Idempotencia mediante ID de evento

    Cada entrega incluye un X-PaperOffice-Event-ID único. Realice la deduplicación en su lado.

  • Registro completo de entregas

    Se registran todos los intentos: código de estado, cuerpo de la respuesta, medición del tiempo y mensaje de error.

Límites

Comportamiento de entrega configurable por suscripción

Todos los valores se establecen al crear o posteriormente a través de /webhooks/update — por suscripción, no por cuenta.

  • 0–10 Reintentos por entrega (estándar 5)
  • 1.000–30.000 ms Tiempo de espera por intento (estándar 10.000, primer intento 2–5 s)
  • 3 Políticas de reintento: none, linear, exponential
  • HMAC-SHA256 Firma en cada entrega

Los webhooks están disponibles a partir del plan Professional. La tabla de precios indica qué plan se adapta a su configuración.

Preguntas

Preguntas frecuentes sobre webhooks

¿Cómo verifico una entrega?

Calcule HMAC-SHA256 sobre el cuerpo crudo de la solicitud utilizando el secreto de su suscripción y compare el resultado en tiempo constante con el encabezado X-PaperOffice-Signature (formato sha256=<hex>). Si la firma no coincide, responda con HTTP 401 y no procese el cuerpo.

¿De dónde proviene el secreto?

Al crear la suscripción mediante POST /latest/webhooks/subscribe. Deje el campo secret vacío; PaperOffice generará un secreto y lo devolverá una única vez en la respuesta. Puede reemplazarlo en cualquier momento mediante POST /latest/webhooks/update.

¿Qué sucede si mi punto final no responde?

Cualquier respuesta fuera de HTTP 2xx o un tiempo de espera se cuenta como un intento fallido. Dependiendo de la política de reintento (exponencial, lineal, ninguna), PaperOffice repite el envío hasta el número establecido de reintentos (0–10, por defecto 5). Cada intento se registra en el registro de entregas con código de estado, respuesta y medición del tiempo.

¿Puede llegar la misma entrega dos veces?

Sí, es posible en caso de reintentos tras un tiempo de espera. Por lo tanto, deduplique mediante X-PaperOffice-Event-ID: La ID es única por evento y sirve como clave de idempotencia en su base de datos.

¿Qué eventos puedo suscribir?

22 tipos de eventos de cuatro grupos: Documentos, Trabajos, Espacios de trabajo y Tareas. Puede suscribirse a eventos individuales o usar el comodín * para todos. Además, puede limitar una suscripción mediante filtros (por ejemplo, workspace_id o pofid).

¿En qué plan están incluidos los webhooks?

Los webhooks están disponibles a partir del plan Professional. La tabla de precios muestra qué plan se adapta a su configuración.

PaperOffice AI · Problem Solver

Cuéntenos, qué le hace perder tiempo a diario.

Describa simplemente. No se necesitan términos técnicos.

O inicie con un ejemplo

¿Cómo desea utilizar PaperOffice?

Ordenador y smartphone conectados: espacio de trabajo en el ordenador, captura en el teléfono.

¿Dónde desea comenzar?

El espacio de trabajo completo está optimizado para el ordenador. La versión móvil es adecuada para capturar, revisar y aprobar documentos.

Registrarse gratis app.paperoffice.ai

Comenzar en el ordenador

Le enviaremos su enlace de acceso personal a su dirección de correo electrónico.