{
  "openapi": "3.1.1",
  "info": {
    "title": "Trackwell API",
    "version": "1.0.0",
    "summary": "Deterministic tools for people and AI agents.",
    "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://trackwell.usefulweb.app"
    }
  ],
  "paths": {
    "/api/v1/tools": {
      "get": {
        "operationId": "listTools",
        "summary": "Catalog of all tools",
        "responses": {
          "200": {
            "description": "Tool list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/{id}": {
      "get": {
        "operationId": "getTool",
        "summary": "Definition of one tool",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "trackwell-jql-filter",
                "trackwell-sla-calculator",
                "trackwell-burndown",
                "trackwell-jira-csv-import"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/trackwell-jql-filter/calculate": {
      "post": {
        "operationId": "calculateTrackwellJqlFilter",
        "summary": "Filter an exported issue list with a JQL-style query: status, assignee, dates, ORDER BY.",
        "description": "Runs a query such as “project = WEB AND status != Done AND assignee = me ORDER BY priority” over an exported issue list (Trackwell project, Trackwell CSV or Jira CSV) and returns the matching issues as a table and CSV. Same query language as the list view in Trackwell.\n\nMethodology:\n- The query is parsed into AND/OR/NOT clauses (NOT binds tightest, then AND, then OR; brackets group). Field names and keywords are case-insensitive; text comparisons ignore case.\n- Status, type, priority, people, components, versions and sprints match their name or their id. = and IN match any value; != and NOT IN match when no value is equal (empty fields match !=); ~ means “contains”.\n- Priority and severity compare by urgency (priority \u003e Medium = High and Highest). Dates compare by day when the value is a date; -7d, +2w and today() count from the “Today is” date.\n- ORDER BY sorts by one or more fields; ascending is the default, and for priority and severity ascending means the most urgent first. Without ORDER BY the backlog rank is used.\n- CSV files are read with the same mapping as the Jira CSV import tool; the matches are exported again as CSV with Jira-compatible columns (RFC 4180, formula cells guarded).\n\nJira is a trademark of Atlassian. TQL is Trackwell’s own query language and supports a subset of the ideas of JQL.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "trackwell_jql_filter",
        "x-owner-app": "trackwell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackwellJqlFilterInput"
              },
              "examples": {
                "example1": {
                  "summary": "Open issues of the scrum template by priority",
                  "value": {
                    "issues": "{\"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\"}]}]}",
                    "query": "statusCategory != Done ORDER BY priority, created",
                    "asOf": "2026-11-24"
                  }
                },
                "example2": {
                  "summary": "My open work (me = Linus Kaur)",
                  "value": {
                    "issues": "{\"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\"}]}]}",
                    "query": "assignee = me AND resolution IS EMPTY ORDER BY priority",
                    "me": "Linus Kaur",
                    "asOf": "2026-11-24"
                  }
                },
                "example3": {
                  "summary": "Jira CSV: bugs and stories of the open sprint created in the last 14 days",
                  "value": {
                    "issues": "Summary,Issue key,Issue id,Issue Type,Status,Status Category,Project key,Project name,Priority,Resolution,Assignee,Reporter,Created,Updated,Resolved,Due Date,Labels,Labels,Component/s,Fix Version/s,Sprint,Sprint,Custom field (Story Points),Original Estimate,Time Spent,Parent id,Description,Comment,Comment,Outward issue link (Blocks),Custom field (Customer)\nMobile app onboarding,APP-1,10001,Epic,In Progress,In Progress,APP,Mobile app,High,,Priya Shah,Tom Becker,02/Nov/26 9:00 AM,20/Nov/26 4:10 PM,,,onboarding,,iOS,1.4,,,,,,,\"Everything a new user sees in the first five minutes.\",,,,\nWelcome screens with skip button,APP-2,10002,Story,Done,Done,APP,Mobile app,Medium,Done,Priya Shah,Tom Becker,02/Nov/26 9:30 AM,12/Nov/26 3:00 PM,12/Nov/26 3:00 PM,,onboarding,ux,iOS,1.4,APP Sprint 7,APP Sprint 8,5,28800,25200,10001,\"h2. Goal\n*Three* screens and a skip button.\n* Screen 1: value\n* Screen 2: privacy\n* Screen 3: start\",\"05/Nov/26 10:12 AM;Tom Becker;Looks good on the small phones too.\",,,\nPush permission prompt at the right moment,APP-3,10003,Story,In Progress,In Progress,APP,Mobile app,Medium,,Luis Ortega,Tom Becker,03/Nov/26 11:00 AM,21/Nov/26 9:20 AM,,28/Nov/26,onboarding,,iOS,1.4,APP Sprint 8,,3,14400,7200,10001,Ask only after the first saved item.,\"18/Nov/26 2:05 PM;Luis Ortega;Blocked until APP-5 is merged.\",,,\nCrash when the camera permission is denied,APP-4,10004,Bug,To Do,To Do,APP,Mobile app,Highest,,,Anna Kowalski,19/Nov/26 8:45 AM,19/Nov/26 8:45 AM,,,crash,,Android,1.4,APP Sprint 8,,,,,,\"{code}java.lang.SecurityException: camera{code}\",,,,ACME\nAnalytics event for skipped onboarding,APP-5,10005,Task,In Review,In Progress,APP,Mobile app,Low,,Priya Shah,Priya Shah,10/Nov/26 1:00 PM,20/Nov/26 5:30 PM,,,analytics,,,,APP Sprint 8,,2,7200,5400,10001,,,,APP-3,\nOld splash screen still shown on tablets,APP-6,10006,Bug,Done,Done,APP,Mobile app,Medium,Won't Do,Luis Ortega,Anna Kowalski,25/Oct/26 3:00 PM,04/Nov/26 10:00 AM,04/Nov/26 10:00 AM,,tablet,,Android,,APP Sprint 7,,1,,,,Tablets use the new layout from 1.4.,,,,\nTranslate onboarding into Spanish,APP-7,10007,Sub-task,To Do,To Do,APP,Mobile app,Medium,,,Tom Becker,20/Nov/26 9:00 AM,20/Nov/26 9:00 AM,,05/Dec/26,i18n,,iOS,1.4,,,,3600,,10002,,,,,\nReset password link expired too early,APP-8,10008,Bug,Waiting for customer,In Progress,APP,Mobile app,High,,Anna Kowalski,Customer Care,17/Nov/26 4:20 PM,18/Nov/26 9:00 AM,,,auth,,Android,,,,,,1800,,Customer says the link expired after 5 minutes.,,,,Globex",
                    "query": "type IN (Bug, Story) AND sprint IN openSprints() AND created \u003e= -14d ORDER BY created DESC",
                    "asOf": "2026-11-24"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrackwellJqlFilterResult"
                }
              }
            }
          },
          "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/tools/trackwell-sla-calculator/calculate": {
      "post": {
        "operationId": "calculateTrackwellSlaCalculator",
        "summary": "When is a ticket due in business hours? Working days, holidays, pauses and breaches.",
        "description": "Adds an SLA target (for example 4h or 2d of business time) to the moment a ticket was opened, skipping nights, weekends and holidays, and tells you the due time. With an “as of” or “stopped at” time it also shows elapsed business time, time left and whether the SLA was breached, minus paused periods such as “waiting for customer”.\n\nMethodology:\n- Business time runs only inside the working hours of working days that are not holidays. The local times you enter are converted with the fixed UTC offset; daylight saving changes are not applied.\n- Due time = the moment when the target’s business minutes have passed since the ticket was opened. A target in days uses the length of one working day (e.g. 1d = 8h for 09:00–17:00).\n- Elapsed time = business minutes from opening to the check time (or the stop time) minus the business minutes inside paused periods. Remaining = target − elapsed; negative means breached.\n- With a stop time the clock is final: met when elapsed ≤ target. Without one, the state is running, paused (inside a pause) or breached.\n- This is the same calculation Trackwell runs for incident and request SLAs (response and resolution) in its issue view and dashboard.\n\nCheck your contract for how it counts business hours, holidays and pauses; this tool follows the rules above.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "trackwell_sla_calculator",
        "x-owner-app": "trackwell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackwellSlaCalculatorInput"
              },
              "examples": {
                "example1": {
                  "summary": "Incident opened Friday 16:30, 4 business hours, Mon–Fri 9–17",
                  "value": {
                    "start": "2026-11-20T16:30",
                    "target": "4h",
                    "asOf": "2026-11-23T10:00"
                  }
                },
                "example2": {
                  "summary": "Request with 2 business days, a holiday and a pause, resolved in time",
                  "value": {
                    "start": "2026-12-23T11:00",
                    "target": "2d",
                    "dayStart": "08:00",
                    "dayEnd": "18:00",
                    "utcOffset": "+01:00",
                    "holidays": [
                      "2026-12-24",
                      "2026-12-25",
                      "2026-12-26"
                    ],
                    "pauses": [
                      {
                        "from": "2026-12-28T09:00",
                        "to": "2026-12-28T14:00"
                      }
                    ],
                    "stop": "2026-12-29T15:00"
                  }
                },
                "example3": {
                  "summary": "Response target of 30 minutes, answered late",
                  "value": {
                    "start": "2026-11-24T08:50",
                    "target": "30m",
                    "stop": "2026-11-24T09:45"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrackwellSlaCalculatorResult"
                }
              }
            }
          },
          "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/tools/trackwell-burndown/calculate": {
      "post": {
        "operationId": "calculateTrackwellBurndown",
        "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/tools/trackwell-jira-csv-import/calculate": {
      "post": {
        "operationId": "calculateTrackwellJiraCsvImport",
        "summary": "Turn a Jira CSV export into a Trackwell project: issues, statuses, sprints, people.",
        "description": "Reads the CSV file Jira exports for a filter (all fields) and maps it to a Trackwell project file: issue types, statuses with their category, priorities, assignees and reporters, labels, components, fix versions, sprints, story points, estimates, time spent, parents, links, comments and custom fields. It reports exactly what was mapped and what was left out.\n\nMethodology:\n- Columns are found by their Jira header names; repeated columns (Labels, Component/s, Fix Version/s, Sprint, Comment, Watchers) are all read. Trackwell’s own CSV export uses the same names, so it reads back the same way.\n- Issue types: Bug, Story, Epic, Sub-task, Incident (also Problem) and requests (Service request, IT help, Access, Support, Question) map to Trackwell types; everything else becomes Task. Priorities: Blocker/Critical → Highest, Major → High, Minor → Low, Trivial → Lowest.\n- Each distinct status becomes a workflow status; its category comes from the “Status Category” column, else from the name (Done/Closed/Resolved → done; In Progress/Review/Testing/Waiting → in progress). The imported workflow allows every move; refine it in the workflow editor.\n- Sprints: an issue’s last Sprint column is its current sprint; sprints that were followed by another one are closed, the open sprint with the most open issues becomes active. Story points come from “Custom field (Story Points)” or “(Story point estimate)”; Original Estimate and Time Spent are seconds in Jira and become minutes. Other “Custom field (…)” columns become text or number fields.\n- Dates in Jira’s default format (24/Nov/26 9:15 AM) or ISO are read as UTC. Parents are found by “Parent id”/“Parent” (Jira issue id or key); “Inward/Outward issue link (…)” columns become links between imported issues. Comments keep author and time; Jira wiki markup (h2., *bold*, {code}) becomes Markdown.\n\nJira is a trademark of Atlassian. Trackwell reads the export file you provide; it does not connect to Jira. Attachments, work log details and change history are not part of Jira’s CSV export.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "trackwell_jira_csv_import",
        "x-owner-app": "trackwell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackwellJiraCsvImportInput"
              },
              "examples": {
                "example1": {
                  "summary": "Small mobile app project (epic, stories, bugs, sub-task, two sprints)",
                  "value": {
                    "csv": "Summary,Issue key,Issue id,Issue Type,Status,Status Category,Project key,Project name,Priority,Resolution,Assignee,Reporter,Created,Updated,Resolved,Due Date,Labels,Labels,Component/s,Fix Version/s,Sprint,Sprint,Custom field (Story Points),Original Estimate,Time Spent,Parent id,Description,Comment,Comment,Outward issue link (Blocks),Custom field (Customer)\nMobile app onboarding,APP-1,10001,Epic,In Progress,In Progress,APP,Mobile app,High,,Priya Shah,Tom Becker,02/Nov/26 9:00 AM,20/Nov/26 4:10 PM,,,onboarding,,iOS,1.4,,,,,,,\"Everything a new user sees in the first five minutes.\",,,,\nWelcome screens with skip button,APP-2,10002,Story,Done,Done,APP,Mobile app,Medium,Done,Priya Shah,Tom Becker,02/Nov/26 9:30 AM,12/Nov/26 3:00 PM,12/Nov/26 3:00 PM,,onboarding,ux,iOS,1.4,APP Sprint 7,APP Sprint 8,5,28800,25200,10001,\"h2. Goal\n*Three* screens and a skip button.\n* Screen 1: value\n* Screen 2: privacy\n* Screen 3: start\",\"05/Nov/26 10:12 AM;Tom Becker;Looks good on the small phones too.\",,,\nPush permission prompt at the right moment,APP-3,10003,Story,In Progress,In Progress,APP,Mobile app,Medium,,Luis Ortega,Tom Becker,03/Nov/26 11:00 AM,21/Nov/26 9:20 AM,,28/Nov/26,onboarding,,iOS,1.4,APP Sprint 8,,3,14400,7200,10001,Ask only after the first saved item.,\"18/Nov/26 2:05 PM;Luis Ortega;Blocked until APP-5 is merged.\",,,\nCrash when the camera permission is denied,APP-4,10004,Bug,To Do,To Do,APP,Mobile app,Highest,,,Anna Kowalski,19/Nov/26 8:45 AM,19/Nov/26 8:45 AM,,,crash,,Android,1.4,APP Sprint 8,,,,,,\"{code}java.lang.SecurityException: camera{code}\",,,,ACME\nAnalytics event for skipped onboarding,APP-5,10005,Task,In Review,In Progress,APP,Mobile app,Low,,Priya Shah,Priya Shah,10/Nov/26 1:00 PM,20/Nov/26 5:30 PM,,,analytics,,,,APP Sprint 8,,2,7200,5400,10001,,,,APP-3,\nOld splash screen still shown on tablets,APP-6,10006,Bug,Done,Done,APP,Mobile app,Medium,Won't Do,Luis Ortega,Anna Kowalski,25/Oct/26 3:00 PM,04/Nov/26 10:00 AM,04/Nov/26 10:00 AM,,tablet,,Android,,APP Sprint 7,,1,,,,Tablets use the new layout from 1.4.,,,,\nTranslate onboarding into Spanish,APP-7,10007,Sub-task,To Do,To Do,APP,Mobile app,Medium,,,Tom Becker,20/Nov/26 9:00 AM,20/Nov/26 9:00 AM,,05/Dec/26,i18n,,iOS,1.4,,,,3600,,10002,,,,,\nReset password link expired too early,APP-8,10008,Bug,Waiting for customer,In Progress,APP,Mobile app,High,,Anna Kowalski,Customer Care,17/Nov/26 4:20 PM,18/Nov/26 9:00 AM,,,auth,,Android,,,,,,1800,,Customer says the link expired after 5 minutes.,,,,Globex"
                  }
                },
                "example2": {
                  "summary": "Same file as a kanban project with another key",
                  "value": {
                    "csv": "Summary,Issue key,Issue id,Issue Type,Status,Status Category,Project key,Project name,Priority,Resolution,Assignee,Reporter,Created,Updated,Resolved,Due Date,Labels,Labels,Component/s,Fix Version/s,Sprint,Sprint,Custom field (Story Points),Original Estimate,Time Spent,Parent id,Description,Comment,Comment,Outward issue link (Blocks),Custom field (Customer)\nMobile app onboarding,APP-1,10001,Epic,In Progress,In Progress,APP,Mobile app,High,,Priya Shah,Tom Becker,02/Nov/26 9:00 AM,20/Nov/26 4:10 PM,,,onboarding,,iOS,1.4,,,,,,,\"Everything a new user sees in the first five minutes.\",,,,\nWelcome screens with skip button,APP-2,10002,Story,Done,Done,APP,Mobile app,Medium,Done,Priya Shah,Tom Becker,02/Nov/26 9:30 AM,12/Nov/26 3:00 PM,12/Nov/26 3:00 PM,,onboarding,ux,iOS,1.4,APP Sprint 7,APP Sprint 8,5,28800,25200,10001,\"h2. Goal\n*Three* screens and a skip button.\n* Screen 1: value\n* Screen 2: privacy\n* Screen 3: start\",\"05/Nov/26 10:12 AM;Tom Becker;Looks good on the small phones too.\",,,\nPush permission prompt at the right moment,APP-3,10003,Story,In Progress,In Progress,APP,Mobile app,Medium,,Luis Ortega,Tom Becker,03/Nov/26 11:00 AM,21/Nov/26 9:20 AM,,28/Nov/26,onboarding,,iOS,1.4,APP Sprint 8,,3,14400,7200,10001,Ask only after the first saved item.,\"18/Nov/26 2:05 PM;Luis Ortega;Blocked until APP-5 is merged.\",,,\nCrash when the camera permission is denied,APP-4,10004,Bug,To Do,To Do,APP,Mobile app,Highest,,,Anna Kowalski,19/Nov/26 8:45 AM,19/Nov/26 8:45 AM,,,crash,,Android,1.4,APP Sprint 8,,,,,,\"{code}java.lang.SecurityException: camera{code}\",,,,ACME\nAnalytics event for skipped onboarding,APP-5,10005,Task,In Review,In Progress,APP,Mobile app,Low,,Priya Shah,Priya Shah,10/Nov/26 1:00 PM,20/Nov/26 5:30 PM,,,analytics,,,,APP Sprint 8,,2,7200,5400,10001,,,,APP-3,\nOld splash screen still shown on tablets,APP-6,10006,Bug,Done,Done,APP,Mobile app,Medium,Won't Do,Luis Ortega,Anna Kowalski,25/Oct/26 3:00 PM,04/Nov/26 10:00 AM,04/Nov/26 10:00 AM,,tablet,,Android,,APP Sprint 7,,1,,,,Tablets use the new layout from 1.4.,,,,\nTranslate onboarding into Spanish,APP-7,10007,Sub-task,To Do,To Do,APP,Mobile app,Medium,,,Tom Becker,20/Nov/26 9:00 AM,20/Nov/26 9:00 AM,,05/Dec/26,i18n,,iOS,1.4,,,,3600,,10002,,,,,\nReset password link expired too early,APP-8,10008,Bug,Waiting for customer,In Progress,APP,Mobile app,High,,Anna Kowalski,Customer Care,17/Nov/26 4:20 PM,18/Nov/26 9:00 AM,,,auth,,Android,,,,,,1800,,Customer says the link expired after 5 minutes.,,,,Globex",
                    "key": "MOB",
                    "name": "Mobile onboarding",
                    "mode": "kanban"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrackwellJiraCsvImportResult"
                }
              }
            }
          },
          "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/workflows": {
      "get": {
        "operationId": "listWorkflows",
        "summary": "Multi-tool workflows",
        "responses": {
          "200": {
            "description": "Workflow list.",
            "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"
                }
              }
            }
          }
        }
      },
      "TrackwellJqlFilterInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "issues": {
            "title": "Issues (JSON or CSV)",
            "description": "A Trackwell project file (.trackwell.json), a Trackwell CSV export or a Jira CSV export.",
            "type": "string",
            "maxLength": 3000000,
            "default": ""
          },
          "issuesFile": {
            "title": "Issues file (optional)",
            "description": "Used instead of the pasted text when given. Upload as {filename, contentType?, contentBase64}. Max 9766 KiB. Accepts .json,.csv,application/json,text/csv.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "query": {
            "title": "Query",
            "description": "Fields: project, key, type, status, statusCategory, priority, severity, assignee, reporter, labels, component, fixVersion, sprint, parent, epic, created, updated, resolved, due, resolution, text, summary, storyPoints and custom fields by name. Operators: = != \u003e \u003e= \u003c \u003c= ~ !~ IN, NOT IN, IS EMPTY. Values: words, \"quoted text\", 2026-11-24, -7d, me, today(), openSprints().",
            "type": "string",
            "maxLength": 2000,
            "default": "statusCategory != Done ORDER BY priority, created"
          },
          "me": {
            "title": "Who is “me”",
            "description": "A person’s name or id in the issue list. Used by assignee = me.",
            "type": "string",
            "maxLength": 80,
            "default": ""
          },
          "asOf": {
            "title": "Today is",
            "description": "Relative dates (-7d, today()) count from this day. Empty = today.",
            "type": "string",
            "format": "date"
          }
        },
        "required": []
      },
      "TrackwellJqlFilterResult": {
        "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": [
              "project",
              "count",
              "total",
              "rows"
            ],
            "properties": {
              "project": {
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "total": {
                "type": "integer"
              },
              "count": {
                "type": "integer"
              },
              "query": {
                "type": "string"
              },
              "rows": {
                "type": "array"
              },
              "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"
              }
            }
          }
        }
      },
      "TrackwellSlaCalculatorInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "start": {
            "title": "Ticket opened at (local time)",
            "type": "string",
            "description": "Local date-time YYYY-MM-DDTHH:mm",
            "default": "2026-11-20T16:30"
          },
          "target": {
            "title": "SLA target (business time)",
            "description": "For example 30m, 4h, 1d 4h or 2d. One day = the length of one working day.",
            "type": "string",
            "maxLength": 40,
            "default": "4h"
          },
          "days": {
            "title": "Working days",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "sun",
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat"
              ]
            },
            "default": [
              "mon",
              "tue",
              "wed",
              "thu",
              "fri"
            ]
          },
          "dayStart": {
            "title": "Working day starts",
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "default": "09:00"
          },
          "dayEnd": {
            "title": "Working day ends",
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "default": "17:00"
          },
          "utcOffset": {
            "title": "UTC offset of these times",
            "description": "For example +01:00 for CET in winter. Fixed offset: daylight saving changes are not applied.",
            "type": "string",
            "maxLength": 10,
            "default": "+00:00"
          },
          "holidays": {
            "title": "Holidays (one date per line)",
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 200,
            "default": []
          },
          "asOf": {
            "title": "Check at (local time, optional)",
            "description": "Shows elapsed and remaining business time at this moment. Local date-time YYYY-MM-DDTHH:mm",
            "type": "string"
          },
          "stop": {
            "title": "Responded or resolved at (optional)",
            "description": "Stops the clock: the SLA was met or breached. Local date-time YYYY-MM-DDTHH:mm",
            "type": "string"
          },
          "pauses": {
            "title": "Paused periods (waiting for customer)",
            "description": "Local times as YYYY-MM-DDTHH:MM.",
            "type": "array",
            "maxItems": 50,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "from": {
                  "title": "From",
                  "type": "string",
                  "default": ""
                },
                "to": {
                  "title": "To (empty = still paused)",
                  "type": "string",
                  "default": ""
                }
              },
              "required": []
            },
            "default": []
          }
        },
        "required": [
          "start"
        ]
      },
      "TrackwellSlaCalculatorResult": {
        "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": [
              "due",
              "targetMinutes"
            ],
            "properties": {
              "start": {
                "type": "string"
              },
              "due": {
                "type": "string"
              },
              "dueLocal": {
                "type": "string"
              },
              "dueUtc": {
                "type": "string"
              },
              "targetMinutes": {
                "type": "number"
              },
              "calendar": {
                "type": "object"
              },
              "clock": {
                "type": [
                  "object",
                  "null"
                ]
              },
              "businessHoursPerWeek": {
                "type": "number"
              }
            }
          },
          "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"
              }
            }
          }
        }
      },
      "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"
              }
            }
          }
        }
      },
      "TrackwellJiraCsvImportInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "csv": {
            "title": "Jira CSV export",
            "description": "In Jira: Filters → search → Export → Export Excel CSV (all fields). Paste it here or upload the file.",
            "type": "string",
            "maxLength": 5000000,
            "default": ""
          },
          "csvFile": {
            "title": "CSV file (optional)",
            "description": "Used instead of the pasted text when given. Upload as {filename, contentType?, contentBase64}. Max 19531 KiB. Accepts .csv,text/csv.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "key": {
            "title": "Project key (optional)",
            "description": "Empty = taken from the issue keys.",
            "type": "string",
            "maxLength": 10,
            "default": ""
          },
          "name": {
            "title": "Project name (optional)",
            "type": "string",
            "maxLength": 120,
            "default": ""
          },
          "mode": {
            "title": "Board",
            "type": "string",
            "enum": [
              "auto",
              "scrum",
              "kanban"
            ],
            "default": "auto"
          }
        },
        "required": []
      },
      "TrackwellJiraCsvImportResult": {
        "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": [
              "counts",
              "statuses",
              "types"
            ],
            "properties": {
              "counts": {
                "type": "object"
              },
              "statuses": {
                "type": "array"
              },
              "types": {
                "type": "array"
              },
              "columns": {
                "type": "array"
              },
              "warnings": {
                "type": "array"
              },
              "key": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "projectArtifact": {
                "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"
              }
            }
          }
        }
      }
    }
  }
}