Nhảy đến nội dung
Tổng quan Tổng quan Tin tức Tin tức
Chia sẻ

Webhooks & Sự kiện

Sự kiện thời gian thực. Phân phối có chữ ký HMAC.

PaperOffice gọi điểm cuối của bạn ngay khi tài liệu, công việc, không gian làm việc hoặc nhiệm vụ thay đổi. Không cần polling.

22 loại sự kiện, chữ ký HMAC-SHA256, ba chiến lược thử lại và nhật ký phân phối cho mỗi lần thử.

HMAC-SHA256 trong mọi lần phân phối Tối đa 10 lần lặp lại (mặc định 5) Idempotent theo ID sự kiện

Sự kiện có sẵn

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 lên tài liệu mới vào một không gian làm việc
  • document.created Bí danh cho document.uploaded (tương thích)
  • document.processed Hoàn tất thành công pipeline OCR/AI-IDP
  • document.edited Tài liệu đã được chỉnh sửa: cập nhật siêu dữ liệu, thẻ hoặc nội dung
  • document.deleted Tài liệu đã được chuyển vào thùng rác
  • document.restored Khôi phục tài liệu từ thùng rác
  • document.moved Chuyển tài liệu giữa các không gian làm việc
  • document.version_created Phiên bản mới của một tài liệu hiện có
  • document.lifecycle_changed Trạng thái lưu trữ/lưu trữ lâu dài đã thay đổi
  • document.comment_added Bình luận về một tài liệu được tạo
  • document.note_added Ghi chú nội bộ được đính kèm
  • document.tag_added Thẻ được gán cho một tài liệu
  • document.legal_hold_placed Legal Hold đã kích hoạt (không thể thay đổi)
  • document.legal_hold_released Legal Hold đã hủy bỏ

Công việc

3
  • job.completed Công việc bất đồng bộ hoàn thành thành công
  • job.failed Công việc bất đồng bộ thất bại vĩnh viễn
  • job.progress Cập nhật tiến độ cho các công việc dài

Workspaces

2
  • workspace.shared Đã chia sẻ không gian làm việc với người dùng hoặc nhóm
  • workspace.unshared Đã thu hồi quyền truy cập vào không gian làm việc

Nhiệm vụ

3
  • task.created Đã tạo nhiệm vụ mới
  • task.completed Đánh dấu nhiệm vụ hoàn thành
  • task.overdue Nhiệm vụ đã quá hạn

Dữ liệu tải xuống và tiêu đề

Mỗi lần gửi đều tuân theo cùng một mẫu

Có thể dự đoán được thân JSON, tiêu đề HTTP cố định, dấu thời gian UTC ISO-8601.

Thân yêu cầu

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

Tiêu đề Giá trị ví dụ Ý nghĩa
Content-Type application/json Luôn là JSON, mã hóa UTF-8
User-Agent PaperOffice-Webhook/1.0 Mã đị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 được phân phối
X-PaperOffice-Event-ID a3b7f9c1… ID duy nhất 128-bit. Sử dụng làm khóa bất biến.
X-PaperOffice-Subscription-ID 42 ID của đăng ký nhận sự kiện
X-PaperOffice-Signature sha256=… HMAC-SHA256 của nội dung thô, mã hóa hex
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  }'

Xác minh chữ ký

Xác minh mọi lần gửi bằng HMAC-SHA256

Tính HMAC-SHA256 trên phần thân yêu cầu thô với khóa bí mật chung của bạn và so sánh kết quả với X-PaperOffice-Signature — bắt buộc sử dụng thời gian chạy không đổi.

  • So sánh trong thời gian chạy không đổi

    hash_equals, hmac.compare_digest hoặc crypto.timingSafeEqual: Việc so sánh không được tiết lộ sự khác biệt về thời gian chạy.

  • Ký thân thư Rohen Body

    Chữ ký áp dụng cho thân yêu cầu không thay đổi. Chỉ phân tích cú pháp JSON sau khi xác minh, nếu không băm sẽ bị lệch.

  • Đăng ký theo API

    POST /latest/webhooks/subscribe với name, url và events. Nếu secret để trống, PaperOffice sẽ tạo và trả về một lần duy nhất.

Thử lại và Giao hàng

Ba chiến lược thử lại, lên đến 10 lần lặp lại

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

  • Mặc định exponential

    Theo cấp số nhân (Mặc định)

    Khoảng cách giữa các lần thử lại tăng gấp đôi sau mỗi lần thất bại.

  • linear

    Tuyến tính

    Khoảng cách giữa các lần thử lại tăng theo một bước cố định.

  • none

    Không có

    Không lặp lại, kể cả với mã lỗi 5xx (gửi và quên). Hữu ích cho các hook kiểm tra.

  • Thành công HTTP 2xx trong khoảng thời gian timeout
  • Số lần lặp lại tối đa Tối đa 10 lần lặp lại (mặc định là 5)
  • Quá thời gian chờ 1.000–30.000 ms mỗi lần thử (mặc định 10.000)
  • Nhật ký giao hàng Mỗi lần thử đều được ghi lại; nhật ký vẫn được giữ lại ngay cả sau khi xóa đăng ký.

Quản lý-API

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

Tạo, liệt kê, cập nhật và xóa đăng ký — bao gồm một điểm cuối thử nghiệm. Mọi yêu cầu đều mang theo mã thông báo Bearer.

  • POST /webhooks/subscribe Tạo đăng ký; tải trọng được ký bằng HMAC-SHA256 Công cụ MCPpo-webhooks-subscribe
  • GET /webhooks/list Liệt kê tất cả đăng ký webhook của tài khoản Công cụ MCPpo-webhooks-list
  • POST /webhooks/update Cập nhật URL, sự kiện, tiêu đề, chính sách thử lại hoặc trạng thái hoạt động Công cụ MCPpo-webhooks-update
  • POST /webhooks/delete Hủy đăng ký; nhật ký giao hàng vẫn được giữ lại Công cụ MCPpo-webhooks-delete
  • POST /webhooks/test Gửi sự kiện thử nghiệm đến một đăng ký và kiểm tra việc giao hàng Công cụ MCPpo-webhooks-test

Bảo mật

Được tăng cường từ gốc

Sáu cơ chế kích hoạt trong mọi lần giao hàng — phía PaperOffice và phía bạn.

  • HMAC-SHA256

    Mỗi lần giao hàng được ký bằng Bí mật của bạn. Việc so sánh bắt buộc phải diễn ra trong thời gian không đổi.

  • Bảo vệ SSRF

    Các địa chỉ IP riêng và nội bộ, localhost và các điểm cuối metadata đám mây bị chặn khi đăng ký và khi dispatch.

  • An toàn trước DNS Rebinding

    IP được xác minh lại khi dispatch và được ghim bằng CURLOPT_RESOLVE.

  • Khuyến nghị HTTPS

    Cả http và https đều được chấp nhận. Đối với môi trường sản xuất, chúng tôi khuyến nghị sử dụng HTTPS.

  • Tính bất biến qua Event-ID

    Mỗi lần gửi kèm theo một X-PaperOffice-Event-ID duy nhất. Vui lòng khử trùng lặp ở phía bạn.

  • Nhật ký giao hàng đầy đủ

    Tất cả các nỗ lực đều được ghi lại: mã trạng thái, response-body, đo thời gian, thông báo lỗi.

Giới hạn

Có thể cấu hình hành vi giao hàng theo từng đăng ký

Đặt tất cả các giá trị khi tạo hoặc sau đó qua /webhooks/update — theo từng đăng ký, không phải theo tài khoản.

  • 0–10 Số lần lặp lại mỗi lần giao (mặc định 5)
  • 1,000–30,000 ms Thời gian chờ mỗi lần thử (mặc định 10.000)
  • 3 Chính sách thử lại: none, linear, exponential
  • HMAC-SHA256 Chữ ký trong mỗi lần giao

Webhooks khả dụng từ gói Professional. Gói nào phù hợp với thiết lập của bạn được hiển thị trong bảng giá.

Video

Webhooks hoạt động thực tế

Xem cách PaperOffice Webhooks hoạt động trong thực tế — qua video.

Webhooks hoạt động thực tế

Câu hỏi

Câu hỏi thường gặp về Webhooks

Làm thế nào để xác minh việc phân phối?

Tính toán HMAC-SHA256 trên phần thân yêu cầu thô bằng cách sử dụng bí mật của gói đăng ký của bạn và so sánh kết quả với tiêu đề X-PaperOffice-Signature (định dạng sha256=<hex>) trong thời gian không đổi. Nếu chữ ký không khớp, hãy trả về HTTP 401 và không xử lý phần thân yêu cầu.

Bí mật đến từ đâu?

Khi tạo gói đăng ký qua POST /latest/webhooks/subscribe. Để trống trường secret, PaperOffice sẽ tạo một bí mật và trả về duy nhất trong phản hồi. Bạn có thể thay thế nó bất cứ lúc nào qua POST /latest/webhooks/update.

Điều gì xảy ra nếu điểm cuối của tôi không phản hồi?

Mỗi phản hồi không nằm trong khoảng HTTP 2xx hoặc hết thời gian chờ đều được tính là một lần thử thất bại. Tùy thuộc vào chính sách thử lại (theo cấp số nhân, tuyến tính, không có), PaperOffice sẽ tự động gửi lại thông báo cho đến khi đạt số lần thử lại đã cài đặt (0–10, mặc định là 5). Mỗi lần thử đều được ghi nhận trong nhật ký phân phối với mã trạng thái, nội dung phản hồi và thời gian xử lý.

Cùng một thông báo có thể được gửi đến hai lần không?

Có, điều này có thể xảy ra khi có thử lại sau khi hết thời gian chờ. Do đó, hãy sử dụng X-PaperOffice-Event-ID để loại bỏ trùng lặp: ID này là duy nhất cho mỗi sự kiện và phù hợp làm khóa bất biến (idempotency key) trong cơ sở dữ liệu của bạn.

Tôi có thể đăng ký những loại sự kiện nào?

22 loại sự kiện thuộc bốn nhóm: Tài liệu, Công việc, Không gian làm việc và Nhiệm vụ. Bạn có thể đăng ký từng sự kiện cụ thể hoặc dùng ký tự đại diện * để đăng ký tất cả. Sử dụng bộ lọc (ví dụ: workspace_id hoặc pofid) để thu hẹp phạm vi đăng ký.

Webhooks có trong gói nào?

Webhooks có sẵn từ gói Professional. Gói phù hợp với cấu hình của bạn được hiển thị trong bảng giá.

Quý vị muốn dùng thử PaperOffice ở đâu?

Máy tính và điện thoại thông minh đã được kết nối: Không gian làm việc trên máy, thu thập trên điện thoại.

Phiên bản dùng thử của bạn đã sẵn sàng

Bạn muốn bắt đầu ở đâu?

Không gian làm việc đầy đủ được tối ưu hóa cho máy tính. Phiên bản di động phù hợp để thu thập, kiểm tra và phê duyệt tài liệu.

app.paperoffice.ai

Bắt đầu trên máy tính

Chúng tôi sẽ gửi liên kết truy cập cá nhân của bạn đến địa chỉ email của bạn.

Đăng ký miễn phí Mở ứng dụng Ứng dụng PaperOffice Sản phẩm đầy đủ: web, máy tính và di động. Thu thập, tổ chức, tìm kiếm và làm việc trên tài liệu cùng nhóm. Cần tài khoản miễn phí Mở Playground Playground Thử các chức năng được chọn ngay — không đăng ký, với khóa API demo bị hạn chế. Không cần đăng ký, nhưng có khóa API demo bị hạn chế