דלג לתוכן הראשי

מפתחות API

כל קריאה ל־REST API של Joryio מאומתת באמצעות מפתח API. מפתחות משויכים לסביבת עבודה אחת, נושאים רשימת הרשאות מפורשת וניתן להגביל אותם לרשימת כתובות IP.

כל נקודות הקצה בעמוד זה יחסיות לכתובת הבסיס: https://api-eu1.joryio.com - ראו סקירת API.

יצירת מפתח

  1. פתחו את לוח הבקרה של Joryio ועברו אל Settings → API Keys.
  2. לחצו Create API Key.
  3. תנו למפתח שם ו(אופציונלי) תיאור שחברי הצוות יראו.
  4. הוסיפו, לפי הצורך, IP allowlist - רשימת טווחי CIDR או כתובות IP שמופרדים בפסיקים או ברווחים. השאירו את השדה ריק כדי לאפשר גישה מכל כתובת IP.
  5. סמנו את ההרשאות שהמפתח צריך. בחרו את הסט הקטן ביותר שעובד - ראו את קטלוג ההרשאות למטה.
  6. לחצו Create key.
הצגה חד־פעמית

הערך המלא של המפתח מוצג פעם אחת בלבד, מיד לאחר היצירה, ולעולם לא שוב. העתיקו אותו למנהל הסודות שלכם (1Password, Vault, AWS Secrets Manager וכו') לפני סגירת החלון. אם איבדתם אותו, מחקו את המפתח וצרו חדש - Joryio לא יכולה לשחזר את המקורי.

הפורמט של המפתח הוא jry_live_<random> למפתחות בסביבת ייצור ו־jry_test_<random> למפתחות בדיקה. ה־prefix הגלוי של המפתח (jry_live_abc123) מוצג ברשימת המפתחות בלוח הבקרה וביומני השרת, כך שתוכלו לזהות איזה מפתח ביצע כל פעולה בלי לחשוף את הערך המלא.

שימוש במפתח

שלחו את המפתח כטוקן Bearer בכותרת Authorization בכל בקשה:

GET /users/by-user-id/user_123
Host: api-eu1.joryio.com
Authorization: Bearer jry_live_98f31a72…
Content-Type: application/json

קטלוג הרשאות

הרשאות נכתבות בפורמט <resource>:<verb>. אלה הפעלים שבשימוש:

פועלמשמעותדוגמה
readהצגת רשימה או שליפת רשומות קיימותusers:read, campaigns:read
writeיצירה או עדכון רשומותusers:write, segments:write
sendהפעלת שליחהcampaigns:send
deleteמחיקה לצמיתות של רשומותusers:delete, campaigns:delete
trackשליחת אירועי אנליטיקהevents:track
activateהפעלה, השהיה או חידוש של תהליך עבודה פעילcanvas:activate
aliasחיבור/ניתוק מזהים חלופייםusers:alias
mergeמיזוג שני פרופילי משתמשusers:merge
exportייצוא רשומות בכמות גדולהusers:export

למטה הקטלוג הציבורי המלא - הוא מוחזר גם על ידי GET /api-keys/permissions:

Events (אירועים)

הרשאהמה היא מאפשרת
events:trackשליחת אירועים מותאמים מהשרתים שלכם או מה־SDK.
events:readשאילתה על אירועים שנרשמו.

Users (משתמשים)

הרשאהמה היא מאפשרת
users:readחיפוש פרופילי משתמשים ומאפיינים לפי ID.
users:writeיצירה או עדכון של מאפייני משתמש.
users:deleteהסרה לצמיתות של פרופילי משתמשים (GDPR / זכות למחיקה).
users:aliasחיבור או ניתוק של מזהים חיצוניים וכינויי אימייל למשתמש.
users:mergeמיזוג של שני פרופילי משתמש לאחד.
users:exportייצוא בכמות גדולה של פרופילי משתמשים לניתוח חיצוני.

Campaigns (קמפיינים)

הרשאהמה היא מאפשרת
campaigns:readהצגת קמפיינים וצפייה בתצורה שלהם.
campaigns:writeיצירה או עריכה של טיוטות קמפיין דרך ה־API.
campaigns:sendהפעלת שליחת קמפיין למשתמש או סגמנט ספציפי.
campaigns:deleteהסרה לצמיתות של קמפיינים מסביבת העבודה.

Segments (סגמנטים)

הרשאהמה היא מאפשרת
segments:readהצגת סגמנטים וצפייה במספר החברים בהם.
segments:writeיצירה או עדכון של הגדרות סגמנט.
segments:deleteמחיקה לצמיתות של סגמנטים והיסטוריה.

User Journeys (מסעות לקוח)

הרשאהמה היא מאפשרת
canvas:readרשימת מסעות לקוח ובדיקת גרף השלבים.
canvas:writeיצירה או עריכה של טיוטות מסע לקוח.
canvas:activateהתחלה, השהיה או חידוש של מסע לקוח פעיל.
canvas:deleteהסרה של מסעות לקוח והיסטוריה.

Templates (תבניות)

הרשאהמה היא מאפשרת
templates:readשליפת תוכן תבניות אימייל, SMS ו־push.
templates:writeיצירה או עריכה של תבניות הודעות לשימוש חוזר.
templates:deleteמחיקה לצמיתות של תבניות מ־Brand Studio.

Subscriptions (הרשמות)

הרשאהמה היא מאפשרת
subscriptions:readצפייה במצב ה־opt-in של משתמש בערוצים שונים.
subscriptions:writeרישום או ביטול רישום משתמשים לקבוצות וערוצים.

Apps & SDK Keys (אפליקציות ומפתחות SDK)

הרשאהמה היא מאפשרת
apps:readהצגת האפליקציות ומפתחות ה־SDK הרשומים בסביבת העבודה.
apps:writeהוספה, החלפה או הסרה של מפתחות SDK לאפליקציות מובייל ו־Web.

Asset Library (ספריית נכסים)

הרשאהמה היא מאפשרת
assets:readשליפת תמונות, פונטים ומדיה משותפת.
assets:writeהעלאה, שינוי שם או מחיקה של קבצים בספריית הנכסים.

Entities (ישויות)

הרשאהמה היא מאפשרת
entities:readשאילתה על רשומות ישות (מוצרים, מאמרים, מקומות…).
entities:writeיצירה או עדכון של רשומות ומאפייני ישות.

Analytics (אנליטיקה)

הרשאהמה היא מאפשרת
analytics:readשליפת מדדים מצטברים, משפכים ונתוני דוחות.

Deliverability (יכולת מסירה)

הרשאהמה היא מאפשרת
email_suppression:readבדיקת רשימת החסימה באימייל (החזרות, תלונות והוספות ידניות).
email_suppression:writeהוספת רשומות לרשימת החסימה באימייל או הסרתן.
sms_suppression:readבדיקת רשימת חסימת ה־SMS (תגובות STOP, כשלים).
sms_suppression:writeהוספה או הסרה של מספרי טלפון מרשימת חסימת ה־SMS.

Frequency Caps (מגבלות תדירות)

הרשאהמה היא מאפשרת
touching_rules:readבדיקת כללי הגבלת התדירות והספירות הנוכחיות שלהם.
touching_rules:writeיצירה, עריכה או הסרה של כללי הגבלת תדירות.

WhatsApp (וואטסאפ)

הרשאהמה היא מאפשרת
whatsapp:readקריאת התצורה של חשבון WhatsApp Business.
whatsapp:writeעדכון התצורה של חשבון WhatsApp Business.

AI Agents (סוכני AI)

הרשאהמה היא מאפשרת
ai_agents:readהצגת סוכני AI והתצורה שלהם.
ai_agents:writeיצירה או עריכה של סוכני AI והגדרות הספקים שלהם.

רשימת כתובות IP מורשות

ניתן להצמיד מפתח לרשימה קבועה של כתובות IP מקור. כשהרשימה ריקה, בקשות מכל IP מתקבלות (ברירת המחדל). כשיש לה ערכים, רק בקשות שכתובת המקור שלהן תואמת לפחות לרשומה אחת מתקבלות.

תחביר נתמך

  • כתובת IPv4 רגילה - 203.0.113.42
  • טווח CIDR של IPv4 - 10.0.0.0/24, 192.168.1.0/16
  • כתובת IPv6 - התאמה מדויקת בלבד (אין CIDR ל־IPv6 בשלב זה)

אפשר לשלב כמה ערכים באמצעות הפרדה בפסיקים בלוח הבקרה:

10.0.0.0/24, 203.0.113.42, 2001:db8::1

זיהוי כתובת המקור

כתובת הלקוח נפתרת מהכותרת המהימנה של רשת הקצה (שנכתבת מחדש בכל בקשה בקצה - ערך שנשלח על ידי הלקוח אינו נשמר), ואם היא חסרה נעשה שימוש בכתובת החיבור של שרת ה־proxy המהימן. הערך השמאלי ביותר של X-Forwarded-For, שבשליטת הלקוח, אינו בשימוש בכוונה - כך שאי אפשר לזייף את רשימת ה־IP. כתובות IPv6 שממופות מ־IPv4 (::ffff:203.0.113.42) מנורמלות לצורת ה־IPv4 שלהן לפני ההשוואה.

צורת תגובת דחייה

כשבקשה מגיעה מ־IP שלא ברשימה המותרת, ה־API מחזיר 401 Unauthorized עם:

{
"statusCode": 401,
"message": "Request IP is not allowed for this API key",
"timestamp": "2026-05-12T08:14:00.000Z",
"path": "/users"
}

הדחייה מתועדת בצד השרת עם ה־prefix של המפתח וכתובת ה־IP שנדחתה, כדי שתוכלו לערוך ביקורת.

נקודות קצה לניהול מפתחות

מפתחות מנוהלים דרך לוח הבקרה (Settings → API Keys) או דרך ה־API:

שיטהEndpointתיאור
GET/api-keys/permissionsרשימת כל ההרשאות הניתנות להענקה
POST/api-keysיצירת מפתח (?environment=live או test; גוף: name, description?, permissions[], ipAllowlist?, expiresAt?) - הערך המלא מוחזר פעם אחת
GET/api-keysהצגת המפתחות בסביבת העבודה
GET/api-keys/:apiKeyIdקבלת המטא־נתונים של מפתח
PUT/api-keys/:apiKeyIdעדכון שם, תיאור, הרשאות, רשימת IP או תפוגה
POST/api-keys/:apiKeyId/revokeהשבתת מפתח (מפסיק לאמת מיידית)
POST/api-keys/:apiKeyId/rotateיצירת ערך מפתח חדש עם אותן הרשאות - הערך החדש מוחזר פעם אחת
DELETE/api-keys/:apiKeyIdמחיקת מפתח לצמיתות (מחזיר 204)

קורא לעולם לא יכול להעניק למפתח הרשאות שאין לו בעצמו.

שדות תגובת רשימה

GET /api-keys מחזיר { "apiKeys": [...] }; לכל מפתח יש את המבנה הבא (הערך המלא של המפתח והגיבוב שלו לעולם אינם נחשפים):

{
"apiKeys": [
{
"id": "7c2e4f6a-1b3d-4e5f-8a9b-0c1d2e3f4a5b",
"name": "ServerSide Updates",
"description": "Used by our backend to send events.",
"keyPrefix": "jry_live_98f31a72",
"permissions": ["events:track", "users:write"],
"lastUsedAt": "2026-05-12T08:14:00.000Z",
"expiresAt": null,
"isActive": true,
"createdAt": "2026-02-19T12:00:00.000Z",
"updatedAt": "2026-02-19T12:00:00.000Z"
}
]
}

ה-ipAllowlist של המפתח נקבע ביצירה/עדכון; הוא נאכף על כל בקשה אך אינו נכלל בתגובת הרשימה.

שגיאות נפוצות

סטטוסהודעהמה לבדוק
401Invalid API key formatהכותרת חסרה, פגומה או אינה מתחילה ב־jry_.
401Invalid or expired API keyהמפתח בוטל, נמחק או ש־expiresAt שלו חלף.
401Request IP is not allowed for this API keyכתובת המקור לא תאמה לאף ערך - ראו רשימת כתובות IP מורשות.
403This API key does not have the required permissions: ...המפתח תקין, אך אין לו את ההרשאה שנדרשת לנקודת הקצה.
403ORG_HARD_SUSPENDED: organization is suspended. Read-only access only.הארגון הבעלים הושעה - פנו לתמיכה.

החלפת מפתח

קראו ל־POST /api-keys/:apiKeyId/rotate (או השתמשו בלוח הבקרה): המפתח מקבל ערך סודי חדש ו־keyPrefix חדש, המוחזרים פעם אחת בלבד בתגובה, תוך שמירה על השם, ההרשאות וה־ID. כל מערכת שעדיין משתמשת בערך הישן תתחיל להיכשל מיד, לכן הפיצו תחילה את הערך החדש בכל מקום אפשרי והשתמשו ב־keyPrefix ביומני הגישה כדי לאתר אינטגרציות שעדיין משתמשות במפתח הישן. להחלפה ללא השבתה, צרו מפתח שני בעל אותן הרשאות, העבירו אליו את המערכות הקוראות ולאחר מכן מחקו את המפתח הישן.