API reference
Issue spaces
/ v1/ orgs/ :orgId/ issues/ spacesSpaces the caller can browse (archived=1 includes archived ones).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
archived"0" | "1"
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
spaces: {
orgId: string
spaceId: string
key: string
name: string
description: string
template: "basic" | "service" | "scrum" | "kanban" | "bugs"
leadId?: string
icon?: string
color?: string
archived: boolean
archivedAt?: number
seq: number
config: {
issueTypeIds: string[]
defaultTypeId: string
workflows: {
[key: string]: string
}
screens: {
create: {
[key: string]: string
}
edit: {
[key: string]: string
}
view: {
[key: string]: string
}
}
fieldSettings: {
[key: string]: {
required?: boolean
hidden?: boolean
description?: string
}
}
customFieldIds: string[]
access: {
visibility: "org" | "private"
members: {
type: "user" | "team"
id: string
role: "admin" | "viewer" | "member"
}[]
}
permissionSchemeId?: string
securityLevels: {
id: string
name: string
description?: string
grants: object[]
}[]
defaultSecurityLevelId?: string
notifications: {
approval?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
resolved?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
deleted?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
mentioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
created?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
assigned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
updated?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
transitioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
commented?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
}
defaultAssignee: "lead" | "unassigned"
estimation: "count" | "storyPoints" | "originalEstimate"
boardId?: string
servicedesk?: {
requestTypes: {
id: string
name: string
description?: string
icon?: string
typeId: string
group?: string
fields: object
hidden?: boolean
approval?: object
}[]
queues: {
id: string
name: string
query: string
columns?: object
}[]
slas: {
id: string
name: string
start: object
pause: object
stop: object
goals: object
}[]
hours: {
timeZone: string
days: {
[key: number]: object
}
holidays: string[]
}
portal: {
enabled: boolean
title: string
intro: string
access: "any" | "org" | "listed"
customers: string[]
}
cannedResponses: {
id: string
name: string
body: string
}[]
satisfaction: boolean
email?: {
mailboxId: string
address: string
requestTypeId: string
}
articles?: {
rootPageId: string
}
}
formerKeys?: string[]
}
version: number
createdAt: number
updatedAt: number
}[]
}/ v1/ orgs/ :orgId/ issues/ spacesCreates a space from a template (scrum, kanban, bugs, service, basic) with its board; the caller becomes lead.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).
Request body
keystringrequired2–10 characters. Trimmed.
namestringrequired1–80 characters. Trimmed.
template"scrum" | "kanban" | "bugs" | "service" | "basic"requireddescriptionstringUp to 2,000 characters.
leadIdstringUp to 64 characters.
iconstringUp to 16 characters.
color"gray" | "blue" | "green" | "teal" | "yellow" | "orange" | "red" | "pink" | "purple"
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"key": "example",
"name": "Example",
"template": "scrum"
}'Response 201
{
space: {
orgId: string
spaceId: string
key: string
name: string
description: string
template: "basic" | "service" | "scrum" | "kanban" | "bugs"
leadId?: string
icon?: string
color?: string
archived: boolean
archivedAt?: number
seq: number
config: {
issueTypeIds: string[]
defaultTypeId: string
workflows: {
[key: string]: string
}
screens: {
create: {
[key: string]: string
}
edit: {
[key: string]: string
}
view: {
[key: string]: string
}
}
fieldSettings: {
[key: string]: {
required?: boolean
hidden?: boolean
description?: string
}
}
customFieldIds: string[]
access: {
visibility: "org" | "private"
members: {
type: "user" | "team"
id: string
role: "admin" | "viewer" | "member"
}[]
}
permissionSchemeId?: string
securityLevels: {
id: string
name: string
description?: string
grants: {
type: "spaceRole"
role: "admin" | "viewer" | "member"
} | {
type: "orgRole"
role: string
} | {
type: "user"
id: string
} | {
type: "team"
id: string
} | {
type: "reporter"
} | {
type: "assignee"
} | {
type: "lead"
} | {
type: "anyone"
}[]
}[]
defaultSecurityLevelId?: string
notifications: {
approval?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
resolved?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
deleted?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
mentioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
created?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
assigned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
updated?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
transitioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
commented?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
}
defaultAssignee: "lead" | "unassigned"
estimation: "count" | "storyPoints" | "originalEstimate"
boardId?: string
servicedesk?: {
requestTypes: {
id: string
name: string
description?: string
icon?: string
typeId: string
group?: string
fields: string[]
hidden?: boolean
approval?: {
statusId: string
approvers: object
needed: "all" | "one"
approvedStatusId: string
declinedStatusId: string
}
}[]
queues: {
id: string
name: string
query: string
columns?: string[]
}[]
slas: {
id: string
name: string
start: string[]
pause: string[]
stop: string[]
goals: object[]
}[]
hours: {
timeZone: string
days: {
[key: number]: object[]
}
holidays: string[]
}
portal: {
enabled: boolean
title: string
intro: string
access: "any" | "org" | "listed"
customers: string[]
}
cannedResponses: {
id: string
name: string
body: string
}[]
satisfaction: boolean
email?: {
mailboxId: string
address: string
requestTypeId: string
}
articles?: {
rootPageId: string
}
}
formerKeys?: string[]
}
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKeyA space with what the caller may do in it, its versions and components.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
space: {
orgId: string
spaceId: string
key: string
name: string
description: string
template: "basic" | "service" | "scrum" | "kanban" | "bugs"
leadId?: string
icon?: string
color?: string
archived: boolean
archivedAt?: number
seq: number
config: {
issueTypeIds: string[]
defaultTypeId: string
workflows: {
[key: string]: string
}
screens: {
create: {
[key: string]: string
}
edit: {
[key: string]: string
}
view: {
[key: string]: string
}
}
fieldSettings: {
[key: string]: {
required?: boolean
hidden?: boolean
description?: string
}
}
customFieldIds: string[]
access: {
visibility: "org" | "private"
members: {
type: "user" | "team"
id: string
role: "admin" | "viewer" | "member"
}[]
}
permissionSchemeId?: string
securityLevels: {
id: string
name: string
description?: string
grants: {
type: "spaceRole"
role: "admin" | "viewer" | "member"
} | {
type: "orgRole"
role: string
} | {
type: "user"
id: string
} | {
type: "team"
id: string
} | {
type: "reporter"
} | {
type: "assignee"
} | {
type: "lead"
} | {
type: "anyone"
}[]
}[]
defaultSecurityLevelId?: string
notifications: {
approval?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
resolved?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
deleted?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
mentioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
created?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
assigned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
updated?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
transitioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
commented?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
}
defaultAssignee: "lead" | "unassigned"
estimation: "count" | "storyPoints" | "originalEstimate"
boardId?: string
servicedesk?: {
requestTypes: {
id: string
name: string
description?: string
icon?: string
typeId: string
group?: string
fields: string[]
hidden?: boolean
approval?: {
statusId: string
approvers: object
needed: "all" | "one"
approvedStatusId: string
declinedStatusId: string
}
}[]
queues: {
id: string
name: string
query: string
columns?: string[]
}[]
slas: {
id: string
name: string
start: string[]
pause: string[]
stop: string[]
goals: object[]
}[]
hours: {
timeZone: string
days: {
[key: number]: object[]
}
holidays: string[]
}
portal: {
enabled: boolean
title: string
intro: string
access: "any" | "org" | "listed"
customers: string[]
}
cannedResponses: {
id: string
name: string
body: string
}[]
satisfaction: boolean
email?: {
mailboxId: string
address: string
requestTypeId: string
}
articles?: {
rootPageId: string
}
}
formerKeys?: string[]
}
version: number
createdAt: number
updatedAt: number
}
permissions: {
link?: boolean
move?: boolean
edit?: boolean
comment?: boolean
worklog?: boolean
delete?: boolean
create?: boolean
browse?: boolean
editOwn?: boolean
transition?: boolean
assign?: boolean
assignable?: boolean
deleteOwn?: boolean
editComments?: boolean
deleteComments?: boolean
attach?: boolean
deleteAttachments?: boolean
manageWatchers?: boolean
manageSprints?: boolean
administer?: boolean
serviceAgent?: boolean
}
allPermissions: ["browse", "create", "edit", "editOwn", "transition", "assign", "assignable", "delete", "deleteOwn", "comment", "editComments", "deleteComments", "attach", "deleteAttachments", "link", "worklog", "manageWatchers", "manageSprints", "move", "administer", "serviceAgent"]
versions: {
versionId: string
spaceId: string
name: string
description: string
startDate?: string
releaseDate?: string
released: boolean
releasedAt?: number
archived: boolean
position: number
data: {
deployments?: {
deploymentId: string
projectId: string
label?: string
at: number
}[]
}
}[]
components: {
componentId: string
spaceId: string
name: string
description: string
leadId?: string
defaultAssignee: "space" | "lead" | "unassigned"
}[]
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKeyChanges a space: name, key (old keys keep resolving), lead, and its configuration (types, workflows, screens, fields, access, security levels, notifications, service desk).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
Request body
namestring1–80 characters. Trimmed.
keystring2–10 characters. Trimmed.
descriptionstringUp to 2,000 characters.
leadIdstringUp to 64 characters.
iconstringUp to 16 characters.
color"gray" | "blue" | "green" | "teal" | "yellow" | "orange" | "red" | "pink" | "purple"configobjectconfig.issueTypeIdsstring[]Up to 50 items. Each up to 32 characters.
config.defaultTypeIdstringUp to 32 characters.
config.workflowsobjectKeys up to 32 characters. Values: string (up to 64 characters).
config.screensobjectconfig.screens.createobjectrequiredValues: string (up to 64 characters).
config.screens.editobjectrequiredValues: string (up to 64 characters).
config.screens.viewobjectrequiredValues: string (up to 64 characters).
config.fieldSettingsobjectKeys up to 64 characters. Values: object.
config.customFieldIdsstring[]Up to 200 items. Each up to 64 characters.
config.accessobjectconfig.access.visibility"org" | "private"requiredconfig.access.membersobject[]requiredUp to 500 items.
config.access.members[].type"user" | "team"requiredconfig.access.members[].idstringrequiredUp to 64 characters.
config.access.members[].role"admin" | "member" | "viewer"requiredconfig.permissionSchemeIdstringUp to 64 characters.
config.securityLevelsobject[]Up to 20 items.
config.securityLevels[].idstringrequiredUp to 40 characters.
config.securityLevels[].namestringrequired1–80 characters. Trimmed.
config.securityLevels[].descriptionstringUp to 500 characters.
config.securityLevels[].grantsobject[]requiredUp to 50 items.
config.securityLevels[].grants[].typestringrequiredUp to 20 characters.
config.securityLevels[].grants[].rolestringUp to 20 characters.
config.securityLevels[].grants[].idstringUp to 64 characters.
config.defaultSecurityLevelIdstringUp to 40 characters.
config.notificationsobjectValues: ("assignee" | "reporter" | "watchers" | "lead" | "participants")[].
config.defaultAssignee"unassigned" | "lead"config.estimation"storyPoints" | "originalEstimate" | "count"config.servicedeskobjectconfig.servicedesk.requestTypesobject[]requiredUp to 100 items.
config.servicedesk.requestTypes[].idstringrequiredUp to 40 characters.
config.servicedesk.requestTypes[].namestringrequired1–80 characters. Trimmed.
config.servicedesk.requestTypes[].descriptionstringUp to 500 characters.
config.servicedesk.requestTypes[].iconstringUp to 40 characters.
config.servicedesk.requestTypes[].typeIdstringrequiredUp to 32 characters.
config.servicedesk.requestTypes[].groupstringUp to 60 characters.
config.servicedesk.requestTypes[].fieldsstring[]requiredUp to 30 items. Each up to 64 characters.
config.servicedesk.requestTypes[].hiddenbooleanconfig.servicedesk.requestTypes[].approvalobjectconfig.servicedesk.requestTypes[].approval.statusIdstringrequiredUp to 32 characters.
config.servicedesk.requestTypes[].approval.approversstring[]requiredUp to 20 items. Each up to 64 characters.
config.servicedesk.requestTypes[].approval.needed"one" | "all"requiredconfig.servicedesk.requestTypes[].approval.approvedStatusIdstringrequiredUp to 32 characters.
config.servicedesk.requestTypes[].approval.declinedStatusIdstringrequiredUp to 32 characters.
config.servicedesk.queuesobject[]requiredUp to 50 items.
config.servicedesk.queues[].idstringrequiredUp to 40 characters.
config.servicedesk.queues[].namestringrequired1–80 characters. Trimmed.
config.servicedesk.queues[].querystringrequiredUp to 2,000 characters.
config.servicedesk.queues[].columnsstring[]Up to 20 items. Each up to 64 characters.
config.servicedesk.slasobject[]requiredUp to 20 items.
config.servicedesk.slas[].idstringrequiredUp to 40 characters.
config.servicedesk.slas[].namestringrequired1–80 characters. Trimmed.
config.servicedesk.slas[].startstring[]requiredUp to 20 items. Each up to 80 characters.
config.servicedesk.slas[].pausestring[]requiredUp to 20 items. Each up to 80 characters.
config.servicedesk.slas[].stopstring[]requiredUp to 20 items. Each up to 80 characters.
config.servicedesk.slas[].goalsobject[]requiredUp to 20 items.
config.servicedesk.slas[].goals[].querystringUp to 2,000 characters.
config.servicedesk.slas[].goals[].minutesintegerrequired1–525600.
config.servicedesk.slas[].goals[].calendar"business" | "always"config.servicedesk.hoursobjectrequiredconfig.servicedesk.hours.timeZonestringrequiredUp to 64 characters.
config.servicedesk.hours.daysobjectrequiredValues: integer[][] (up to 4 items, each 2 items, each 0–1440).
config.servicedesk.hours.holidaysstring[]requiredUp to 200 items. Each matches
^\d{4}-\d{2}-\d{2}$.config.servicedesk.portalobjectrequiredconfig.servicedesk.portal.enabledbooleanrequiredconfig.servicedesk.portal.titlestringrequiredUp to 100 characters.
config.servicedesk.portal.introstringrequiredUp to 2,000 characters.
config.servicedesk.portal.access"org" | "listed" | "any"requiredconfig.servicedesk.portal.customersstring[]requiredUp to 5,000 items. Each up to 320 characters.
config.servicedesk.cannedResponsesobject[]requiredUp to 100 items.
config.servicedesk.cannedResponses[].idstringrequiredUp to 40 characters.
config.servicedesk.cannedResponses[].namestringrequiredUp to 80 characters.
config.servicedesk.cannedResponses[].bodystringrequiredUp to 8,000 characters.
config.servicedesk.satisfactionbooleanrequiredconfig.servicedesk.articlesobjectconfig.servicedesk.articles.rootPageIdstringrequiredUp to 64 characters.
baseVersioninteger≥ 0.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"key": "example",
"description": "example"
}'Response 200
{
space: {
orgId: string
spaceId: string
key: string
name: string
description: string
template: "basic" | "service" | "scrum" | "kanban" | "bugs"
leadId?: string
icon?: string
color?: string
archived: boolean
archivedAt?: number
seq: number
config: {
issueTypeIds: string[]
defaultTypeId: string
workflows: {
[key: string]: string
}
screens: {
create: {
[key: string]: string
}
edit: {
[key: string]: string
}
view: {
[key: string]: string
}
}
fieldSettings: {
[key: string]: {
required?: boolean
hidden?: boolean
description?: string
}
}
customFieldIds: string[]
access: {
visibility: "org" | "private"
members: {
type: "user" | "team"
id: string
role: "admin" | "viewer" | "member"
}[]
}
permissionSchemeId?: string
securityLevels: {
id: string
name: string
description?: string
grants: {
type: "spaceRole"
role: "admin" | "viewer" | "member"
} | {
type: "orgRole"
role: string
} | {
type: "user"
id: string
} | {
type: "team"
id: string
} | {
type: "reporter"
} | {
type: "assignee"
} | {
type: "lead"
} | {
type: "anyone"
}[]
}[]
defaultSecurityLevelId?: string
notifications: {
approval?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
resolved?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
deleted?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
mentioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
created?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
assigned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
updated?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
transitioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
commented?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
}
defaultAssignee: "lead" | "unassigned"
estimation: "count" | "storyPoints" | "originalEstimate"
boardId?: string
servicedesk?: {
requestTypes: {
id: string
name: string
description?: string
icon?: string
typeId: string
group?: string
fields: string[]
hidden?: boolean
approval?: {
statusId: string
approvers: object
needed: "all" | "one"
approvedStatusId: string
declinedStatusId: string
}
}[]
queues: {
id: string
name: string
query: string
columns?: string[]
}[]
slas: {
id: string
name: string
start: string[]
pause: string[]
stop: string[]
goals: object[]
}[]
hours: {
timeZone: string
days: {
[key: number]: object[]
}
holidays: string[]
}
portal: {
enabled: boolean
title: string
intro: string
access: "any" | "org" | "listed"
customers: string[]
}
cannedResponses: {
id: string
name: string
body: string
}[]
satisfaction: boolean
email?: {
mailboxId: string
address: string
requestTypeId: string
}
articles?: {
rootPageId: string
}
}
formerKeys?: string[]
}
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ emailRequests by email: links one of the org's Mail mailboxes to a service space (mailboxId null unlinks). New mail raises a request of requestTypeId; replies with [KEY-n] in the subject become comments. Needs the space's administer permission and the mailbox (as a member, or mail:admin).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
Request body
mailboxIdstringrequiredor nullUp to 64 characters.
requestTypeIdstringUp to 40 characters.
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/email' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"mailboxId": "<mailboxId>"
}'Response 200
{
email: null | {
mailboxId: string
address: string
requestTypeId: string
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ archiveArchives a space: read-only and hidden from lists.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/archive' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
space: {
orgId: string
spaceId: string
key: string
name: string
description: string
template: "basic" | "service" | "scrum" | "kanban" | "bugs"
leadId?: string
icon?: string
color?: string
archived: boolean
archivedAt?: number
seq: number
config: {
issueTypeIds: string[]
defaultTypeId: string
workflows: {
[key: string]: string
}
screens: {
create: {
[key: string]: string
}
edit: {
[key: string]: string
}
view: {
[key: string]: string
}
}
fieldSettings: {
[key: string]: {
required?: boolean
hidden?: boolean
description?: string
}
}
customFieldIds: string[]
access: {
visibility: "org" | "private"
members: {
type: "user" | "team"
id: string
role: "admin" | "viewer" | "member"
}[]
}
permissionSchemeId?: string
securityLevels: {
id: string
name: string
description?: string
grants: {
type: "spaceRole"
role: "admin" | "viewer" | "member"
} | {
type: "orgRole"
role: string
} | {
type: "user"
id: string
} | {
type: "team"
id: string
} | {
type: "reporter"
} | {
type: "assignee"
} | {
type: "lead"
} | {
type: "anyone"
}[]
}[]
defaultSecurityLevelId?: string
notifications: {
approval?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
resolved?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
deleted?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
mentioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
created?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
assigned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
updated?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
transitioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
commented?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
}
defaultAssignee: "lead" | "unassigned"
estimation: "count" | "storyPoints" | "originalEstimate"
boardId?: string
servicedesk?: {
requestTypes: {
id: string
name: string
description?: string
icon?: string
typeId: string
group?: string
fields: string[]
hidden?: boolean
approval?: {
statusId: string
approvers: object
needed: "all" | "one"
approvedStatusId: string
declinedStatusId: string
}
}[]
queues: {
id: string
name: string
query: string
columns?: string[]
}[]
slas: {
id: string
name: string
start: string[]
pause: string[]
stop: string[]
goals: object[]
}[]
hours: {
timeZone: string
days: {
[key: number]: object[]
}
holidays: string[]
}
portal: {
enabled: boolean
title: string
intro: string
access: "any" | "org" | "listed"
customers: string[]
}
cannedResponses: {
id: string
name: string
body: string
}[]
satisfaction: boolean
email?: {
mailboxId: string
address: string
requestTypeId: string
}
articles?: {
rootPageId: string
}
}
formerKeys?: string[]
}
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ restoreRestores an archived space.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/restore' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
space: {
orgId: string
spaceId: string
key: string
name: string
description: string
template: "basic" | "service" | "scrum" | "kanban" | "bugs"
leadId?: string
icon?: string
color?: string
archived: boolean
archivedAt?: number
seq: number
config: {
issueTypeIds: string[]
defaultTypeId: string
workflows: {
[key: string]: string
}
screens: {
create: {
[key: string]: string
}
edit: {
[key: string]: string
}
view: {
[key: string]: string
}
}
fieldSettings: {
[key: string]: {
required?: boolean
hidden?: boolean
description?: string
}
}
customFieldIds: string[]
access: {
visibility: "org" | "private"
members: {
type: "user" | "team"
id: string
role: "admin" | "viewer" | "member"
}[]
}
permissionSchemeId?: string
securityLevels: {
id: string
name: string
description?: string
grants: {
type: "spaceRole"
role: "admin" | "viewer" | "member"
} | {
type: "orgRole"
role: string
} | {
type: "user"
id: string
} | {
type: "team"
id: string
} | {
type: "reporter"
} | {
type: "assignee"
} | {
type: "lead"
} | {
type: "anyone"
}[]
}[]
defaultSecurityLevelId?: string
notifications: {
approval?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
resolved?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
deleted?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
mentioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
created?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
assigned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
updated?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
transitioned?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
commented?: ("participants" | "reporter" | "assignee" | "watchers" | "lead")[]
}
defaultAssignee: "lead" | "unassigned"
estimation: "count" | "storyPoints" | "originalEstimate"
boardId?: string
servicedesk?: {
requestTypes: {
id: string
name: string
description?: string
icon?: string
typeId: string
group?: string
fields: string[]
hidden?: boolean
approval?: {
statusId: string
approvers: object
needed: "all" | "one"
approvedStatusId: string
declinedStatusId: string
}
}[]
queues: {
id: string
name: string
query: string
columns?: string[]
}[]
slas: {
id: string
name: string
start: string[]
pause: string[]
stop: string[]
goals: object[]
}[]
hours: {
timeZone: string
days: {
[key: number]: object[]
}
holidays: string[]
}
portal: {
enabled: boolean
title: string
intro: string
access: "any" | "org" | "listed"
customers: string[]
}
cannedResponses: {
id: string
name: string
body: string
}[]
satisfaction: boolean
email?: {
mailboxId: string
address: string
requestTypeId: string
}
articles?: {
rootPageId: string
}
}
formerKeys?: string[]
}
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKeyDeletes an archived space and everything in it, a batch at a time: call again while done is false.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scopes
- issues:write, issues:admin
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
done: boolean
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ versionsVersions (releases) of a space.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/versions' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
versions: {
versionId: string
spaceId: string
name: string
description: string
startDate?: string
releaseDate?: string
released: boolean
releasedAt?: number
archived: boolean
position: number
data: {
deployments?: {
deploymentId: string
projectId: string
label?: string
at: number
}[]
}
}[]
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ versionsCreates a version.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
Request body
descriptionstringUp to 2,000 characters.
startDatestringor nullMatches
^\d{4}-\d{2}-\d{2}$.releaseDatestringor nullMatches
^\d{4}-\d{2}-\d{2}$.archivedbooleanpositioninteger0–1000000.
namestringrequired1–100 characters. Trimmed.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/versions' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example"
}'Response 201
{
version: {
versionId: string
spaceId: string
name: string
description: string
startDate?: string
releaseDate?: string
released: boolean
releasedAt?: number
archived: boolean
position: number
data: {
deployments?: {
deploymentId: string
projectId: string
label?: string
at: number
}[]
}
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ versions/ :versionIdA version with its issues and progress.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).versionIdVersion id: a saved page version, as listed by the page history, an issue space's version (release,
ver_…), or a Drive file's version (fvr_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/versions/{versionId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
version: {
versionId: string
spaceId: string
name: string
description: string
startDate?: string
releaseDate?: string
released: boolean
releasedAt?: number
archived: boolean
position: number
data: {
deployments?: {
deploymentId: string
projectId: string
label?: string
at: number
}[]
}
}
issues: {
orgId: string
issueId: string
spaceId: string
number: number
key: string
typeId: string
summary: string
statusId: string
statusCategory: "done" | "todo" | "inprogress"
statusChangedAt?: number
resolutionId?: string
resolvedAt?: number
priorityId?: string
assigneeId?: string
reporterId?: string
creatorId?: string
labels: string[]
componentIds: string[]
fixVersionIds: string[]
affectsVersionIds: string[]
dueDate?: string
startDate?: string
storyPoints?: number
originalEstimate?: number
remainingEstimate?: number
timeSpent?: number
environment?: string
location?: {
lat: number
lon: number
label?: string
}
parentId?: string
sprintId?: string
closedSprintIds: string[]
rank: string
watchers: string[]
voters: string[]
securityLevelId?: string
fields: {
[key: string]: boolean | null | string | number | string[] | {
parent: string
child?: string
}
}
excerpt: string
statusLog: [string, number][]
commentCount: number
attachmentCount: number
requestTypeId?: string
channel?: string
participants: string[]
requesterEmail?: string
emailParticipants: string[]
approvals: {
id: string
statusId: string
approvers: string[]
needed: "all" | "one"
decisions: {
userId: string
decision: "approved" | "declined"
at: number
}[]
state: "pending" | "approved" | "declined"
createdAt: number
decidedAt?: number
}[]
satisfaction?: number
satisfactionComment?: string
sla: {
[key: string]: {
runningSince?: number
elapsed: number
paused?: boolean
stopped?: boolean
goal?: number
calendar: "business" | "always"
breached?: boolean
startedAt?: number
stoppedAt?: number
}
}
version: number
createdAt: number
updatedAt: number
}[]
counts: {
todo: number
inprogress: number
done: number
total: number
}
points: {
total: number
done: number
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ versions/ :versionIdChanges a version's name, dates, order or archived state.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).versionIdVersion id: a saved page version, as listed by the page history, an issue space's version (release,
ver_…), or a Drive file's version (fvr_…).
Request body
namestring1–100 characters. Trimmed.
descriptionstringUp to 2,000 characters.
startDatestringor nullMatches
^\d{4}-\d{2}-\d{2}$.releaseDatestringor nullMatches
^\d{4}-\d{2}-\d{2}$.archivedbooleanpositioninteger0–1000000.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/versions/{versionId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"description": "example",
"startDate": "2026-01-01"
}'Response 200
{
version: {
versionId: string
spaceId: string
name: string
description: string
startDate?: string
releaseDate?: string
released: boolean
releasedAt?: number
archived: boolean
position: number
data: {
deployments?: {
deploymentId: string
projectId: string
label?: string
at: number
}[]
}
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ versions/ :versionId/ releaseReleases (or unreleases) a version, optionally moving unresolved issues to another version.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).versionIdVersion id: a saved page version, as listed by the page history, an issue space's version (release,
ver_…), or a Drive file's version (fvr_…).
Request body
releasedbooleanDefault
true.moveUnresolvedTostringor nullUp to 64 characters.
releaseDatestringMatches
^\d{4}-\d{2}-\d{2}$.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/versions/{versionId}/release' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"released": true,
"moveUnresolvedTo": "example",
"releaseDate": "2026-01-01"
}'Response 200
{
version: {
versionId: string
spaceId: string
name: string
description: string
startDate?: string
releaseDate?: string
released: boolean
releasedAt?: number
archived: boolean
position: number
data: {
deployments?: {
deploymentId: string
projectId: string
label?: string
at: number
}[]
}
}
moved: number
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ versions/ :versionId/ notesRelease notes in Markdown: resolved issues grouped by type.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).versionIdVersion id: a saved page version, as listed by the page history, an issue space's version (release,
ver_…), or a Drive file's version (fvr_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/versions/{versionId}/notes' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
markdown: string
issues: number
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ versions/ :versionId/ deploymentsLinks (or unlinks) a Cloud deployment to a version.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scopes
- issues:write, deployments:read
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).versionIdVersion id: a saved page version, as listed by the page history, an issue space's version (release,
ver_…), or a Drive file's version (fvr_…).
Request body
deploymentIdstringrequiredUp to 64 characters.
projectIdstringrequiredUp to 64 characters.
labelstringUp to 100 characters.
linkedbooleanDefault
true.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/versions/{versionId}/deployments' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"deploymentId": "<deploymentId>",
"projectId": "<projectId>"
}'Response 200
{
version: {
versionId: string
spaceId: string
name: string
description: string
startDate?: string
releaseDate?: string
released: boolean
releasedAt?: number
archived: boolean
position: number
data: {
deployments?: {
deploymentId: string
projectId: string
label?: string
at: number
}[]
}
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ versions/ :versionIdDeletes a version, optionally moving its issues to replaceWith.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).versionIdVersion id: a saved page version, as listed by the page history, an issue space's version (release,
ver_…), or a Drive file's version (fvr_…).
Query parameters
replaceWithstringUp to 64 characters.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/versions/{versionId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
versionId: string
updated: number
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ componentsComponents of a space.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/components' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
components: {
componentId: string
spaceId: string
name: string
description: string
leadId?: string
defaultAssignee: "space" | "lead" | "unassigned"
}[]
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ componentsCreates a component (with an optional lead and default assignee).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).
Request body
descriptionstringUp to 2,000 characters.
leadIdstringor nullUp to 64 characters.
defaultAssignee"lead" | "unassigned" | "space"namestringrequired1–100 characters. Trimmed.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/components' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example"
}'Response 201
{
component: {
componentId: string
spaceId: string
name: string
description: string
leadId?: string
defaultAssignee: "space" | "lead" | "unassigned"
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ components/ :componentIdChanges a component.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).componentIdComponent id (
cmp_…).
Request body
namestring1–100 characters. Trimmed.
descriptionstringUp to 2,000 characters.
leadIdstringor nullUp to 64 characters.
defaultAssignee"lead" | "unassigned" | "space"
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/components/{componentId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"description": "example",
"leadId": "<leadId>"
}'Response 200
{
component: {
componentId: string
spaceId: string
name: string
description: string
leadId?: string
defaultAssignee: "space" | "lead" | "unassigned"
}
}/ v1/ orgs/ :orgId/ issues/ spaces/ :spaceKey/ components/ :componentIdDeletes a component and removes it from its issues.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:write
Path parameters
orgIdOrganization id (
org_…).spaceKeySpace key (
WEB; former keys work too) or space id (spc_…).componentIdComponent id (
cmp_…).
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/spaces/{spaceKey}/components/{componentId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
componentId: string
updated: number
}