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

סקירת API של מסעות

ניהול מסעות - אוטומציות מרובות שלבים שנבנות בבונה המסעות החזותי - באמצעות REST API.

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

הנתיב הוא /journeys

נקודות הקצה של המסעות נמצאות תחת הנתיב /journeys - שם משאב ה־API של Canvas הוא מסע. canvasId ומזהה המסע מתייחסים לאותו מזהה.

אימות

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

Authorization: Bearer jry_live_your_api_key_here
Content-Type: application/json

ההרשאות הנדרשות לפי קבוצת נקודות קצה:

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

רשימת מסעות

GET /journeys

פרמטרי שאילתה

פרמטרסוגברירת מחדלתיאור
statusstring-מסנן לפי סטטוס
tagsstring-מסנן לפי תגיות (מופרדות בפסיקים)
qstring-חיפוש טקסט חופשי
createdBy / editedBystring-מסנן לפי היוצר או העורך האחרון (מזהי משתמשים מופרדים בפסיקים)
pagenumber1מספר עמוד
limitnumber-תוצאות לעמוד (לכל היותר 100)

דוגמת בקשה

curl -X GET "https://api-eu1.joryio.com/journeys?status=active&limit=20" \
-H "Authorization: Bearer jry_live_your_api_key"

תגובה

{
"data": [
{ "id": "3c9d2f1a-5e8b-4a7c-9f0d-1b2a3c4d5e6f", "name": "Welcome journey", "status": "active" }
],
"pagination": {
"total": 8,
"page": 1,
"limit": 20,
"offset": 0,
"totalPages": 1,
"hasMore": false
}
}

יצירת מסע

POST /journeys

גוף הבקשה

שדהסוגחובהתיאור
namestringכןשם המסע (עד 255 תווים)
descriptionstringלאתיאור (עד 1000 תווים)
nodesarrayלאצומתי הגרף (עד 500). טיוטה שנוצרה באשף יכולה להתחיל ריקה
edgesarrayלאקשתות הגרף (עד 1000)
entryTriggerobjectלאאיך משתמשים נכנסים - ראו בהמשך
variantsarrayלאוריאנטים של המסע כולו (A/B/n) - ראו בהמשך
settingsobjectלאtimezone, quietTime, conversionTracking, reEntryPolicy, personalizedVariants והתצורה שלו
sendTypestringלאimmediate, scheduled, recurring או trigger
scheduledAtstringלאתאריך ISO 8601 עבור sendType: "scheduled"
recurringScheduleobjectלאfrequency‏ (daily/weekly/monthly/custom), cron, dayOfWeek, dayOfMonth, timeOfDay, timezone, endDate, maxOccurrences
targetingobjectלאקהל היעד למסעות מתוזמנים או מיידיים: userIds, filterGroups, excludeFilterGroups, filterOperator, subscriptionPreference
exitCriteriaobjectלאאותו מבנה מסננים כמו targeting; משתמשים פעילים שתואמים - יוצאים מהמסע
tagsstring[]לאתגיות

מבנה צומת

לכל פריט ב־nodes יש id, ‏type, ‏config (בהתאם לסוג הצומת) ו־position אופציונלי (x ו־y עבור העורך). אלה ערכי type החוקיים:

trigger, delay, condition, behavior_split, context, message,
email, sms, push, in_app, in_app_message, whatsapp, whatsapp_message,
webhook, update_user, connector, experiment, ai_decision,
wallet, update_wallet

לכל פריט ב־edges יש id, ‏source, ‏target, ולפי הצורך גם sourceHandle, ‏targetHandle או label. השדה sourceHandle בוחר את יציאת המקור בצמתים בעלי כמה יציאות (קבוצות של צומת הסתעפות, או did ו־timed_out בפיצול לפי התנהגות).

טריגר כניסה

ל־entryTrigger יש type ו־config שתלוי בסוג. אלה הסוגים החוקיים: event, segment, api, entity_change, whatsapp_inbound, sms_inbound, viber_inbound, attribute_change, subscription_status, schedule.

וריאנטים של המסע כולו

כל פריט ב־variants כולל id, ‏name, ‏percentage (בין 0 ל־100; סכום כל הווריאנטים חייב להיות 100), ‏isControl (וריאנט ביקורת הוא קבוצת ביקורת נמדדת שאינה עוברת בתהליך) ו־triggerNodeId (צומת הטריגר שממנו מתחיל וריאנט הטיפול). ראו אנליטיקת מסעות להסבר על אופן הדיווח של תוצאות הווריאנטים.

דוגמת בקשה

curl -X POST https://api-eu1.joryio.com/journeys \
-H "Authorization: Bearer jry_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Welcome journey",
"sendType": "trigger",
"entryTrigger": {
"type": "event",
"config": { "eventName": "signed_up" }
},
"nodes": [
{ "id": "n1", "type": "trigger", "config": { "type": "event", "eventName": "signed_up" } },
{ "id": "n2", "type": "delay", "config": { "delayType": "duration", "value": 1, "unit": "days" } },
{ "id": "n3", "type": "email", "config": { "subject": "Welcome!", "html": "<p>Hi {{ user.firstName }}</p>" } }
],
"edges": [
{ "id": "e1", "source": "n1", "target": "n2" },
{ "id": "e2", "source": "n2", "target": "n3" }
]
}'

הפעולה מחזירה את אובייקט המסע שנוצר (בסטטוס draft).


שליפת מסע

GET /journeys/:canvasId
curl -X GET https://api-eu1.joryio.com/journeys/3c9d2f1a-5e8b-4a7c-9f0d-1b2a3c4d5e6f \
-H "Authorization: Bearer jry_live_your_api_key"

הפעולה מחזירה את המסע המלא, כולל nodes, ‏edges, ‏entryTrigger, ‏variants ו־settings.


עדכון מסע

PUT /journeys/:canvasId

הגוף מקבל את אותם שדות כמו יצירת מסע - כולם אופציונליים; רק השדות שנשלחו מתעדכנים.

curl -X PUT https://api-eu1.joryio.com/journeys/3c9d2f1a-5e8b-4a7c-9f0d-1b2a3c4d5e6f \
-H "Authorization: Bearer jry_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "name": "Welcome journey v2" }'

מחיקת מסע

DELETE /journeys/:canvasId

הפעולה מחזירה 204 No Content. עדיף להעביר לארכיון מסעות שיש להם היסטוריית ריצה (POST /journeys/:canvasId/archive); הארכוב עוצר צירוף ושליחה ושומר את האנליטיקה.


נקודות קצה של סטטוס

שיטהנתיבהרשאהתיאור
POST/journeys/:canvasId/activatecanvas:activateהפעלה - משתמשים יכולים להתחיל להיכנס
POST/journeys/:canvasId/pausecanvas:activateהשהיה - עוצרת כניסות חדשות והתקדמות
POST/journeys/:canvasId/resumecanvas:activateחידוש מסע מושהה
POST/journeys/:canvasId/archivecanvas:writeארכוב (עוצר צירוף ושליחה ושומר את ההיסטוריה)
POST/journeys/:canvasId/unarchivecanvas:writeשחזור למצב לא-רץ; יש להפעיל במפורש כדי להמשיך
POST/journeys/:canvasId/publishcanvas:activateפרסום הטיוטה הנוכחית כגרסה חדשה. גוף: אופציונלית changeSummary, ‏userTransition‏ (keep_on_version / force_exit / migrate_to_new)
POST/journeys/:canvasId/reruncanvas:activateריצה חוזרת של הגרסה המפורסמת ללא יצירת גרסה חדשה
curl -X POST https://api-eu1.joryio.com/journeys/3c9d2f1a-5e8b-4a7c-9f0d-1b2a3c4d5e6f/activate \
-H "Authorization: Bearer jry_live_your_api_key"

הכנסת משתמש (טריגר API)

רישום משתמש ספציפי למסע - נתיב הכניסה עבור entryTrigger.type: "api".

POST /journeys/:canvasId/enter/:userId

גוף אופציונלי: context - אובייקט JSON שזמין לריצה (אפשר לקרוא אותו בהודעות ובתנאים כמשתני הקשר של המסע).

curl -X POST https://api-eu1.joryio.com/journeys/3c9d2f1a-5e8b-4a7c-9f0d-1b2a3c4d5e6f/enter/user_123 \
-H "Authorization: Bearer jry_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "context": { "source": "crm-sync", "priority": "high" } }'

ריצות ואנליטיקה

שיטהנתיבתיאור
GET/journeys/:canvasId/executionsרשימת ריצות (status, ‏limit עד 100, offset)
GET/journeys/:canvasId/executions/:executionIdשליפת ריצה בודדת
GET/journeys/:canvasId/executions/:executionId/contextמשתני ההקשר של הריצה עם סוגים משוערים
GET/journeys/:canvasId/statsסטטיסטיקות ברמת המסע (startDate, endDate)
GET/journeys/:canvasId/node-analyticsאנליטיקה לפי צומת (startDate, endDate)
GET/journeys/:canvasId/variant-statsביצועי וריאנטים של המסע כולו (A/B/n + ביקורת)
GET/journeys/:canvasId/experiments/:nodeId/statsסטטיסטיקות צומת ניסוי עם בדיקת מובהקות
POST/journeys/:canvasId/experiments/:nodeId/declare-winnerהכרזת מנצח (גוף: pathId)
POST/journeys/:canvasId/experiments/:nodeId/resetאיפוס ניסוי למצב איסוף
GET/journeys/:canvasId/personalization-statusסטטוס שלב הווריאנטים המותאמים אישית

נקודות קצה נוספות

שיטהנתיבתיאור
PUT/journeys/:canvasId/variantsהגדרת וריאנטים של המסע כולו (גוף: מערך variants)
GET/journeys/:canvasId/versionsרשימת גרסאות
GET/journeys/:canvasId/versions/compare?v1=&v2=השוואת שתי גרסאות
GET/journeys/:canvasId/versions/compare-draftהשוואת הטיוטה הנוכחית לגרסה המפורסמת האחרונה
GET/journeys/:canvasId/versions/migration-previewבדיקת תאימות ריצות לפני פרסום עם הגירה
GET/journeys/:canvasId/versions/:versionIdשליפת גרסה
POST/journeys/:canvasId/versions/:versionId/rollbackשחזור לגרסה
GET/journeys/:canvasId/versions/:versionId/statsסטטיסטיקות ספציפיות לגרסה
GET/journeys/:canvasId/versions/:versionId/executionsריצות על גרסה ספציפית
GET/journeys/:canvasId/version-execution-countsספירת ריצות לפי גרסה
POST/journeys/:canvasId/versions/:versionId/migrateהגירה כפויה של ריצות תואמות לגרסה
GET/journeys/:canvasId/historyהיסטוריית יומן ביקורת (limit, עד 200)
POST/journeys/bulk-delete / bulk-duplicate / bulk-archive / bulk-unarchiveפעולות באצווה; גוף { "ids": [...] }, מחזיר { succeeded, failed }
POST/journeys/bulk-tagתיוג באצווה; גוף { "ids": [...], "tags": [...] }
POST/journeys/webhook/testהפעלה חד־פעמית של תצורת צומת Webhook מול הקשר לדוגמה (כפוף להגבלת קצב)
POST/journeys/preview-context-valueהפקת ביטוי Liquid מול הקשר לדוגמה
POST/journeys/preview-user-updatesהרצה מדומה של שורות צומת Update User מול משתמש לדוגמה
POST/journeys/:canvasId/nodes/:nodeId/send-test-email / send-test-sms / send-test-whatsapp / send-test-pushשליחת בדיקה מצומת הודעה
POST/journeys/:canvasId/cleanup-stuck-executionsניקוי ריצות תקועות
GET/journeys/:canvasId/executions/:executionId/rendered-message/:nodeIdההודעה שהופקה עבור שילוב של ריצה וצומת

תגובות שגיאה

כל השגיאות משתמשות במבנה הסטנדרטי - ראו תגובת שגיאה בסקירת ה־API לפרטים על המבנה, קודי המצב והתנהגות הגבלת הקצב.

{
"statusCode": 404,
"message": "Canvas with ID 8f14e45f-ceea-467f-a11d-2f4b6a1c9e3b not found",
"timestamp": "2026-07-12T09:00:00.000Z",
"path": "/journeys/8f14e45f-ceea-467f-a11d-2f4b6a1c9e3b"
}

קישורים קשורים