luke.mxDocs

Search docs

Search every page of the documentation.

API reference

Issue reports and dashboards

Reports over any query, timesheets, and dashboards of gadgets.

See Issues.

GET /v1/orgs/:orgId/issues/reports/timesheet

Work logged between two instants (at most 92 days) by people: users (ids, comma-separated), a team, or the caller.

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).
Query parameterTypeRequiredNotes
usersstringNoup to 10,000 characters
teamstringNoup to 64 characters
fromintegerYes≥ 0; coerced from a string
tointegerYes≥ 0; coerced from a string

Response 200

{
  worklogs: {
    worklogId: string
    issueId: string
    spaceId: string
    authorId: string
    started: number
    seconds: number
    comment: string
    createdAt: number
    updatedAt: number
  }[]
  issues: {
    issueId: string
    key: string
    summary: string
    spaceId: string
    typeId: string
  }[]
  people: {
    userId: string
    name?: string
    email?: string
  }[]
}

GET /v1/orgs/:orgId/issues/reports

Runs a report: createdVsResolved, cumulativeFlow, averageAge and resolutionTime are trends over days in interval buckets; controlChart gives cycle times of resolved issues; statistics and twoDimensional group by groupBy (and groupBy2); timeTracking, workload and epicProgress summarize estimates, assignees and epics.

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).
Query parameterTypeRequiredDefaultNotes
type"createdVsResolved" | "cumulativeFlow" | "controlChart" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "timeTracking" | "workload" | "epicProgress"Yes
jqlstringNo""up to 10,000 characters
daysintegerNo1–730; coerced from a string
interval"day" | "week" | "month"No
cumulative"0" | "1"No
groupBystringNoup to 64 characters
groupBy2stringNoup to 64 characters
from"inprogress" | "created"No
tzOffsetintegerNo-840–840; coerced from a string

Response 200

{
  type: "createdVsResolved"
  interval: "day" | "month" | "week"
  cumulative: boolean
  rows: {
    at: number
    created: number
    resolved: number
    unresolved: number
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "cumulativeFlow"
  interval: "day" | "month" | "week"
  statuses: {
    statusId: string
    name: string
    category: "done" | "todo" | "inprogress"
  }[]
  rows: {
    at: number
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "controlChart"
  from: "created" | "inprogress"
  stats: {
    count: number
    mean: number
    median: number
    min: number
    max: number
    stddev: number
  }
  points: {
    rolling?: number
    issueId: string
    key: string
    summary: string
    typeId: string
    start: number
    end: number
    ms: number
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "statistics"
  groupBy: string
  rows: {
    percent: number
    label: string
    count: number
    points: number
    key: string
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "twoDimensional"
  x: string
  y: string
  columns: {
    label: string
    total: number
    key: string
  }[]
  rows: {
    label: string
    total: number
    cells: {
      [key: string]: number
    }
    key: string
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "averageAge"
  interval: "day" | "month" | "week"
  rows: {
    at: number
    unresolved: number
    days: number
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "resolutionTime"
  interval: "day" | "month" | "week"
  rows: {
    at: number
    resolved: number
    days: number
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "timeTracking"
  totals: {
    original: number
    spent: number
    remaining: number
  }
  accuracy: null | number
  rows: {
    issueId: string
    key: string
    summary: string
    statusId: string
    original: number
    spent: number
    remaining: number
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "workload"
  rows: {
    label: string
    issues: number
    points: number
    remaining: number
    overdue: number
    key: string
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "epicProgress"
  rows: {
    issueId: string
    key: string
    summary: string
    statusId: string
    dueDate?: string
    total: number
    todo: number
    inprogress: number
    done: number
    points: number
    pointsDone: number
  }[]
  jql: string
  total: number
  generatedAt: number
}

GET /v1/orgs/:orgId/issues/dashboards

Dashboards the caller owns or that are shared with them (default and starred first).

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).

Response 200

{
  dashboards: {
    gadgetCount: number
    dashboardId: string
    name: string
    description: string
    ownerId?: string
    sharing: {
      org: boolean
      teams: string[]
      users: string[]
    }
    layout: "1" | "2" | "3" | "2-1" | "1-2"
    starred: boolean
    isDefault: boolean
    editable: boolean
    version: number
    updatedAt: number
  }[]
}

POST /v1/orgs/:orgId/issues/dashboards

Creates a dashboard; without gadgets it starts with a useful default set.

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).

Request body

FieldTypeRequiredNotes
descriptionstringNoup to 1,000 characters
sharingobjectNo
sharing.orgbooleanYes
sharing.teamsstring[]Yesup to 50 items; each up to 64 characters
sharing.usersstring[]Yesup to 200 items; each up to 64 characters
layout"1" | "2" | "3" | "2-1" | "1-2"No
gadgetsobject[]Noup to 30 items
gadgets[].idstringNoup to 40 characters
gadgets[].type"filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "velocity" | "epicProgress" | "text"Yes
gadgets[].titlestringNoup to 100 characters
gadgets[].columnintegerYes0–2
gadgets[].configobjectYesvalues: any JSON
baseVersionintegerNo≥ 0
namestringYes1–100 characters; trimmed

Response 201

{
  dashboard: {
    dashboardId: string
    name: string
    description: string
    ownerId?: string
    sharing: {
      org: boolean
      teams: string[]
      users: string[]
    }
    layout: "1" | "2" | "3" | "2-1" | "1-2"
    gadgets: {
      id: string
      type: "text" | "velocity" | "createdVsResolved" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "epicProgress" | "filterResults" | "assignedToMe" | "sprintBurndown"
      title?: string
      column: number
      config: {
        [key: string]: unknown
      }
    }[]
    starred: boolean
    isDefault: boolean
    editable: boolean
    version: number
    updatedAt: number
  }
}

PUT /v1/orgs/:orgId/issues/dashboards/default

Makes a dashboard the caller's default (dashboardId: null clears it).

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).

Request body

FieldTypeRequiredNotes
dashboardIdstringYesup to 64 characters; can be null

Response 200

{
  dashboardId: null | string
}

GET /v1/orgs/:orgId/issues/dashboards/:dashboardId

A dashboard with its gadgets.

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).
:dashboardIdDashboard id (dsh_…).

Response 200

{
  dashboard: {
    dashboardId: string
    name: string
    description: string
    ownerId?: string
    sharing: {
      org: boolean
      teams: string[]
      users: string[]
    }
    layout: "1" | "2" | "3" | "2-1" | "1-2"
    gadgets: {
      id: string
      type: "text" | "velocity" | "createdVsResolved" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "epicProgress" | "filterResults" | "assignedToMe" | "sprintBurndown"
      title?: string
      column: number
      config: {
        [key: string]: unknown
      }
    }[]
    starred: boolean
    isDefault: boolean
    editable: boolean
    version: number
    updatedAt: number
  }
}

PATCH /v1/orgs/:orgId/issues/dashboards/:dashboardId

Changes a dashboard (its owner, or org admins); pass baseVersion to avoid overwriting newer edits.

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).
:dashboardIdDashboard id (dsh_…).

Request body

FieldTypeRequiredNotes
namestringNo1–100 characters; trimmed
descriptionstringNoup to 1,000 characters
sharingobjectNo
sharing.orgbooleanYes
sharing.teamsstring[]Yesup to 50 items; each up to 64 characters
sharing.usersstring[]Yesup to 200 items; each up to 64 characters
layout"1" | "2" | "3" | "2-1" | "1-2"No
gadgetsobject[]Noup to 30 items
gadgets[].idstringNoup to 40 characters
gadgets[].type"filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "velocity" | "epicProgress" | "text"Yes
gadgets[].titlestringNoup to 100 characters
gadgets[].columnintegerYes0–2
gadgets[].configobjectYesvalues: any JSON
baseVersionintegerNo≥ 0

Response 200

{
  dashboard: {
    dashboardId: string
    name: string
    description: string
    ownerId?: string
    sharing: {
      org: boolean
      teams: string[]
      users: string[]
    }
    layout: "1" | "2" | "3" | "2-1" | "1-2"
    gadgets: {
      id: string
      type: "text" | "velocity" | "createdVsResolved" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "epicProgress" | "filterResults" | "assignedToMe" | "sprintBurndown"
      title?: string
      column: number
      config: {
        [key: string]: unknown
      }
    }[]
    starred: boolean
    isDefault: boolean
    editable: boolean
    version: number
    updatedAt: number
  }
}

POST /v1/orgs/:orgId/issues/dashboards/:dashboardId/copy

Copies a dashboard into a new private one owned by the caller.

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).
:dashboardIdDashboard id (dsh_…).

Request body

FieldTypeRequiredNotes
namestringNo1–100 characters; trimmed

Response 201

{
  dashboard: {
    dashboardId: string
    name: string
    description: string
    ownerId?: string
    sharing: {
      org: boolean
      teams: string[]
      users: string[]
    }
    layout: "1" | "2" | "3" | "2-1" | "1-2"
    gadgets: {
      id: string
      type: "text" | "velocity" | "createdVsResolved" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "epicProgress" | "filterResults" | "assignedToMe" | "sprintBurndown"
      title?: string
      column: number
      config: {
        [key: string]: unknown
      }
    }[]
    starred: boolean
    isDefault: boolean
    editable: boolean
    version: number
    updatedAt: number
  }
}

POST /v1/orgs/:orgId/issues/dashboards/:dashboardId/star

Stars or unstars a dashboard for the caller.

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).
:dashboardIdDashboard id (dsh_…).

Request body

FieldTypeRequiredNotes
starredbooleanYes

Response 200

{
  dashboard: {
    dashboardId: string
    name: string
    description: string
    ownerId?: string
    sharing: {
      org: boolean
      teams: string[]
      users: string[]
    }
    layout: "1" | "2" | "3" | "2-1" | "1-2"
    gadgets: {
      id: string
      type: "text" | "velocity" | "createdVsResolved" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "epicProgress" | "filterResults" | "assignedToMe" | "sprintBurndown"
      title?: string
      column: number
      config: {
        [key: string]: unknown
      }
    }[]
    starred: boolean
    isDefault: boolean
    editable: boolean
    version: number
    updatedAt: number
  }
}

DELETE /v1/orgs/:orgId/issues/dashboards/:dashboardId

Deletes a dashboard (its owner, or org admins).

Auth: user access token or platform agent key · Scope: issues:read

Path parameterDescription
:orgIdOrganization id (org_…).
:dashboardIdDashboard id (dsh_…).

Response 200

{
  dashboardId: string
}