Pular para o conteúdo
Visão geral Visão geral Novidades Novidades
Partilhar

Webhooks & Eventos

Eventos em tempo real. Entregues com assinatura HMAC.

O PaperOffice chama seu endpoint assim que um documento, trabalho, workspace ou tarefa é alterado. Sem polling.

22 tipos de eventos, assinatura HMAC-SHA256, três estratégias de retry e um registro de entrega por tentativa.

HMAC-SHA256 em cada entrega Até 10 repetições (padrão 5) Idempotente por ID do evento

Eventos disponíveis

22 tipos de eventos, agrupados por entidade

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

Documentos

14
  • document.uploaded Novo documento carregado em um workspace
  • document.created Alias para document.uploaded (compatibilidade)
  • document.processed Pipeline OCR/AI-IDP concluída com sucesso
  • document.edited Documento editado: metadados, tags ou conteúdo atualizados
  • document.deleted Documento movido para a lixeira
  • document.restored Documento restaurado da lixeira
  • document.moved Documento movido entre workspaces
  • document.version_created Nova versão de um documento existente
  • document.lifecycle_changed Status de retenção/arquivamento alterado
  • document.comment_added Comentário em um documento criado
  • document.note_added Nota interna anexada
  • document.tag_added Tag atribuída a um documento
  • document.legal_hold_placed Legal Hold ativado (imutável)
  • document.legal_hold_released Legal Hold revogado

Trabalhos

3
  • job.completed Trabalho assíncrono concluído com sucesso
  • job.failed Trabalho assíncrono falhou definitivamente
  • job.progress Atualização de progresso em trabalhos longos

Workspaces

2
  • workspace.shared Espaço de trabalho compartilhado com usuário ou equipe
  • workspace.unshared Acesso ao espaço de trabalho revogado

Tarefas

3
  • task.created Nova tarefa criada
  • task.completed Tarefa marcada como concluída
  • task.overdue Tarefa ultrapassou a data de vencimento

Payload e cabeçalho

Cada entrega segue o mesmo esquema

Corpo JSON previsível, cabeçalhos HTTP fixos, carimbo de data/hora UTC ISO-8601.

Corpo da Solicitação

{
  "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

Cabeçalho Valor de Exemplo Significado
Content-Type application/json Sempre JSON, codificado em UTF-8
User-Agent PaperOffice-Webhook/1.0 Identificador fixo para listas de permissão do firewall
X-PaperOffice-Event document.processed Tipo de evento entregue
X-PaperOffice-Event-ID a3b7f9c1… ID exclusivo de 128 bits. Use-o como chave de 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
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  }'

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 o resultado com X-PaperOffice-Signature — obrigatório com tempo constante.

  • Comparação em tempo constante

    hash_equals, hmac.compare_digest ou crypto.timingSafeEqual: A comparação não deve revelar diferenças de tempo.

  • Assinar o corpo bruto

    A assinatura é válida para o corpo da solicitação inalterado. Analise o JSON apenas após a verificação, caso contrário, o hash será diferente.

  • Inscrever-se via API

    POST /latest/webhooks/subscribe com name, url e events. Se secret permanecer vazio, o PaperOffice o gera e o retorna uma única vez.

Retentativa e Entrega

Três estratégias de retentativa, até 10 repetições

Escolha a política por assinatura. Cada tentativa é registrada com código de status, corpo da resposta e medição de tempo.

  • Padrão exponential

    Exponencial (Padrão)

    O intervalo entre as tentativas dobra após cada falha.

  • linear

    Linear

    O intervalo entre as tentativas aumenta em um passo fixo.

  • none

    Nenhuma

    Sem repetição, mesmo em caso de erros 5xx (enviar e esquecer). Útil para hooks de teste.

  • Sucesso HTTP 2xx dentro da janela de tempo limite
  • Máx. repetições Até 10 repetições (padrão: 5)
  • Tempo limite 1.000–30.000 ms por tentativa (padrão 10.000)
  • Log de entrega Cada tentativa é registrada; o log permanece mesmo após a exclusão da assinatura.

Gestão-API

Cinco endpoints em /latest/webhooks/

Criar, listar, atualizar e excluir assinaturas — além de um endpoint de teste. Cada chamada requer um token Bearer.

  • POST /webhooks/subscribe Criar assinatura; as cargas úteis são assinadas com HMAC-SHA256 Ferramenta MCPpo-webhooks-subscribe
  • GET /webhooks/list Listar todas as assinaturas de webhook da conta Ferramenta MCPpo-webhooks-list
  • POST /webhooks/update Atualizar URL, eventos, cabeçalhos, política de retry ou status ativo Ferramenta MCPpo-webhooks-update
  • POST /webhooks/delete Cancelar assinatura; o registro de entrega permanece válido Ferramenta MCPpo-webhooks-delete
  • POST /webhooks/test Enviar evento de teste para uma assinatura e verificar a entrega Ferramenta MCPpo-webhooks-test

Segurança

Fortalecido desde a base

Seis mecanismos que entram em ação em cada entrega — do lado da PaperOffice e do seu.

  • HMAC-SHA256

    Cada entrega é assinada com o seu segredo. A comparação deve ocorrer obrigatoriamente em tempo constante.

  • Proteção SSRF

    IPs privados e internos, localhost e endpoints de metadados da nuvem são bloqueados durante a assinatura e o envio.

  • Seguro contra DNS Rebinding

    O IP é validado novamente durante o envio e fixado via CURLOPT_RESOLVE.

  • HTTPS recomendado

    http e https são aceitos. Para produção, recomendamos HTTPS.

  • Idempotência por Event-ID

    Cada entrega inclui um X-PaperOffice-Event-ID exclusivo. Realize a deduplicação no seu lado.

  • Registro completo de entrega

    Todas as tentativas são registradas: código de status, corpo da resposta, medição de tempo e mensagem de erro.

Limites

Comportamento de entrega configurável por assinatura

Defina todos os valores ao criar ou posteriormente via /webhooks/update — por assinatura, não por conta.

  • 0–10 Repetições por entrega (padrão 5)
  • 1,0–30,0 ms Tempo limite por tentativa (padrão 10.000)
  • 3 Políticas de retry: none, linear, exponential
  • HMAC-SHA256 Assinatura em cada entrega

Webhooks estão disponíveis a partir do plano Professional. A visão geral de preços mostra qual plano se adapta à sua configuração.

Vídeo

Webhooks em ação

Veja como os webhooks do PaperOffice funcionam na prática — no vídeo.

Webhooks em ação

Perguntas

Perguntas frequentes sobre webhooks

Como verifico uma entrega?

Calcule HMAC-SHA256 sobre o corpo bruto da solicitação usando o segredo da sua assinatura e compare o resultado em tempo constante com o cabeçalho X-PaperOffice-Signature (formato sha256=<hex>). Se a assinatura não corresponder, responda com HTTP 401 e não processe o corpo.

De onde vem o segredo?

Ao criar a assinatura via POST /latest/webhooks/subscribe. Deixe o campo secret vazio; o PaperOffice gera um segredo e o retorna uma única vez na resposta. Você pode substituí-lo a qualquer momento via POST /latest/webhooks/update.

O que acontece se meu endpoint não responder?

Qualquer resposta fora do HTTP 2xx ou um tempo limite contam como falha. Dependendo da política de retry (exponencial, linear, nenhuma), o PaperOffice repete a entrega até o número configurado de repetições (0–10, padrão 5). Cada tentativa é registrada no log de entrega com código de status, resposta e medição de tempo.

A mesma entrega pode chegar duas vezes?

Sim, isso é possível em caso de repetições após um tempo limite. Portanto, realize a deduplicação via X-PaperOffice-Event-ID: o ID é único por evento e serve como chave de idempotência em seu banco de dados.

Quais eventos posso assinar?

22 tipos de eventos de quatro grupos: Documentos, Jobs, Workspaces e Tarefas. Você pode assinar eventos individuais ou todos com o curinga *. Além disso, você pode restringir uma assinatura usando filtros (como workspace_id ou pofid).

Em qual plano os webhooks estão incluídos?

Os webhooks estão disponíveis a partir do plano Professional. A visão geral de preços mostra qual plano se adequa à sua configuração.

Onde pretende testar o PaperOffice?

Computador e smartphone estão conectados: Workspace no computador, captura no telefone.

Sua versão de teste está pronta

Onde deseja começar?

A versão completa do Workspace é otimizada para computador. A versão móvel é adequada para capturar, verificar e aprovar documentos.

app.paperoffice.ai

Começar no computador

Enviaremos seu link de acesso pessoal para seu endereço de e-mail.

Registar-se gratuitamente Abrir aplicação Aplicação PaperOffice O produto completo: web, ambiente de trabalho e telemóvel. Capture, organize, pesquise e trabalhe em documentos com a sua equipa. É necessária uma conta gratuita Abrir Playground Playground Experimente funções selecionadas imediatamente — com uma chave API de demonstração restrita. Com uma chave API de demonstração restrita