API reference

Calendar

Calendars, events, invitations and iCalendar import and export for the mailboxes you belong to.
GET/v1/orgs/:orgId/mail/mailboxes/:mailboxId/availability

Free/busy of other mailboxes in the organization (times and busy status only, no titles), for scheduling. Addresses outside the organization come back as unknown.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

Query parameters

  • emailsstring

    Default "". Up to 4,000 characters.

  • self"0" | "1"
  • fromintegerrequired

    Coerced from a string.

  • tointegerrequired

    Coerced from a string.

  • timeZonestring

    Up to 64 characters.

  • excludeUidstring

    Up to 1,000 characters.

Errors

  • 400Ask for at most 20 addresses at a time.
  • 400Ask for at least one address.
  • 403Mailboxes are only available to members.
  • 404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/availability?from=1&to=1' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  people: {
    email: string
    known: boolean
    busy: {
      start: number
      end: number
      status: "busy" | "tentative" | "oof" | "workingElsewhere"
    }[]
    self?: true
  }[]
}
POST/v1/orgs/:orgId/mail/mailboxes/:mailboxId/threads/:threadId/messages/:messageId/invitation/:action

Acts on the event a message carries: add puts a published or forwarded event in a calendar, refresh sends a guest who asked the latest version, counter accepts or declines a guest's proposed new time (the organizer only).

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • threadId

    Conversation id (thr_…), or in Mirage a thread id (mth_…).

  • messageId

    Message id (msg_…; Mirage messages are mmg_…).

  • action

    add (put the event in a calendar), refresh (send the guest who asked the latest version) or counter (answer a proposed new time).

Request body

  • calendarIdany JSON
  • acceptboolean

Errors

  • 400Say whether to accept the proposal.
  • 403Mailboxes are only available to members.
  • 404Mailbox not found
  • 404Message not found
  • 404Not found
  • 409This mailbox's domain was removed.
  • 409… isn't verified for sending yet.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/threads/{threadId}/messages/{messageId}/invitation/{action}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "calendarId": {},
    "accept": true
  }'
Send it from this page with your session or a key.

Response 200

{
  notified: {
    sent: number
    error?: string
  }
}
| {
  notified: {
    sent: number
    error?: string
  }
  eventId: string
}

Response 201

{
  calendarId: string
  eventIds: string[]
}
GET/v1/orgs/:orgId/mail/calendar/mine

The caller's own events across the mailboxes they're a member of (at most 62 days), read-only: what other apps show next to their own dates (the Tasks calendar's "My calendar"). Cancelled events and free time are left out.

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

Path parameters

  • orgId

    Organization id (org_…).

Query parameters

  • fromintegerrequired

    Coerced from a string.

  • tointegerrequired

    Coerced from a string.

Errors

  • 400Choose a window of at most 62 days.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/calendar/mine?from=1&to=1' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  events: {
    mailboxId: string
    calendarId: string
    calendarName: string
    eventId: string
    summary: string
    start: number
    end: number
    allDay: boolean
    startDate?: string
    endDate?: string
    location: string
  }[]
}
GET/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars

The mailbox's calendars, default first. The default calendar is created on first use.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  calendars: {
    calendarId: string
    name: string
    color: string
    description: string
    isDefault: boolean
    version: number
  }[]
}
POST/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars

Creates a calendar (at most 50 per mailbox).

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

Request body

  • namestringrequired

    1–100 characters. Trimmed.

  • color"blue" | "orange" | "teal" | "amber" | "pink" | "green" | "red" | "gray"
  • descriptionstring

    Up to 1,000 characters.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars' \
  -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

{
  calendar: {
    calendarId: string
    name: string
    color: string
    description: string
    isDefault: boolean
    version: number
  }
}
PATCH/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId

Renames a calendar or changes its color or description.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

Request body

  • namestring

    1–100 characters. Trimmed.

  • color"blue" | "orange" | "teal" | "amber" | "pink" | "green" | "red" | "gray"
  • descriptionstring

    Up to 1,000 characters.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Example",
    "color": "blue",
    "description": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  calendar: {
    calendarId: string
    name: string
    color: string
    description: string
    isDefault: boolean
    version: number
  }
}
DELETE/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId

Deletes a calendar and its events. The default calendar can't be deleted.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

Errors

  • 400The default calendar can't be deleted.
  • 403Mailboxes are only available to members.
  • 404Mailbox not found
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/orgs/:orgId/mail/mailboxes/:mailboxId/events

Occurrences between from and to (UTC milliseconds, at most 400 days apart) across the mailbox's calendars, or those in calendarId (comma-separated), with recurring events expanded in their own time zone.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

Query parameters

  • fromintegerrequired

    Coerced from a string.

  • tointegerrequired

    Coerced from a string.

  • calendarIdstring

    Up to 2,000 characters.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/events?from=1&to=1' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  occurrences: {
    eventId: string
    calendarId: string
    recurrenceId: number
    start: number
    end: number
    allDay: boolean
    startDate?: string
    endDate?: string
    summary: string
    location: string
    status: "cancelled" | "confirmed" | "tentative"
    busyStatus: "busy" | "free" | "tentative" | "oof" | "workingElsewhere"
    recurring: boolean
    isException: boolean
    isOrganizer: boolean
    attendees: number
    myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    reminders: number[]
  }[]
}
POST/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/events

Creates an event. Times are wall-clock times in timeZone; all-day events take dates with an exclusive end. With attendees, the mailbox is the organizer and, unless notify is false, attendees are emailed an invitation.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

Request body

  • summarystring

    Default "". Up to 1,000 characters. Trimmed.

  • descriptionstring

    Up to 64,000 characters.

  • locationstring

    Up to 2,000 characters.

  • allDayboolean

    Default false.

  • startstringrequired

    Matches ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2})?)?$.

  • endstringrequired

    Matches ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2})?)?$.

  • timeZonestringrequired

    1–64 characters.

  • recurrenceobjector null
  • recurrence.freq"daily" | "weekly" | "monthly" | "yearly"required
  • recurrence.intervalinteger

    Default 1. 1–999.

  • recurrence.countinteger

    1–5000.

  • recurrence.untilstring

    Matches ^\d{4}-\d{2}-\d{2}$.

  • recurrence.byDayobject[]

    Up to 7 items.

  • recurrence.byDay[].day"SU" | "MO" | "TU" | "WE" | "TH" | "FR" | "SA"required
  • recurrence.byDay[].nthinteger

    -53–53.

  • recurrence.byMonthDayinteger[]

    Up to 31 items. Each -31–31.

  • recurrence.byMonthinteger[]

    Up to 12 items. Each 1–12.

  • recurrence.bySetPosinteger[]

    Up to 10 items. Each -366–366.

  • attendeesobject[]

    Up to 200 items.

  • attendees[].emailstringrequired

    Trimmed. Lowercased.

  • attendees[].namestring

    Up to 200 characters. Trimmed.

  • attendees[].optionalboolean
  • busyStatus"free" | "tentative" | "busy" | "oof" | "workingElsewhere"
  • sensitivity"normal" | "personal" | "private" | "confidential"
  • remindersinteger[]

    Up to 5 items. Each -10080–40320.

  • categoriesstring[]

    Up to 30 items. Each 1–100 characters, trimmed.

  • urlstring

    Up to 2,000 characters. URL.

  • status"confirmed" | "tentative" | "cancelled"
  • notifyboolean

    Default true.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
  • 409This mailbox's domain was removed.
  • 409… isn't verified for sending yet.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/events' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "start": "example",
    "end": "example",
    "timeZone": "example"
  }'
Send it from this page with your session or a key.

Response 201

{
  event: {
    eventId: string
    calendarId: string
    uid: string
    version: number
    summary: string
    description: string
    location: string
    allDay: boolean
    start: number
    end: number
    startLocal: string
    endLocal: string
    timeZone: string
    organizer: null | {
      email: string
      name?: string
    }
    attendees: {
      email: string
      name?: string
      role: "optional" | "required" | "chair" | "non-participant"
      status: "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
      rsvp: boolean
      kind: "unknown" | "resource" | "group" | "individual" | "room"
      delegatedTo?: string[]
      delegatedFrom?: string[]
    }[]
    isOrganizer: boolean
    myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    status: "cancelled" | "confirmed" | "tentative"
    busyStatus: "busy" | "free" | "tentative" | "oof" | "workingElsewhere"
    sensitivity: "private" | "personal" | "normal" | "confidential"
    reminders: number[]
    categories: string[]
    url: null | string
    recurrence: null | {
      count?: number
      byDay?: {
        day: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
        nth?: number
      }[]
      interval: number
      weekStart?: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
      freq: "daily" | "weekly" | "monthly" | "yearly"
      byMonthDay?: number[]
      byMonth?: number[]
      bySetPos?: number[]
      until?: string
    }
    rrule: null | string
    exceptions: {
      recurrenceId: number
      start: number
      end: number
      startLocal: string
      endLocal: string
      summary: string
      location: string
      status: "cancelled" | "confirmed" | "tentative"
      myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    }[]
    sequence: number
  }
  notified: {
    sent: number
    error?: string
  }
}
GET/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/events/:eventId

An event with its recurrence, attendees, answers and changed occurrences.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

  • eventId

    Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…).

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/events/{eventId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  event: {
    eventId: string
    calendarId: string
    uid: string
    version: number
    summary: string
    description: string
    location: string
    allDay: boolean
    start: number
    end: number
    startLocal: string
    endLocal: string
    timeZone: string
    organizer: null | {
      email: string
      name?: string
    }
    attendees: {
      email: string
      name?: string
      role: "optional" | "required" | "chair" | "non-participant"
      status: "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
      rsvp: boolean
      kind: "unknown" | "resource" | "group" | "individual" | "room"
      delegatedTo?: string[]
      delegatedFrom?: string[]
    }[]
    isOrganizer: boolean
    myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    status: "cancelled" | "confirmed" | "tentative"
    busyStatus: "busy" | "free" | "tentative" | "oof" | "workingElsewhere"
    sensitivity: "private" | "personal" | "normal" | "confidential"
    reminders: number[]
    categories: string[]
    url: null | string
    recurrence: null | {
      count?: number
      byDay?: {
        day: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
        nth?: number
      }[]
      interval: number
      weekStart?: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
      freq: "daily" | "weekly" | "monthly" | "yearly"
      byMonthDay?: number[]
      byMonth?: number[]
      bySetPos?: number[]
      until?: string
    }
    rrule: null | string
    exceptions: {
      recurrenceId: number
      start: number
      end: number
      startLocal: string
      endLocal: string
      summary: string
      location: string
      status: "cancelled" | "confirmed" | "tentative"
      myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    }[]
    sequence: number
  }
}
PUT/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/events/:eventId

Updates an event, or with recurrenceId one occurrence of it. Changing a series' time or repeat rule drops its changed occurrences and asks attendees again. Attendees get the update; removed attendees get a cancellation. moveTo moves the event to another calendar.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

  • eventId

    Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…).

Request body

  • summarystring

    Default "". Up to 1,000 characters. Trimmed.

  • descriptionstring

    Up to 64,000 characters.

  • locationstring

    Up to 2,000 characters.

  • allDayboolean

    Default false.

  • startstringrequired

    Matches ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2})?)?$.

  • endstringrequired

    Matches ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2})?)?$.

  • timeZonestringrequired

    1–64 characters.

  • recurrenceobjector null
  • recurrence.freq"daily" | "weekly" | "monthly" | "yearly"required
  • recurrence.intervalinteger

    Default 1. 1–999.

  • recurrence.countinteger

    1–5000.

  • recurrence.untilstring

    Matches ^\d{4}-\d{2}-\d{2}$.

  • recurrence.byDayobject[]

    Up to 7 items.

  • recurrence.byDay[].day"SU" | "MO" | "TU" | "WE" | "TH" | "FR" | "SA"required
  • recurrence.byDay[].nthinteger

    -53–53.

  • recurrence.byMonthDayinteger[]

    Up to 31 items. Each -31–31.

  • recurrence.byMonthinteger[]

    Up to 12 items. Each 1–12.

  • recurrence.bySetPosinteger[]

    Up to 10 items. Each -366–366.

  • attendeesobject[]

    Up to 200 items.

  • attendees[].emailstringrequired

    Trimmed. Lowercased.

  • attendees[].namestring

    Up to 200 characters. Trimmed.

  • attendees[].optionalboolean
  • busyStatus"free" | "tentative" | "busy" | "oof" | "workingElsewhere"
  • sensitivity"normal" | "personal" | "private" | "confidential"
  • remindersinteger[]

    Up to 5 items. Each -10080–40320.

  • categoriesstring[]

    Up to 30 items. Each 1–100 characters, trimmed.

  • urlstring

    Up to 2,000 characters. URL.

  • status"confirmed" | "tentative" | "cancelled"
  • notifyboolean

    Default true.

  • recurrenceIdinteger
  • followingboolean
  • ifVersioninteger

    ≥ 0.

  • moveToany JSON

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
  • 409This mailbox's domain was removed.
  • 409… isn't verified for sending yet.
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/events/{eventId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "start": "example",
    "end": "example",
    "timeZone": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  event: {
    eventId: string
    calendarId: string
    uid: string
    version: number
    summary: string
    description: string
    location: string
    allDay: boolean
    start: number
    end: number
    startLocal: string
    endLocal: string
    timeZone: string
    organizer: null | {
      email: string
      name?: string
    }
    attendees: {
      email: string
      name?: string
      role: "optional" | "required" | "chair" | "non-participant"
      status: "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
      rsvp: boolean
      kind: "unknown" | "resource" | "group" | "individual" | "room"
      delegatedTo?: string[]
      delegatedFrom?: string[]
    }[]
    isOrganizer: boolean
    myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    status: "cancelled" | "confirmed" | "tentative"
    busyStatus: "busy" | "free" | "tentative" | "oof" | "workingElsewhere"
    sensitivity: "private" | "personal" | "normal" | "confidential"
    reminders: number[]
    categories: string[]
    url: null | string
    recurrence: null | {
      count?: number
      byDay?: {
        day: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
        nth?: number
      }[]
      interval: number
      weekStart?: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
      freq: "daily" | "weekly" | "monthly" | "yearly"
      byMonthDay?: number[]
      byMonth?: number[]
      bySetPos?: number[]
      until?: string
    }
    rrule: null | string
    exceptions: {
      recurrenceId: number
      start: number
      end: number
      startLocal: string
      endLocal: string
      summary: string
      location: string
      status: "cancelled" | "confirmed" | "tentative"
      myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    }[]
    sequence: number
  }
  version: number
  notified: {
    sent: number
    error?: string
  }
  eventId?: string
}
DELETE/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/events/:eventId

Deletes an event, or with recurrenceId one occurrence. Attendees of an event the mailbox organizes get a cancellation unless notify=false.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

  • eventId

    Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…).

Query parameters

  • recurrenceIdinteger

    Coerced from a string.

  • following"true" | "false"

    Default "false".

  • notify"true" | "false"

    Default "true".

  • ifVersioninteger

    ≥ 0. Coerced from a string.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
  • 409This mailbox's domain was removed.
  • 409… isn't verified for sending yet.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/events/{eventId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  notified: {
    sent: number
    error?: string
  }
}
POST/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/events/:eventId/respond

Accepts, tentatively accepts or declines an invitation (or one occurrence) and, unless notify is false, emails the answer to the organizer.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

  • eventId

    Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…).

Request body

  • status"accepted" | "tentative" | "declined"required
  • recurrenceIdinteger
  • commentstring

    Up to 2,000 characters.

  • notifyboolean

    Default true.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
  • 409This mailbox's domain was removed.
  • 409… isn't verified for sending yet.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/events/{eventId}/respond' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "status": "accepted"
  }'
Send it from this page with your session or a key.

Response 200

{
  event: {
    eventId: string
    calendarId: string
    uid: string
    version: number
    summary: string
    description: string
    location: string
    allDay: boolean
    start: number
    end: number
    startLocal: string
    endLocal: string
    timeZone: string
    organizer: null | {
      email: string
      name?: string
    }
    attendees: {
      email: string
      name?: string
      role: "optional" | "required" | "chair" | "non-participant"
      status: "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
      rsvp: boolean
      kind: "unknown" | "resource" | "group" | "individual" | "room"
      delegatedTo?: string[]
      delegatedFrom?: string[]
    }[]
    isOrganizer: boolean
    myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    status: "cancelled" | "confirmed" | "tentative"
    busyStatus: "busy" | "free" | "tentative" | "oof" | "workingElsewhere"
    sensitivity: "private" | "personal" | "normal" | "confidential"
    reminders: number[]
    categories: string[]
    url: null | string
    recurrence: null | {
      count?: number
      byDay?: {
        day: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
        nth?: number
      }[]
      interval: number
      weekStart?: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
      freq: "daily" | "weekly" | "monthly" | "yearly"
      byMonthDay?: number[]
      byMonth?: number[]
      bySetPos?: number[]
      until?: string
    }
    rrule: null | string
    exceptions: {
      recurrenceId: number
      start: number
      end: number
      startLocal: string
      endLocal: string
      summary: string
      location: string
      status: "cancelled" | "confirmed" | "tentative"
      myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    }[]
    sequence: number
  }
  notified: {
    sent: number
    error?: string
  }
}
POST/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/events/:eventId/delegate

Hands this mailbox's invitation to someone else (they're invited, the organizer is told).

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

  • eventId

    Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…).

Request body

  • toobjectrequired
  • to.emailstringrequired

    Up to 254 characters. Trimmed. Lowercased.

  • to.namestring

    Up to 200 characters. Trimmed.

  • recurrenceIdinteger
  • commentstring

    Up to 2,000 characters.

  • notifyboolean

    Default true.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
  • 409This mailbox's domain was removed.
  • 409… isn't verified for sending yet.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/events/{eventId}/delegate' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "to": {
      "email": "person@example.com"
    }
  }'
Send it from this page with your session or a key.

Response 200

{
  event: {
    eventId: string
    calendarId: string
    uid: string
    version: number
    summary: string
    description: string
    location: string
    allDay: boolean
    start: number
    end: number
    startLocal: string
    endLocal: string
    timeZone: string
    organizer: null | {
      email: string
      name?: string
    }
    attendees: {
      email: string
      name?: string
      role: "optional" | "required" | "chair" | "non-participant"
      status: "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
      rsvp: boolean
      kind: "unknown" | "resource" | "group" | "individual" | "room"
      delegatedTo?: string[]
      delegatedFrom?: string[]
    }[]
    isOrganizer: boolean
    myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    status: "cancelled" | "confirmed" | "tentative"
    busyStatus: "busy" | "free" | "tentative" | "oof" | "workingElsewhere"
    sensitivity: "private" | "personal" | "normal" | "confidential"
    reminders: number[]
    categories: string[]
    url: null | string
    recurrence: null | {
      count?: number
      byDay?: {
        day: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
        nth?: number
      }[]
      interval: number
      weekStart?: "SA" | "SU" | "MO" | "TU" | "WE" | "TH" | "FR"
      freq: "daily" | "weekly" | "monthly" | "yearly"
      byMonthDay?: number[]
      byMonth?: number[]
      bySetPos?: number[]
      until?: string
    }
    rrule: null | string
    exceptions: {
      recurrenceId: number
      start: number
      end: number
      startLocal: string
      endLocal: string
      summary: string
      location: string
      status: "cancelled" | "confirmed" | "tentative"
      myStatus: null | "accepted" | "delegated" | "tentative" | "needs-action" | "declined"
    }[]
    sequence: number
  }
  notified: {
    sent: number
    error?: string
  }
}
POST/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/events/:eventId/propose

Proposes a new time to the organizer (COUNTER); nothing changes until they answer.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

  • eventId

    Event id: a calendar event (evt_…; a recurring event's occurrences share it), or a Mirage server's event (mev_…).

Request body

  • startintegerrequired
  • endintegerrequired
  • recurrenceIdinteger
  • commentstring

    Up to 2,000 characters.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
  • 409This mailbox's domain was removed.
  • 409… isn't verified for sending yet.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/events/{eventId}/propose' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "start": 1,
    "end": 1
  }'
Send it from this page with your session or a key.

Response 200

{
  notified: {
    sent: number
    error?: string
  }
}
POST/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/import

Adds the events in an iCalendar file; events whose UID is already in the calendar are replaced. Floating times are read in timeZone.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

Request body (up to 6,144 KB)

  • icsstringrequired

    1–5,242,880 characters.

  • timeZonestring

    Up to 64 characters.

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
  • 409This mailbox's domain was removed.
  • 409… isn't verified for sending yet.
  • 413The file is too large (at most 5 MB).
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/import' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "ics": "example"
  }'
Send it from this page with your session or a key.

Response 200

{
  created: number
  updated: number
  skipped: number
}
GET/v1/orgs/:orgId/mail/mailboxes/:mailboxId/calendars/:calendarId/export

The calendar as an iCalendar file.

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

Path parameters

  • orgId

    Organization id (org_…).

  • mailboxId

    Mailbox id (mbx_…).

  • calendarId

    Calendar id (cal_…).

Errors

  • 403Mailboxes are only available to members.
  • 404Mailbox not found
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/mail/mailboxes/{mailboxId}/calendars/{calendarId}/export' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  filename: string
  ics: string
}