Mapa do Site
Português
EUR €
NOVO
Claude & ChatGPT — Turbinados.
Todos os documentos · 409+ ferramentas AI · Configuração em 30 s
Claude· ChatGPT· Cursor· Gemini· +50
Conectar agora
Plataforma
Mais de 50 módulos e ferramentas de IA
Soluções
Indústrias, processos, riscos
Programador
API, SDKs, documentação
Recursos
Tutoriais, blog, suporte
Empresa
Equipa, parceiros, carreiras
Preços
Webhooks

Webhooks Eventos em tempo real

Callbacks assinados com HMAC para cada evento de documento, tarefa, espaço de trabalho e atividade. 22 tipos de eventos, novas tentativas exponenciais, HTTPS recomendado.

22+
Tipos de eventos
<1s
Latência
HMAC
Assinado com SHA-256
POST /seu-endpoint
Cabeçalhos da solicitação
X-PaperOffice-Event: document.processed
X-PaperOffice-Event-ID: a3b7f9c1d4e8b2a6
X-PaperOffice-Signature: sha256=9f8a2c…
Corpo JSON
{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": { "pofid": "doc_01HZY8K3…" }
}
Assinatura verificada HMAC-SHA256 · ID do evento registrado

Confiança de empresas líderes em todo o mundo

Eventos disponíveis

22 tipos de eventos, agrupados por entidade

Inscreva-se em eventos individuais ou use o curinga * para tudo.

Documentos

14
  • documento.enviado Novo documento carregado em um espaço de trabalho
  • documento.criado Alias para document.uploaded (compatibilidade)
  • documento.processado Pipeline de OCR/IDP concluído com sucesso
  • documento.editado Metadados, tags ou conteúdo atualizados
  • documento.excluido Documento movido para a lixeira
  • documento.restaurado Documento recuperado da lixeira
  • documento.movido Documento movido entre espaços de trabalho
  • documento.versao_criada Nova versão adicionada a um documento existente
  • documento.ciclo_vida_alterado Status de retenção/arquivamento alterado
  • documento.comentario_adicionado Comentário publicado em um documento
  • documento.nota_adicionada Nota interna anexada
  • documento.etiqueta_adicionada Tag atribuída a um documento
  • documento.retencao_legal_aplicada Bloqueio legal ativado (imutável)
  • documento.retencao_legal_libertada Bloqueio legal liberado

Tarefas (Jobs)

3
  • tarefa.concluida Tarefa assíncrona concluída com sucesso
  • tarefa.falhou Tarefa assíncrona falhou terminalmente
  • tarefa.em_andamento Atualização de progresso durante tarefas de longa duração

Espaços de trabalho

2
  • espaco_trabalho.compartilhado Espaço de trabalho compartilhado com um usuário ou equipe
  • espaco_trabalho.nao_compartilhado Acesso ao espaço de trabalho revogado

Tarefas

3
  • tarefa.criada Nova tarefa criada
  • tarefa.concluida Tarefa marcada como concluída
  • tarefa.atrasada Tarefa passou da data de vencimento

Inscreva-se em ["*"] para receber todos os eventos da sua conta.

Payload e cabeçalhos

Cada entrega segue o mesmo esquema

Corpo JSON previsível, cinco cabeçalhos HTTP assinados, carimbos de data/hora UTC ISO-8601.

Corpo da solicitação (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
    }
  }
}
Cabeçalhos da solicitação HTTP
Content-Type application/json Sempre JSON, codificado em UTF-8
User-Agent PaperOffice-Webhook/1.0 Identificador fixo para listas de permissão de firewall
X-PaperOffice-Event document.processed Tipo de evento sendo entregue
X-PaperOffice-Event-ID a3b7f9c1… ID único de 128 bits. Use para idempotência.
X-PaperOffice-Subscription-ID 42 ID da assinatura que recebe o evento
X-PaperOffice-Signature sha256=… HMAC-SHA256 do corpo bruto, codificado em hexadecimal
Verificação de assinatura

Verifique cada entrega com HMAC-SHA256

Calcule o HMAC-SHA256 sobre o corpo bruto da solicitação usando seu segredo compartilhado e compare com X-PaperOffice-Signature usando comparação de tempo 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');
});
Nova tentativa e entrega

Três estratégias de nova tentativa, até 10 tentativas

Escolha uma política por assinatura. Cada tentativa é registrada com código de status, corpo da resposta e tempo.

linear

Linear

Crescimento fixo: 30s, 60s, 90s, 120s, 150s…

none

Nenhuma

Disparar e esquecer. Sem novas tentativas mesmo em erro 5xx. Útil para webhooks de teste.

Sucesso HTTP 2xx dentro da sua janela de tempo limite
Máximo de novas tentativas 0–10 tentativas (padrão 5)
Tempo limite 1.000–30.000 ms por tentativa (padrão 10.000)
Registro de entrega Cada tentativa armazenada em webhook_deliveries para auditoria
API de gerenciamento

9 endpoints em /latest/webhooks/

CRUD completo para assinaturas, registros de entrega, assinaturas de tarefa únicas e um endpoint de teste — todos com OAuth2 Bearer, todos prontos para MCP.

POST /webhooks/subscribe Criar uma nova assinatura (ilimitada por conta) po_webhooks_subscribe
GET /webhooks/list Listar todas as assinaturas da conta po_webhooks_list
POST /webhooks/update Atualizar uma assinatura existente po_webhooks_update
POST /webhooks/delete Excluir suavemente uma assinatura (registro de entrega preservado) po_webhooks_delete
GET /webhooks/deliveries Recuperar registro de entrega com filtros (event_type, success_only) po_webhooks_deliveries
POST /webhooks/test Enviar um evento test.ping para verificar a entrega po_webhooks_test
POST /webhooks/subscribe-job Webhook único para um job_id específico po_webhooks_subscribe_job
GET /webhooks/job-subscriptions Listar assinaturas escopadas por tarefa po_webhooks_job_subscriptions
GET /webhooks/info Eventos disponíveis, endpoints, políticas de nova tentativa, informações de assinatura po_webhooks_info
Segurança corporativa

Reforçado por design

HMAC-SHA256

Cada payload assinado com seu segredo. Comparação de tempo constante obrigatória.

Proteção contra SSRF

IPs privados/internos, localhost e endpoints de metadados de nuvem bloqueados na inscrição e no despacho.

Seguro contra rebinding de DNS

IP revalidado no momento do despacho, fixado via CURLOPT_RESOLVE.

HTTPS fortemente preferido

http e https aceitos. HTTPS recomendado para produção.

Idempotência via Event-ID

Cada entrega carrega um X-PaperOffice-Event-ID único. Deduza no seu lado.

Registro de auditoria completo

Todas as tentativas registradas: código de status, corpo da resposta, tempo, mensagem de erro.

Limites

Assinaturas ilimitadas, comportamento de entrega totalmente configurável

Assinaturas por conta
Assinaturas de tarefas ativas
10.000 ms
Tempo limite padrão
5
Máximo de novas tentativas padrão

Disponível em todos os planos. Pagamento por uso: 1 crédito por entrega bem-sucedida (HTTP 2xx). Novas tentativas, eventos de teste e entregas falhadas são gratuitos.

Comece agora

Seu primeiro webhook em 60 segundos

Crie um endpoint, inscreva-se via API, dispare um evento de teste. É só isso.

HMAC-SHA256 Back-off exponencial Registro de auditoria completo