Přeskočit na obsah

Průvodce API

API East Agile Tracker je navrženo pro agenty stejně jako pro lidi. Vše, co můžete dělat v rozhraní, můžete dělat přes API — a pár věcí, které rozhraní neukazuje, je tu taky.

Tento průvodce vás dostane od nuly ke „skriptování vašeho backlogu” za méně než deset minut. Pro úplný referenční přehled endpointů viz Specifikace API.

Autentizujete se pomocí API klíče v hlavičce X-TrackerToken. Existují dva druhy:

  • Uživatelské klíče (ea_user_…) — Jednají jako vy. Vytvořte je v Account Settings → API Keys. Použijte je pro osobní skripty, CLI nástroje, integrace.
  • Agentské klíče (ea_agent_…) — Jednají jako pojmenovaný agent v jednom projektu. Vytvořte je jako vlastník projektu v Project Settings → Agents. Použijte je pro AI agenty — Claude Code, Codex, vlastní — kteří by se měli účastnit projektu jako pojmenovaní členové týmu.

Rozdíly:

Uživatelský klíčAgentský klíč
RozsahVšechny vaše projektyJeden konkrétní projekt
Identita v auditním loguVaše jménoNázev agenta
RoleVaše role v každém projektuNastavena při vytvoření klíče (viewer nebo member)
OdvoláníOdvolejte klíč; přístup si udržíte přes jiné klíče/relaceOdvolejte klíč; agent okamžitě ztratí přístup
Nejlépe proOsobní automatizaci, skriptyAI agenty, kteří by měli být v historii rozlišitelní od vás

Authorization: Bearer … funguje také, pokud preferujete tento styl hlavičky.

Získejte své projekty:

Terminál
curl https://eastagiletracker.com/api/v1/projects \
-H "X-TrackerToken: $TRACKER_TOKEN"

Nebo pro agentský klíč vypište projekt, na který je ohraničen:

Terminál
curl https://eastagiletracker.com/api/v1/projects \
-H "X-TrackerToken: ea_agent_xxxxx"

API je JSON, REST-ovité, verzované na /api/v1/. Stejné tvary pro lidi i agenty.

Terminál
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
}'

Odpověď zahrnuje project_id a jakékoli výchozí hodnoty, které server aplikoval (odhadovací škála, done state atd.).

Terminál
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"]
}'

Posun story životním cyklem

Sekce “Posun story životním cyklem”

Endpoint pro přechod validuje požadovaný přesun a při chybě vrací povolené další stavy:

Terminál
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" }'

Pole je to (ne to_state). Pokud je přesun nelegální — řekněme jste se pokusili přeskočit z unstarted rovnou na accepted — odpovědí je 422 invalid_transition se strukturovanými detaily chyby:

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

To je jedna z drobností, které dělají API přátelské k agentům: agent může přečíst details.allowed a zvolit správný další tah bez vytahování z prózy.

Terminál
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." }'

Komentář je připsán tomu, kdo vlastní API klíč — pokud je to agentský klíč, autorem komentáře je agent.

Každý zápisový endpoint přijímá hlavičku Idempotency-Key. Opakujte stejný klíč se stejným tělem, dostanete zpět stejnou odpověď. Opakujte stejný klíč s jiným tělem, dostanete 409 idempotency_conflict:

Terminál
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" }'

To je kritické pro agenty v opakovacích smyčkách — spadnete uprostřed zápisu, opakujte se stejným klíčem, žádné duplicitní stories.

Přesuňte mnoho stories najednou. Každá story je posuzována nezávisle; jeden nelegální tah neselže ostatní.

Terminál
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"
}'

Sledování proudu událostí

Sekce “Sledování proudu událostí”

Pro agenty, kteří chtějí reagovat na to, co dělají lidé, dotazujte se na endpoint events:

Terminál
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"

Odpovědí je kurzorem stránkovaný proud událostí s aktérem, zdrojem a změnou. Každá událost má ID; předejte poslední ID, které jste viděli, jako since, abyste pokračovali tam, kde jste skončili. Žádné webhooky, žádné scrapování, žádné zmeškané události.

Vyhledávání se syntaxí filtrů

Sekce “Vyhledávání se syntaxí filtrů”
Terminál
curl "https://eastagiletracker.com/api/v1/projects/$PROJECT_ID/search?query=type:feature%20state:started%20label:mvp" \
-H "X-TrackerToken: $TRACKER_TOKEN"

Dostupné filtry:

FiltrPříkladPopis
type:type:featureFiltrovat podle typu story
state:state:startedFiltrovat podle stavu
label:label:"my label"Filtrovat podle štítku
owner:owner:claireFiltrovat podle vlastníka
requester:requester:tomasFiltrovat podle zadavatele
has:has:blockerStories s blokátory
is:is:unestimatedNeodhadnuté features

Volný text odpovídá názvu a popisu. Filtry kombinujte oddělením mezerou — jsou spojeny pomocí AND.

Živá specifikace OpenAPI 3 je na:

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

Swagger UI je na:

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

/openapi.json a /docs jsou neautentizované — agent může přečíst kontrakt dříve, než má klíč. Jakmile drží klíč, /api/v1/meta (které vyžaduje platný klíč) vrací jeho identitu a graf přechodů pro každý typ story; vyhledávání referenčních dat (/story_types, /story_states, /effort_scales) jsou také neautentizovaná. Dohromady umožňují agentům odpovědět na otázku „co tady můžu dělat?” bez metody pokusu a omylu s chybami 403.

Poznámka: poskytovaný openapi.json vypisuje cesty, ale aktuálně dodává prázdná těla požadavků — pro zápisy použijte tvary polí v Specifikaci.

Pro interaktivní automatizaci — řízení přihlášené relace prohlížeče ze skriptu, nebo vzdálené ovládání rozhraní pro tutoriály — existuje WebSocket kanál:

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

Většina uživatelů to nikdy nepotřebuje; je to tu pro případy, kdy REST nestačí.

Import z jiného trackeru

Sekce “Import z jiného trackeru”

Pokud skriptujete hromadnou migraci:

Terminál
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"

Podporované zdroje: pivotal, jira, asana, gitlab, shortcut, trello, linear, plane, plane_json.

Všechny chyby jsou JSON s minimálně:

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

Mnoho chybových odpovědí také zahrnuje objekt detailsdetails.fields (pole názvů problematických polí) u validation_failed, a details.allowed (vedle from/to) u 422 invalid_transition. Použijte je.

List endpointy přijímají limit a cursor. Kurzor je neprůhledný; předejte next_cursor z předchozí odpovědi. Hlavičky odpovědi také zahrnují X-Tracker-Pagination-Total pro celkové počty tam, kde je výpočet levný.

  • Specifikace API — Každý endpoint, každé sloveso, každý tvar.
  • Provozní pokyny → Agenti — Strana rozhraní: vytváření agentských klíčů, pojmenovávání agentů, odvolávání.
  • Úvod — Koncepty za API: stories, stavy, iterace, rychlost, agenti.