API reference

Issue automation and webhooks

Automation rules and their runs, incoming automation webhooks, outgoing webhooks, and notifications.
POST/v1/hooks/issues/:orgId/:ruleId/:token

Runs an incoming-webhook rule: on issues (keys) when given, otherwise on the rule's query; payload is available as {{payload.…}}.

Auth
None.

Path parameters

  • orgId

    Organization id (org_…).

  • ruleId

    Rule id: a storage lifecycle rule (as returned by the settings or lifecycle routes), an issue automation rule (rul_…) or a Mirage AutoMod rule (mar_…).

  • token

    A secret from a link: an issue automation rule's incoming-webhook token (shown once when issued), a map's share link, a notification recipient's confirm and unsubscribe link, a Drive public link (/l/<token>), a Vehicles drive's share link, or a Mirage interaction's token (itk_…, sent with the interaction, good for 15 minutes), or the token in the link to a file of a message Mirage sent to Discord, or a Marketing link's sealed token (a tracked click, the open pixel, unsubscribe and the preference centre, a double opt-in confirmation); or a Food recipe's public link (/r/<token>) or a household's calendar feed.

Errors

  • 400Send JSON.
  • 400Send { issues?: string[], payload?: any }.
curl -X POST 'https://api.cactive.com.au/v1/hooks/issues/{orgId}/{ruleId}/{token}'
Send it from this page with your session or a key.

Response 200

{
  status: string
  matched: number
}
GET/v1/orgs/:orgId/issues/notifications

Notifications, newest first (unread=1 for unread only); page with cursor.

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

Path parameters

  • orgId

    Organization id (org_…).

Query parameters

  • unread"0" | "1"
  • cursorstring

    Up to 2,000 characters.

  • limitinteger

    1–100. Coerced from a string.

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

Response 200

{
  notifications: {
    notificationId: string
    issueId: string
    issueKey?: string
    kind: "approval" | "resolved" | "deleted" | "mentioned" | "created" | "assigned" | "updated" | "transitioned" | "commented"
    actorId?: string
    title: string
    body: string
    read: boolean
    createdAt: number
  }[]
  cursor: null | string
}
GET/v1/orgs/:orgId/issues/notifications/count

How many notifications are unread.

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/notifications/count' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  unread: number
}
POST/v1/orgs/:orgId/issues/notifications/read

Marks notifications read (or unread with read: false); all: true for every one.

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

Path parameters

  • orgId

    Organization id (org_…).

Request body

  • idsstring[]

    Up to 500 items. Each up to 64 characters.

  • allboolean
  • readboolean
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/notifications/read' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "ids": [
      "example"
    ],
    "all": true,
    "read": true
  }'
Send it from this page with your session or a key.

Response 200

{
  updated: number
}
GET/v1/orgs/:orgId/issues/notifications/settings

Email on or off, notifications about your own changes, and muted events.

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/notifications/settings' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  settings: {
    email: boolean
    own: boolean
    muted: string[]
  }
}
PUT/v1/orgs/:orgId/issues/notifications/settings

Changes what the caller hears about.

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

Path parameters

  • orgId

    Organization id (org_…).

Request body

  • emailboolean
  • ownboolean
  • muted("created" | "updated" | "assigned" | "transitioned" | "commented" | "mentioned" | "resolved" | "deleted")[]

    Up to 10 items.

curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/notifications/settings' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "email": true,
    "own": true,
    "muted": [
      "created"
    ]
  }'
Send it from this page with your session or a key.

Response 200

{
  settings: {
    email: boolean
    own: boolean
    muted: string[]
  }
}
GET/v1/orgs/:orgId/issues/automation

Rules the caller can see (space narrows to one space), with the trigger types there are.

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

Path parameters

  • orgId

    Organization id (org_…).

Query parameters

  • spacestring

    Up to 64 characters.

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

Response 200

{
  rules: {
    ruleId: string
    name: string
    description: string
    enabled: boolean
    spaceIds: string[]
    trigger: {
      type: "issueCreated"
    } | {
      type: "issueTransitioned"
      from?: string[]
      to?: string[]
    } | {
      type: "issueUpdated"
      fields?: string[]
    } | {
      type: "issueAssigned"
    } | {
      type: "commentAdded"
      visibility?: "any" | "public" | "internal"
      by?: "agent" | "anyone" | "reporter"
    } | {
      type: "slaBreached"
      slaIds?: string[]
    } | {
      type: "scheduled"
      interval: "hourly" | "daily" | "weekly"
      hour?: number
      weekday?: number
      jql?: string
    } | {
      type: "incoming"
      jql?: string
    } | {
      type: "manual"
    }
    conditions: {
      type: "jql"
      jql: string
    } | {
      type: "fieldChanged"
      field: string
    } | {
      type: "notActor"
      actor: "automation" | "reporter" | "assignee"
    }[]
    actions: {
      type: "transition"
      transition: string
    } | {
      type: "assign"
      to: "user" | "actor" | "reporter" | "lead" | "unassigned"
      userId?: string
    } | {
      type: "setField"
      field: string
      value: unknown
    } | {
      type: "addLabels"
      labels: string[]
    } | {
      type: "removeLabels"
      labels: string[]
    } | {
      type: "comment"
      body: string
      visibility?: "public" | "internal"
    } | {
      type: "createIssue"
      summary: string
      issueType?: string
      space?: string
      subtask?: boolean
      description?: string
    } | {
      type: "link"
      linkType: string
      issue: string
    } | {
      type: "addWatcher"
      who: "user" | "actor" | "reporter" | "assignee"
      userId?: string
    } | {
      type: "webhook"
      url: string
    } | {
      type: "email"
      to: ("reporter" | "assignee" | "watchers")[]
      subject: string
      body: string
    }[]
    ownerId?: string
    hasToken: boolean
    editable: boolean
    version: number
    updatedAt: number
  }[]
  triggers: ["issueCreated", "issueTransitioned", "issueUpdated", "issueAssigned", "commentAdded", "slaBreached", "scheduled", "incoming", "manual"]
}
POST/v1/orgs/:orgId/issues/automation

Creates a rule. Rules for every space need issues:admin; space admins can automate their spaces.

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.

  • enabledboolean
  • spaceIdsstring[]

    Up to 50 items. Each up to 64 characters.

  • conditions(object | object | object)[]

    Up to 10 items.

  • baseVersioninteger

    ≥ 0.

  • namestringrequired

    1–100 characters. Trimmed.

  • triggerobject | object | object | object | object | object | object | object | objectrequired
  • actions(object | object | object | object | object | object | object | object | object | object | object)[]required

    1–20 items.

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

Response 201

{
  rule: {
    editable: boolean
    ruleId: string
    name: string
    description: string
    enabled: boolean
    spaceIds: string[]
    trigger: {
      type: "issueCreated"
    } | {
      type: "issueTransitioned"
      from?: string[]
      to?: string[]
    } | {
      type: "issueUpdated"
      fields?: string[]
    } | {
      type: "issueAssigned"
    } | {
      type: "commentAdded"
      visibility?: "any" | "public" | "internal"
      by?: "agent" | "anyone" | "reporter"
    } | {
      type: "slaBreached"
      slaIds?: string[]
    } | {
      type: "scheduled"
      interval: "hourly" | "daily" | "weekly"
      hour?: number
      weekday?: number
      jql?: string
    } | {
      type: "incoming"
      jql?: string
    } | {
      type: "manual"
    }
    conditions: {
      type: "jql"
      jql: string
    } | {
      type: "fieldChanged"
      field: string
    } | {
      type: "notActor"
      actor: "automation" | "reporter" | "assignee"
    }[]
    actions: {
      type: "transition"
      transition: string
    } | {
      type: "assign"
      to: "user" | "actor" | "reporter" | "lead" | "unassigned"
      userId?: string
    } | {
      type: "setField"
      field: string
      value: unknown
    } | {
      type: "addLabels"
      labels: string[]
    } | {
      type: "removeLabels"
      labels: string[]
    } | {
      type: "comment"
      body: string
      visibility?: "public" | "internal"
    } | {
      type: "createIssue"
      summary: string
      issueType?: string
      space?: string
      subtask?: boolean
      description?: string
    } | {
      type: "link"
      linkType: string
      issue: string
    } | {
      type: "addWatcher"
      who: "user" | "actor" | "reporter" | "assignee"
      userId?: string
    } | {
      type: "webhook"
      url: string
    } | {
      type: "email"
      to: ("reporter" | "assignee" | "watchers")[]
      subject: string
      body: string
    }[]
    ownerId?: string
    hasToken: boolean
    version: number
    updatedAt: number
  }
}
GET/v1/orgs/:orgId/issues/automation/:ruleId

A rule.

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

Path parameters

  • orgId

    Organization id (org_…).

  • ruleId

    Rule id: a storage lifecycle rule (as returned by the settings or lifecycle routes), an issue automation rule (rul_…) or a Mirage AutoMod rule (mar_…).

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

Response 200

{
  rule: {
    editable: boolean
    ruleId: string
    name: string
    description: string
    enabled: boolean
    spaceIds: string[]
    trigger: {
      type: "issueCreated"
    } | {
      type: "issueTransitioned"
      from?: string[]
      to?: string[]
    } | {
      type: "issueUpdated"
      fields?: string[]
    } | {
      type: "issueAssigned"
    } | {
      type: "commentAdded"
      visibility?: "any" | "public" | "internal"
      by?: "agent" | "anyone" | "reporter"
    } | {
      type: "slaBreached"
      slaIds?: string[]
    } | {
      type: "scheduled"
      interval: "hourly" | "daily" | "weekly"
      hour?: number
      weekday?: number
      jql?: string
    } | {
      type: "incoming"
      jql?: string
    } | {
      type: "manual"
    }
    conditions: {
      type: "jql"
      jql: string
    } | {
      type: "fieldChanged"
      field: string
    } | {
      type: "notActor"
      actor: "automation" | "reporter" | "assignee"
    }[]
    actions: {
      type: "transition"
      transition: string
    } | {
      type: "assign"
      to: "user" | "actor" | "reporter" | "lead" | "unassigned"
      userId?: string
    } | {
      type: "setField"
      field: string
      value: unknown
    } | {
      type: "addLabels"
      labels: string[]
    } | {
      type: "removeLabels"
      labels: string[]
    } | {
      type: "comment"
      body: string
      visibility?: "public" | "internal"
    } | {
      type: "createIssue"
      summary: string
      issueType?: string
      space?: string
      subtask?: boolean
      description?: string
    } | {
      type: "link"
      linkType: string
      issue: string
    } | {
      type: "addWatcher"
      who: "user" | "actor" | "reporter" | "assignee"
      userId?: string
    } | {
      type: "webhook"
      url: string
    } | {
      type: "email"
      to: ("reporter" | "assignee" | "watchers")[]
      subject: string
      body: string
    }[]
    ownerId?: string
    hasToken: boolean
    version: number
    updatedAt: number
  }
}
PATCH/v1/orgs/:orgId/issues/automation/:ruleId

Changes a rule; 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_…).

  • ruleId

    Rule id: a storage lifecycle rule (as returned by the settings or lifecycle routes), an issue automation rule (rul_…) or a Mirage AutoMod rule (mar_…).

Request body

  • namestring

    1–100 characters. Trimmed.

  • descriptionstring

    Up to 1,000 characters.

  • enabledboolean
  • spaceIdsstring[]

    Up to 50 items. Each up to 64 characters.

  • triggerobject | object | object | object | object | object | object | object | object
  • conditions(object | object | object)[]

    Up to 10 items.

  • actions(object | object | object | object | object | object | object | object | object | object | object)[]

    1–20 items.

  • baseVersioninteger

    ≥ 0.

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

Response 200

{
  rule: {
    editable: boolean
    ruleId: string
    name: string
    description: string
    enabled: boolean
    spaceIds: string[]
    trigger: {
      type: "issueCreated"
    } | {
      type: "issueTransitioned"
      from?: string[]
      to?: string[]
    } | {
      type: "issueUpdated"
      fields?: string[]
    } | {
      type: "issueAssigned"
    } | {
      type: "commentAdded"
      visibility?: "any" | "public" | "internal"
      by?: "agent" | "anyone" | "reporter"
    } | {
      type: "slaBreached"
      slaIds?: string[]
    } | {
      type: "scheduled"
      interval: "hourly" | "daily" | "weekly"
      hour?: number
      weekday?: number
      jql?: string
    } | {
      type: "incoming"
      jql?: string
    } | {
      type: "manual"
    }
    conditions: {
      type: "jql"
      jql: string
    } | {
      type: "fieldChanged"
      field: string
    } | {
      type: "notActor"
      actor: "automation" | "reporter" | "assignee"
    }[]
    actions: {
      type: "transition"
      transition: string
    } | {
      type: "assign"
      to: "user" | "actor" | "reporter" | "lead" | "unassigned"
      userId?: string
    } | {
      type: "setField"
      field: string
      value: unknown
    } | {
      type: "addLabels"
      labels: string[]
    } | {
      type: "removeLabels"
      labels: string[]
    } | {
      type: "comment"
      body: string
      visibility?: "public" | "internal"
    } | {
      type: "createIssue"
      summary: string
      issueType?: string
      space?: string
      subtask?: boolean
      description?: string
    } | {
      type: "link"
      linkType: string
      issue: string
    } | {
      type: "addWatcher"
      who: "user" | "actor" | "reporter" | "assignee"
      userId?: string
    } | {
      type: "webhook"
      url: string
    } | {
      type: "email"
      to: ("reporter" | "assignee" | "watchers")[]
      subject: string
      body: string
    }[]
    ownerId?: string
    hasToken: boolean
    version: number
    updatedAt: number
  }
}
DELETE/v1/orgs/:orgId/issues/automation/:ruleId

Deletes a rule.

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

Path parameters

  • orgId

    Organization id (org_…).

  • ruleId

    Rule id: a storage lifecycle rule (as returned by the settings or lifecycle routes), an issue automation rule (rul_…) or a Mirage AutoMod rule (mar_…).

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

Response 200

{
  ruleId: string
}
GET/v1/orgs/:orgId/issues/automation/:ruleId/runs

The last 50 runs of a rule.

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

Path parameters

  • orgId

    Organization id (org_…).

  • ruleId

    Rule id: a storage lifecycle rule (as returned by the settings or lifecycle routes), an issue automation rule (rul_…) or a Mirage AutoMod rule (mar_…).

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

Response 200

{
  runs: {
    runId: string
    status: string
    trigger: string
    issueIds: string[]
    log: {
      issue?: string
      action?: string
      ok: boolean
      message: string
    }[]
    ms?: number
    at: number
  }[]
}
POST/v1/orgs/:orgId/issues/automation/:ruleId/run

Runs a manual rule on issues now.

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

Path parameters

  • orgId

    Organization id (org_…).

  • ruleId

    Rule id: a storage lifecycle rule (as returned by the settings or lifecycle routes), an issue automation rule (rul_…) or a Mirage AutoMod rule (mar_…).

Request body

  • issuesstring[]required

    1–100 items. Each up to 64 characters.

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

Response 200

{
  status: string
  matched: number
  log: {
    issue?: string
    action?: string
    ok: boolean
    message: string
  }[]
}
POST/v1/orgs/:orgId/issues/automation/:ruleId/token

Issues a new token for an incoming-webhook rule and returns its URL (shown once; the old one stops working).

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

Path parameters

  • orgId

    Organization id (org_…).

  • ruleId

    Rule id: a storage lifecycle rule (as returned by the settings or lifecycle routes), an issue automation rule (rul_…) or a Mirage AutoMod rule (mar_…).

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

Response 200

{
  token: string
  path: string
  url: string
}
GET/v1/orgs/:orgId/issues/webhooks

Webhooks of the organization, with the events they can subscribe to.

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/webhooks' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  webhooks: {
    webhookId: string
    name: string
    url: string
    events: ("issue.created" | "issue.updated" | "issue.transitioned" | "issue.deleted" | "issue.moved" | "issue.sla_breached" | "issue.ranked" | "issue.watchers" | "issue.votes" | "comment.created" | "comment.updated" | "comment.deleted" | "worklog.created" | "attachment.created" | "link.created" | "link.deleted" | "sprint.started" | "sprint.completed" | "version.released" | "space.deleted" | "index.rebuild" | "mail.received" | "approval.opened")[]
    spaceIds: string[]
    jql: string
    enabled: boolean
    secretHint: string
    createdBy?: string
    version: number
    updatedAt: number
  }[]
  events: ("issue.created" | "issue.updated" | "issue.transitioned" | "issue.deleted" | "issue.moved" | "issue.sla_breached" | "issue.ranked" | "issue.watchers" | "issue.votes" | "comment.created" | "comment.updated" | "comment.deleted" | "worklog.created" | "attachment.created" | "link.created" | "link.deleted" | "sprint.started" | "sprint.completed" | "version.released" | "space.deleted" | "index.rebuild" | "mail.received" | "approval.opened")[]
}
POST/v1/orgs/:orgId/issues/webhooks

Creates a webhook; the signing secret is in the response this once.

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

Path parameters

  • orgId

    Organization id (org_…).

Request body

  • spaceIdsstring[]

    Up to 50 items. Each up to 64 characters.

  • jqlstring

    Up to 10,000 characters.

  • enabledboolean
  • namestringrequired

    1–100 characters. Trimmed.

  • urlstringrequired

    Up to 2,000 characters.

  • events("issue.created" | "issue.updated" | "issue.transitioned" | "issue.deleted" | "issue.moved" | "issue.sla_breached" | "comment.created" | "comment.updated" | "comment.deleted" | "worklog.created" | "attachment.created" | "link.created" | "link.deleted" | "sprint.started" | "sprint.completed" | "version.released")[]required

    1–30 items.

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

Response 201

{
  webhook: {
    webhookId: string
    name: string
    url: string
    events: ("issue.created" | "issue.updated" | "issue.transitioned" | "issue.deleted" | "issue.moved" | "issue.sla_breached" | "issue.ranked" | "issue.watchers" | "issue.votes" | "comment.created" | "comment.updated" | "comment.deleted" | "worklog.created" | "attachment.created" | "link.created" | "link.deleted" | "sprint.started" | "sprint.completed" | "version.released" | "space.deleted" | "index.rebuild" | "mail.received" | "approval.opened")[]
    spaceIds: string[]
    jql: string
    enabled: boolean
    secretHint: string
    createdBy?: string
    version: number
    updatedAt: number
  }
  secret: string
}
GET/v1/orgs/:orgId/issues/webhooks/:webhookId

A webhook.

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

Path parameters

  • orgId

    Organization id (org_…).

  • webhookId

    Webhook id (whk_…).

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

Response 200

{
  webhook: {
    webhookId: string
    name: string
    url: string
    events: ("issue.created" | "issue.updated" | "issue.transitioned" | "issue.deleted" | "issue.moved" | "issue.sla_breached" | "issue.ranked" | "issue.watchers" | "issue.votes" | "comment.created" | "comment.updated" | "comment.deleted" | "worklog.created" | "attachment.created" | "link.created" | "link.deleted" | "sprint.started" | "sprint.completed" | "version.released" | "space.deleted" | "index.rebuild" | "mail.received" | "approval.opened")[]
    spaceIds: string[]
    jql: string
    enabled: boolean
    secretHint: string
    createdBy?: string
    version: number
    updatedAt: number
  }
}
PATCH/v1/orgs/:orgId/issues/webhooks/:webhookId

Changes a webhook.

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

Path parameters

  • orgId

    Organization id (org_…).

  • webhookId

    Webhook id (whk_…).

Request body

  • namestring

    1–100 characters. Trimmed.

  • urlstring

    Up to 2,000 characters.

  • events("issue.created" | "issue.updated" | "issue.transitioned" | "issue.deleted" | "issue.moved" | "issue.sla_breached" | "comment.created" | "comment.updated" | "comment.deleted" | "worklog.created" | "attachment.created" | "link.created" | "link.deleted" | "sprint.started" | "sprint.completed" | "version.released")[]

    1–30 items.

  • spaceIdsstring[]

    Up to 50 items. Each up to 64 characters.

  • jqlstring

    Up to 10,000 characters.

  • enabledboolean
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/issues/webhooks/{webhookId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example",
    "url": "https://example.com",
    "events": [
      "issue.created"
    ]
  }'
Send it from this page with your session or a key.

Response 200

{
  webhook: {
    webhookId: string
    name: string
    url: string
    events: ("issue.created" | "issue.updated" | "issue.transitioned" | "issue.deleted" | "issue.moved" | "issue.sla_breached" | "issue.ranked" | "issue.watchers" | "issue.votes" | "comment.created" | "comment.updated" | "comment.deleted" | "worklog.created" | "attachment.created" | "link.created" | "link.deleted" | "sprint.started" | "sprint.completed" | "version.released" | "space.deleted" | "index.rebuild" | "mail.received" | "approval.opened")[]
    spaceIds: string[]
    jql: string
    enabled: boolean
    secretHint: string
    createdBy?: string
    version: number
    updatedAt: number
  }
}
DELETE/v1/orgs/:orgId/issues/webhooks/:webhookId

Deletes a webhook.

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

Path parameters

  • orgId

    Organization id (org_…).

  • webhookId

    Webhook id (whk_…).

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

Response 200

{
  webhookId: string
}
POST/v1/orgs/:orgId/issues/webhooks/:webhookId/secret

Replaces the signing secret (returned this once).

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

Path parameters

  • orgId

    Organization id (org_…).

  • webhookId

    Webhook id (whk_…).

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

Response 200

{
  webhook: {
    webhookId: string
    name: string
    url: string
    events: ("issue.created" | "issue.updated" | "issue.transitioned" | "issue.deleted" | "issue.moved" | "issue.sla_breached" | "issue.ranked" | "issue.watchers" | "issue.votes" | "comment.created" | "comment.updated" | "comment.deleted" | "worklog.created" | "attachment.created" | "link.created" | "link.deleted" | "sprint.started" | "sprint.completed" | "version.released" | "space.deleted" | "index.rebuild" | "mail.received" | "approval.opened")[]
    spaceIds: string[]
    jql: string
    enabled: boolean
    secretHint: string
    createdBy?: string
    version: number
    updatedAt: number
  }
  secret: string
}
POST/v1/orgs/:orgId/issues/webhooks/:webhookId/ping

Sends a ping event now and returns the outcome.

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

Path parameters

  • orgId

    Organization id (org_…).

  • webhookId

    Webhook id (whk_…).

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

Response 200

{
  ok: boolean
  status?: number
  error?: string
  attempts: number
  ms: number
}
GET/v1/orgs/:orgId/issues/webhooks/:webhookId/deliveries

The last 50 deliveries.

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

Path parameters

  • orgId

    Organization id (org_…).

  • webhookId

    Webhook id (whk_…).

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

Response 200

{
  deliveries: {
    deliveryId: string
    event: string
    status?: number
    ok: boolean
    error?: string
    attempts: number
    ms?: number
    at: number
  }[]
}