{
  "openapi": "3.1.1",
  "info": {
    "title": "Trackwell Query Filter API",
    "version": "1.0.0",
    "summary": "Filter an exported issue list with a JQL-style query: status, assignee, dates, ORDER BY.",
    "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://trackwelljqlfilter.usefulweb.app"
    }
  ],
  "paths": {
    "/api/v1/calculate": {
      "post": {
        "operationId": "calculate",
        "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/tool": {
      "get": {
        "operationId": "getToolDefinition",
        "summary": "Inputs, output schema and examples for this tool",
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "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"
              }
            }
          }
        }
      }
    }
  }
}