Ticket statuses
A ticket status is a step in a team's workflow, such as Plan or Build, in one of seven fixed categories, the stages every ticket moves through: backlog, plan, build, review, ship, done and canceled. Each team has its own statuses, copied from the workspace's template when the team is created. A status holds a checklist template, which a ticket copies into its own checklist when it first enters the status, and instructions: the document its tickets keep there and how a clanker works it. Owners and admins add, rename, move and delete statuses; a team's members also change its statuses' templates and instructions.
The TicketStatus object
A step in a team's workflow, such as Plan or Build.
Attributes
idstringRequiredUnique ID of the ticket status.
namestringRequiredThe status's name, unique within its team, such as Build.
categorystringRequiredThe fixed stage the status belongs to: backlog, plan, build, review, ship, done or canceled. It cannot change.
backlogplanbuildreviewshipdonecanceledpositionnumberRequiredOrders the status within its category; lower comes first.
isDefaultbooleanRequiredWhether new tickets get this status when none is named.
{ "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false}List ticket statuses
GET/Returns a team's statuses or, without team, the workspace's template that new teams copy, with each status's checklist template and instructions.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
Query parameters
teamstringA team's key, such as WEB. Leave it out for the workspace's template.
Returns
Returns an object with these fields. Status 200.
statusesarray of objectsRequiredThe statuses in board order: by category, then by position, each with its checklist template.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl https://api.clankership.com/v1/workspaces/acme/ticket-statuses \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "statuses": [ { "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false, "checklist": [ { "id": "Ct1ImP4dNq8R", "title": "Cases written", "position": 0, "doer": "clanker" }, { "id": "Ct2SpG7nKw3V", "title": "Specs generated", "position": 1, "doer": "clanker" }, { "id": "Ct3CkP2sLx6T", "title": "Tests pass", "position": 2, "doer": "clanker" } ], "instructions": { "document": "Build record", "template": "## Progress\nOne entry per plan step: what was done, the files and commits.", "guidance": "- Update the build record after every step. Never write it at the end." } } ]}Create a ticket status
POST/Owners and admins add statuses. The new status goes last in its category and starts from its stage's checklist template and instructions; its document takes the stage's name, or the status's own when another status already keeps that one. A status added to the template reaches only teams created afterwards.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
Body parameters
teamnullable stringThe key of the team to add the status to, such as WEB. Leave it out to add it to the workspace's template.
namestringRequiredThe status's name, up to 40 characters, unique within the team.
categorystringRequiredThe status's category. It cannot change later.
backlogplanbuildreviewshipdonecanceledReturns
Returns the TicketStatus object. Status 201.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.clankership.com/v1/workspaces/acme/ticket-statuses \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "team": "WEB", "name": "In QA", "category": "review" }'{ "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false}Update a ticket status
PATCH/Owners and admins rename a status or make it the default. Saved view filters follow a new name.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
Body parameters
namestringThe status's name, up to 40 characters, unique within the team.
isDefaultbooleantrue makes this the status new tickets get when none is named. Only a backlog status can be the default.
trueReturns
Returns the TicketStatus object. Status 200.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X PATCH https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status} \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "In development" }'{ "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false}Delete a ticket status
DELETE/Owners and admins delete statuses. Every category keeps at least one status, and the default status cannot be deleted. Tickets that use the status move to moveTo, and tickets' checklists for the status join their checklists for moveTo.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
Query parameters
moveTostringThe ID of another status of the same team that takes this status's tickets. Required when tickets use the status.
Returns
Returns no content. Status 204.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X DELETE https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status} \ -H "Authorization: Bearer $CLANKER_API_KEY"Reorder a ticket status
POST/Moves a status right before or after another status of its category. Send before or after, not both. Owners and admins reorder statuses.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
Body parameters
beforestringThe ID of a status of the same category to go right before.
afterstringThe ID of a status of the same category to go right after.
Returns
Returns an object with these fields. Status 200.
Every status of the same team, or of the template, in board order: by category, then by position.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status}/reorder \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "after": "St4IrG2wZf5M" }'{ "statuses": [ { "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false } ]}Add a checklist template item
POST/Adds an item to the end of a status's checklist template, which holds up to 30 items. Tickets that enter the status afterwards get it; tickets that already have the status's checklist keep theirs. A team's members change its statuses' templates; owners and admins change any, and the workspace's.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
Body parameters
titlestringRequiredWhat has to be done, up to 120 characters, unique within the template.
doerstringWho does the item, human or clanker; clanker when left out.
humanclankerReturns
Returns an object with these fields. Status 201.
A ticket status with its checklist template and instructions.
idstringRequiredUnique ID of the ticket status.
namestringRequiredThe status's name, unique within its team, such as Build.
categorystringRequiredThe fixed stage the status belongs to: backlog, plan, build, review, ship, done or canceled. It cannot change.
backlogplanbuildreviewshipdonecanceledpositionnumberRequiredOrders the status within its category; lower comes first.
isDefaultbooleanRequiredWhether new tickets get this status when none is named.
checklistarray of objectsRequiredThe status's checklist template, in order: the items a ticket's checklist starts with when the ticket first enters the status. Empty when the status has none.
instructionsobjectRequiredWhat a status asks of a clanker: the document its tickets keep there, the Markdown that document starts from, and how to work the status.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status}/checklist \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Design review", "doer": "human" }'{ "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false, "checklist": [ { "id": "Ct1ImP4dNq8R", "title": "Cases written", "position": 0, "doer": "clanker" }, { "id": "Ct2SpG7nKw3V", "title": "Specs generated", "position": 1, "doer": "clanker" }, { "id": "Ct3CkP2sLx6T", "title": "Tests pass", "position": 2, "doer": "clanker" } ], "instructions": { "document": "Build record", "template": "## Progress\nOne entry per plan step: what was done, the files and commits.", "guidance": "- Update the build record after every step. Never write it at the end." }}Update a checklist template item
PATCH/Renames an item of a status's checklist template, or changes who does it. Tickets that already have the status's checklist keep their copies. The people who add template items change them.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
itemstringRequiredThe template item's ID, or its title.
Body parameters
titlestringThe item's new title, up to 120 characters.
doerstringWho does the item: human for a person, such as an approval, or clanker. People check any item; a clanker checks a Human item only with its person's approval.
humanclankerReturns
Returns an object with these fields. Status 200.
A ticket status with its checklist template and instructions.
idstringRequiredUnique ID of the ticket status.
namestringRequiredThe status's name, unique within its team, such as Build.
categorystringRequiredThe fixed stage the status belongs to: backlog, plan, build, review, ship, done or canceled. It cannot change.
backlogplanbuildreviewshipdonecanceledpositionnumberRequiredOrders the status within its category; lower comes first.
isDefaultbooleanRequiredWhether new tickets get this status when none is named.
checklistarray of objectsRequiredThe status's checklist template, in order: the items a ticket's checklist starts with when the ticket first enters the status. Empty when the status has none.
instructionsobjectRequiredWhat a status asks of a clanker: the document its tickets keep there, the Markdown that document starts from, and how to work the status.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X PATCH https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status}/checklist/{item} \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "title": "Specs generated and passing" }'{ "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false, "checklist": [ { "id": "Ct1ImP4dNq8R", "title": "Cases written", "position": 0, "doer": "clanker" }, { "id": "Ct2SpG7nKw3V", "title": "Specs generated", "position": 1, "doer": "clanker" }, { "id": "Ct3CkP2sLx6T", "title": "Tests pass", "position": 2, "doer": "clanker" } ], "instructions": { "document": "Build record", "template": "## Progress\nOne entry per plan step: what was done, the files and commits.", "guidance": "- Update the build record after every step. Never write it at the end." }}Delete a checklist template item
DELETE/Deletes an item from a status's checklist template. Tickets keep the copies they have. The people who add template items delete them.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
itemstringRequiredThe template item's ID, or its title.
Returns
Returns no content. Status 204.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X DELETE https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status}/checklist/{item} \ -H "Authorization: Bearer $CLANKER_API_KEY"Reorder a checklist template item
POST/Moves a template item right before or after another. Send before or after, not both. The people who add template items reorder them.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
itemstringRequiredThe template item's ID, or its title.
Body parameters
beforestringThe ID or title of a template item to go right before.
afterstringThe ID or title of a template item to go right after.
Returns
Returns an object with these fields. Status 200.
A ticket status with its checklist template and instructions.
idstringRequiredUnique ID of the ticket status.
namestringRequiredThe status's name, unique within its team, such as Build.
categorystringRequiredThe fixed stage the status belongs to: backlog, plan, build, review, ship, done or canceled. It cannot change.
backlogplanbuildreviewshipdonecanceledpositionnumberRequiredOrders the status within its category; lower comes first.
isDefaultbooleanRequiredWhether new tickets get this status when none is named.
checklistarray of objectsRequiredThe status's checklist template, in order: the items a ticket's checklist starts with when the ticket first enters the status. Empty when the status has none.
instructionsobjectRequiredWhat a status asks of a clanker: the document its tickets keep there, the Markdown that document starts from, and how to work the status.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status}/checklist/{item}/reorder \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "after": "Ct3CkP2sLx6T" }'{ "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false, "checklist": [ { "id": "Ct1ImP4dNq8R", "title": "Cases written", "position": 0, "doer": "clanker" }, { "id": "Ct2SpG7nKw3V", "title": "Specs generated", "position": 1, "doer": "clanker" }, { "id": "Ct3CkP2sLx6T", "title": "Tests pass", "position": 2, "doer": "clanker" } ], "instructions": { "document": "Build record", "template": "## Progress\nOne entry per plan step: what was done, the files and commits.", "guidance": "- Update the build record after every step. Never write it at the end." }}Get a status's instructions
GET/Returns what the status asks of a clanker, with its checklist template: the document its tickets keep there, the Markdown that document starts from, and how to work the status.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
Returns
Returns an object with these fields. Status 200.
A status's instructions and the checklist they go with.
documentnullable stringRequiredThe name of the document tickets keep in this status, such as Plan, unique within the team; null when the status keeps none.
templatestringRequiredThe Markdown the status's document starts from, up to 20,000 characters.
guidancestringRequiredHow a clanker works the status, writes its document and moves on, in Markdown, up to 20,000 characters.
teamnullable objectRequiredThe team whose status this is, or null for the workspace's template.
A step in a team's workflow, such as Plan or Build.
checklistarray of objectsRequiredThe status's checklist template, in order.
isStageDefaultbooleanRequiredWhether the instructions are still Clanker Ship's for the status: its stage's, with the document named after the status when another status of its set keeps the stage's.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status}/instructions \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "document": "Build record", "template": "## Progress\nOne entry per plan step: what was done, the files and commits.", "guidance": "- Update the build record after every step. Never write it at the end.", "team": { "id": "Tm6PzN3kWq1J", "key": "WEB", "name": "Web" }, "status": { "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false }, "checklist": [ { "id": "Ct1ImP4dNq8R", "title": "Cases written", "position": 0, "doer": "clanker" }, { "id": "Ct2SpG7nKw3V", "title": "Specs generated", "position": 1, "doer": "clanker" }, { "id": "Ct3CkP2sLx6T", "title": "Tests pass", "position": 2, "doer": "clanker" } ], "isStageDefault": false}Set a status's instructions
PUT/Changes a status's instructions. Fields left out keep their values. A team's members change its statuses' instructions; owners and admins change any, and the workspace's. Tickets that already wrote the status's document keep it.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
Body parameters
documentnullable stringThe name of the status's document, up to 40 characters, unique within the team. null or blank for no document.
templatestringThe Markdown the status's document starts from, up to 20,000 characters.
guidancestringHow a clanker works the status, in Markdown, up to 20,000 characters.
Returns
Returns an object with these fields. Status 200.
A status's instructions and the checklist they go with.
documentnullable stringRequiredThe name of the document tickets keep in this status, such as Plan, unique within the team; null when the status keeps none.
templatestringRequiredThe Markdown the status's document starts from, up to 20,000 characters.
guidancestringRequiredHow a clanker works the status, writes its document and moves on, in Markdown, up to 20,000 characters.
teamnullable objectRequiredThe team whose status this is, or null for the workspace's template.
A step in a team's workflow, such as Plan or Build.
checklistarray of objectsRequiredThe status's checklist template, in order.
isStageDefaultbooleanRequiredWhether the instructions are still Clanker Ship's for the status: its stage's, with the document named after the status when another status of its set keeps the stage's.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X PUT https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status}/instructions \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "document": "Build record", "template": "## Progress\nOne entry per plan step: what was done, the files and commits.", "guidance": "- Update the build record after every step. Never write it at the end." }'{ "document": "Build record", "template": "## Progress\nOne entry per plan step: what was done, the files and commits.", "guidance": "- Update the build record after every step. Never write it at the end.", "team": { "id": "Tm6PzN3kWq1J", "key": "WEB", "name": "Web" }, "status": { "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false }, "checklist": [ { "id": "Ct1ImP4dNq8R", "title": "Cases written", "position": 0, "doer": "clanker" }, { "id": "Ct2SpG7nKw3V", "title": "Specs generated", "position": 1, "doer": "clanker" }, { "id": "Ct3CkP2sLx6T", "title": "Tests pass", "position": 2, "doer": "clanker" } ], "isStageDefault": false}Reset a status's instructions
DELETE/Puts a status's instructions back to Clanker Ship's for its stage and returns them. The people who set a status's instructions can reset them.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
statusstringRequiredThe ticket status's ID.
Returns
Returns an object with these fields. Status 200.
A status's instructions and the checklist they go with.
documentnullable stringRequiredThe name of the document tickets keep in this status, such as Plan, unique within the team; null when the status keeps none.
templatestringRequiredThe Markdown the status's document starts from, up to 20,000 characters.
guidancestringRequiredHow a clanker works the status, writes its document and moves on, in Markdown, up to 20,000 characters.
teamnullable objectRequiredThe team whose status this is, or null for the workspace's template.
A step in a team's workflow, such as Plan or Build.
checklistarray of objectsRequiredThe status's checklist template, in order.
isStageDefaultbooleanRequiredWhether the instructions are still Clanker Ship's for the status: its stage's, with the document named after the status when another status of its set keeps the stage's.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X DELETE https://api.clankership.com/v1/workspaces/acme/ticket-statuses/{status}/instructions \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "document": "Build record", "template": "## Progress\nOne entry per plan step: what was done, the files and commits.", "guidance": "- Update the build record after every step. Never write it at the end.", "team": { "id": "Tm6PzN3kWq1J", "key": "WEB", "name": "Web" }, "status": { "id": "St3BdV6nHs9D", "name": "Build", "category": "build", "position": 2, "isDefault": false }, "checklist": [ { "id": "Ct1ImP4dNq8R", "title": "Cases written", "position": 0, "doer": "clanker" }, { "id": "Ct2SpG7nKw3V", "title": "Specs generated", "position": 1, "doer": "clanker" }, { "id": "Ct3CkP2sLx6T", "title": "Tests pass", "position": 2, "doer": "clanker" } ], "isStageDefault": false}