API reference
Issue reports and dashboards
/ v1/ orgs/ :orgId/ issues/ reports/ timesheetWork 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.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
usersstringUp to 10,000 characters.
teamstringUp 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"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
}[]
}/ v1/ orgs/ :orgId/ issues/ reportsRuns 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.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
type"createdVsResolved" | "cumulativeFlow" | "controlChart" | "statistics" | "twoDimensional" | "averageAge" | "resolutionTime" | "timeTracking" | "workload" | "epicProgress" | "versionReport"requiredjqlstringDefault
"". Up to 10,000 characters.daysinteger1–730. Coerced from a string.
interval"day" | "week" | "month"cumulative"0" | "1"groupBystringUp to 64 characters.
groupBy2stringUp to 64 characters.
from"inprogress" | "created"tzOffsetinteger-840–840. Coerced from a string.
versionstringUp to 64 characters.
unit"points" | "issues"
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/reports?type=createdVsResolved' \
-H "Authorization: Bearer $CACTIVE_TOKEN"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
}/ v1/ orgs/ :orgId/ issues/ dashboardsDashboards 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.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/dashboards' \
-H "Authorization: Bearer $CACTIVE_TOKEN"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
}[]
}/ v1/ orgs/ :orgId/ issues/ dashboardsCreates a dashboard; without gadgets it starts with a useful default set.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).
Request body
descriptionstringUp to 1,000 characters.
sharingobjectsharing.orgbooleanrequiredsharing.teamsstring[]requiredUp to 50 items. Each up to 64 characters.
sharing.usersstring[]requiredUp to 200 items. Each up to 64 characters.
layout"1" | "2" | "3" | "2-1" | "1-2"gadgetsobject[]Up to 30 items.
gadgets[].idstringUp to 40 characters.
gadgets[].type"filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "velocity" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport" | "text"requiredgadgets[].titlestringUp to 100 characters.
gadgets[].columnintegerrequired0–2.
gadgets[].configobjectrequiredValues: any JSON.
baseVersioninteger≥ 0.
namestringrequired1–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"
}'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
}
}/ v1/ orgs/ :orgId/ issues/ dashboards/ defaultMakes a dashboard the caller's default (dashboardId: null clears it).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).
Request body
dashboardIdstringrequiredor nullUp 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>"
}'Response 200
{
dashboardId: null | string
}/ v1/ orgs/ :orgId/ issues/ dashboards/ :dashboardIdA dashboard with its gadgets.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).dashboardIdDashboard 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"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
}
}/ v1/ orgs/ :orgId/ issues/ dashboards/ :dashboardIdChanges 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.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).dashboardIdDashboard id: an issue dashboard (
dsh_…) or a Cloud portal dashboard (pdb_…).
Request body
namestring1–100 characters. Trimmed.
descriptionstringUp to 1,000 characters.
sharingobjectsharing.orgbooleanrequiredsharing.teamsstring[]requiredUp to 50 items. Each up to 64 characters.
sharing.usersstring[]requiredUp to 200 items. Each up to 64 characters.
layout"1" | "2" | "3" | "2-1" | "1-2"gadgetsobject[]Up to 30 items.
gadgets[].idstringUp to 40 characters.
gadgets[].type"filterResults" | "assignedToMe" | "statistics" | "createdVsResolved" | "twoDimensional" | "averageAge" | "resolutionTime" | "workload" | "sprintBurndown" | "velocity" | "epicProgress" | "cumulativeFlow" | "controlChart" | "timeTracking" | "versionReport" | "text"requiredgadgets[].titlestringUp to 100 characters.
gadgets[].columnintegerrequired0–2.
gadgets[].configobjectrequiredValues: 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"
]
}
}'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
}
}/ v1/ orgs/ :orgId/ issues/ dashboards/ :dashboardId/ copyCopies a dashboard into a new private one owned by the caller.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).dashboardIdDashboard id: an issue dashboard (
dsh_…) or a Cloud portal dashboard (pdb_…).
Request body
namestring1–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"
}'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
}
}/ v1/ orgs/ :orgId/ issues/ dashboards/ :dashboardId/ starStars or unstars a dashboard for the caller.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).dashboardIdDashboard 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
}'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
}
}/ v1/ orgs/ :orgId/ issues/ dashboards/ :dashboardIdDeletes a dashboard (its owner, or org admins).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).dashboardIdDashboard 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"Response 200
{
dashboardId: string
}