{
  "openapi": "3.1.1",
  "info": {
    "title": "Trackwell Sprint Burndown API",
    "version": "1.0.0",
    "summary": "Sprint burndown and burnup from a Trackwell project or a table of sprint items.",
    "description": "Every endpoint performs the same calculation as the human page and returns inputs, result, units, assumptions, sources, warnings and computedAt. MCP endpoint: /mcp."
  },
  "servers": [
    {
      "url": "https://trackwellburndown.usefulweb.app"
    }
  ],
  "paths": {
    "/api/v1/calculate": {
      "post": {
        "operationId": "calculate",
        "summary": "Sprint burndown and burnup from a Trackwell project or a table of sprint items.",
        "description": "Draws the burndown (remaining work per day against the ideal line) and burnup (completed work and scope) of a sprint. Reads a Trackwell project and rebuilds the sprint from the issue history, or takes a simple table of items with points and the moments they were added, removed and finished.\n\nMethodology:\n- Each day is counted at its end (23:59:59 UTC). Scope = points (or issues) in the sprint at that moment; completed = scope items that are done; remaining = scope − completed.\n- Committed = scope at the start of the first day (items added on the start day count as committed). The ideal line falls linearly from the committed value to zero on the last day.\n- From a Trackwell project the items are rebuilt from the issue history: when an issue entered or left the sprint, when it last moved into a “done” status, and its story points. Sub-tasks are left out (their parents carry the points). A completed sprint is evaluated up to the moment it was completed, so carried-over issues stay in its open list.\n- Added = items that joined after the first day (scope creep); removed = items taken out during the sprint.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "trackwell_burndown",
        "x-owner-app": "trackwell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackwellBurndownInput"
              },
              "examples": {
                "example1": {
                  "summary": "Active sprint of the scrum template",
                  "value": {
                    "project": "{\"format\":\"trackwell\",\"version\":1,\"name\":\"Website relaunch\",\"key\":\"WEB\",\"description\":\"Scrum project for the new company website: two-week sprints, story points, epics with stories and sub-tasks.\",\"nextNumber\":25,\"types\":[\"story\",\"task\",\"bug\",\"epic\",\"subtask\"],\"components\":[{\"id\":\"frontend\",\"name\":\"Frontend\"},{\"id\":\"backend\",\"name\":\"Backend\"},{\"id\":\"content\",\"name\":\"Content\"}],\"versions\":[{\"id\":\"v1\",\"name\":\"Launch 1.0\",\"released\":false,\"date\":\"2026-12-12\"}],\"customFields\":[{\"id\":\"browser\",\"name\":\"Browser\",\"type\":\"select\",\"options\":[\"Chrome\",\"Firefox\",\"Safari\",\"Edge\"],\"types\":[\"bug\"]}],\"people\":[{\"id\":\"me\",\"name\":\"Alex Morgan\"},{\"id\":\"ada\",\"name\":\"Ada Lovelace\"},{\"id\":\"grace\",\"name\":\"Grace Hopper\"},{\"id\":\"linus\",\"name\":\"Linus Kaur\"},{\"id\":\"mia\",\"name\":\"Mia Okafor\"}],\"workflow\":{\"statuses\":[{\"id\":\"backlog\",\"name\":\"Backlog\",\"category\":\"todo\"},{\"id\":\"todo\",\"name\":\"To do\",\"category\":\"todo\"},{\"id\":\"in-progress\",\"name\":\"In progress\",\"category\":\"inprogress\"},{\"id\":\"review\",\"name\":\"In review\",\"category\":\"inprogress\"},{\"id\":\"done\",\"name\":\"Done\",\"category\":\"done\"}],\"transitions\":[{\"id\":\"plan\",\"name\":\"Plan\",\"from\":[\"backlog\"],\"to\":\"todo\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}},{\"id\":\"start\",\"name\":\"Start work\",\"from\":[\"backlog\",\"todo\"],\"to\":\"in-progress\",\"rules\":{\"require\":[\"assignee\"],\"resolution\":false,\"roles\":[]}},{\"id\":\"review\",\"name\":\"Ask for review\",\"from\":[\"in-progress\"],\"to\":\"review\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}},{\"id\":\"rework\",\"name\":\"Needs changes\",\"from\":[\"review\"],\"to\":\"in-progress\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}},{\"id\":\"done\",\"name\":\"Done\",\"from\":[\"review\",\"in-progress\"],\"to\":\"done\",\"rules\":{\"require\":[],\"resolution\":true,\"roles\":[]}},{\"id\":\"drop\",\"name\":\"Won’t do\",\"from\":[\"backlog\",\"todo\"],\"to\":\"done\",\"rules\":{\"require\":[\"description\"],\"resolution\":true,\"roles\":[\"admin\"]}},{\"id\":\"reopen\",\"name\":\"Reopen\",\"from\":[\"done\"],\"to\":\"todo\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}},{\"id\":\"stop\",\"name\":\"Stop work\",\"from\":[\"in-progress\"],\"to\":\"todo\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}}],\"initial\":\"backlog\"},\"resolutions\":[\"Done\",\"Won’t do\",\"Duplicate\",\"Cannot reproduce\"],\"board\":{\"mode\":\"scrum\",\"columns\":[{\"id\":\"c-todo\",\"name\":\"To do\",\"statuses\":[\"backlog\",\"todo\"],\"wip\":0},{\"id\":\"c-progress\",\"name\":\"In progress\",\"statuses\":[\"in-progress\"],\"wip\":4},{\"id\":\"c-review\",\"name\":\"In review\",\"statuses\":[\"review\"],\"wip\":2},{\"id\":\"c-done\",\"name\":\"Done\",\"statuses\":[\"done\"],\"wip\":0}]},\"sprints\":[{\"id\":\"s1\",\"name\":\"WEB Sprint 1\",\"goal\":\"Design system and page skeleton\",\"state\":\"closed\",\"start\":\"2026-10-18\",\"end\":\"2026-10-31\",\"completedAt\":\"2026-10-31T17:00:00.000Z\",\"committedPoints\":13},{\"id\":\"s2\",\"name\":\"WEB Sprint 2\",\"goal\":\"Product pages and search\",\"state\":\"closed\",\"start\":\"2026-11-01\",\"end\":\"2026-11-14\",\"completedAt\":\"2026-11-14T17:00:00.000Z\",\"committedPoints\":18},{\"id\":\"s3\",\"name\":\"WEB Sprint 3\",\"goal\":\"Checkout, sign-in and accessibility fixes\",\"state\":\"active\",\"start\":\"2026-11-15\",\"end\":\"2026-11-28\",\"completedAt\":\"\",\"committedPoints\":21},{\"id\":\"s4\",\"name\":\"WEB Sprint 4\",\"goal\":\"Launch preparation\",\"state\":\"future\",\"start\":\"\",\"end\":\"\",\"completedAt\":\"\",\"committedPoints\":0}],\"sla\":{\"calendar\":{\"days\":[1,2,3,4,5],\"start\":\"09:00\",\"end\":\"17:00\",\"holidays\":[],\"offsetMinutes\":0},\"policies\":[]},\"filters\":[{\"id\":\"mine\",\"name\":\"My open issues\",\"query\":\"assignee = me AND statusCategory != Done ORDER BY priority\"},{\"id\":\"bugs\",\"name\":\"Open bugs by priority\",\"query\":\"type = Bug AND resolution IS EMPTY ORDER BY priority, created\"},{\"id\":\"recent\",\"name\":\"Created in the last 14 days\",\"query\":\"created \u003e= -14d ORDER BY created DESC\"}],\"portal\":{\"enabled\":false,\"intro\":\"\",\"types\":[\"bug\"]},\"settings\":{\"estimateUnit\":\"points\"},\"issues\":[{\"id\":\"i1\",\"key\":\"WEB-1\",\"number\":1,\"type\":\"epic\",\"summary\":\"Design system\",\"description\":\"Colours, type scale, spacing and components that every page uses.\\n\\n- [x] Tokens\\n- [x] Buttons and forms\\n- [ ] Dark mode\",\"status\":\"in-progress\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[\"v1\"],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"\",\"rank\":1000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-10T09:07:00.000Z\",\"updated\":\"2026-10-19T10:11:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-10-10T09:07:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-19T10:11:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"}]},{\"id\":\"i2\",\"key\":\"WEB-2\",\"number\":2,\"type\":\"epic\",\"summary\":\"Checkout\",\"description\":\"Cart, address, payment and confirmation pages.\",\"status\":\"in-progress\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\",\"backend\"],\"fixVersions\":[\"v1\"],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"\",\"rank\":2000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-11T10:14:00.000Z\",\"updated\":\"2026-11-16T11:22:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-10-11T10:14:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-16T11:22:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"}]},{\"id\":\"i3\",\"key\":\"WEB-3\",\"number\":3,\"type\":\"story\",\"summary\":\"Colour tokens and type scale\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":3,\"parent\":\"i1\",\"sprint\":\"s1\",\"rank\":3000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-15T11:21:00.000Z\",\"updated\":\"2026-10-23T12:33:00.000Z\",\"resolvedAt\":\"2026-10-23T12:33:00.000Z\",\"history\":[{\"at\":\"2026-10-15T11:21:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-15T11:21:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s1\"},{\"at\":\"2026-10-19T12:33:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-10-22T12:33:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-10-23T12:33:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i4\",\"key\":\"WEB-4\",\"number\":4,\"type\":\"story\",\"summary\":\"Button and form components\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"i1\",\"sprint\":\"s1\",\"rank\":4000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-15T12:28:00.000Z\",\"updated\":\"2026-10-28T13:44:00.000Z\",\"resolvedAt\":\"2026-10-28T13:44:00.000Z\",\"history\":[{\"at\":\"2026-10-15T12:28:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-15T12:28:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s1\"},{\"at\":\"2026-10-21T13:44:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-10-26T13:44:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-10-28T13:44:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i5\",\"key\":\"WEB-5\",\"number\":5,\"type\":\"story\",\"summary\":\"Page skeleton with header and footer\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"grace\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"\",\"sprint\":\"s1\",\"rank\":5000,\"watchers\":[\"me\",\"grace\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-15T13:35:00.000Z\",\"updated\":\"2026-10-30T14:55:00.000Z\",\"resolvedAt\":\"2026-10-30T14:55:00.000Z\",\"history\":[{\"at\":\"2026-10-15T13:35:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-15T13:35:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s1\"},{\"at\":\"2026-10-20T14:55:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-10-27T14:55:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-10-30T14:55:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i6\",\"key\":\"WEB-6\",\"number\":6,\"type\":\"story\",\"summary\":\"Product list with filters\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"grace\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\",\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":8,\"parent\":\"\",\"sprint\":\"s2\",\"rank\":6000,\"watchers\":[\"me\",\"grace\"],\"links\":[],\"attachments\":[],\"worklogs\":[{\"id\":\"w6-1\",\"who\":\"grace\",\"started\":\"2026-10-26T09:00:00.000Z\",\"minutes\":240,\"note\":\"Filter state in the URL\"},{\"id\":\"w6-2\",\"who\":\"grace\",\"started\":\"2026-10-29T10:00:00.000Z\",\"minutes\":300,\"note\":\"API pagination\"}],\"comments\":[],\"custom\":{},\"created\":\"2026-10-15T14:42:00.000Z\",\"updated\":\"2026-11-08T15:06:00.000Z\",\"resolvedAt\":\"2026-11-08T15:06:00.000Z\",\"history\":[{\"at\":\"2026-10-15T14:42:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-15T14:42:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s1\"},{\"at\":\"2026-10-31T17:30:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"s1\",\"to\":\"s2\"},{\"at\":\"2026-10-25T15:06:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-06T15:06:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-08T15:06:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i7\",\"key\":\"WEB-7\",\"number\":7,\"type\":\"story\",\"summary\":\"Product detail page\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"\",\"sprint\":\"s2\",\"rank\":7000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-29T15:49:00.000Z\",\"updated\":\"2026-11-09T16:17:00.000Z\",\"resolvedAt\":\"2026-11-09T16:17:00.000Z\",\"history\":[{\"at\":\"2026-10-29T15:49:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-29T15:49:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s2\"},{\"at\":\"2026-11-02T16:17:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-07T16:17:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-09T16:17:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i8\",\"key\":\"WEB-8\",\"number\":8,\"type\":\"story\",\"summary\":\"Site search with suggestions\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"mia\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":960,\"storyPoints\":5,\"parent\":\"\",\"sprint\":\"s2\",\"rank\":8000,\"watchers\":[\"me\",\"mia\"],\"links\":[],\"attachments\":[],\"worklogs\":[{\"id\":\"w8-1\",\"who\":\"mia\",\"started\":\"2026-11-04T09:00:00.000Z\",\"minutes\":360,\"note\":\"Index\"},{\"id\":\"w8-2\",\"who\":\"mia\",\"started\":\"2026-11-09T10:00:00.000Z\",\"minutes\":420,\"note\":\"Suggestions endpoint\"}],\"comments\":[],\"custom\":{},\"created\":\"2026-10-29T08:56:00.000Z\",\"updated\":\"2026-11-12T09:28:00.000Z\",\"resolvedAt\":\"2026-11-12T09:28:00.000Z\",\"history\":[{\"at\":\"2026-10-29T08:56:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-29T08:56:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s2\"},{\"at\":\"2026-11-03T09:28:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-10T09:28:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-12T09:28:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i9\",\"key\":\"WEB-9\",\"number\":9,\"type\":\"bug\",\"summary\":\"Filters reset when going back in the browser\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"high\",\"severity\":\"\",\"assignee\":\"grace\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"s2\",\"rank\":9000,\"watchers\":[\"me\",\"grace\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[{\"id\":\"c9-1\",\"author\":\"grace\",\"body\":\"Reproduced in Safari 18. The history state is not restored.\",\"at\":\"2026-11-06T11:00:00.000Z\"}],\"custom\":{\"browser\":\"Safari\"},\"created\":\"2026-11-05T09:03:00.000Z\",\"updated\":\"2026-11-08T10:39:00.000Z\",\"resolvedAt\":\"2026-11-08T10:39:00.000Z\",\"history\":[{\"at\":\"2026-11-05T09:03:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-05T09:03:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s2\"},{\"at\":\"2026-11-06T10:39:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-07T10:39:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-08T10:39:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i10\",\"key\":\"WEB-10\",\"number\":10,\"type\":\"story\",\"summary\":\"Cart with quantity changes\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"i2\",\"sprint\":\"s3\",\"rank\":10000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-12T10:10:00.000Z\",\"updated\":\"2026-11-20T11:50:00.000Z\",\"resolvedAt\":\"2026-11-20T11:50:00.000Z\",\"history\":[{\"at\":\"2026-11-12T10:10:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-12T10:10:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-16T11:50:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-19T11:50:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-20T11:50:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i11\",\"key\":\"WEB-11\",\"number\":11,\"type\":\"story\",\"summary\":\"Address form with validation\",\"description\":\"Postal code rules per country.\\n\\n| Country | Rule |\\n| --- | --- |\\n| DE | 5 digits |\\n| UK | outward + inward code |\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":3,\"parent\":\"i2\",\"sprint\":\"s3\",\"rank\":11000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-12T11:17:00.000Z\",\"updated\":\"2026-11-22T12:01:00.000Z\",\"resolvedAt\":\"2026-11-22T12:01:00.000Z\",\"history\":[{\"at\":\"2026-11-12T11:17:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-12T11:17:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-17T12:01:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-21T12:01:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-22T12:01:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i12\",\"key\":\"WEB-12\",\"number\":12,\"type\":\"story\",\"summary\":\"Payment step\",\"description\":\"## Goal\\nCustomers pay by **card** or **bank transfer** in one step, without leaving the shop.\\n\\n## Acceptance criteria\\n- [x] Card form with live validation\\n- [ ] Error messages for declined cards (WEB-18)\\n- [ ] 3-D Secure challenge in a dialog\\n\\n| Provider state | Shown to the customer |\\n| --- | --- |\\n| `declined` | Try another card |\\n| `timeout` | Try again in a minute |\\n\\nSpecs: [payment flow](https://example.com/specs/payment)\",\"status\":\"in-progress\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\",\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":1440,\"storyPoints\":8,\"parent\":\"i2\",\"sprint\":\"s3\",\"rank\":12000,\"watchers\":[\"me\",\"linus\"],\"links\":[{\"type\":\"is-blocked-by\",\"target\":\"i14\"}],\"attachments\":[],\"worklogs\":[{\"id\":\"w12-1\",\"who\":\"linus\",\"started\":\"2026-11-20T09:00:00.000Z\",\"minutes\":300,\"note\":\"Provider sandbox\"},{\"id\":\"w12-2\",\"who\":\"linus\",\"started\":\"2026-11-22T10:00:00.000Z\",\"minutes\":240,\"note\":\"Error states\"}],\"comments\":[{\"id\":\"c12-1\",\"author\":\"linus\",\"body\":\"Waiting for the sandbox keys, see WEB-14. @[Mia Okafor] can you check?\",\"at\":\"2026-11-21T14:00:00.000Z\"},{\"id\":\"c12-2\",\"author\":\"mia\",\"body\":\"Asked the provider today.\",\"at\":\"2026-11-22T14:13:00.000Z\"}],\"custom\":{},\"created\":\"2026-11-12T12:24:00.000Z\",\"updated\":\"2026-11-22T14:13:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-12T12:24:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-12T12:24:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-20T13:12:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"}]},{\"id\":\"i13\",\"key\":\"WEB-13\",\"number\":13,\"type\":\"story\",\"summary\":\"Sign-in with passkeys\",\"description\":\"\",\"status\":\"review\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"mia\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"\",\"sprint\":\"s3\",\"rank\":13000,\"watchers\":[\"me\",\"mia\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-13T13:31:00.000Z\",\"updated\":\"2026-11-23T14:23:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-13T13:31:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-13T13:31:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-18T14:23:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-23T14:23:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"}]},{\"id\":\"i14\",\"key\":\"WEB-14\",\"number\":14,\"type\":\"task\",\"summary\":\"Request payment provider sandbox keys\",\"description\":\"\",\"status\":\"in-progress\",\"resolution\":\"\",\"priority\":\"high\",\"severity\":\"\",\"assignee\":\"me\",\"reporter\":\"me\",\"labels\":[],\"components\":[],\"fixVersions\":[],\"due\":\"2026-11-25\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"s3\",\"rank\":14000,\"watchers\":[\"me\"],\"links\":[{\"type\":\"blocks\",\"target\":\"i12\"}],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-14T14:38:00.000Z\",\"updated\":\"2026-11-15T15:34:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-14T14:38:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-14T14:38:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-15T15:34:00.000Z\",\"who\":\"me\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"}]},{\"id\":\"i15\",\"key\":\"WEB-15\",\"number\":15,\"type\":\"bug\",\"summary\":\"Focus ring missing on the cart button\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[\"accessibility\"],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"s3\",\"rank\":15000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{\"browser\":\"Firefox\"},\"created\":\"2026-11-18T15:45:00.000Z\",\"updated\":\"2026-11-21T16:45:00.000Z\",\"resolvedAt\":\"2026-11-21T16:45:00.000Z\",\"history\":[{\"at\":\"2026-11-18T15:45:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-18T15:45:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-19T16:45:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-20T16:45:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-21T16:45:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i16\",\"key\":\"WEB-16\",\"number\":16,\"type\":\"bug\",\"summary\":\"Contrast of the price label is too low\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"high\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[\"accessibility\"],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"s3\",\"rank\":16000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-21T08:52:00.000Z\",\"updated\":\"2026-11-21T08:52:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-21T08:52:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-21T08:52:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"}]},{\"id\":\"i17\",\"key\":\"WEB-17\",\"number\":17,\"type\":\"subtask\",\"summary\":\"Card number field\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"i12\",\"sprint\":\"s3\",\"rank\":17000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-20T09:59:00.000Z\",\"updated\":\"2026-11-23T10:07:00.000Z\",\"resolvedAt\":\"2026-11-23T10:07:00.000Z\",\"history\":[{\"at\":\"2026-11-20T09:59:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-20T09:59:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-21T10:07:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-23T10:07:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"done\"}]},{\"id\":\"i18\",\"key\":\"WEB-18\",\"number\":18,\"type\":\"subtask\",\"summary\":\"Payment error messages\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"i12\",\"sprint\":\"s3\",\"rank\":18000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-20T10:06:00.000Z\",\"updated\":\"2026-11-20T10:06:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-20T10:06:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-20T10:06:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"}]},{\"id\":\"i19\",\"key\":\"WEB-19\",\"number\":19,\"type\":\"story\",\"summary\":\"Order confirmation e-mail\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":3,\"parent\":\"i2\",\"sprint\":\"s4\",\"rank\":19000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-16T11:13:00.000Z\",\"updated\":\"2026-11-16T11:13:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-16T11:13:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-16T11:13:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s4\"}]},{\"id\":\"i20\",\"key\":\"WEB-20\",\"number\":20,\"type\":\"story\",\"summary\":\"Cookie banner text\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"content\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":1,\"parent\":\"\",\"sprint\":\"s4\",\"rank\":20000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-17T12:20:00.000Z\",\"updated\":\"2026-11-17T12:20:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-17T12:20:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-17T12:20:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s4\"}]},{\"id\":\"i21\",\"key\":\"WEB-21\",\"number\":21,\"type\":\"story\",\"summary\":\"Dark mode for all components\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"i1\",\"sprint\":\"\",\"rank\":21000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-04T13:27:00.000Z\",\"updated\":\"2026-11-04T13:27:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-04T13:27:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"}]},{\"id\":\"i22\",\"key\":\"WEB-22\",\"number\":22,\"type\":\"task\",\"summary\":\"Write the launch checklist\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"me\",\"reporter\":\"me\",\"labels\":[],\"components\":[],\"fixVersions\":[\"v1\"],\"due\":\"2026-12-06\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"\",\"rank\":22000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-19T14:34:00.000Z\",\"updated\":\"2026-11-19T14:34:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-19T14:34:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"}]},{\"id\":\"i23\",\"key\":\"WEB-23\",\"number\":23,\"type\":\"bug\",\"summary\":\"Search suggestions show deleted products\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"low\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"grace\",\"labels\":[],\"components\":[\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"\",\"rank\":23000,\"watchers\":[\"grace\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{\"browser\":\"Chrome\"},\"created\":\"2026-11-22T15:41:00.000Z\",\"updated\":\"2026-11-22T15:41:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-22T15:41:00.000Z\",\"who\":\"grace\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"}]},{\"id\":\"i24\",\"key\":\"WEB-24\",\"number\":24,\"type\":\"story\",\"summary\":\"Store finder map\",\"description\":\"Needs a map provider decision first.\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":8,\"parent\":\"\",\"sprint\":\"\",\"rank\":24000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-09T08:48:00.000Z\",\"updated\":\"2026-11-09T08:48:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-09T08:48:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"}]}]}",
                    "asOf": "2026-11-24"
                  }
                },
                "example2": {
                  "summary": "Completed sprint 2 of the template, counted in issues",
                  "value": {
                    "project": "{\"format\":\"trackwell\",\"version\":1,\"name\":\"Website relaunch\",\"key\":\"WEB\",\"description\":\"Scrum project for the new company website: two-week sprints, story points, epics with stories and sub-tasks.\",\"nextNumber\":25,\"types\":[\"story\",\"task\",\"bug\",\"epic\",\"subtask\"],\"components\":[{\"id\":\"frontend\",\"name\":\"Frontend\"},{\"id\":\"backend\",\"name\":\"Backend\"},{\"id\":\"content\",\"name\":\"Content\"}],\"versions\":[{\"id\":\"v1\",\"name\":\"Launch 1.0\",\"released\":false,\"date\":\"2026-12-12\"}],\"customFields\":[{\"id\":\"browser\",\"name\":\"Browser\",\"type\":\"select\",\"options\":[\"Chrome\",\"Firefox\",\"Safari\",\"Edge\"],\"types\":[\"bug\"]}],\"people\":[{\"id\":\"me\",\"name\":\"Alex Morgan\"},{\"id\":\"ada\",\"name\":\"Ada Lovelace\"},{\"id\":\"grace\",\"name\":\"Grace Hopper\"},{\"id\":\"linus\",\"name\":\"Linus Kaur\"},{\"id\":\"mia\",\"name\":\"Mia Okafor\"}],\"workflow\":{\"statuses\":[{\"id\":\"backlog\",\"name\":\"Backlog\",\"category\":\"todo\"},{\"id\":\"todo\",\"name\":\"To do\",\"category\":\"todo\"},{\"id\":\"in-progress\",\"name\":\"In progress\",\"category\":\"inprogress\"},{\"id\":\"review\",\"name\":\"In review\",\"category\":\"inprogress\"},{\"id\":\"done\",\"name\":\"Done\",\"category\":\"done\"}],\"transitions\":[{\"id\":\"plan\",\"name\":\"Plan\",\"from\":[\"backlog\"],\"to\":\"todo\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}},{\"id\":\"start\",\"name\":\"Start work\",\"from\":[\"backlog\",\"todo\"],\"to\":\"in-progress\",\"rules\":{\"require\":[\"assignee\"],\"resolution\":false,\"roles\":[]}},{\"id\":\"review\",\"name\":\"Ask for review\",\"from\":[\"in-progress\"],\"to\":\"review\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}},{\"id\":\"rework\",\"name\":\"Needs changes\",\"from\":[\"review\"],\"to\":\"in-progress\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}},{\"id\":\"done\",\"name\":\"Done\",\"from\":[\"review\",\"in-progress\"],\"to\":\"done\",\"rules\":{\"require\":[],\"resolution\":true,\"roles\":[]}},{\"id\":\"drop\",\"name\":\"Won’t do\",\"from\":[\"backlog\",\"todo\"],\"to\":\"done\",\"rules\":{\"require\":[\"description\"],\"resolution\":true,\"roles\":[\"admin\"]}},{\"id\":\"reopen\",\"name\":\"Reopen\",\"from\":[\"done\"],\"to\":\"todo\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}},{\"id\":\"stop\",\"name\":\"Stop work\",\"from\":[\"in-progress\"],\"to\":\"todo\",\"rules\":{\"require\":[],\"resolution\":false,\"roles\":[]}}],\"initial\":\"backlog\"},\"resolutions\":[\"Done\",\"Won’t do\",\"Duplicate\",\"Cannot reproduce\"],\"board\":{\"mode\":\"scrum\",\"columns\":[{\"id\":\"c-todo\",\"name\":\"To do\",\"statuses\":[\"backlog\",\"todo\"],\"wip\":0},{\"id\":\"c-progress\",\"name\":\"In progress\",\"statuses\":[\"in-progress\"],\"wip\":4},{\"id\":\"c-review\",\"name\":\"In review\",\"statuses\":[\"review\"],\"wip\":2},{\"id\":\"c-done\",\"name\":\"Done\",\"statuses\":[\"done\"],\"wip\":0}]},\"sprints\":[{\"id\":\"s1\",\"name\":\"WEB Sprint 1\",\"goal\":\"Design system and page skeleton\",\"state\":\"closed\",\"start\":\"2026-10-18\",\"end\":\"2026-10-31\",\"completedAt\":\"2026-10-31T17:00:00.000Z\",\"committedPoints\":13},{\"id\":\"s2\",\"name\":\"WEB Sprint 2\",\"goal\":\"Product pages and search\",\"state\":\"closed\",\"start\":\"2026-11-01\",\"end\":\"2026-11-14\",\"completedAt\":\"2026-11-14T17:00:00.000Z\",\"committedPoints\":18},{\"id\":\"s3\",\"name\":\"WEB Sprint 3\",\"goal\":\"Checkout, sign-in and accessibility fixes\",\"state\":\"active\",\"start\":\"2026-11-15\",\"end\":\"2026-11-28\",\"completedAt\":\"\",\"committedPoints\":21},{\"id\":\"s4\",\"name\":\"WEB Sprint 4\",\"goal\":\"Launch preparation\",\"state\":\"future\",\"start\":\"\",\"end\":\"\",\"completedAt\":\"\",\"committedPoints\":0}],\"sla\":{\"calendar\":{\"days\":[1,2,3,4,5],\"start\":\"09:00\",\"end\":\"17:00\",\"holidays\":[],\"offsetMinutes\":0},\"policies\":[]},\"filters\":[{\"id\":\"mine\",\"name\":\"My open issues\",\"query\":\"assignee = me AND statusCategory != Done ORDER BY priority\"},{\"id\":\"bugs\",\"name\":\"Open bugs by priority\",\"query\":\"type = Bug AND resolution IS EMPTY ORDER BY priority, created\"},{\"id\":\"recent\",\"name\":\"Created in the last 14 days\",\"query\":\"created \u003e= -14d ORDER BY created DESC\"}],\"portal\":{\"enabled\":false,\"intro\":\"\",\"types\":[\"bug\"]},\"settings\":{\"estimateUnit\":\"points\"},\"issues\":[{\"id\":\"i1\",\"key\":\"WEB-1\",\"number\":1,\"type\":\"epic\",\"summary\":\"Design system\",\"description\":\"Colours, type scale, spacing and components that every page uses.\\n\\n- [x] Tokens\\n- [x] Buttons and forms\\n- [ ] Dark mode\",\"status\":\"in-progress\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[\"v1\"],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"\",\"rank\":1000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-10T09:07:00.000Z\",\"updated\":\"2026-10-19T10:11:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-10-10T09:07:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-19T10:11:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"}]},{\"id\":\"i2\",\"key\":\"WEB-2\",\"number\":2,\"type\":\"epic\",\"summary\":\"Checkout\",\"description\":\"Cart, address, payment and confirmation pages.\",\"status\":\"in-progress\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\",\"backend\"],\"fixVersions\":[\"v1\"],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"\",\"rank\":2000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-11T10:14:00.000Z\",\"updated\":\"2026-11-16T11:22:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-10-11T10:14:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-16T11:22:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"}]},{\"id\":\"i3\",\"key\":\"WEB-3\",\"number\":3,\"type\":\"story\",\"summary\":\"Colour tokens and type scale\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":3,\"parent\":\"i1\",\"sprint\":\"s1\",\"rank\":3000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-15T11:21:00.000Z\",\"updated\":\"2026-10-23T12:33:00.000Z\",\"resolvedAt\":\"2026-10-23T12:33:00.000Z\",\"history\":[{\"at\":\"2026-10-15T11:21:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-15T11:21:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s1\"},{\"at\":\"2026-10-19T12:33:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-10-22T12:33:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-10-23T12:33:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i4\",\"key\":\"WEB-4\",\"number\":4,\"type\":\"story\",\"summary\":\"Button and form components\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"i1\",\"sprint\":\"s1\",\"rank\":4000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-15T12:28:00.000Z\",\"updated\":\"2026-10-28T13:44:00.000Z\",\"resolvedAt\":\"2026-10-28T13:44:00.000Z\",\"history\":[{\"at\":\"2026-10-15T12:28:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-15T12:28:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s1\"},{\"at\":\"2026-10-21T13:44:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-10-26T13:44:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-10-28T13:44:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i5\",\"key\":\"WEB-5\",\"number\":5,\"type\":\"story\",\"summary\":\"Page skeleton with header and footer\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"grace\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"\",\"sprint\":\"s1\",\"rank\":5000,\"watchers\":[\"me\",\"grace\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-15T13:35:00.000Z\",\"updated\":\"2026-10-30T14:55:00.000Z\",\"resolvedAt\":\"2026-10-30T14:55:00.000Z\",\"history\":[{\"at\":\"2026-10-15T13:35:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-15T13:35:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s1\"},{\"at\":\"2026-10-20T14:55:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-10-27T14:55:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-10-30T14:55:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i6\",\"key\":\"WEB-6\",\"number\":6,\"type\":\"story\",\"summary\":\"Product list with filters\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"grace\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\",\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":8,\"parent\":\"\",\"sprint\":\"s2\",\"rank\":6000,\"watchers\":[\"me\",\"grace\"],\"links\":[],\"attachments\":[],\"worklogs\":[{\"id\":\"w6-1\",\"who\":\"grace\",\"started\":\"2026-10-26T09:00:00.000Z\",\"minutes\":240,\"note\":\"Filter state in the URL\"},{\"id\":\"w6-2\",\"who\":\"grace\",\"started\":\"2026-10-29T10:00:00.000Z\",\"minutes\":300,\"note\":\"API pagination\"}],\"comments\":[],\"custom\":{},\"created\":\"2026-10-15T14:42:00.000Z\",\"updated\":\"2026-11-08T15:06:00.000Z\",\"resolvedAt\":\"2026-11-08T15:06:00.000Z\",\"history\":[{\"at\":\"2026-10-15T14:42:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-15T14:42:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s1\"},{\"at\":\"2026-10-31T17:30:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"s1\",\"to\":\"s2\"},{\"at\":\"2026-10-25T15:06:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-06T15:06:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-08T15:06:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i7\",\"key\":\"WEB-7\",\"number\":7,\"type\":\"story\",\"summary\":\"Product detail page\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"\",\"sprint\":\"s2\",\"rank\":7000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-10-29T15:49:00.000Z\",\"updated\":\"2026-11-09T16:17:00.000Z\",\"resolvedAt\":\"2026-11-09T16:17:00.000Z\",\"history\":[{\"at\":\"2026-10-29T15:49:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-29T15:49:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s2\"},{\"at\":\"2026-11-02T16:17:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-07T16:17:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-09T16:17:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i8\",\"key\":\"WEB-8\",\"number\":8,\"type\":\"story\",\"summary\":\"Site search with suggestions\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"mia\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":960,\"storyPoints\":5,\"parent\":\"\",\"sprint\":\"s2\",\"rank\":8000,\"watchers\":[\"me\",\"mia\"],\"links\":[],\"attachments\":[],\"worklogs\":[{\"id\":\"w8-1\",\"who\":\"mia\",\"started\":\"2026-11-04T09:00:00.000Z\",\"minutes\":360,\"note\":\"Index\"},{\"id\":\"w8-2\",\"who\":\"mia\",\"started\":\"2026-11-09T10:00:00.000Z\",\"minutes\":420,\"note\":\"Suggestions endpoint\"}],\"comments\":[],\"custom\":{},\"created\":\"2026-10-29T08:56:00.000Z\",\"updated\":\"2026-11-12T09:28:00.000Z\",\"resolvedAt\":\"2026-11-12T09:28:00.000Z\",\"history\":[{\"at\":\"2026-10-29T08:56:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-10-29T08:56:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s2\"},{\"at\":\"2026-11-03T09:28:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-10T09:28:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-12T09:28:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i9\",\"key\":\"WEB-9\",\"number\":9,\"type\":\"bug\",\"summary\":\"Filters reset when going back in the browser\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"high\",\"severity\":\"\",\"assignee\":\"grace\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"s2\",\"rank\":9000,\"watchers\":[\"me\",\"grace\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[{\"id\":\"c9-1\",\"author\":\"grace\",\"body\":\"Reproduced in Safari 18. The history state is not restored.\",\"at\":\"2026-11-06T11:00:00.000Z\"}],\"custom\":{\"browser\":\"Safari\"},\"created\":\"2026-11-05T09:03:00.000Z\",\"updated\":\"2026-11-08T10:39:00.000Z\",\"resolvedAt\":\"2026-11-08T10:39:00.000Z\",\"history\":[{\"at\":\"2026-11-05T09:03:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-05T09:03:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s2\"},{\"at\":\"2026-11-06T10:39:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-07T10:39:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-08T10:39:00.000Z\",\"who\":\"grace\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i10\",\"key\":\"WEB-10\",\"number\":10,\"type\":\"story\",\"summary\":\"Cart with quantity changes\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"i2\",\"sprint\":\"s3\",\"rank\":10000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-12T10:10:00.000Z\",\"updated\":\"2026-11-20T11:50:00.000Z\",\"resolvedAt\":\"2026-11-20T11:50:00.000Z\",\"history\":[{\"at\":\"2026-11-12T10:10:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-12T10:10:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-16T11:50:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-19T11:50:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-20T11:50:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i11\",\"key\":\"WEB-11\",\"number\":11,\"type\":\"story\",\"summary\":\"Address form with validation\",\"description\":\"Postal code rules per country.\\n\\n| Country | Rule |\\n| --- | --- |\\n| DE | 5 digits |\\n| UK | outward + inward code |\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":3,\"parent\":\"i2\",\"sprint\":\"s3\",\"rank\":11000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-12T11:17:00.000Z\",\"updated\":\"2026-11-22T12:01:00.000Z\",\"resolvedAt\":\"2026-11-22T12:01:00.000Z\",\"history\":[{\"at\":\"2026-11-12T11:17:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-12T11:17:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-17T12:01:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-21T12:01:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-22T12:01:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i12\",\"key\":\"WEB-12\",\"number\":12,\"type\":\"story\",\"summary\":\"Payment step\",\"description\":\"## Goal\\nCustomers pay by **card** or **bank transfer** in one step, without leaving the shop.\\n\\n## Acceptance criteria\\n- [x] Card form with live validation\\n- [ ] Error messages for declined cards (WEB-18)\\n- [ ] 3-D Secure challenge in a dialog\\n\\n| Provider state | Shown to the customer |\\n| --- | --- |\\n| `declined` | Try another card |\\n| `timeout` | Try again in a minute |\\n\\nSpecs: [payment flow](https://example.com/specs/payment)\",\"status\":\"in-progress\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\",\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":1440,\"storyPoints\":8,\"parent\":\"i2\",\"sprint\":\"s3\",\"rank\":12000,\"watchers\":[\"me\",\"linus\"],\"links\":[{\"type\":\"is-blocked-by\",\"target\":\"i14\"}],\"attachments\":[],\"worklogs\":[{\"id\":\"w12-1\",\"who\":\"linus\",\"started\":\"2026-11-20T09:00:00.000Z\",\"minutes\":300,\"note\":\"Provider sandbox\"},{\"id\":\"w12-2\",\"who\":\"linus\",\"started\":\"2026-11-22T10:00:00.000Z\",\"minutes\":240,\"note\":\"Error states\"}],\"comments\":[{\"id\":\"c12-1\",\"author\":\"linus\",\"body\":\"Waiting for the sandbox keys, see WEB-14. @[Mia Okafor] can you check?\",\"at\":\"2026-11-21T14:00:00.000Z\"},{\"id\":\"c12-2\",\"author\":\"mia\",\"body\":\"Asked the provider today.\",\"at\":\"2026-11-22T14:13:00.000Z\"}],\"custom\":{},\"created\":\"2026-11-12T12:24:00.000Z\",\"updated\":\"2026-11-22T14:13:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-12T12:24:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-12T12:24:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-20T13:12:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"}]},{\"id\":\"i13\",\"key\":\"WEB-13\",\"number\":13,\"type\":\"story\",\"summary\":\"Sign-in with passkeys\",\"description\":\"\",\"status\":\"review\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"mia\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"\",\"sprint\":\"s3\",\"rank\":13000,\"watchers\":[\"me\",\"mia\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-13T13:31:00.000Z\",\"updated\":\"2026-11-23T14:23:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-13T13:31:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-13T13:31:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-18T14:23:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-23T14:23:00.000Z\",\"who\":\"mia\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"}]},{\"id\":\"i14\",\"key\":\"WEB-14\",\"number\":14,\"type\":\"task\",\"summary\":\"Request payment provider sandbox keys\",\"description\":\"\",\"status\":\"in-progress\",\"resolution\":\"\",\"priority\":\"high\",\"severity\":\"\",\"assignee\":\"me\",\"reporter\":\"me\",\"labels\":[],\"components\":[],\"fixVersions\":[],\"due\":\"2026-11-25\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"s3\",\"rank\":14000,\"watchers\":[\"me\"],\"links\":[{\"type\":\"blocks\",\"target\":\"i12\"}],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-14T14:38:00.000Z\",\"updated\":\"2026-11-15T15:34:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-14T14:38:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-14T14:38:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-15T15:34:00.000Z\",\"who\":\"me\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"}]},{\"id\":\"i15\",\"key\":\"WEB-15\",\"number\":15,\"type\":\"bug\",\"summary\":\"Focus ring missing on the cart button\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"ada\",\"reporter\":\"me\",\"labels\":[\"accessibility\"],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"s3\",\"rank\":15000,\"watchers\":[\"me\",\"ada\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{\"browser\":\"Firefox\"},\"created\":\"2026-11-18T15:45:00.000Z\",\"updated\":\"2026-11-21T16:45:00.000Z\",\"resolvedAt\":\"2026-11-21T16:45:00.000Z\",\"history\":[{\"at\":\"2026-11-18T15:45:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-18T15:45:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-19T16:45:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-20T16:45:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"review\"},{\"at\":\"2026-11-21T16:45:00.000Z\",\"who\":\"ada\",\"field\":\"status\",\"from\":\"review\",\"to\":\"done\"}]},{\"id\":\"i16\",\"key\":\"WEB-16\",\"number\":16,\"type\":\"bug\",\"summary\":\"Contrast of the price label is too low\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"high\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[\"accessibility\"],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"s3\",\"rank\":16000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-21T08:52:00.000Z\",\"updated\":\"2026-11-21T08:52:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-21T08:52:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-21T08:52:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"}]},{\"id\":\"i17\",\"key\":\"WEB-17\",\"number\":17,\"type\":\"subtask\",\"summary\":\"Card number field\",\"description\":\"\",\"status\":\"done\",\"resolution\":\"Done\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"i12\",\"sprint\":\"s3\",\"rank\":17000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-20T09:59:00.000Z\",\"updated\":\"2026-11-23T10:07:00.000Z\",\"resolvedAt\":\"2026-11-23T10:07:00.000Z\",\"history\":[{\"at\":\"2026-11-20T09:59:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-20T09:59:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"},{\"at\":\"2026-11-21T10:07:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"backlog\",\"to\":\"in-progress\"},{\"at\":\"2026-11-23T10:07:00.000Z\",\"who\":\"linus\",\"field\":\"status\",\"from\":\"in-progress\",\"to\":\"done\"}]},{\"id\":\"i18\",\"key\":\"WEB-18\",\"number\":18,\"type\":\"subtask\",\"summary\":\"Payment error messages\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"linus\",\"reporter\":\"me\",\"labels\":[],\"components\":[],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"i12\",\"sprint\":\"s3\",\"rank\":18000,\"watchers\":[\"me\",\"linus\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-20T10:06:00.000Z\",\"updated\":\"2026-11-20T10:06:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-20T10:06:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-20T10:06:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s3\"}]},{\"id\":\"i19\",\"key\":\"WEB-19\",\"number\":19,\"type\":\"story\",\"summary\":\"Order confirmation e-mail\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":3,\"parent\":\"i2\",\"sprint\":\"s4\",\"rank\":19000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-16T11:13:00.000Z\",\"updated\":\"2026-11-16T11:13:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-16T11:13:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-16T11:13:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s4\"}]},{\"id\":\"i20\",\"key\":\"WEB-20\",\"number\":20,\"type\":\"story\",\"summary\":\"Cookie banner text\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"content\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":1,\"parent\":\"\",\"sprint\":\"s4\",\"rank\":20000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-17T12:20:00.000Z\",\"updated\":\"2026-11-17T12:20:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-17T12:20:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"},{\"at\":\"2026-11-17T12:20:00.000Z\",\"who\":\"me\",\"field\":\"sprint\",\"from\":\"\",\"to\":\"s4\"}]},{\"id\":\"i21\",\"key\":\"WEB-21\",\"number\":21,\"type\":\"story\",\"summary\":\"Dark mode for all components\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":5,\"parent\":\"i1\",\"sprint\":\"\",\"rank\":21000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-04T13:27:00.000Z\",\"updated\":\"2026-11-04T13:27:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-04T13:27:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"}]},{\"id\":\"i22\",\"key\":\"WEB-22\",\"number\":22,\"type\":\"task\",\"summary\":\"Write the launch checklist\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"me\",\"reporter\":\"me\",\"labels\":[],\"components\":[],\"fixVersions\":[\"v1\"],\"due\":\"2026-12-06\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"\",\"rank\":22000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-19T14:34:00.000Z\",\"updated\":\"2026-11-19T14:34:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-19T14:34:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"}]},{\"id\":\"i23\",\"key\":\"WEB-23\",\"number\":23,\"type\":\"bug\",\"summary\":\"Search suggestions show deleted products\",\"description\":\"\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"low\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"grace\",\"labels\":[],\"components\":[\"backend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":null,\"parent\":\"\",\"sprint\":\"\",\"rank\":23000,\"watchers\":[\"grace\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{\"browser\":\"Chrome\"},\"created\":\"2026-11-22T15:41:00.000Z\",\"updated\":\"2026-11-22T15:41:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-22T15:41:00.000Z\",\"who\":\"grace\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"}]},{\"id\":\"i24\",\"key\":\"WEB-24\",\"number\":24,\"type\":\"story\",\"summary\":\"Store finder map\",\"description\":\"Needs a map provider decision first.\",\"status\":\"backlog\",\"resolution\":\"\",\"priority\":\"medium\",\"severity\":\"\",\"assignee\":\"\",\"reporter\":\"me\",\"labels\":[],\"components\":[\"frontend\"],\"fixVersions\":[],\"due\":\"\",\"estimate\":0,\"storyPoints\":8,\"parent\":\"\",\"sprint\":\"\",\"rank\":24000,\"watchers\":[\"me\"],\"links\":[],\"attachments\":[],\"worklogs\":[],\"comments\":[],\"custom\":{},\"created\":\"2026-11-09T08:48:00.000Z\",\"updated\":\"2026-11-09T08:48:00.000Z\",\"resolvedAt\":\"\",\"history\":[{\"at\":\"2026-11-09T08:48:00.000Z\",\"who\":\"me\",\"field\":\"created\",\"from\":\"\",\"to\":\"backlog\"}]}]}",
                    "sprint": "WEB Sprint 2",
                    "unit": "issues",
                    "asOf": "2026-11-24"
                  }
                },
                "example3": {
                  "summary": "Ten-day sprint from a table, with one item added and one removed",
                  "value": {
                    "start": "2026-11-02",
                    "end": "2026-11-13",
                    "asOf": "2026-11-13",
                    "items": [
                      {
                        "key": "A-1",
                        "points": 5,
                        "done": "2026-11-05"
                      },
                      {
                        "key": "A-2",
                        "points": 3,
                        "done": "2026-11-09"
                      },
                      {
                        "key": "A-3",
                        "points": 8,
                        "done": "2026-11-12"
                      },
                      {
                        "key": "A-4",
                        "points": 2,
                        "removed": "2026-11-06"
                      },
                      {
                        "key": "A-5",
                        "points": 3,
                        "added": "2026-11-04"
                      },
                      {
                        "key": "A-6",
                        "points": 5
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrackwellBurndownResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tool": {
      "get": {
        "operationId": "getToolDefinition",
        "summary": "Inputs, output schema and examples for this tool",
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "TrackwellBurndownInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "project": {
            "title": "Trackwell project (JSON, optional)",
            "description": "A .trackwell.json project with sprints. Leave empty to use the items table below.",
            "type": "string",
            "maxLength": 3000000,
            "default": ""
          },
          "sprint": {
            "title": "Sprint name",
            "description": "Empty = the active sprint (or the last completed one).",
            "type": "string",
            "maxLength": 80,
            "default": ""
          },
          "start": {
            "title": "Sprint start (items table only)",
            "type": "string",
            "format": "date"
          },
          "end": {
            "title": "Sprint end (items table only)",
            "type": "string",
            "format": "date"
          },
          "items": {
            "title": "Sprint items",
            "description": "Dates as YYYY-MM-DD (counted at the end of that day) or YYYY-MM-DDTHH:MM.",
            "type": "array",
            "maxItems": 300,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "key": {
                  "title": "Key",
                  "type": "string",
                  "default": ""
                },
                "points": {
                  "title": "Points",
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1000,
                  "default": 0
                },
                "added": {
                  "title": "Added (date, empty = at start)",
                  "type": "string",
                  "default": ""
                },
                "removed": {
                  "title": "Removed (date)",
                  "type": "string",
                  "default": ""
                },
                "done": {
                  "title": "Done (date)",
                  "type": "string",
                  "default": ""
                }
              },
              "required": []
            },
            "default": []
          },
          "unit": {
            "title": "Measure",
            "type": "string",
            "enum": [
              "points",
              "issues"
            ],
            "default": "points"
          },
          "asOf": {
            "title": "Today is",
            "description": "Days after this date are left empty. Empty = today.",
            "type": "string",
            "format": "date"
          }
        },
        "required": []
      },
      "TrackwellBurndownResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "required": [
              "days",
              "committed",
              "completed",
              "remaining"
            ],
            "properties": {
              "sprint": {
                "type": "string"
              },
              "start": {
                "type": "string"
              },
              "end": {
                "type": "string"
              },
              "asOf": {
                "type": "string"
              },
              "unit": {
                "type": "string"
              },
              "days": {
                "type": "array"
              },
              "committed": {
                "type": "number"
              },
              "finalScope": {
                "type": "number"
              },
              "completed": {
                "type": "number"
              },
              "remaining": {
                "type": "number"
              },
              "added": {
                "type": "array"
              },
              "removed": {
                "type": "array"
              },
              "finished": {
                "type": "array"
              },
              "open": {
                "type": "array"
              },
              "svgArtifact": {
                "type": "string"
              },
              "csvArtifact": {
                "type": "string"
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      }
    }
  }
}