דלגו לתוכן

מדריך API

ה-API של East Agile Tracker מעוצב לסוכנים לא פחות מאשר לבני אדם. כל מה שאתם יכולים לעשות בממשק המשתמש, אתם יכולים לעשות דרך ה-API — וכמה דברים שממשק המשתמש לא חושף נמצאים שם גם הם.

מדריך זה מביא אתכם מאפס ל”כתיבת סקריפטים ל-backlog שלכם” בפחות מעשר דקות. לסימוכין המלא של נקודות הקצה, ראו מפרט API.

אתם מאמתים את עצמכם באמצעות מפתח API בכותרת X-TrackerToken. ישנם שני סוגים:

  • מפתחות משתמש (ea_user_…) — פועלים כ-אתם. צרו אותם ב-Account Settings → API Keys. השתמשו בהם לסקריפטים אישיים, כלי CLI, אינטגרציות.
  • מפתחות סוכן (ea_agent_…) — פועלים כ-סוכן בעל שם בפרויקט אחד. צרו אותם כבעלי פרויקט ב-Project Settings → Agents. השתמשו בהם לסוכני בינה מלאכותית — Claude Code, Codex, שלכם — שאמורים להשתתף בפרויקט כחברי צוות בעלי שם.

ההבדלים:

מפתח משתמשמפתח סוכן
היקףכל הפרויקטים שלכםפרויקט אחד ספציפי
זהות בשובל הביקורתשמכםשם הסוכן
תפקידהתפקיד שלכם בכל פרויקטנקבע ביצירת המפתח (viewer או member)
ביטולבטלו מפתח; אתם שומרים גישה דרך מפתחות/מפגשים אחריםבטלו מפתח; הסוכן מאבד גישה מיידית
הכי טוב עבוראוטומציה אישית, סקריפטיםסוכני בינה מלאכותית שאמורים להיות ניתנים להבחנה מכם בהיסטוריה

Authorization: Bearer … עובד גם הוא אם אתם מעדיפים סגנון כותרת זה.

קבלו את הפרויקטים שלכם:

Terminal window
curl https://eastagiletracker.com/api/v1/projects \
-H "X-TrackerToken: $TRACKER_TOKEN"

או עבור מפתח סוכן, רשמו את הפרויקט שאליו הוא מוגדר:

Terminal window
curl https://eastagiletracker.com/api/v1/projects \
-H "X-TrackerToken: ea_agent_xxxxx"

ה-API הוא JSON, REST- למחצה, בגרסה תחת /api/v1/. אותם מבנים לבני אדם ולסוכנים.

Terminal window
curl -X POST https://eastagiletracker.com/api/v1/projects \
-H "X-TrackerToken: $TRACKER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Onboarding redesign",
"description": "Q3 redesign of new-user onboarding",
"iteration_length_weeks": 1
}'

התגובה כוללת את project_id וכל ברירות המחדל שהשרת יישם (סולם הערכה, מצב סיום, וכו’).

Terminal window
curl -X POST https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/stories \
-H "X-TrackerToken: $TRACKER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Add OAuth login for Google",
"description": "## Acceptance\n- Google button on /login\n- Redirect back to original URL",
"story_type": "feature",
"estimate": 3,
"labels": ["auth"]
}'

העברת סיפור לאורך מחזור החיים

Section titled “העברת סיפור לאורך מחזור החיים”

נקודת הקצה של המעבר מאמתת את התנועה המבוקשת ומחזירה את המצבים הבאים המותרים במקרה של שגיאה:

Terminal window
curl -X POST https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/stories/$STORY_ID/transitions \
-H "X-TrackerToken: $TRACKER_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "to": "started" }'

השדה הוא to (לא to_state). אם התנועה אינה חוקית — נניח ניסיתם לדלג מ-unstarted ישר ל-accepted — התגובה היא 422 invalid_transition עם פרטי שגיאה מובְנים:

{
"code": "invalid_transition",
"error": "Cannot move story from `unstarted` to `accepted`",
"details": { "from": "unstarted", "to": "accepted", "allowed": ["started"] }
}

זהו אחד מהדברים הקטנים שהופכים את ה-API לידידותי-לסוכנים: סוכן יכול לקרוא את details.allowed ולבחור את התנועה הבאה הנכונה ללא גרידת פרוזה.

Terminal window
curl -X POST https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/stories/$STORY_ID/comments \
-H "X-TrackerToken: $TRACKER_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "text": "Investigation done. Picking this up." }'

התגובה מיוחסת למי שבבעלותו מפתח ה-API — אם זהו מפתח סוכן, מחבר התגובה הוא הסוכן.

כל נקודת קצה של כתיבה מקבלת כותרת Idempotency-Key. נסו שוב את אותו מפתח עם אותו גוף, קבלו בחזרה את אותה תגובה. נסו שוב את אותו מפתח עם גוף שונה, קבלו 409 idempotency_conflict:

Terminal window
curl -X POST https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/stories \
-H "X-TrackerToken: $TRACKER_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "name": "Refactor auth middleware", "story_type": "chore" }'

זה קריטי לסוכנים בלולאות ניסיון-חוזר — קרסתם באמצע כתיבה, נסו שוב עם אותו מפתח, ללא סיפורים כפולים.

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

Terminal window
curl -X POST https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/stories/bulk_transition \
-H "X-TrackerToken: $TRACKER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"story_ids": [101, 102, 103],
"to": "delivered"
}'

עבור סוכנים שרוצים להגיב למה שבני אדם עושים, בצעו poll לנקודת הקצה של האירועים:

Terminal window
curl "https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/events?since=$LAST_CURSOR&types=story.created,story.transitioned,comment.created" \
-H "X-TrackerToken: $TRACKER_TOKEN"

התגובה היא זרם של אירועים עם דפדוף מבוסס-cursor, עם המבצע, המשאב, והשינוי. לכל אירוע יש מזהה; העבירו את המזהה האחרון שראיתם כ-since כדי להמשיך מהיכן שעצרתם. ללא webhooks, ללא גרידה, ללא אירועים שהוחמצו.

Terminal window
curl "https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/search?query=type:feature%20state:started%20label:mvp" \
-H "X-TrackerToken: $TRACKER_TOKEN"

מסננים זמינים:

מסנןדוגמהתיאור
type:type:featureסינון לפי סוג סיפור
state:state:startedסינון לפי מצב
label:label:"my label"סינון לפי תווית
owner:owner:claireסינון לפי בעלים
requester:requester:tomasסינון לפי מבקש
has:has:blockerסיפורים עם חוסמים
is:is:unestimatedתכונות לא-מוערכות

טקסט חופשי תואם את הכותרת והתיאור. שלבו מסננים על ידי הפרדתם ברווח — הם מצורפים ב-AND.

מפרט OpenAPI 3 החי נמצא ב:

https://eastagiletracker.com/api/v1/openapi.json

Swagger UI נמצא ב:

https://eastagiletracker.com/api/v1/docs

/openapi.json ו-/docs אינם דורשים אימות — סוכן יכול לקרוא את החוזה לפני שיש לו מפתח. ברגע שהוא מחזיק במפתח, /api/v1/metaדורש מפתח תקף) מחזיר את זהותו ואת גרף המעברים לכל-סוג-סיפור; חיפושי נתוני-הסימוכין (/story_types, /story_states, /effort_scales) אף הם אינם דורשים אימות. יחד הם מאפשרים לסוכנים לענות על “מה אני יכול לעשות כאן?” ללא תשובות 403 של ניסוי-וטעייה.

הערה: ה-openapi.json המוגש מפרט נתיבים אך כרגע מגיע עם גופי בקשה ריקים — השתמשו במבני השדות ב-מפרט עבור כתיבות.

עבור אוטומציה אינטראקטיבית — הפעלת מפגש דפדפן מחובר מתוך סקריפט, או שליטה מרחוק בממשק המשתמש למדריכים — קיים ערוץ WebSocket:

const ws = new WebSocket('wss://eastagiletracker.com/ws/control?token=YOUR_TOKEN')
ws.send(JSON.stringify({ action: 'get_state', id: 'req-1' }))

רוב המשתמשים לעולם לא יזדקקו לזה; הוא קיים עבור המקרים שבהם REST אינו מספיק.

אם אתם כותבים סקריפט להגירה קבוצתית:

Terminal window
curl -X POST https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/import \
-H "X-TrackerToken: $TRACKER_TOKEN" \
-F "source=pivotal" \
-F "file=@pivotal_export.csv"

מקורות נתמכים: pivotal, jira, asana, gitlab, shortcut, trello, linear, plane, plane_json.

כל השגיאות הן JSON עם לכל הפחות:

{
"code": "invalid_transition",
"error": "Cannot move story from `unstarted` to `accepted`"
}

תגובות שגיאה רבות כוללות גם אובייקט detailsdetails.fields (מערך של שמות שדות פוגעים) ב-validation_failed, ו-details.allowed (לצד from/to) ב-422 invalid_transition. השתמשו בהם.

נקודות קצה של רשימה מקבלות limit ו-cursor. ה-cursor הוא אטום; העבירו את ה-next_cursor מהתגובה הקודמת. כותרות התגובה כוללות גם X-Tracker-Pagination-Total לספירות סך-הכול במקרים שזה זול לחישוב.

  • מפרט API — כל נקודת קצה, כל פועל, כל מבנה.
  • הוראות הפעלה ← סוכנים — צד-ממשק-המשתמש: טביעת מפתחות סוכן, מתן שמות לסוכנים, ביטול.
  • מבוא — המושגים מאחורי ה-API: סיפורים, מצבים, איטרציות, מהירות, סוכנים.