אימות
כל בקשה נושאת מפתח API כ-bearer token. צרו מפתחות בהגדרות ← מפתחים; המפתח המלא מוצג פעם אחת, ביצירה, ונשמר אצלנו כגיבוב בלבד.
curl https://wivly.me/api/v1/passes \
-H "Authorization: Bearer wivly_..." \
-H "Content-Type: application/json" \
-d '{"templateId":"tpl_123","customer":{"name":"Marco"}}'הרשאות מפתח
לכל מפתח יש בדיוק הרשאה אחת. בחרו את הצרה ביותר שעושה את העבודה.
FULLISSUE_ONLYREAD_ONLYמגבלות קצב
60 בקשות לדקה לכל מפתח. מעבר לזה ה-API מחזיר 429 והבקשה אינה מעובדת — נסו שוב אחרי גבול הדקה הבא ולא מיד.
Endpoints
כל הנתיבים יחסיים ל-https://wivly.me/api/v1 ומחזירים JSON.
/passesIssue a pass
הרשאות: FULL, ISSUE_ONLY
/passes/{serial}Read pass state
הרשאות: Any
/passes/{serial}Stamp or redeem
הרשאות: FULL
/passes/{serial}/notifySend a lock-screen message
הרשאות: FULL
/eventsExport analytics events
הרשאות: Any
/analytics/venuesCross-venue rollups
הרשאות: Any
/webhooksList webhooks
הרשאות: Any
/webhooksRegister a webhook
הרשאות: FULL
/webhooks/{id}Delete a webhook
הרשאות: FULL
Webhooks
רשמו כתובת ו-Wivly תשלח אליה כשמשהו קורה. משלוחים נשלחים שוב במקרה של כישלון.
אירועים
pass.addedpass.removedpass.scannedreward.unlockedreward.redeemedprepaid.soldprepaid.debitedprepaid.low_balanceprepaid.spentאימות משלוח
כל בקשה נושאת כותרת x-wivly-signature: HMAC-SHA256 של גוף הבקשה הגולמי, עם סוד ה-webhook כמפתח. השוו מול הבייטים הגולמיים לפני פענוח, והשתמשו בהשוואה בזמן קבוע.
import { createHmac, timingSafeEqual } from "node:crypto";
const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
const received = req.headers["x-wivly-signature"];
const ok =
received.length === expected.length &&
timingSafeEqual(Buffer.from(expected), Buffer.from(received));אידמפוטנטיות
לכל משלוח יש id יציב בגוף, לצד apiVersion "2026-01-01". ניסיון חוזר משתמש באותו id, אז שמרו אותו והתעלמו ממזהים שכבר טיפלתם בהם.
שגיאות
שגיאות מחזירות גוף JSON עם הודעה, וקוד היכן שהוא מועיל.
401403404429OpenAPI
המפרט הקריא-מכונה, ל-Postman, Swagger, Stoplight או יצירת קוד. ציבורי וללא אימות: הוא מתאר את המשטח, לא נתונים.
לפתוח את מפרט ה-OpenAPI ←