Sơ đồ trang web
Tiếng Việt
EUR €
MỚI
Claude & ChatGPT — Siêu tăng cường.
Tất cả tài liệu · 409+ công cụ AI · Cài đặt 30 giây
Claude· ChatGPT· Cursor· Gemini· +50
Kết nối ngay
Nền tảng
50+ mô-đun và công cụ AI
Giải pháp
Ngành, quy trình, rủi ro
Nhà phát triển
API, SDK, tài liệu
Tài nguyên
Hướng dẫn, blog, hỗ trợ
Công ty
Đội ngũ, đối tác, tuyển dụng
Giá cả
Webhook

Webhook Sự kiện thời gian thực

Gọi lại được ký HMAC cho mọi sự kiện về tài liệu, công việc, không gian làm việc và nhiệm vụ. 22 loại sự kiện, thử lại theo cấp số nhân, khuyến nghị sử dụng HTTPS.

22+
Các loại sự kiện
<1s
Độ trễ
HMAC
Được ký SHA-256
POST /điểm-cuối-của-bạn
Tiêu đề yêu cầu
X-PaperOffice-Event: document.processed
X-PaperOffice-Event-ID: a3b7f9c1d4e8b2a6
X-PaperOffice-Signature: sha256=9f8a2c…
Nội dung JSON
{
  "event_type": "document.processed",
  "event_id": "a3b7f9c1d4e8b2a6",
  "timestamp": "2026-04-17T14:23:11Z",
  "subscription_id": 42,
  "data": { "pofid": "doc_01HZY8K3…" }
}
Chữ ký đã được xác minh HMAC-SHA256 · ID sự kiện đã được ghi lại

Được tin tưởng bởi các công ty hàng đầu trên toàn thế giới

Các sự kiện khả dụng

22 loại sự kiện, được nhóm theo thực thể

Đăng ký các sự kiện riêng lẻ hoặc sử dụng ký tự đại diện * cho tất cả.

Tài liệu

14
  • document.uploaded Tài liệu mới được tải lên không gian làm việc
  • document.created Biệt danh cho document.uploaded (tương thích)
  • document.processed Quy trình OCR/IDP hoàn tất thành công
  • document.edited Siêu dữ liệu, thẻ hoặc nội dung được cập nhật
  • document.deleted Tài liệu được chuyển vào thùng rác
  • document.restored Tài liệu được khôi phục từ thùng rác
  • document.moved Tài liệu được di chuyển giữa các không gian làm việc
  • document.version_created Phiên bản mới được thêm vào tài liệu hiện có
  • document.lifecycle_changed Trạng thái lưu trữ/lưu giữ thay đổi
  • document.comment_added Bình luận được đăng trên tài liệu
  • document.note_added Ghi chú nội bộ được đính kèm
  • document.tag_added Thẻ được gán cho tài liệu
  • document.legal_hold_placed Lệnh pháp lý được kích hoạt (bất biến)
  • document.legal_hold_released Lệnh pháp lý được hủy bỏ

Công việc

3
  • job.completed Công việc không đồng bộ hoàn tất thành công
  • job.failed Công việc không đồng bộ thất bại hoàn toàn
  • Tiến độ công việc Cập nhật tiến độ trong các công việc chạy dài

Không gian làm việc

2
  • Không gian làm việc đã chia sẻ Không gian làm việc được chia sẻ với người dùng hoặc nhóm
  • Không gian làm việc chưa chia sẻ Quyền truy cập không gian làm việc bị thu hồi

Nhiệm vụ

3
  • Nhiệm vụ đã tạo Nhiệm vụ mới được tạo
  • Nhiệm vụ đã hoàn thành Nhiệm vụ được đánh dấu là hoàn thành
  • Nhiệm vụ quá hạn Nhiệm vụ đã quá hạn chót

Đăng ký ["*"] để nhận mọi sự kiện của tài khoản bạn.

Tải trọng và tiêu đề

Mọi lần phân phối đều tuân theo cùng một lược đồ

Nội dung JSON có thể dự đoán, năm tiêu đề HTTP được ký, dấu thời gian UTC ISO-8601.

Nội dung yêu cầu (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
    }
  }
}
Tiêu đề yêu cầu HTTP
Content-Type application/json Luôn là JSON, mã hóa UTF-8
User-Agent PaperOffice-Webhook/1.0 Định danh cố định cho danh sách cho phép tường lửa
X-PaperOffice-Event document.processed Loại sự kiện đang được phân phối
X-PaperOffice-Event-ID a3b7f9c1… ID duy nhất 128-bit. Sử dụng cho tính lũy đẳng.
X-PaperOffice-Subscription-ID 42 ID của gói đăng ký nhận sự kiện
X-PaperOffice-Signature sha256=… HMAC-SHA256 của nội dung thô, mã hóa hex
Xác minh chữ ký

Xác minh mọi lần phân phối bằng HMAC-SHA256

Tính toán HMAC-SHA256 trên nội dung yêu cầu thô sử dụng khóa bí mật chung của bạn, sau đó so sánh với X-PaperOffice-Signature bằng phép so sánh thời gian không đổi (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');
});
Thử lại và phân phối

Ba chiến lược thử lại, tối đa 10 lần thử

Chọn một chính sách cho mỗi gói đăng ký. Mọi lần thử đều được ghi lại với mã trạng thái, nội dung phản hồi và thời gian.

linear

Tuyến tính

Tăng trưởng cố định: 30s, 60s, 90s, 120s, 150s…

none

Không có

Gửi và quên. Không thử lại ngay cả khi lỗi 5xx. Hữu ích cho các hook kiểm tra.

Thành công HTTP 2xx trong khung thời gian chờ của bạn
Số lần thử lại tối đa 0–10 lần thử (mặc định là 5)
Thời gian chờ 1.000–30.000 ms mỗi lần thử (mặc định 10.000)
Nhật ký phân phối Mọi lần thử đều được lưu trữ trong webhook_deliveries để kiểm toán
API Quản lý

9 điểm cuối dưới /latest/webhooks/

CRUD đầy đủ cho các gói đăng ký, nhật ký phân phối, gói đăng ký công việc một lần và điểm cuối kiểm tra — tất cả đều dùng OAuth2 Bearer, sẵn sàng MCP.

POST /webhooks/subscribe Tạo gói đăng ký mới (không giới hạn mỗi tài khoản) po_webhooks_subscribe
GET /webhooks/list Liệt kê tất cả các gói đăng ký của tài khoản po_webhooks_list
POST /webhooks/update Cập nhật gói đăng ký hiện có po_webhooks_update
POST /webhooks/delete Xóa mềm gói đăng ký (nhật ký phân phối được giữ lại) po_webhooks_delete
GET /webhooks/deliveries Truy xuất nhật ký phân phối với bộ lọc (loại_sự_kiện, chỉ_thành_công) po_webhooks_deliveries
POST /webhooks/test Gửi sự kiện test.ping để xác minh phân phối po_webhooks_test
POST /webhooks/subscribe-job Webhook một lần cho một job_id cụ thể po_webhooks_subscribe_job
GET /webhooks/job-subscriptions Liệt kê các gói đăng ký phạm vi công việc po_webhooks_job_subscriptions
GET /webhooks/info Các sự kiện khả dụng, điểm cuối, chính sách thử lại, thông tin chữ ký po_webhooks_info
Bảo mật doanh nghiệp

Được củng cố bởi thiết kế

HMAC-SHA256

Mọi tải trọng được ký bằng khóa bí mật của bạn. Bắt buộc so sánh thời gian không đổi.

Bảo vệ SSRF

IP riêng/nội bộ, localhost và các điểm cuối siêu dữ liệu đám mây bị chặn tại lúc đăng ký và phân phối.

An toàn trước tái liên kết DNS

IP được xác thực lại tại thời điểm phân phối, ghim qua CURLOPT_RESOLVE.

Ưu tiên mạnh mẽ HTTPS

Chấp nhận http và https. Khuyến nghị HTTPS cho môi trường sản xuất.

Tính lũy đẳng Event-ID

Mọi lần phân phối mang một X-PaperOffice-Event-ID duy nhất. Khử trùng lặp ở phía bạn.

Nhật ký kiểm toán đầy đủ

Tất cả các lần thử được ghi lại: mã trạng thái, nội dung phản hồi, thời gian, thông báo lỗi.

Giới hạn

Gói đăng ký không giới hạn, hành vi phân phối hoàn toàn có thể cấu hình

Gói đăng ký / tài khoản
Gói đăng ký công việc đang hoạt động
10.000 ms
Thời gian chờ mặc định
5
Số lần thử lại tối đa mặc định

Có sẵn trên tất cả các gói. Thanh toán theo mức sử dụng: 1 tín dụng cho mỗi lần phân phối thành công (HTTP 2xx). Các lần thử lại, sự kiện kiểm tra và phân phối thất bại đều miễn phí.

Bắt đầu ngay

Webhook đầu tiên của bạn trong 60 giây

Tạo một điểm cuối, đăng ký qua API, kích hoạt sự kiện kiểm tra. Thế là xong.

HMAC-SHA256 Thời gian chờ theo cấp số nhân Nhật ký kiểm toán đầy đủ