API reference

Issue reports and dashboards

Reports over any query, timesheets, and dashboards of gadgets.
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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Query parameters

  • usersstring

    Up to 10,000 characters.

  • teamstring

    Up to 64 characters.

  • fromintegerrequired

    ≥ 0. Coerced from a string.

  • tointegerrequired

    ≥ 0. Coerced from a string.

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/reports/timesheet?from=1&to=1' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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; versionReport follows a version's scope and completed work with a forecast release date.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Query parameters

  • type"createdVsResolved" | "cumulativeFlow" | "controlChart" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "timeTracking" | "workload" | "epicProgress" | "versionReport"required
  • jqlstring

    Default "". Up to 10,000 characters.

  • daysinteger

    1–730. Coerced from a string.

  • interval"day" | "week" | "month"
  • cumulative"0" | "1"
  • groupBystring

    Up to 64 characters.

  • groupBy2string

    Up to 64 characters.

  • from"inprogress" | "created"
  • tzOffsetinteger

    -840–840. Coerced from a string.

  • versionstring

    Up to 64 characters.

  • unit"points" | "issues"
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/reports?type=createdVsResolved' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  type: "createdVsResolved"
  interval: "month" | "day" | "week"
  cumulative: boolean
  rows: {
    at: number
    created: number
    resolved: number
    unresolved: number
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "cumulativeFlow"
  interval: "month" | "day" | "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
    clause: string
    label: string
    count: number
    points: number
    key: string
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "twoDimensional"
  x: string
  y: string
  columns: {
    clause: string
    label: string
    total: number
    key: string
  }[]
  rows: {
    clause: string
    label: string
    total: number
    cells: {
      [key: string]: number
    }
    key: string
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "averageAge"
  interval: "month" | "day" | "week"
  rows: {
    at: number
    unresolved: number
    days: number
  }[]
  jql: string
  total: number
  generatedAt: number
} | {
  type: "resolutionTime"
  interval: "month" | "day" | "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
} | {
  type: "versionReport"
  unit: "issues" | "points"
  interval: string
  version: null | {
    versionId: string
    name: string
    startDate?: string
    releaseDate?: string
    released: boolean
  }
  scope: number
  done: number
  remaining: number
  perDay: number
  forecast: null | number
  rows: {
    at: number
    scope: number
    done: 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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Request body

  • descriptionstring

    Up to 1,000 characters.

  • sharingobject
  • sharing.orgbooleanrequired
  • sharing.teamsstring[]required

    Up to 50 items. Each up to 64 characters.

  • sharing.usersstring[]required

    Up to 200 items. Each up to 64 characters.

  • layout"1" | "2" | "3" | "2-1" | "1-2"
  • gadgetsobject[]

    Up to 30 items.

  • gadgets[].idstring

    Up to 40 characters.

  • gadgets[].type"filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "velocity" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport" | "text"required
  • gadgets[].titlestring

    Up to 100 characters.

  • gadgets[].columnintegerrequired

    0–2.

  • gadgets[].configobjectrequired

    Values: any JSON.

  • baseVersioninteger

    ≥ 0.

  • namestringrequired

    1–100 characters. Trimmed.

curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example"
  }'
Send it from this page with your session or a key.

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" | "filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport"
      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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

Request body

  • dashboardIdstringrequiredor null

    Up to 64 characters.

curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards/default' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "dashboardId": "<dashboardId>"
  }'
Send it from this page with your session or a key.

Response 200

{
  dashboardId: null | string
}
GET/v1/orgs/:orgId/issues/dashboards/:dashboardId

A dashboard with its gadgets.

Auth
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • dashboardId

    Dashboard id: an issue dashboard (dsh_…) or a Cloud portal dashboard (pdb_…).

curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards/{dashboardId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

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" | "filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport"
      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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • dashboardId

    Dashboard id: an issue dashboard (dsh_…) or a Cloud portal dashboard (pdb_…).

Request body

  • namestring

    1–100 characters. Trimmed.

  • descriptionstring

    Up to 1,000 characters.

  • sharingobject
  • sharing.orgbooleanrequired
  • sharing.teamsstring[]required

    Up to 50 items. Each up to 64 characters.

  • sharing.usersstring[]required

    Up to 200 items. Each up to 64 characters.

  • layout"1" | "2" | "3" | "2-1" | "1-2"
  • gadgetsobject[]

    Up to 30 items.

  • gadgets[].idstring

    Up to 40 characters.

  • gadgets[].type"filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "velocity" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport" | "text"required
  • gadgets[].titlestring

    Up to 100 characters.

  • gadgets[].columnintegerrequired

    0–2.

  • gadgets[].configobjectrequired

    Values: any JSON.

  • baseVersioninteger

    ≥ 0.

curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards/{dashboardId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example",
    "description": "example",
    "sharing": {
      "org": true,
      "teams": [
        "example"
      ],
      "users": [
        "example"
      ]
    }
  }'
Send it from this page with your session or a key.

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" | "filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport"
      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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • dashboardId

    Dashboard id: an issue dashboard (dsh_…) or a Cloud portal dashboard (pdb_…).

Request body

  • namestring

    1–100 characters. Trimmed.

curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards/{dashboardId}/copy' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example"
  }'
Send it from this page with your session or a key.

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" | "filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport"
      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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • dashboardId

    Dashboard id: an issue dashboard (dsh_…) or a Cloud portal dashboard (pdb_…).

Request body

  • starredbooleanrequired
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards/{dashboardId}/star' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "starred": true
  }'
Send it from this page with your session or a key.

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" | "filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport"
      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
A person's token or an API key, as Authorization: Bearer.
Get an API key

Path parameters

  • orgId

    Organization id (org_…).

  • dashboardId

    Dashboard id: an issue dashboard (dsh_…) or a Cloud portal dashboard (pdb_…).

curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards/{dashboardId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  dashboardId: string
}