API reference / Tasks and projects
Get a task
One task in full: its description, sub-tasks, what its teammates asked people, and its activity (comments and changes).
/api/v1/tasks/{key}Other ways to call it
troopy tasks gettroopy_get_taskPath parameters
key*stringA task's key (VIR-12), its number (12) or its id
At least 1 characters · At most 40 characters
Response
200 · application/jsondata*object45 properties
id*stringA 24-character id
key*stringIts key, like VIR-12
number*integertitle*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
priority*enum<string>noneurgenthighmediumlow
assignee*object | null3 properties
type*enum<string>agentperson
id*stringname*stringproject*object | null2 properties
id*stringA 24-character id
name*stringmilestone*object | nullThe milestone of its project it counts toward
2 properties
id*stringA 24-character id
name*stringarea*enum<string>Engineering, marketing or operations. Every task is in one
engineeringmarketingoperations
parent*object | nullThe task this is a sub-task of
3 properties
id*stringA 24-character id
key*stringtitle*stringlabels*array<string>dueAt*string | nullsortOrder*numberIts place in its board column, lowest first
subOrder*numberIts place among its parent's sub-tasks, lowest first (then by number)
waitsOn*array<object>The tasks that block it: they must be done before it starts
4 properties
id*stringA 24-character id
key*stringtitle*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
blocked*booleanSomething it waits on is still open, so no teammate starts it yet
progress*objectIts sub-tasks: how many are done, of those not canceled
2 properties
done*integertotal*integercomments*integerwaiting*integerQuestions and approvals its teammates are waiting on a person for
working*object | nullA teammate is on it now, and what it says it is doing
2 properties
runId*stringA 24-character id
doing*string | nullerror*string | nullWhy its teammate couldn't start it; pickup tries again
pr*object | nullThe pull request its code work opened on GitHub
3 properties
number*integerurl*stringstate*enum<string>openclosedmerged
flow*object | nullAn engineering ticket: its step, its analysis and plan, its gates and its release. null for other tasks
22 properties
stage*enum<string>Its step: analyze, plan, build, test or release. Its status says who has it now. A released ticket is done
analyzeplanbuildtestrelease
kind*enum<string> | nullbugfeaturechange
size*enum<string> | nullHow big a change the Engineer thinks it is
smallmediumlarge
repo*string | nullowner/name: the repo it changes
engineer*string | nullThe Engineer's handle: it builds the ticket, and gets it back after testing
qa*string | nullThe QA tester's handle, while one tests it
enteredAt*stringWhen it came to its step
tries*objectHow many times testing sent it back to Build, of the times the workspace allows
2 properties
used*integermax*integerstuck*string | nullWhy it waits on a person with nothing to answer: read it, then move it on or back
retry*enum<string> | nullWhile it is stuck: the step to move it to, to try again
analyzeplanbuildtestrelease
approve*booleanA plan waits for a person's approval
tested*object | nullThe commit that passed every gate: the only one Release merges
3 properties
sha*stringat*stringISO 8601 date and time
verified*booleanTroopy's own run of the repo's tests passed on this commit
refused*string | nullWhy GitHub refused the last Release of the tested commit
checks*enum<string>GitHub's checks on its change
nonependingpassfailunknown
codeReview*enum<string>Troopy's code review of its change: a second agent reads the change for problems
nonependingpassfailunknown
tests*enum<string>The QA tester's report on its change
nonependingpassfailunknown
screens*enum<string>The blind critic's look at the pictures of its test run
nonependingpassfailunknown
analysis*object | null8 properties
kind*enum<string>analysisplan
version*integerSend it back with an edit, or with the approval of a plan
body*stringMarkdown
criteria*array<string>An analysis: its Done when checks, in order. The QA tester checks them one by one as c1, c2, ...
approved*object | nullA plan: the version a person approved
3 properties
version*integerby*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringat*stringISO 8601 date and time
locked*booleanApproved plans and their analyses are locked; moving the ticket back to Plan unlocks them
updatedBy*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringupdatedAt*stringISO 8601 date and time
plan*object | null8 properties
kind*enum<string>analysisplan
version*integerSend it back with an edit, or with the approval of a plan
body*stringMarkdown
criteria*array<string>An analysis: its Done when checks, in order. The QA tester checks them one by one as c1, c2, ...
approved*object | nullA plan: the version a person approved
3 properties
version*integerby*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringat*stringISO 8601 date and time
locked*booleanApproved plans and their analyses are locked; moving the ticket back to Plan unlocks them
updatedBy*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringupdatedAt*stringISO 8601 date and time
gates*object | null6 properties
sha*string | nullThe commit the gates read
checkList*array<object>GitHub's checks, one by one
3 properties
name*stringstate*enum<string>nonependingpassfailunknown
url*string | nullreview*enum<string>What people said in their reviews on GitHub
noneapprovedchanges
mergeable*enum<string>cleanbehindconflictblockedunknown
previewUrl*string | nullWhere its change runs, from GitHub's deployments
checkedAt*string | nullsentBack*object | nullWhy it last went back to Build
3 properties
from*enum<string>testchecksreviewcode_reviewscreensperson
text*stringat*stringISO 8601 date and time
release*object | nullHow it was released: by a merge on GitHub, by Release in Troopy, or closed by hand
6 properties
mode*enum<string>githubbuttonautomanual
by*object | null3 properties
type*enum<string>personagentapi
id*stringname*stringsha*string | nullmethod*enum<string> | nullsquashmergerebase
pr*integer | nullat*string | nullrequestedBy*objectWho it is for
3 properties
type*enum<string>personagentapi
id*stringname*stringcreatedBy*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringcreatedAt*stringISO 8601 date and time
updatedAt*stringISO 8601 date and time
closedAt*string | nullversion*integerSend it back with a change to refuse the change if someone edited the task since
description*stringMarkdown: the goal, the steps, what done looks like
subtasks*array<object>30 properties
id*stringA 24-character id
key*stringIts key, like VIR-12
number*integertitle*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
priority*enum<string>noneurgenthighmediumlow
assignee*object | null3 properties
type*enum<string>agentperson
id*stringname*stringproject*object | null2 properties
id*stringA 24-character id
name*stringmilestone*object | nullThe milestone of its project it counts toward
2 properties
id*stringA 24-character id
name*stringarea*enum<string>Engineering, marketing or operations. Every task is in one
engineeringmarketingoperations
parent*object | nullThe task this is a sub-task of
3 properties
id*stringA 24-character id
key*stringtitle*stringlabels*array<string>dueAt*string | nullsortOrder*numberIts place in its board column, lowest first
subOrder*numberIts place among its parent's sub-tasks, lowest first (then by number)
waitsOn*array<object>The tasks that block it: they must be done before it starts
4 properties
id*stringA 24-character id
key*stringtitle*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
blocked*booleanSomething it waits on is still open, so no teammate starts it yet
progress*objectIts sub-tasks: how many are done, of those not canceled
2 properties
done*integertotal*integercomments*integerwaiting*integerQuestions and approvals its teammates are waiting on a person for
working*object | nullA teammate is on it now, and what it says it is doing
2 properties
runId*stringA 24-character id
doing*string | nullerror*string | nullWhy its teammate couldn't start it; pickup tries again
pr*object | nullThe pull request its code work opened on GitHub
3 properties
number*integerurl*stringstate*enum<string>openclosedmerged
flow*object | nullAn engineering ticket: its step in Analyze, Plan, Build, Test and Release. null for other tasks
17 properties
stage*enum<string>Its step: analyze, plan, build, test or release. Its status says who has it now. A released ticket is done
analyzeplanbuildtestrelease
kind*enum<string> | nullbugfeaturechange
size*enum<string> | nullHow big a change the Engineer thinks it is
smallmediumlarge
repo*string | nullowner/name: the repo it changes
engineer*string | nullThe Engineer's handle: it builds the ticket, and gets it back after testing
qa*string | nullThe QA tester's handle, while one tests it
enteredAt*stringWhen it came to its step
tries*objectHow many times testing sent it back to Build, of the times the workspace allows
2 properties
used*integermax*integerstuck*string | nullWhy it waits on a person with nothing to answer: read it, then move it on or back
retry*enum<string> | nullWhile it is stuck: the step to move it to, to try again
analyzeplanbuildtestrelease
approve*booleanA plan waits for a person's approval
tested*object | nullThe commit that passed every gate: the only one Release merges
3 properties
sha*stringat*stringISO 8601 date and time
verified*booleanTroopy's own run of the repo's tests passed on this commit
refused*string | nullWhy GitHub refused the last Release of the tested commit
checks*enum<string>GitHub's checks on its change
nonependingpassfailunknown
codeReview*enum<string>Troopy's code review of its change: a second agent reads the change for problems
nonependingpassfailunknown
tests*enum<string>The QA tester's report on its change
nonependingpassfailunknown
screens*enum<string>The blind critic's look at the pictures of its test run
nonependingpassfailunknown
requestedBy*objectWho it is for
3 properties
type*enum<string>personagentapi
id*stringname*stringcreatedBy*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringcreatedAt*stringISO 8601 date and time
updatedAt*stringISO 8601 date and time
closedAt*string | nullversion*integerSend it back with a change to refuse the change if someone edited the task since
asks*array<object>14 properties
id*stringA 24-character id
taskId*stringA 24-character id
agent*stringThe teammate asking
kind*enum<string>decisioninputapprovallogin
question*stringoptions*array<string>For a decision: the choices, the teammate's pick first
draftId*string | nullFor an approval: the draft to approve
docobject | nullFor the approval of a plan: the plan and the version to approve
2 properties
kind*enum<string>analysisplan
version*integersitestring | nullFor a login request: the site the teammate needs a login to
status*enum<string>openansweredwithdrawn
answer*object | null2 properties
choice*string | nulltext*string | nullansweredBy*object | null3 properties
type*enum<string>personagentapi
id*stringname*stringansweredAt*string | nullcreatedAt*stringISO 8601 date and time
activity*array<object>Comments and changes, oldest first: the latest 100
7 properties
id*stringA 24-character id
kind*enum<string>commentevent
by*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringtext*stringchange*object | nullFor an event: what changed
3 properties
field*stringfrom*string | nullto*string | nullrunId*string | nullThe run that wrote it
at*stringISO 8601 date and time
watchers*array<object>People who follow it: its updates reach them
2 properties
id*stringA 24-character id
name*stringwatching*booleanWhether you follow it
blocking*array<object>The tasks that it blocks: they wait on it
4 properties
id*stringA 24-character id
key*stringtitle*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
related*array<object>The tasks about the same thing
4 properties
id*stringA 24-character id
key*stringtitle*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
duplicateOf*object | nullThe task that it repeats. A duplicate is canceled
4 properties
id*stringA 24-character id
key*stringtitle*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
duplicates*array<object>The tasks that repeat it
4 properties
id*stringA 24-character id
key*stringtitle*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
favorite*booleanWhether it is in your Favorites
remindAt*string | nullWhen your bell tells you of it again. null for no reminder
reactions*array<object>Reactions to it, each with who added it, in the order they first came
2 properties
emoji*stringThe emoji
by*array<object>3 properties
type*enum<string>personagentapi
id*stringname*stringattachments*array<object>Files on it, oldest first
7 properties
id*stringA 24-character id
name*stringcontentType*stringAs Troopy serves it; a type a browser could run is served as plain bytes
size*integerIn bytes
by*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringcreatedAt*stringISO 8601 date and time
url*stringDownloads it: send your API key, or be signed in
code*object | nullIts code work, when a teammate changed code for it
9 properties
repo*stringowner/name
branch*stringIts own branch, troopy/<key>-<title>
working*booleanA code session is working on it now
checks*object | nullThe repo's tests, as Troopy ran them after the last session
4 properties
command*stringexitCode*integerpassed*booleantail*stringThe end of the tests' output
verified*booleanThe tests passed on the branch's last commit, so a pull request can open
pr*object | null3 properties
number*integerurl*stringstate*enum<string>openclosedmerged
summary*string | nullWhat the last session said it did
diff*stringThe last session's changed files: on each line, the lines it adds, the lines it removes and the path (git diff --numstat). The last line gives the totals
at*string | nullWhen the last session ended