Webhooks אירועים בזמן אמת
קבל התראות בזמן אמת עבור כל האירועים. מסמכים מעובדים, OCR הושלם, סיווג בוצע.
{
"event_type": "document.processed",
"event_id": "a3b7f9c1d4e8b2a6",
"timestamp": "2026-04-17T14:23:11Z",
"subscription_id": 42,
"data": { "pofid": "doc_01HZY8K3…" }
} מהימן על ידי חברות מובילות ברחבי העולם
OEM PARTNERSHIP
Sole official DMS partner for QNAP and ASUSTOR.
Dedicated landing pages, direct integration, data stays on your NAS.
QNAP
Sole official DMS partner for QNAP NAS — documents stay on your device, AI runs through PaperOffice.
MoreASUSTOR
Listed by ASUSTOR as “the DMS for ASUSTOR NAS” — sole official partner.
More22 סוגי אירועים, מקובצים לפי ישות
הירשם לאירועים בודדים או השתמש בתו הכללי * עבור הכל.
מסמכים
14-
מסמך.הועלהמסמך חדש הועלה לסביבת עבודה -
מסמך.נוצרכינוי עבור document.uploaded (תאימות) -
מסמך.עובדOCR/AI-IDP-Pipeline erfolgreich abgeschlossen -
מסמך.נערךמטא-נתונים, תגיות או תוכן עודכנו -
מסמך נמחקמסמך הועבר לאשפה -
מסמך שוחזרמסמך שוחזר מהאשפה -
document.movedמסמך הועבר בין סביבות עבודה -
גרסת מסמך נוצרהגרסה חדשה נוספה למסמך קיים -
מחזור חיים של מסמך השתנהסטטוס שמירה / ארכיון שונה -
הערה נוספה למסמךהערה פורסמה על מסמך -
פתק נוסף למסמךהערה פנימית צורפה -
תגית נוספה למסמךתגית הוקצתה למסמך -
הוטל עיכוב משפטי על מסמךהחזקה משפטית הופעלה (בלתי ניתנת לשינוי) -
הוסר עיכוב משפטי ממסמךהחזקה משפטית שוחררה
משימות
3-
משימה הושלמהמשימה אסינכרונית הסתיימה בהצלחה -
משימה נכשלהמשימה אסינכרונית נכשלה סופית -
התקדמות משימהעדכון התקדמות במהלך משימות ארוכות טווח
Workspaces
2-
סביבת עבודה שותפהWorkspace משותף עם משתמש או צוות -
שיתוף סביבת עבודה בוטלהגישה ל-Workspace בוטלה
מטלות
3-
משימה נוצרהמטלה חדשה נוצרה -
משימה הושלמהמטלה סומנה כהושלמה -
משימה בפיגורמטלה עברה את תאריך היעד שלה
Webhooks בפעולה
התבוננו כיצד PaperOffice Webhooks עובדים במציאות — בווידאו.
כל מסירה עוקבת אחר אותו סכמה
גוף JSON צפוי, חמש כותרות HTTP חתומות, חותמות זמן ISO-8601 UTC.
{
"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
}
}
} Content-Type application/json תמיד JSON, מקודד UTF-8 User-Agent PaperOffice-Webhook/1.0 מזהה קבוע לרשימות הרשאה של חומת אש X-PaperOffice-Event document.processed סוג האירוע הנמסר X-PaperOffice-Event-ID a3b7f9c1… מזהה ייחודי בן 128 סיביות. השתמש עבור אידמפוטנטיות. X-PaperOffice-Subscription-ID 42 מזהה של המנוי המקבל את האירוע X-PaperOffice-Signature sha256=… HMAC-SHA256 של הגוף הגולמי, מקודד הקסדצימלי אמת כל מסירה עם HMAC-SHA256
חשב HMAC-SHA256 על גוף הבקשה הגולמי באמצעות הסוד המשותף שלך, ולאחר מכן השווה מול X-PaperOffice-Signature באמצעות השוואת זמן קבוע (hash_equals, crypto.timingSafeEqual).
import crypto from 'crypto';
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');
}); שלוש אסטרטגיות ניסיון חוזר, עד 10 ניסיונות
בחר מדיניות לכל מנוי. כל ניסיון נרשם עם קוד סטטוס, גוף תגובה ותזמון.
exponential מעריכי (ברירת מחדל)
ההמתנה מוכפלת לאחר כל ניסיון: 30 שניות, 60 שניות, 120 שניות, 240 שניות, 480 שניות…
linear ליניארי
גידול קבוע: 30 שניות, 60 שניות, 90 שניות, 120 שניות, 150 שניות…
none ללא
שלח ושכח. ללא ניסיונות חוזרים גם במקרה של שגיאות 5xx. שימושי עבור הוקים לבדיקה.
9 נקודות קצה תחת /latest/webhooks/
CRUD מלא עבור מנויים, יומני מסירה, מנויים חד-פעמיים למשימות ונקודת קצה לבדיקה — כולם עם OAuth2 Bearer, כולם מוכנים ל-MCP.
/webhooks/subscribe יצירת מנוי חדש (ללא הגבלה לכל חשבון) po_webhooks_subscribe /webhooks/list הצגת כל המנויים של החשבון po_webhooks_list /webhooks/update עדכון מנוי קיים po_webhooks_update /webhooks/delete מחיקה רכה (Soft-delete) של מנוי (יומן המסירה נשמר) po_webhooks_delete /webhooks/deliveries אחזור יומן מסירה עם מסננים (event_type, success_only) po_webhooks_deliveries /webhooks/test שליחת אירוע test.ping לאימות המסירה po_webhooks_test /webhooks/subscribe-job Webhook חד-פעמי עבור job_id ספציפי po_webhooks_subscribe_job /webhooks/job-subscriptions הצגת מנויים המוגבלים למשימה (job-scoped) po_webhooks_job_subscriptions /webhooks/info אירועים זמינים, נקודות קצה, מדיניות ניסיונות חוזרים, מידע על חתימה po_webhooks_info מחוזק מתוך תכנון
HMAC-SHA256
כל מטען (payload) חתום באמצעות הסוד שלך. השוואה בזמן קבוע היא חובה.
הגנה מפני SSRF
כתובות IP פרטיות / פנימיות, localhost ונקודות קצה של מטא-דאטה בענן חסומות בעת ההרשמה והשליחה.
בטוח מפני DNS Rebinding
ה-IP מאומת מחדש בזמן השליחה, מקובע באמצעות CURLOPT_RESOLVE.
העדפה חזקה ל-HTTPS
http ו-https מתקבלים. מומלץ להשתמש ב-HTTPS בסביבת ייצור.
אידמפוטנטיות של Event-ID
כל מסירה נושאת X-PaperOffice-Event-ID ייחודי. יש לבצע Dedupe בצד שלך.
שביל ביקורת מלא
כל הניסיונות מתועדים: קוד סטטוס, גוף התגובה, תזמון, הודעת שגיאה.
מנויים ללא הגבלה, התנהגות המסירה ניתנת להגדרה מלאה
זמין בכל החבילות. תשלום לפי שימוש: 1 קרדיט לכל מסירה מוצלחת (HTTP 2xx). ניסיונות חוזרים, אירועי בדיקה ומסירות שנכשלו הם בחינם.
קבלת אירועים?
הגדר את ה-webhooks שלך.