Peta Situs
Indonesia
EUR €
BARU
Claude & ChatGPT — Berkekuatan super.
Semua dokumen · 409+ alat AI · Pengaturan 30 detik
Claude· ChatGPT· Cursor· Gemini· +50
Hubungkan sekarang
Platform
50+ modul dan alat AI
Solusi
Industri, proses, risiko
Pengembang
API, SDK, dokumentasi
Sumber Daya
Tutorial, blog, dukungan
Perusahaan
Tim, mitra, karier
Harga
Webhook

Webhook Acara waktu nyata

Callback bertanda HMAC untuk setiap acara dokumen, pekerjaan, ruang kerja dan tugas. 22 jenis acara, coba ulang eksponensial, HTTPS direkomendasikan.

22+
Jenis acara
<1s
Latensi
HMAC
Ditandatangani SHA-256
POST /your-endpoint
Header permintaan
X-PaperOffice-Event: document.processed
X-PaperOffice-Event-ID: a3b7f9c1d4e8b2a6
X-PaperOffice-Signature: sha256=9f8a2c…
Body JSON
{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": { "pofid": "doc_01HZY8K3…" }
}
Tanda tangan diverifikasi HMAC-SHA256 · ID Acara dicatat

Dipercaya oleh perusahaan terkemuka di seluruh dunia

Acara yang tersedia

22 jenis acara, dikelompokkan berdasarkan entitas

Berlangganan acara individual atau gunakan wildcard * untuk semuanya.

Dokumen

14
  • dokumen.diunggah Dokumen baru diunggah ke ruang kerja
  • dokumen.dibuat Alias untuk document.uploaded (kompatibilitas)
  • dokumen.diproses Pipa OCR/IDP selesai dengan sukses
  • dokumen.diedit Metadata, tag atau konten diperbarui
  • dokumen.dihapus Dokumen dipindahkan ke sampah
  • dokumen.dipulihkan Dokumen dipulihkan dari sampah
  • document.moved Dokumen dipindahkan antar ruang kerja
  • dokumen.versi_dibuat Versi baru ditambahkan ke dokumen yang ada
  • dokumen.siklus_hidup_diubah Status retensi / arsip diubah
  • dokumen.komentar_ditambahkan Komentar diposting pada dokumen
  • dokumen.catatan_ditambahkan Catatan internal dilampirkan
  • dokumen.tag_ditambahkan Tag ditetapkan ke dokumen
  • dokumen.penahanan_hukum_diterapkan Tahanan hukum diaktifkan (tidak dapat diubah)
  • dokumen.penahanan_hukum_dilepaskan Tahanan hukum dilepaskan

Pekerjaan

3
  • pekerjaan.selesai Pekerjaan async selesai dengan sukses
  • pekerjaan.gagal Pekerjaan async gagal secara terminal
  • pekerjaan.progres Pembaruan kemajuan selama pekerjaan jangka panjang

Ruang Kerja

2
  • ruang_kerja.dibagikan Ruang kerja dibagikan dengan pengguna atau tim
  • ruang_kerja.tidak_dibagikan Akses ruang kerja dicabut

Tugas

3
  • tugas.dibuat Tugas baru dibuat
  • tugas.selesai Tugas ditandai sebagai selesai
  • tugas.terlambat Tugas telah melewati batas waktu

Berlangganan ["*"] untuk menerima setiap event dari akun Anda.

Payload & header

Setiap pengiriman mengikuti skema yang sama

Body JSON yang dapat diprediksi, lima header HTTP bertanda tangan, stempel waktu ISO-8601 UTC.

Body permintaan (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
    }
  }
}
Header permintaan HTTP
Content-Type application/json Selalu JSON, dikodekan UTF-8
User-Agent PaperOffice-Webhook/1.0 Identifikasi tetap untuk daftar izin firewall
X-PaperOffice-Event document.processed Jenis event yang dikirimkan
X-PaperOffice-Event-ID a3b7f9c1… ID unik 128-bit. Gunakan untuk idempotensi.
X-PaperOffice-Subscription-ID 42 ID langganan yang menerima event
X-PaperOffice-Signature sha256=… HMAC-SHA256 dari body mentah, dikodekan heksadesimal
Verifikasi tanda tangan

Verifikasi setiap pengiriman dengan HMAC-SHA256

Hitung HMAC-SHA256 atas body permintaan mentah menggunakan rahasia bersama Anda, lalu bandingkan dengan X-PaperOffice-Signature menggunakan perbandingan waktu-konstan (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');
});
Coba ulang & pengiriman

Tiga strategi coba ulang, hingga 10 percobaan

Pilih kebijakan per langganan. Setiap percobaan dicatat dengan kode status, body respons, dan waktu.

linear

Linier

Pertumbuhan tetap: 30d, 60d, 90d, 120d, 150d…

none

Tidak ada

Kirim dan lupakan. Tidak ada coba ulang bahkan pada 5xx. Berguna untuk hook uji.

Berhasil HTTP 2xx dalam jendela waktu habis Anda
Maks coba ulang 0–10 percobaan (default 5)
Waktu habis 1.000–30.000 ms per percobaan (default 10.000)
Log pengiriman Setiap percobaan disimpan di webhook_deliveries untuk audit
API Manajemen

9 endpoint di bawah /latest/webhooks/

CRUD lengkap untuk langganan, log pengiriman, langganan pekerjaan sekali jalan, dan endpoint uji — semua OAuth2 Bearer, semua siap-MCP.

POST /webhooks/subscribe Buat langganan baru (tanpa batas per akun) po_webhooks_subscribe
GET /webhooks/list Daftar semua langganan akun po_webhooks_list
POST /webhooks/update Perbarui langganan yang ada po_webhooks_update
POST /webhooks/delete Hapus lunak langganan (log pengiriman dipertahankan) po_webhooks_delete
GET /webhooks/deliveries Ambil log pengiriman dengan filter (event_type, success_only) po_webhooks_deliveries
POST /webhooks/test Kirim event test.ping untuk memverifikasi pengiriman po_webhooks_test
POST /webhooks/subscribe-job Webhook sekali jalan untuk job_id tertentu po_webhooks_subscribe_job
GET /webhooks/job-subscriptions Daftar langganan yang cakupan pekerjaan po_webhooks_job_subscriptions
GET /webhooks/info Event yang tersedia, endpoint, kebijakan coba ulang, info tanda tangan po_webhooks_info
Keamanan Enterprise

Diperkuat berdasarkan desain

HMAC-SHA256

Setiap payload ditandatangani dengan rahasia Anda. Perbandingan waktu-konstan wajib.

Proteksi SSRF

IP pribadi/internal, localhost, dan endpoint metadata cloud diblokir saat berlangganan dan pengiriman.

Aman dari pengikatan ulang DNS

IP divalidasi ulang pada saat pengiriman, dipatok melalui CURLOPT_RESOLVE.

HTTPS sangat disarankan

http dan https diterima. HTTPS direkomendasikan untuk produksi.

Idempotensi Event-ID

Setiap pengiriman membawa X-PaperOffice-Event-ID unik. Deduplikasi di sisi Anda.

Jejak audit lengkap

Semua percobaan dicatat: kode status, body respons, waktu, pesan kesalahan.

Batas

Langganan tanpa batas, perilaku pengiriman sepenuhnya dapat dikonfigurasi

Langganan / akun
Langganan pekerjaan aktif
10.000 ms
Waktu habis default
5
Maks coba ulang default

Tersedia di semua paket. Bayar-per-penggunaan: 1 kredit per pengiriman berhasil (HTTP 2xx). Coba ulang, event uji, dan pengiriman gagal gratis.

Mulai sekarang

Webhook pertama Anda dalam 60 detik

Buat endpoint, berlangganan via API, kirim event uji. Itu saja.

HMAC-SHA256 Back-off eksponensial Jejak audit lengkap